Loading…
Reference in a new issue
No description provided.
Delete branch "build/lane3-j1"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The last piece of lane 3. #729's acceptance requires J1 and J6 green on desktop, phone and keyboard-only with axe clean. J6 landed in #770. J1's lane-3 half was a
test.skipwith a TODO addressed to lane 3 by name: time zone, invite, Discord, and the first session. It's written now.sh scripts/journeys.sh, whole suite: 27 passed, 3 skipped (J2's lane-4 skip in each project), 0 failed.a11y-baseline.jsis still{}, with no tolerated entries. vitest 1928/1928; lint 0 errors;test_sessions,test_paginationandtest_series88/88; ruff clean.Two defects the journey found, fixed here
1. Settings → Discord wiped what you'd typed when you tested the channel, and its verdict never appeared. The same cause made "Saved" vanish the moment it showed, on Discord and on Recording, retention & AI.
useSettingsAccess().reload. That goes back through the loading state, so the campaign becomes null,SettingsSectiondraws Busy, and the form unmounts. It then remounts from what's stored: unsaved values gone, verdict gone.refreshthat keeps the campaign on screen while it re-reads. It's only honoured over the load it was made against, so a stale re-read can't overwrite a newer page load.reloadstays as the retry after a failure, where there's nothing on screen to keep.2. The sessions list said "0 times" under every open vote.
Sessions.jsxreadtime_slots, whichSessionListItemhas never carried; the unit fixture had invented it. The list response now hastime_slot_count, counted in one grouped query and only for votes, so it's not an N+1. It's additive on the user API, not/api/bot/*, so there's no contract bump. "1 time" is no longer "1 times".What J1 now walks
CLAUDE.md); after a reload, the form must equal exactly what's stored.aria-disabledwith a reason. It's still focusable, and pressing it sends nothing (D36).role=alert, and This week shows the delivery banner (#369).session_proposedfor this session with 2 slots.finallycleans up if a run dies between joining and leaving.Axe is clean at WCAG 2.2 AA on every page reached, in all three projects. That covers This week in four states and as the invited player, the Settings sections, the session form, the Sessions list, the public invitation page, and Members & characters as a player.
Step 1 was written before D17 was corrected, and was reinterpreted
The TODO said to check that "every time shown afterwards is in [the campaign's zone]". That's the retired behaviour. D17 says one time, always the reader's own, with a line reconciling it to the table's day when the two differ.
timezoneIdon this test only, so no other journey's dates move.<day> 10:00in Tokyo (set on the table's clock), and the page shows the browser's Chicago reading with a zone marker that's non-empty and not the table's (shown on the reader's clock). The table's own reading is absent frommain, and "The table calls this 's session — you are N hours behind." appears.Found, not fixed: three items for the owner
AppFrame'suseCampaignsfetches once per app load, so creating, renaming, joining or leaving without a full reload leaves a stale list. That's lane 1's shell. Re-fetching on pathname change would be cheap, given the client's 15 s cache and invalidate-on-mutation. The spec enters through the Home card for now and says why.SessionListItemhas nosummaryordescription, so a played row always says "No recap yet" and search only matches titles. The unit fixtures invent both fields. Summaries aren't gated on read, so returning them isn't a leak; it's a size choice between a server-side first sentence for the row and full text for search./campaigns/:id, beside a comment saying "until lane 3 moves it". Lane 3 has moved it. Repointing needs a matching spec change.Not walked
/campaigns/:id/manage.🤖 Generated with Claude Code