Skip to content

Plain My list, one palette, journal keeps entries in their week - #55

Merged
sarthakagrawal927 merged 3 commits into
mainfrom
agent/live-plain-list
Oct 11, 2026
Merged

sarthakagrawal927 merged 3 commits into
mainfrom
agent/live-plain-list

Conversation

@sarthakagrawal927

Copy link
Copy Markdown
Member

Owner: "Please fix live. I want to start using it immediately. I don't want AI involved right now." This implements option A from the 2026-10-11 app UX audit, plus the journal fix. There is no AI anywhere in these flows.

What changed

  • My list: one client component (my-list.tsx) is used for both signed-in and signed-out users. A storage adapter handles the differences: IndexedDB for signed-out, server actions for signed-in.
    • One add field with a gold "Add" button. It adds the text exactly as typed.
    • Status is To do / Doing / Lived, and that status is the only source of truth for "lived".
    • Each item has an optional target year, visibility (signed-in only, private by default), notes, and steps the user writes and can tick in any order.
    • Lived items appear in a compact list with their dates. Saved Bingo boards keep a quiet link list.
    • Removed: quest-chains.ts templates, locking, emoji, difficulty labels, the two-column layout, the control strip and the hero.
  • Branding: the header, footer and titles say "Live" with the ring mark. "by Significant Hobbies" remains only as a footer link. The nav label is now "Journal".
  • Palette: the field tints in globals.css now map to neutral surfaces. Gold is used only for the primary action and the active nav/segment. In DESIGN.md, the five-hue rule is replaced by a one-palette rule.
  • Journal:
    • Entries are matched to weeks by the midpoint of their stored week. Switching between Monday and Sunday starts no longer detaches a saved entry.
    • Saving an existing entry updates its original key.
    • Added a ‹ › week chooser.
    • The week-start setting moves below the list, with an explanation.
    • The "N weeks" pill is removed.
    • Older daily notes sit in a collapsed list.
  • Explore, Life in weeks and Life bingo: neutral palette and copy cleanup only.

Data safety

  • No schema change and no migration.
  • New steps are stored as UserQuest rows with type='bucket-step'.
  • Notes use the existing description column.
  • Legacy generated chain steps (bc-*) are filtered at read time:
    • completed ones show as checked and read-only;
    • active or abandoned ones are hidden;
    • nothing is rewritten or deleted.
  • Local records keep unknown fields, and the existing permissive validators are unchanged. Weekly entry keys are never re-keyed.
  • completeUserQuest no longer marks a bucket item done when a generated chain finishes. The chain no longer exists.
  • Verified on a local D1 copy seeded with legacy-shaped rows: in-progress, public and done items, bc- steps (one completed, one active), weekly entries from August to October, daily journal entries, and a Bingo board. All of them load and display correctly.

Checks

biome, format, typecheck, 724 unit tests, unused, complexity, duplication, cycles and build all pass. Screenshots were taken at 390 and 1440 of My list, Journal, Explore, Life in weeks and Bingo, in empty, local-populated and signed-in states. None had horizontal overflow or console errors.

Codex drafted this change; Claude reviewed it, fixed issues and verified it.

🤖 Generated with Claude Code

sarthakagrawal927 and others added 3 commits October 12, 2026 00:33
… week

My list is one implementation for signed-in and signed-out use: one add
field, a single To do / Doing / Lived status, an optional target year,
user-written steps in any order, and lived items in a compact list. The
generated quest-chain templates, locks, emoji and difficulty labels are
removed. Legacy generated steps are filtered at read time: only steps the
user completed are shown, read-only. No rows are rewritten or deleted.
New steps reuse UserQuest rows (type bucket-step), so no schema change.

The app says Live in the header, titles and footer. The field palette is
neutralised, and DESIGN.md now reserves gold for the primary action and
the active state.

The journal matches entries to weeks by the midpoint of their stored week,
so changing the week start no longer detaches a saved entry. The weeks pill
is gone, the week start setting is explained under the list, and older
daily notes sit in a collapsed list.

No AI calls anywhere in these flows. Codex drafted the implementation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The desktop panel repeats the item title as a heading, so specs target the
row button. Skeletons get role=status and the bingo lived mark role=img so
their labels are permitted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A controlled input is reset by React after its change handler, so reading
event.target inside the queued save recorded the old value: ticking a step
or picking a year or visibility silently saved nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sarthakagrawal927
sarthakagrawal927 merged commit c47980b into main Oct 11, 2026
2 checks passed
sarthakagrawal927 added a commit that referenced this pull request Oct 11, 2026
The empty state renders only after the device store loads. As a two-line
paragraph it became the mobile LCP element (5.1s vs 3.0s before #55); the
add field already links to ideas, so a single short line is enough.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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