Changelog
User-facing changes to Hearth, in plain language. Internal refactors and
infrastructure are left out on purpose (see the git history for those). This is
the source for the in-app "What's new".
Unreleased
0.21.0 - 2026-07-16
An import-polish release: re-imports update instead of duplicating, a tool to fix
entry dates from your files' real timestamps, and co-writer credit on bulk import.
Added
- Fix imported entry dates from your files' real timestamps. A bulk import
can only guess an entry's date (a browser can't read a file's creation date).
A new tool, linked from the import page, lets you run a one-line command in
your entries' folder, paste what it prints, and set each entry's true date in
one reviewed batch. It only touches dates, nothing else.
- Credit a co-writer when you bulk-import. The import review table now has a
"Written by" column, so you can attribute each entry (or the whole batch, with
the column header) to the member who actually wrote it, instead of everything
landing under your name. (You can still reassign an entry's author later from
its edit page.)
Changed
- Re-importing a file updates its entry instead of making a copy. When you
bulk-import a folder again after editing some files, Hearth recognizes a file
it imported before and updates that entry in place, keeping its date and
session number, rather than creating a duplicate. The import review table
flags each row that "will update" so you can tell corrections from new entries
before publishing.
0.20.0 - 2026-07-16
A trust & hardening release: private images are now actually private, and Hearth
installs to your phone's home screen.
Added
- Install Hearth to your home screen. On a phone, Hearth can now be added as
an app: a home-screen icon that opens full-screen, without browser chrome, for
reading at the table or on the couch. On Android/Chrome, look for "Install
app"; on iPhone, use Share → Add to Home Screen. It still needs a connection
(no offline mode).
Changed
- Private images are now actually private. A picture in a members-only or
GM-only entry (its cover, gallery, or inline images) is served only to people
who can see that entry, instead of being viewable by anyone who has the direct
image link. Public entries' images stay openly viewable, and everything keeps
loading as before, this just closes the gap where a private image could be
opened by its raw URL.
0.19.0 - 2026-07-16
A design & accessibility release: a warm light mode, plus keyboard and
screen-reader improvements.
Added
- Light mode. A warm "candlelit parchment" theme for reading Hearth in
daylight, keeping the same fireside character as the dark theme. Flip it with
the ☀ / 🌙 button in the top bar; Hearth remembers your choice on that device.
It stays dark by default and never follows your system setting, so your pick
is the only thing that changes it.
Changed
- The campaign list shows where you are. The left rail and the Campaigns
menu now highlight the campaign you're currently reading.
- Drafts and Members appear only to members. Someone who isn't in a
campaign (including a logged-out reader of a public one) no longer sees links
to those member-only pages, which used to answer with an error.
Fixed
- Image upload buttons work from the keyboard. "Change photo" and the other
picture pickers can now be reached with Tab and opened with Enter or Space,
so keyboard and screen-reader users can use them.
- Keyboard focus follows the composer. Opening "New entry" moves focus into
the composer, closing it returns focus to the button, and clearing a search
keeps focus in the search box, instead of dropping to the top of the page.
- A clearer prompt when you're signed out. The Drafts page now offers a
"Sign in" button when your session has lapsed, rather than a vague error.
- Phone touch fixes. On a phone, the small version stamp in the corner no
longer sits on top of the Lorekeeper's "Ask" button (tapping Ask sometimes
opened "What's new" instead), the page footer stacks instead of cramming
against the edge, and the campaign switcher's rows are a full touch target.
0.18.1 - 2026-07-16
Fixed
- The campaign sidebar no longer overlaps the dashboard. On mid-width
screens (around a 13" laptop), the left list of campaigns could sit on top of
the "Your campaigns" heading and cards. The sidebar now keeps its own column,
clear of the content, at every window size.
0.18.0 - 2026-07-15
A "writing craft" release: the tools that make writing and reading a campaign's
entries better, mentions and notifications, wiki links between entries, related
reading, comment reactions, and a formatting toolbar.
Added
- Mention people with
@their name, and get notified. Write @ and a
member's name in an entry or a comment and they'll see it in a new
Notifications page (the bell in the top bar, with a count of what's new). You
only ever get mentioned in something you can see, and a mention links straight
to where it happened.
- A formatting toolbar for writing. The entry composer and editor now have a
small row of buttons above the text, bold, italic, heading, quote, code, link,
and a divider, that wrap or insert the Markdown for you, so you don't have to
remember the syntax. The live Preview and the Markdown cheatsheet are still
right there.
- Related entries. The bottom of each entry now suggests a few others in the
campaign that read as most similar, so you can follow a thread across sessions.
It's drawn from the same understanding of your writing the Lorekeeper uses, but
needs no AI call and only ever lists entries you can see.
- Link between entries with
[[double brackets]]. Write [[The Fall of Emberfall]] anywhere in an entry (or a Lorekeeper answer) and it becomes a
link to that entry in the same campaign, matched by title. If nothing matches
yet, the link lands on a gentle "no entry named that here" note. It only ever
links to entries you can already see.
- React to comments. The little reactions you can already leave on an entry
now work on comments too. Each comment has a small "+" to pick one, and the
ones people have added show as a count you can tap to add yours or take it
back.
Fixed
- Campaign pages respond to clicks without a reload. On some pages, buttons
and tabs inside a campaign (opening the composer, switching sections, feed
actions) could stop responding until you reloaded. Those pages now come up
fully interactive.
0.17.0 - 2026-07-15
The archive keeps itself honest: tools to fix miscredited authorship, clear out
duplicate imports, and clean up what comes in from other apps, plus one
consistent way to move around a campaign.
Added
- Find duplicate entries. A campaign's Settings now has a "Find duplicates"
tool that surfaces near-identical entries, closest first, most useful after a
bulk import that brought the same file in twice. Each pair is shown side by
side with the exact lines that differ highlighted, so you can tell which is
the one to keep, then either keep both or delete the extra. GM-only.
- Fix who an entry is credited to. When you edit an entry, you (its author)
or a GM can now reassign it to any member of the campaign, from a "Written by"
picker. Handy after a bulk import, which brings every file in under the
importer's name, so a co-writer's entries can be handed back to them once
they've joined the table.
Changed
- Every campaign page shares one navigation bar. The campaign, timeline,
drafts, members, and settings pages now carry the same row of tabs, with the
page you're on highlighted, instead of a mix of a button cluster on the hub
and a lone "back to the campaign" link everywhere else. Moving around a
campaign is the same everywhere now, and it wraps to fit a phone. Settings
still shows only to GMs.
Fixed
- Sign-in and password-reset emails arrive reliably. Hearth's messages were
going out through a mailer that too often landed them in spam; they now send
through Resend, so verification links, password resets, and invites reach the
inbox.
- Imported files no longer show their metadata block as garbled text. A
markdown file that opens with a
--- frontmatter block (Obsidian notes, and
anything you exported from Hearth) used to keep that block in the entry body,
where it rendered as a stray heading. Import now reads the block, keeps any
tags it lists, and leaves it out of the entry. Exported-then-reimported
entries also recover their original date from the file.
0.16.1 - 2026-07-14
Fixed
- The "Previously on…" recap no longer overlaps the Lorekeeper chat. It lives
only at the top of your campaign feed now — catch up there, then open the
Lorekeeper to ask your questions.
0.16.0 - 2026-07-14
A "delight the pilot" release: warmer moments across the app, a new AI recap,
and full data portability.
Added
- "Previously on…" recaps. At the top of your campaign feed (and on the
Lorekeeper page) you can now have the Lorekeeper draw a short, read-aloud recap
of your last session and everything since, so the whole table can catch up in a
breath before the next game. It's drawn only when you ask for it, shared with
the table (never revealing GM-only notes), and you can refresh it whenever new
entries land. Appears only when the Lorekeeper is lit for your campaign.
- Export your whole campaign. From a campaign's Settings you can now download
the entire archive as a .zip of Markdown files, one folder per entry type,
exactly what you can see. Each entry keeps its title, dates, author, tags, and
visibility in simple frontmatter; images are linked, not bundled. Your words
stay yours, in a format any tool can read.
- Your table name, on your entries. Posts now show who wrote them, by your
per-campaign display name, the one you pick when you join or change anytime on
the members page. Players who go by a character name or handle appear that way
on their own entries, in comments, on the recap and saved Lorekeeper
conversations, and in invite emails, never by the name on their sign-in account.
Changed
- A warmer hearth. Visual touches across the app: publishing an entry lights
a brighter "inscribed in the archive" confirmation; your campaign emoji sit in
a wax-seal medallion on the dashboard; the opening letter of a post catches a
little firelight; hand-drawn line-art illustrations replace the old emoji in
empty and error screens; the timeline threads its entries on a lit cord with a
node for each; and the Lorekeeper shows a gentle ember pulse while it gathers
its thoughts.
- A warmer welcome for new GMs. Your very first campaign is quicker to start,
the create form now opens ready for you on an empty dashboard. Signup says up
front that your campaigns are never publicly listed. The composer reassures you
that a GM-only entry stays hidden from players, right when you choose it. And
the invites page nudges you to mint your first link and drop it in your group
chat.
0.15.0 - 2026-07-14
Added
- Invite your whole table with one link. When you create an invite you can
now choose how many people it seats: a single named seat (as before), up to 10
or 25, or a whole-table link you drop once into your group's chat. The members
page shows how many seats each link has used.
- See what's new since your last session. Your campaigns now carry a small
count of the entries posted since the table last played, on the dashboard
cards, the left rail, and the campaign switcher, so you can tell at a glance
which table has fresh reading before the next game. The dashboard cards also
show a quick digest: how many sessions a campaign has, and how long since the
last one.
Changed
- The dashboard uses your whole screen. On a wide display your campaign cards
now fill the width in more columns instead of a narrow center strip, so a big
roster of tables takes far less scrolling. Reading pages keep their
comfortable column width.
- The feed remembers where you were. Pick a type tab or run a search, open an
entry, and your browser's Back button now returns you to that same tab and
search instead of dumping you at the top of the full feed.
- The sign-in buttons wear their logos. "Continue with Google" and "Continue
with Discord" now show the familiar marks.
Fixed
- Imported titles lost their stray asterisks. Entries brought in from
markdown with a bold heading (
# **Deputies**) no longer keep the literal
** in their title, and titles already imported that way have been cleaned up.
0.14.0 - 2026-07-13
Added
- Connect your campaign to an AI assistant. Your account page has a new
"Connect to your favorite AI" section with step-by-step setup for Claude,
ChatGPT, and Grok. Point a chat assistant at your campaigns, ask it what
happened last session, who a character is, or to catch you up. Connecting is a
quick sign in and approve, with no keys to copy. It's read-only: the assistant
reads and searches only what you can already see at each table, and it can
never post, edit, or delete. The section also lists the assistants you've
connected and lets you disconnect any of them at any time.
0.13.0 - 2026-07-10
Added
- Connect your own tools to Hearth with API tokens. Your account page now
has an "API tokens" section: generate a named token (that you can expire and
revoke any time) and hand it to an integration. A token acts as you, it sees
and writes exactly what you can at each table, nothing more.
- A "Keep the hearth lit" link in the footer. When the site is configured
with a support page, the footer shows a small link to chip in toward Hearth's
running costs. Absent that config, nothing changes.
- Write your campaign from Obsidian. With a token, the new Hearth Obsidian
plugin pulls the posts you can see into your vault as plain markdown, lets you
edit them where you already write, and pushes updates back, with a safety
check so it never overwrites a change made on Hearth since you last pulled.
- The timeline opens on the latest entry. It now shows newest-first by
default (what just happened, up top), with a one-tap toggle to flip back to
oldest-first for a front-to-back read.
- One-click "Add Hearth to Discord." Campaign Settings now has a button
that invites the Hearth bot to your server with the right permissions, so
announcements actually post. (Adding the app by hand can grant only its
slash command and no bot, which silently drops every announcement.)
Fixed
- Discord delivery problems are no longer silent. If Hearth can't post to
a subscribed channel (e.g. the bot was removed), Settings now says so and
tells you how to fix it, instead of quietly dropping announcements. The
warning clears itself on the next successful post; a deleted channel
unsubscribes automatically.
0.12.1 - 2026-07-10
Changed
- The Lorekeeper answers at the right length. Open questions ("who is
X?", "how do these two stand?") now get a focused overview, the throughline
and the moments that matter most, instead of an exhaustive catalogue of
every appearance. Want the full telling? Ask it to "go deeper" or "tell me
more" and it opens up.
Fixed
- The Lorekeeper no longer trails off mid-sentence. When an answer reaches
its length limit, it says so plainly and invites you to ask it to go on,
rather than ending on a broken fragment.
0.12.0 - 2026-07-09
Changed
- The Lorekeeper understands what you mean, not just the words you use.
It now finds the entries that match the idea behind your question, so
asking "what was the archbishop scheming?" surfaces the right session even
when nobody ever wrote the word "scheme." Ask in your own words and it
lands on the right memories.
0.11.0 - 2026-07-09
Changed
- The Lorekeeper reads more carefully. Instead of stuffing the whole
campaign into every question (and dropping the oldest entries when the
archive grew large), it now pulls the recent and pinned spine plus the
passages that best match what you asked. Early-campaign details stay
reachable by name; shopping lists no longer crowd out the answer.
0.10.0 - 2026-07-03
Added
- Sign in with Google or Discord. One click to join or return, no password
to invent. If you already have a Hearth account under the same email, the
new sign-in method links to it: sign up one way, come back another, it's
the same account. (Appears once the server operator configures the
providers.)
0.9.1 - 2026-07-03
Fixed
- Emails to hello@ reliably arrive in full. Fetching an inbound email's
text needs a Resend API key with read access; the ops guide now says so,
and the fetch itself retries its fallback properly on network errors.
0.9.0 - 2026-07-03
Changed
- Discord announcements got richer. Each entry type now posts in its own
accent color (matching the tags in the app), sessions show their number,
the lead emoji matches the entry kind, and the teaser carries a few real
paragraphs instead of a sentence.
0.8.1 - 2026-07-03
Fixed
- Emails to hello@ arrive with their words. The first real inbound email
landed without its body (the notification only carries the envelope; the
text lives one API call away, and now we make it). Plain-text mail is used
as written; HTML-only mail is converted to readable text.
0.8.0 - 2026-07-03
Added
- Save a Lorekeeper conversation. Once a conversation exists, the
Lorekeeper page offers two ways to keep it: download the thread as a
markdown file, or publish it straight into the campaign as a Resource entry
(visible to players, or GM-only if you're a GM), where it joins the archive
and is searchable like anything else.
- Start a fresh Lorekeeper conversation. A "New conversation" button
turns the page (with a confirm, so you can save the old one first). Fresh
conversations also keep the Lorekeeper sharper: it stops dragging the
whole history of an old thread into every new question.
- Email us and a human really does read it. Mail to hello@rpg-hearth.cc
now lands in the same inbox as in-app feedback and reaches the operator
directly, so the promise on the privacy page is wired all the way through.
0.7.0 - 2026-07-03
Added
- Entries can be re-dated. Editing an entry now offers an "Entry date"
field, so stories imported from elsewhere can carry the date they were
actually written instead of the day they were uploaded. The feed, dividers,
and timeline all follow the corrected date.
- Imports guess each file's real date. The import table now has a Date
column, pre-filled from the file itself (a frontmatter date, a date in the
filename, or the file's last-modified time) with a date picker on every row
to correct the guess. Published imports land in the story's order, not the
upload's.
- Step between entries while reading. Every entry now ends with links to
the next and previous entry in the campaign, so reading the story in order
no longer means a round trip through the campaign page each time.
Changed
- A warmer, more bookish look throughout. Entry pages open with an ember
drop cap and a big chapter-style title; scene breaks and dividers carry a
small ember star instead of a bare line; cards wear a whisper of parchment
grain; a low hearth-glow warms the bottom of every page to match the one up
top; dates and labels share one quiet small-caps voice; and the landing
page's promises stand a little taller.
- Entries read like a book page. The entry text column now keeps to a
comfortable reading width with slightly larger, looser type, instead of
stretching the full width of the screen.
- The deletion notice points the right way. The banner on a campaign
scheduled for deletion now links to Settings, where cancel actually lives
(it used to name the members page, which was wrong).
- The campaign feed reads like chapters. Quiet "Session N" divider lines
now mark where each session's era begins in the All view, so scrolling a big
archive has rhythm instead of being one long wall.
- Warmer entry-type colors. The fiction, announcement, resource, gallery,
and character tags are tinted as if lit by the same fire as everything else,
instead of the cooler off-palette shades they had.
Fixed
- The campaign lists in the nav stay fresh. Creating, archiving, or
deleting a campaign now shows up in the left rail and the Campaigns
dropdown right away, instead of waiting for a full reload.
- No more phantom "unsaved words" warnings. A forgotten composer draft
(kept safe by autosave) used to trigger the "unsaved words" warning on every
navigation, about text you couldn't see. Now the warning only fires while
the composer is actually open, and a restored draft opens the composer so
you can see what came back. The entry editor likewise no longer counts
unchanged text as an unsaved edit.
0.6.0 - 2026-07-03
Added
- A public "Why Hearth?" page. The thinking behind the app, in one place:
text-first, plain Markdown, simple on purpose, meets your table in Discord
and Google Docs, the whole table writes, and the Lorekeeper is a librarian,
not an author. Linked from the landing page and the footer.
Changed
- Writing tools moved to the top of the campaign page. "New entry" and
"Import files" used to sit below the entire feed, so in a big campaign you
scrolled past everything to reach them. They now sit right under the campaign
header, and a freshly published entry appears directly beneath the composer.
- "Ask the Lorekeeper" glows like it means it. The Lorekeeper card on the
campaign page wears the hearth's warm ember glow instead of dressing like
fine print, so the eye finds it.
Fixed
- Bigger images upload again. Photos over 2MB were being rejected with an
unhelpful error; the full 20MB limit now works as intended.
- The Lorekeeper opens at the latest message. The conversation used to load
scrolled to the top of its history; it now starts at the end, where the
newest exchange is.
- "What's new" opens at the top. The changelog window used to open scrolled
to the bottom. It now starts at the newest entries, with a close button in the
top corner that stays put while you scroll.
0.5.0 - 2026-07-03
Added
- Clone a campaign for a rerun. Running the same adventure for a new group?
Clone an existing campaign from its settings page: it copies the settings and
lets you pick which entries to carry over (each comes in as a draft), with a
fresh, empty player roster. Any images on the entries are re-copied so the new
table stands on its own.
- A photo for yourself at each table. Set a per-campaign avatar on the
members page, separate from your account picture, so you can look different at
different tables.
Changed
- The Lorekeeper is a proper chatbox now. The ask box stays pinned at the
bottom and the conversation scrolls above it, pinned to the newest reply, the
way every chat app works, especially on a phone.
0.4.3 - 2026-07-03
Fixed
- Signed-in pages load reliably again. Opening or refreshing the app while
logged in could leave it stuck (a blank or unresponsive page, sometimes a
failed sign-in) that a refresh only sometimes cleared. The underlying cause is
fixed, so the dashboard, campaigns, and settings come up every time.
0.4.2 - 2026-07-03
Changed
- Reliable updates without the load penalty. Building on 0.4.1, the app
caches its code again (safely: each release ships a fresh, uniquely-named
bundle), so repeat visits stay fast while always loading the current version.
0.4.1 - 2026-07-03
Fixed
- Updates load reliably. After we shipped an update, some browsers (phones
especially) kept running the old version until you cleared your browsing data,
which could make signing in or moving around the app act stuck. The current
version now always loads.
0.4.0 - 2026-07-03
Added
- Import from more than markdown. The importer now takes Word (.docx) and
PDF files and Google Docs by link, converting each to markdown for the
review table. (Word and PDF conversion needs pandoc and poppler on the server;
a public/link-shared Google Doc needs neither.)
- What's new. Click the version in the corner to see a plain-language list of
recent changes.
0.3.0 - 2026-07-03
Added
- Import a campaign as a table. Bulk-import your markdown or text notes with
a review table: set the type and visibility for every file at once from the
column headers, edit the titles, and auto-number your sessions by date. Files
publish one at a time, so a single bad file never blocks the rest, and your
players get one tidy Discord notice, not one per file.
- Send feedback straight from the footer link. A human reads every note.
- About, Privacy, and Terms pages, plus a footer to reach them. The Privacy
page says plainly what happens to your writing (including the one time the AI
Lorekeeper sends your notes to an AI provider, and how to keep it off).
Changed
- Cleaner Discord announcements. New entries post as a tidy card that names
the entry and who logged it, with a timestamp; a bulk import posts one summary.
- The hearth glow is back, warmer. The lambent firelight around the window
frame is stronger, and it now frames the page without dimming the top bar.
Fixed
- Session numbers are editable. Editing an entry now lets you set or fix its
session number, so imported sessions no longer sort out of order.
- Duplicate campaign names work. Creating a second campaign named like an
existing one (a GM running the same adventure for several tables) no longer
fails; it just gets its own link.
- GM actions work from any link. Managing members, invites, settings, and
the rest now works whether you reached the campaign from your dashboard or
from a shared or Discord link.
0.2.0 - 2026-07-02
The public pilot release.
Added
- Image galleries: multi-image upload with a full-screen lightbox viewer.
- A share button on entries that copies a link (and, on an unlisted campaign,
can make an entry visible first).
- Bulk import of markdown/text notes.
- Discord bot: subscribe a channel and player-visible entries post there with a
rich preview.
- A left-hand campaign rail and switcher for hopping between tables.
- Footnotes in markdown.
Changed
- Restored the warm lambent glow around the window frame.