Skip to content

feat: structure topic wiki pages as real reference pages#39

Merged
arthware-dev merged 15 commits into
mainfrom
feat/topic-wiki
Jun 25, 2026
Merged

feat: structure topic wiki pages as real reference pages#39
arthware-dev merged 15 commits into
mainfrom
feat/topic-wiki

Conversation

@arthware-dev

Copy link
Copy Markdown
Contributor

Reworks the family-memory wiki so topic pages read like a real wiki entry
instead of a flat capture feed.

  • Typed sections: topic pages split captures into Bookmarks / Notes /
    Documents instead of one undifferentiated list.
  • Living About: recency-weighted prose overview, batch-regenerated.
  • Attribution: each capture records who filed it, both as a filed_by
    frontmatter field and the git commit author.
  • Folder index pages: notes/ and bookmarks/ get a newest-first,
    month-grouped index for browsing.
  • Deterministic classification: temperature 0 stops title/language flip
    across runs; the classify prompt now includes today's date for relative-time
    phrases.
  • Identity-based dedup: captures match on stable hash suffix, so the same
    link filed twice updates in place instead of forking.

Append a dated addendum to knowledge-structure.md: the entity graph in the
vault is the ontology of record; ontology.toml demoted to the classifier
vocabulary seed. Keeps the 2026-04 design intact above it and explains why we
moved (Obsidian-native, one source per fact, auto-extends, portable).
Group a topic's captures by kind (read from the vault path) so the page shows
Bookmarks, Notes, and Documents as their own sections instead of one flat
Recent Activity feed; only kinds with captures get a heading. About becomes a
recency-weighted overview that folds in recent developments rather than a
changelog. Citations keep list-order [N] so the deterministic References
mapping stays aligned.
Record the submitter on every capture two ways at capture time, when the data
is free: a filed_by frontmatter field (the Matrix localpart) and the git commit
author derived from their id (@Marge:merles.eu -> marge <marge@merles.eu>), with
the bot still the committer. So 'who added this' is answerable from a plain
file read, a Dataview query, or git log --author. Falls back to the bot when
there's no submitter.
Index the filed_by frontmatter field and surface it in the topic evidence, and
ask the typed Bookmarks/Notes/Documents bullets to attribute each item to who
filed it. Reads the attribution that capture now records, so a topic page shows
not just what was added but by whom.
stack messages send gains --as <user> (symmetric with upload), sharing one
resolve_login helper so text from a family member is captured and attributed
like a real person's instead of bot chatter. Add tools/family-docs/topic-demo.py:
a messy, realistic Simpsons trip topic filed as Homer and Marge (links, notes,
todo-shaped messages) to eyeball the topic page — the bookmarks/notes split and
who-filed attribution, and the gaps (no task list yet, dropped short todos).
Classification ran at the model's default (non-zero) temperature, so the same
note got a different title each run — even flipping language (English vs
German), which then forked the filename and broke dedup. Pin the classifier to
temperature 0 so identical content classifies identically. Separately, the
capture prompt never carried today's date (the Q&A prompt does), so the model
couldn't resolve 'this Friday' or 'the 14th to 16th' into concrete dates; thread
it in.
A capture's filename is <title-slug>-<hash>.md; the hash is stable per URL/body
but the slug follows the title. So the same link re-pasted with different
framing, or content re-classified to a different title, forked a near-duplicate.
Look up an existing capture by its <entity>/<kind>s/ folder + -<hash>.md suffix
(like documents match by -p<id>.md), and update or rename that file instead of
creating a second one.
Reference links 404'd in the web wiki for topic pages: page-relative paths like
notes/2026/06/x worked for flat member pages but, two levels deep under
family/<topic>/, Quartz's shortest link resolution shortened them to a vault-
root slug that doesn't exist. Emit full paths from the vault root and switch
Quartz to absolute link resolution, so one link form resolves at any page depth
(Obsidian reads vault-root paths the same way). Verified 200 on the rig.
Clicking a topic's notes/ or bookmarks/ folder landed on Quartz's bare auto
listing (one year folder, then a drill through YYYY/MM). Generate an index.md
landing page per capture folder: every item newest-first, grouped by month,
with who filed it and its content tags, links absolute so they resolve at any
depth. Reused for both topics and member buckets. Lift the kind->label mapping
into one canonical source feeding both the index and the topic-page sections.
Index tags were inline code-spans — dead text that cluttered the scannable
date/title/who line. Move them to their own line and link each to Quartz's
/tags/ page, so they're clickable theme navigation here like they are on the
capture page. Keeps the Person: filter.
A chip row under every item buried the title and made the list hard to scan.
The index is now just date, title, and who filed it; tags stay on each capture
page where they're clickable.
Members and topics generated notes/bookmarks index pages, but the shared
bucket's own captures (a note dropped in the main family room, not under a
topic) did not. Hook the home generator so <shared>/notes/ and bookmarks/ get
the same index. Now consistent across home, members, and topics.
A bot with a bucket of its own (mail-bot/) was swept into the member roster
and got a member page. Exclude the -bot convention from _member_slugs, matching
how the archivist already treats bot users, so bots don't appear as family
members.
Index page titles and the who separator used em-dashes (Notes — Topic, title —
who), against the house style. Use a colon for the title and a middot for the
attribution.
The placeholder .example URLs failed DNS and fandom 403s the fetcher (Cloudflare
bot block), so bookmarks never filed. Use Simpsons Wikipedia articles, which
the extractor fetches cleanly.
@arthware-dev arthware-dev merged commit 38aed55 into main Jun 25, 2026
1 check passed
@arthware-dev arthware-dev deleted the feat/topic-wiki branch July 1, 2026 07:07
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