The bell reaches older notifications, and setup's AI step asks for the context window (#1000, #1001) #1018

Merged
claude-bot merged 7 commits from fix/1000-1001-bell-older-setup-context into main 2026-10-01 23:38:16 +00:00
Collaborator

Closes #1000 and #1001: the two unbuilt leftovers of #655 and #439. One PR to save a CI run; one commit each, plus the fixes the render check asked for.

#1000: "Show older" in the bell

The bell loaded the newest 20 and nothing used the API's cursor, so anything older was unreachable.

  • A Show older button is the last thing in the list's scroll region, shown only while the server says there is more (next_before; no server change). It fetches the next 20, appends them (de-duplicated), and moves focus to the first new row.
  • While it works it reads "Loading…" and will not fire twice. A failure says "The older notifications could not be loaded." above the button, which stays. When nothing older is left the button goes.
  • Closing and reopening goes back to the newest 20; a late older page from before the reopen is dropped. Mark read and Mark all read work on appended rows.
  • The wording and the button follow Sessions' "Load more" and the discussions board's "Show older threads". No explanatory text (D20). There was no drawing for this; catalogue row IS-466 on SH-5, and three /design states.

Found by the render check, fixed here: on a phone the bell's panel hung 54px off the left of the screen (the heading read "ications"). It is so on main: the panel is 24rem hung from the bell's right edge, and on a phone the bell is not the bar's last control. At the shell's narrow width the panel now hangs from the bar inside its 16px gutters, as the search results do. Desktop is unchanged.

#1001: the context window in setup's AI step

The wizard took the two endpoints and tested them, but the model's context window was only in Admin → AI models, and IS-255 says the step includes it. The field is now one component (ContextWindowField) used by both, so the label, hint, bounds and "Currently in effect" line are the same string in both places. It sits between Summariser and Test both, and is saved with the endpoints, on leaving the step and before a test. No server change.

Demo seed

The demo owner gets 13 more read notifications, so the bell has more than 20 and Show older can be seen on dev after the next re-seed.

Checked

  • Full vitest at the final commit: 3591 passed, 1 skipped; eslint 0 errors. Full backend suite: 6694 passed, 14 skipped; ruff 0.4.4 clean. Every coverage/lane*.py passes.
  • Rendered in e2e stacks at 390×844 (touch) and 1440×900, light and dark, and looked at:
    • the bell with 57 notifications: the button at the foot (89×44), Loading…, focus landing on the first new row, the button gone on the last page, the error line with the button still there; the list scrolls inside the panel;
    • the bell's panel at 390 on Home, a campaign page, the session list and five session pages: left 16, right 374, top flush under the bar, the foot on screen, the window not scrolled; at 1440 unchanged (384 wide under the bell). Search results and the Contents sheet are unaffected;
    • /design's Bell section: the three Show older states, one panel each, nothing overlapping;
    • setup's AI step and Admin → AI models side by side: the same label and hint, 44px input.
  • Noticed, not changed: the bell's button is 36px wide at 390 (44 high); /design's specimen panels overhang the left by 35px at 390 (the reference page, not the product); with no evening in play in the seed, the bell over a live "Being played now" bar was not seen.

🤖 Generated with Claude Code

Closes #1000 and #1001: the two unbuilt leftovers of #655 and #439. One PR to save a CI run; one commit each, plus the fixes the render check asked for. ## #1000: "Show older" in the bell The bell loaded the newest 20 and nothing used the API's cursor, so anything older was unreachable. - A **Show older** button is the last thing in the list's scroll region, shown only while the server says there is more (`next_before`; no server change). It fetches the next 20, appends them (de-duplicated), and moves focus to the first new row. - While it works it reads "Loading…" and will not fire twice. A failure says "The older notifications could not be loaded." above the button, which stays. When nothing older is left the button goes. - Closing and reopening goes back to the newest 20; a late older page from before the reopen is dropped. Mark read and Mark all read work on appended rows. - The wording and the button follow Sessions' "Load more" and the discussions board's "Show older threads". No explanatory text (D20). There was no drawing for this; catalogue row **IS-466** on SH-5, and three /design states. **Found by the render check, fixed here:** on a phone the bell's panel hung 54px off the left of the screen (the heading read "ications"). It is so on main: the panel is 24rem hung from the bell's right edge, and on a phone the bell is not the bar's last control. At the shell's narrow width the panel now hangs from the bar inside its 16px gutters, as the search results do. Desktop is unchanged. ## #1001: the context window in setup's AI step The wizard took the two endpoints and tested them, but the model's context window was only in Admin → AI models, and IS-255 says the step includes it. The field is now one component (`ContextWindowField`) used by both, so the label, hint, bounds and "Currently in effect" line are the same string in both places. It sits between Summariser and Test both, and is saved with the endpoints, on leaving the step and before a test. No server change. ## Demo seed The demo owner gets 13 more read notifications, so the bell has more than 20 and Show older can be seen on dev after the next re-seed. ## Checked - Full vitest at the final commit: **3591 passed, 1 skipped**; eslint 0 errors. Full backend suite: **6694 passed, 14 skipped**; ruff 0.4.4 clean. Every `coverage/lane*.py` passes. - Rendered in e2e stacks at 390×844 (touch) and 1440×900, light and dark, and looked at: - the bell with 57 notifications: the button at the foot (89×44), Loading…, focus landing on the first new row, the button gone on the last page, the error line with the button still there; the list scrolls inside the panel; - the bell's panel at 390 on Home, a campaign page, the session list and five session pages: left 16, right 374, top flush under the bar, the foot on screen, the window not scrolled; at 1440 unchanged (384 wide under the bell). Search results and the Contents sheet are unaffected; - /design's Bell section: the three Show older states, one panel each, nothing overlapping; - setup's AI step and Admin → AI models side by side: the same label and hint, 44px input. - **Noticed, not changed:** the bell's button is 36px wide at 390 (44 high); /design's specimen panels overhang the left by 35px at 390 (the reference page, not the product); with no evening in play in the seed, the bell over a live "Being played now" bar was not seen. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The field is Admin's own, extracted to pages/admin/ContextWindowField.jsx and
used by both. The demo seed gives the owner's bell more than twenty rows so
"Show older" (#1000) has something to reach.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The render check found the panel hanging 54px off the left of a 390px screen
(on main already: the bell is not the bar's last control there), and the new
/design state's three panels drawn on top of each other.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merge remote-tracking branch 'origin/main' into fix/1000-1001-bell-older-setup-context
All checks were successful
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 1m0s
CI / Does this change touch the recording path? (pull_request) Successful in 23s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Has been skipped
CI / Bot/backend version sync (pull_request) Successful in 30s
CI / Feedback site tests (pull_request) Successful in 47s
CI / Bot tests and audit (pull_request) Successful in 1m51s
CI / Docker image build (pull_request) Successful in 1m2s
CI / Backend lint (ruff) (pull_request) Successful in 1m27s
CI / Frontend (shard 2/2) (pull_request) Successful in 6m29s
CI / Frontend (shard 1/2) (pull_request) Successful in 8m9s
CI / End-to-end journeys (phone) (pull_request) Successful in 7m20s
CI / Backend migration, tests, and audit (pull_request) Successful in 19m14s
CI / End-to-end journeys (keyboard) (pull_request) Successful in 22m36s
CI / End-to-end journeys (desktop) (pull_request) Successful in 22m54s
9a7cfe28bd
Sign in to join this conversation.
No description provided.