Files
Gabriel Vidal 86d744d32e feat(tags): a Settings → Tags page for the derived tag registry
Tags in the app were derived but invisible: project/service pills came from
conv-meta and the transcript, stack tags from each project's package.json, and
nothing let you see the whole set or say anything about one.

Add `lib/tags.ts`, which aggregates every source (projects/services on disk,
stacks + keywords, and mentions from conversations, memories, plans and
project-local skills) into one `<kind>:<slug>` registry with per-source counts,
and a Settings → Tags page to browse it. Tags stay derived — nothing here
creates, renames or deletes one — but each can now carry a colour, a glyph and
a description, persisted per id in the settings store's `tagMeta` bag.

The description is the load-bearing one: it's what the composer writes into a
prompt's `Work in the following homelab location(s):` bullet, so editing it
changes what a spawned agent reads. The editor previews that exact line.

`useTagPresentation()` is the queryless resolver, so a customised tag looks the
same on conversation cards, in memory/plan lists and as a composer chip; an
untouched tag keeps the shipped look (projects primary, services sky).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 22:26:40 +02:00
..