Skip to content

feat(memory): make the diary discoverable on a fresh install - #91

Merged
arthware-dev merged 3 commits into
mainfrom
feature/wiki-diary-link
Sep 15, 2026
Merged

arthware-dev merged 3 commits into
mainfrom
feature/wiki-diary-link

Conversation

@arthware-dev

@arthware-dev arthware-dev commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Three changes, all about the first time a family meets the diary.

A link from the wiki home page. The diary publishes under
<bucket>/diary/ and nothing on the landing page pointed at it. The home
page now carries a callout above its first section. diary.home_link()
renders it, so the path and the wording stay in the module that owns them
and the German set comes along.

A page to land on. An empty room returned early and published nothing,
so the page the link points at did not exist. The empty run now publishes
the index, and it explains the Memories room instead of reporting a count
of zero: that a voice message is written out in full, that opening with the
date files the entry on that day, that a reply adds to a memory later.

Two fixes that gate the above. The compiler had no sender filter, so
the setup welcome would have become diary entry #1 on every fresh install;
it now drops -bot accounts. And that welcome never landed anyway,
because stacker-bot was joined to the Server Room only and send() does
not join. The bot now joins Memories first, and the result is reported
instead of discarded.

The diary publishes under `<bucket>/diary/` and nothing on the landing
page pointed at it. It is two folders down, and Quartz sorts it into
the sidebar between unrelated entries, so a family that never ran the
command had no way to learn it exists.

The home page now carries a callout above its first section linking
the diary's front page. The diary module renders the pointer itself,
so its path and its wording stay with the compiler that owns them and
the German set comes along.

The link appears only once compiled diary pages are on disk. The
diary command runs on its own schedule, so a fresh install has a home
page before it has a diary, and a landing page that opens on a 404 is
worse than one that says nothing.

Also drops an em dash from the German diary intro, missed in the
earlier pass over that string table.
Two things made the first diary page unhelpful.

It was never published. A room with nothing in it returned early, so
the page the wiki's diary link points at did not exist, and the one
moment a family needs to be told how to record something produced
nothing to read. The empty run now publishes the index page, and that
page carries a short note: what the Memories room is, that a voice
message is written out in full, that opening with the date files the
entry on that day, and that a reply adds to a memory later. English
and German.

It also was not empty. `stack messages setup` posts a welcome into the
room when it creates it, and the compiler had no sender filter, so on
every fresh install the family's diary opened with the bot's words.
Bot accounts are named by convention (localpart ending in `-bot`,
defined by MicroBot.is_bot_user) and the compiler now drops them.

Both exits now publish through one function, so a full compile and an
empty one produce the same frontmatter and splice contract.
stacker-bot was joined to the Server Room only, then asked to send the
Memories welcome. Synapse rejects a message from a non-member, and the
return value was discarded, so setup reported success and a new family
landed in an empty room with nothing saying what it was for.

The bot now joins Memories before writing to it, and the outcome is
reported as a row in the setup summary like every other step. The test
double returned None where the real client returns (ok, detail); it now
matches, so the same call path is exercised.
@arthware-dev arthware-dev changed the title feat(memory): link the diary from the wiki home page feat(memory): make the diary discoverable on a fresh install Sep 15, 2026
@arthware-dev
arthware-dev merged commit 7c9b78b into main Sep 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant