CatholicTimeline

Settings

Aa Font Size 100%

Review Mode
Loading timeline…
Link this text to…
Database JSON
If Try Download does nothing on your device, use Copy All (or Select All, then copy) and paste into any text editor to save the file yourself.
Content Edit Entries

New Entry

Category (none = all)
Status
Years
Feast Day (Saints only — e.g. "Aug 15")
Narrows only Saints to feast dates in this range — every other category is unaffected. Wraps the calendar (e.g. Dec 26 – Jan 2) if From sorts after To. Reset above clears this too.
Search
Search syntax
Same syntax as the timeline search box, and it narrows the export set exactly like the filters above.
word — matches names and alt names, anywhere in the word (pet finds Peter).
=word — searches the entire article and every other field, not just names.
'word' — whole word only: 'cult' matches cult and Cult. but not difficult.
'two words' — that exact phrase, in that order.
-word — blanks that word out first, so dig -dignity won't match inside dignity but still finds digging.
Every term must match. Case and accents are ignored (Fatima finds Fátima).
Fields to include in export
What this does
Story text and audio narration URL are long fields and default to off — check them to include full articles or narration links in the export.
Auto-Link Cross-References (no AI — pattern matching only)
What this does
Links are created only where an entry's whole name appears — its display name, that name minus an honorific (“Pope St. Leo the Great” also matches “Leo the Great”), or an alternate name you gave it. Names are never chopped into pieces, and the mention must be capitalised, so a passing reference to “an ecumenical council” is left alone. Only the first mention per article becomes a link; existing links and self-references are never touched.

Want a short form to link? Add it to that entry's Alternate names field — e.g. Aquinas, Edith Stein, JPII. That keeps the choice yours rather than the algorithm's.

Preview reports what would change without touching anything. Apply writes it. Remove All Links strips every entry: link from the filtered entries, leaving the words in place — source links in the article body are not affected. All changes apply in this session only: review the report below, then Save to GitHub (Publish).

