You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
How do notes and lists coexist in one index and UI? #231
How do notes and lists coexist in one index and one UI?
Same table, two products. A user's index page will hold shopping lists and prose notes side by side, and the list header, category assignment, and item-view-mode controls were all designed for lists.
Open: are they one stream or two? Is "note" a type flag, a view mode, or purely inferred from content shape? What does the list header show for a note? Does the recent legacy-list badge work interact with this?
Resolve with /prototype — build the index page both ways and react to it rather than arguing in the abstract. Link the prototype as an asset.
Prototype: three ways notes and lists share the index
Branch:prototype/notes-index (throwaway, never merged — compare) Run:git checkout prototype/notes-index && bun run dev → http://localhost:5173/prototype/notes-index (DEV-only route, no auth, mock data in memory, nothing persists). ←/→ or the floating bar switch variants.
Each variant lets you click a card to see its note header vs today's list header, and its "New" flow. Two legacy-badged lists (Costco run, Camping trip), two published/anchored entries (Launch checklist, "Why boop signs every list") and one pending-anchor note sit in every variant so the provenance cues can be judged next to the note cards.
Index
Note open
New
A
?variant=A
?variant=A&open=note-why-sign
?variant=A&new=choose
B
?variant=B / &tab=notes
?variant=B&open=note-why-sign
?variant=B&tab=notes&new=note
C
?variant=C / &folder=notes
?variant=C&open=note-why-sign
?variant=C&folder=notes&new=list
Today's list header for comparison: &open=list-launch in any variant.
A — one mixed stream
Notes live in the user's existing category sections next to lists; the card shape is the type signal (prose excerpt + word count + vN where a list has a progress bar). "New" asks list-or-note first, then names it. The note header is the list header's skeleton with the item-view pill swapped for Edit/Preview. Trade-off it exposes: zero new navigation and categories keep working for both kinds, but every list-shaped control has to grow a note branch (menu copy, header pills, sort, search-by-body), and the index reads as "lists with some odd cards" rather than a notes product. The # Title in the body duplicating the title field is visible here.
B — Lists / Notes tabs
Lists tab is today's index untouched. Notes tab is its own surface: a flat, recency-sorted document list, search hits the body, no categories. The note page is the existing NoteEditor's compact header promoted, with an always-visible provenance strip (VC/anchor, signed-by, v3 sealed 2h ago, Publish). "New" is contextual to the tab, so no chooser. Trade-off it exposes: the provenance wedge gets the most room and nothing list-shaped leaks onto a note, but it is two products in one app: categories, favourites and templates become list-only, and the greeting/hero has to know which tab it is on. Cross-kind search and "everything I touched today" have no home.
C — Notes as a built-in folder
Categories become a folder strip filtering one card grid; 📝 Notes is a pinned system folder. Note cards keep the list card shell — the folder name in the mono line is the only type signal. "New" is today's Create List modal; picking the Notes folder flips it into a note form. The note header is today's list header with the item-view pill dropped. Trade-off it exposes: smallest diff and the mental model "a note is a list in the Notes folder" matches the data decision literally, but "note" is now a category, so Change category has to be disabled for notes, a note can't sit in Work, and every string still says "list" unless it checks the folder (see the menu). The dashed folder chip is doing a lot of work.
Closing as outdated: the current app already implements a mixed notes/lists index with an explicit, immutable note kind and note-specific header controls. The comparative prototype is linked in the earlier discussion; this decision ticket no longer needs to remain open.
Activity
brianorwhatever commentedon Sep 30, 2026
Prototype: three ways notes and lists share the index
Branch:
prototype/notes-index(throwaway, never merged — compare)Run:
git checkout prototype/notes-index && bun run dev→ http://localhost:5173/prototype/notes-index (DEV-only route, no auth, mock data in memory, nothing persists).←/→or the floating bar switch variants.Each variant lets you click a card to see its note header vs today's list header, and its "New" flow. Two legacy-badged lists (Costco run, Camping trip), two published/anchored entries (Launch checklist, "Why boop signs every list") and one pending-anchor note sit in every variant so the provenance cues can be judged next to the note cards.
?variant=A?variant=A&open=note-why-sign?variant=A&new=choose?variant=B/&tab=notes?variant=B&open=note-why-sign?variant=B&tab=notes&new=note?variant=C/&folder=notes?variant=C&open=note-why-sign?variant=C&folder=notes&new=listToday's list header for comparison:
&open=list-launchin any variant.A — one mixed stream
Notes live in the user's existing category sections next to lists; the card shape is the type signal (prose excerpt + word count +
vNwhere a list has a progress bar). "New" asks list-or-note first, then names it. The note header is the list header's skeleton with the item-view pill swapped for Edit/Preview.Trade-off it exposes: zero new navigation and categories keep working for both kinds, but every list-shaped control has to grow a note branch (menu copy, header pills, sort, search-by-body), and the index reads as "lists with some odd cards" rather than a notes product. The
# Titlein the body duplicating the title field is visible here.B — Lists / Notes tabs
Lists tab is today's index untouched. Notes tab is its own surface: a flat, recency-sorted document list, search hits the body, no categories. The note page is the existing NoteEditor's compact header promoted, with an always-visible provenance strip (VC/anchor, signed-by,
v3 sealed 2h ago, Publish). "New" is contextual to the tab, so no chooser.Trade-off it exposes: the provenance wedge gets the most room and nothing list-shaped leaks onto a note, but it is two products in one app: categories, favourites and templates become list-only, and the greeting/hero has to know which tab it is on. Cross-kind search and "everything I touched today" have no home.
C — Notes as a built-in folder
Categories become a folder strip filtering one card grid;
📝 Notesis a pinned system folder. Note cards keep the list card shell — the folder name in the mono line is the only type signal. "New" is today's Create List modal; picking the Notes folder flips it into a note form. The note header is today's list header with the item-view pill dropped.Trade-off it exposes: smallest diff and the mental model "a note is a list in the Notes folder" matches the data decision literally, but "note" is now a category, so Change category has to be disabled for notes, a note can't sit in Work, and every string still says "list" unless it checks the folder (see the menu). The dashed folder chip is doing a lot of work.
All screenshots: docs/prototypes/notes-index/. Not closing this; the decision gets recorded from the reaction.
brianorwhatever commentedon Oct 3, 2026
Closing as outdated: the current app already implements a mixed notes/lists index with an explicit, immutable note kind and note-specific header controls. The comparative prototype is linked in the earlier discussion; this decision ticket no longer needs to remain open.