For a link the name-matcher can't make safely (a different name for the same person, a title instead of a name, a bare “Mary” meant specifically as the Blessed Virgin), paste a curated link list into the Paste JSON box below instead — it accepts that format too.
Restore & Reset
What this does
Both of these replace the entire database. Take a JSON — All Entries backup first if you're not sure.
Run GitHub Action
What this does
Runs the workflow on GitHub directly — no need to hunt through the Actions tab. Uses the same username/repo/branch/token as Publish below (add Actions: Read and write to the token if you haven't). Takes 10–20 seconds; this button waits and reports success or failure below.

Convert Photos to JPEG also fixes broken img references while it's in there — the old separate "Fix Image Extensions" button is gone, folded into this one. It checks every non-JPEG format (not just PNG), and for any entry whose img path doesn't resolve, looks for a file with that same name under any extension: exactly one match gets the reference repaired automatically, anything else (missing entirely, or more than one same-named file) is left alone and reported in the workflow's own log on GitHub rather than guessed at. This actually corrects data.json — the runtime fallback (added in v79) only papers over a stale reference on-screen, it doesn't fix the underlying data.
Voice & pacing settings (for Record Audio Narration)
What this does
These settings are captured into every "Record audio narration" task the moment it's queued — from Task : Automation's own Add Task screen (Category/Start/Quantity, same picker every batch service uses, with "Regenerate even entries that already have audio" to include ones already recorded), or automatically when you check "Record audio" after approving a sentence-reword fix. Each task remembers the settings it was queued with, even if you change these fields before it actually runs. Remembered on this device, so you only need to set them once.
Publish to GitHub (save your site online)
What this does
The repository details are pre-filled — you only need to paste an access token. Create one at github.com/settings/tokens?type=beta (fine-grained → only catholic-timeline → Contents: Read and write). If you also want the "Run GitHub Action" buttons above, add Actions: Read and write to the same token. Your token is stored only in this browser, never in the file or the repo, and is used to commit the current database to data.json. After publishing, your live site updates in about a minute. This only works on your hosted site, not inside the Claude artifact.
Media Base Paths
What this does
Set these once, then in an entry's Image and Audio fields you only need to type the file name (e.g. augustine.jpg) instead of the whole path. A value that already starts with http://, https://, or / is left exactly as typed, so existing full-URL entries keep working unchanged.

Import JSON Data From…

Paste manually instead
What this does
Clipboard reads whatever's already copied and applies it in one tap — copy Claude's JSON in the chat, come here, tap the button. Choose File does the same from a saved .json/.txt file instead of the clipboard. Either way it applies immediately, nothing is shown or held for review first, and it never replaces the whole database — only the ids named are touched. A plain entries file/paste only ever adds or updates; it removes entries only if it carries an explicit "deletions" list. If clipboard access is denied (permission, or an installed-to-homescreen quirk), you'll see an error and can use Paste manually instead below, which works exactly as before.

Deleting. Add a "deletions" list of ids alongside (or instead of) "entries":
{"deletions":["em-ferrara-1171"],"entries":[…]}
An entry object written as {"id":"old-id","op":"delete"} works too. Deletions run before adds, so a paste can retire an old stub and add its replacement in one step. Ids that don't exist are reported rather than silently ignored. This cannot be undone — take an Export backup first.

Holding for review. Add "review": true to any entry to keep it off the public timeline until you approve it; send "review": false (or clear the checkbox in the editor) to publish it.

Cross-links. A curated link list also works — one per line, entryId :: exact text :: targetId, with an optional 4th field to pick which occurrence of that text (default: first). Use this for links the Auto-Link Cross-References tool above can't make safely: a different name for the same person (“Saul” → St. Paul), a title instead of a name (“the beloved disciple” → St. John), or a bare “Mary” meant specifically as the Blessed Virgin. The exact text must appear verbatim in that entry's article body, including case. Existing links are skipped automatically, so re-running a list that already applied is harmless.

Carlo Acutis links. A separate table from art.links, one row per Eucharistic Miracle entry: {"carloLinks":[{"entityId":"em-id","status":"found","url":"https://miracolieucaristici.org/…"}]} for a located page, or {"entityId":"em-id","status":"pending","note":"what was searched and why nothing turned up"} while still researching. Delete a row with {"carloLinkDeletions":["row-id"]} (row id defaults to {entityId}-carlo). A "found" row renders its own dedicated section on the article; a "pending" row (or no row at all) shows nothing to visitors, and shows the note only when Review Mode is on.

Patches. For one small fix instead of resending a whole entry — fix a fact, swap a sentence, drop a stray quote — send {"patches":{"entry-id":[[section, element, "I|U|D", value]]}}. Say the id once, list every edit to it underneath as a plain array: section is one of field · facts · alt · article · quotes · links · carloLink; element is a field name, a fact/alt/quote/link label or position, or a verbatim snippet of article text (append @2 etc. if it appears more than once); I inserts, U replaces, D removes (omit value for D). Patches to the same entity apply in order. An unmatched snippet, an out-of-range position, or an attempt to delete a required field (n/y/t/r/d) is reported as a skip, never applied silently. patches only edits things that already exist — it never creates a new entry, so a brand-new fact needs "I" on an id that's already in the database. Full spec: json-import-skill.md.
What this does
Every build's header comment (VERSION / DATE / CHANGES) is logged automatically to changelog.json by a GitHub Action when you push a new index.html to main. This tab reads that file straight from GitHub using the same access token as Publish above — changelog.json itself is excluded from the public site via .assetsignore, so this log is only visible to you, here. Kept to a rolling 3 weeks — anything older is trimmed automatically each time this tab loads.

Filter by Task Type

Counts reflect the current All/Queued/Running/Review tab.

Report an Issue

Before You Explore

Catholic Timeline is a growing resource. Every article is checked by multiple independent AI reviewers against primary Catholic sources, but with hundreds of entries, not every one has been personally read by a human yet.

If anything looks wrong, please use "Report an issue" at the end of any article — corrections are always welcome.