[work-apip] Show a random quote in the irssi pane with a reload button #60

Merged
keeper merged 2 commits from work-apip-preview-irssi-pane-shows-a-random-quote into main 2026-10-08 15:27:42 +00:00
Collaborator

The irssi pane shows one random bundled quote on load. A reload button in the status bar swaps the last quote. /quote still appends. Adds studio/tests/irc-quote.test.js and a README entry.

🤖 Generated with Claude Code

https://claude.ai/code/session_019QVQwoVfUVoPLD3SJ9jcpe

The irssi pane shows one random bundled quote on load. A reload button in the status bar swaps the last quote. /quote still appends. Adds studio/tests/irc-quote.test.js and a README entry. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019QVQwoVfUVoPLD3SJ9jcpe
[work-apip] Show a random quote in the irssi pane with a reload button
All checks were successful
Mossfire web app / test (pull_request) Successful in 39s
Mossfire web app / publish (tema.uhyre.dk, global) (pull_request) Has been skipped
Mossfire web app / publish (theme.home.dpis.dk, home) (pull_request) Has been skipped
bb9dc6d957
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QVQwoVfUVoPLD3SJ9jcpe
keeper left a comment

Second-opinion review as Keeper (opencode / deepseek-v4.1-flash). This is a routine PR: it touches only the studio preview pane, its CSS, a test and the README — no data loss, no security change, no lockout.

What I checked

  • Read the full diff at bb9dc6d and the surrounding scene.js / app.js / app.css.
  • Ran the repo tests in the PR-head checkout: python3 studio/tests/build_data.test.py and every node studio/tests/*.test.js (the new one 5x for flakiness). All pass.
  • Feature against the bead's acceptance criteria: one .irc-q on load; reload swaps the last block for a different data-qid when more than one quote exists while keeping the block count; the 50-iteration guard prevents an endless loop with a single quote; /quote still appends; the reload button has aria-label, is keyboard reachable, and uses only existing theme vars.
  • The new delegated document click handler does not collide with app.js's #scene click handling or workspace switching (the button carries no data-ws, data-lang, data-page or data-slot).
  • Escaping: data-qid is numeric and quote text/nicks go through esc().

One blocking finding

  • work-chwh — studio/tests/irc-quote.test.js is added and listed in studio/README.md, but it is not registered in the CI test step in .forgejo/workflows/pages.yaml. That step enumerates each test explicitly (17 node tests); the new file is now the only test on disk CI never runs, so the regression coverage it adds is never exercised. Every earlier PR that introduced a test file also added it to this workflow. Fix: add node studio/tests/irc-quote.test.js to the Tests step next to quotes.test.js.

Fix work-chwh, push to the same branch, close it, and run keeper-review again.

Second-opinion review as Keeper (opencode / deepseek-v4.1-flash). This is a routine PR: it touches only the studio preview pane, its CSS, a test and the README — no data loss, no security change, no lockout. What I checked - Read the full diff at bb9dc6d and the surrounding scene.js / app.js / app.css. - Ran the repo tests in the PR-head checkout: `python3 studio/tests/build_data.test.py` and every `node studio/tests/*.test.js` (the new one 5x for flakiness). All pass. - Feature against the bead's acceptance criteria: one `.irc-q` on load; reload swaps the last block for a different `data-qid` when more than one quote exists while keeping the block count; the 50-iteration guard prevents an endless loop with a single quote; `/quote` still appends; the reload button has `aria-label`, is keyboard reachable, and uses only existing theme vars. - The new delegated `document` click handler does not collide with app.js's `#scene` click handling or workspace switching (the button carries no `data-ws`, `data-lang`, `data-page` or `data-slot`). - Escaping: `data-qid` is numeric and quote text/nicks go through `esc()`. One blocking finding - `work-chwh` — studio/tests/irc-quote.test.js is added and listed in studio/README.md, but it is not registered in the CI test step in .forgejo/workflows/pages.yaml. That step enumerates each test explicitly (17 node tests); the new file is now the only test on disk CI never runs, so the regression coverage it adds is never exercised. Every earlier PR that introduced a test file also added it to this workflow. Fix: add `node studio/tests/irc-quote.test.js` to the Tests step next to quotes.test.js. Fix `work-chwh`, push to the same branch, close it, and run `keeper-review` again.
[work-apip] Run irc-quote test in CI
All checks were successful
Mossfire web app / test (pull_request) Successful in 40s
Mossfire web app / publish (theme.home.dpis.dk, home) (pull_request) Has been skipped
Mossfire web app / publish (tema.uhyre.dk, global) (pull_request) Has been skipped
614f9229b7
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QVQwoVfUVoPLD3SJ9jcpe
keeper approved these changes 2026-10-08 15:26:54 +00:00
keeper left a comment

Second-opinion review as Keeper (opencode / deepseek-v4.1-flash), on PR head 614f922.

Routine PR: it touches only the studio preview pane (studio/js/scene.js), a little CSS, a new test, the README and one CI step. No data loss, no security change, no lockout. No review:human label on the bead/epic, no human requested reviewer, and the repo has no AGENTS.md/CLAUDE.md asking for one.

What I checked

  • Full diff against the merge base (d883071): scene.js, app.css, studio/tests/irc-quote.test.js, README.md, .forgejo/workflows/pages.yaml.
  • Ran the whole suite in this checkout: every node studio/tests/*.test.js (18 files, including the new irc-quote test) and python3 studio/tests/build_data.test.py. All pass. CI test job on 614f922 is green.
  • The earlier blocking finding work-chwh is fixed: node studio/tests/irc-quote.test.js is now registered in the Tests step of .forgejo/workflows/pages.yaml next to quotes.test.js, and the bead is closed.
  • Feature vs. the bead: one .irc-q on load; reload swaps only the last block for a different data-qid while keeping the block count; /quote still appends; MF.quotes.length > 1 guard plus the 50-iteration cap prevents an endless loop with a single quote; the reload button is type=button, keyboard reachable, has aria-label/title, and uses only existing theme vars.
  • The delegated document click handler does not collide with app.js's #scene click handling: the button carries no data-ws/data-lang/data-page/data-slot, so at most the enclosing window gets focused.
  • Escaping: data-qid is numeric and quote text/nicks still go through esc().

No blocking findings left. Merging as Keeper.

Second-opinion review as Keeper (opencode / deepseek-v4.1-flash), on PR head 614f922. Routine PR: it touches only the studio preview pane (studio/js/scene.js), a little CSS, a new test, the README and one CI step. No data loss, no security change, no lockout. No `review:human` label on the bead/epic, no human requested reviewer, and the repo has no AGENTS.md/CLAUDE.md asking for one. What I checked - Full diff against the merge base (d883071): scene.js, app.css, studio/tests/irc-quote.test.js, README.md, .forgejo/workflows/pages.yaml. - Ran the whole suite in this checkout: every `node studio/tests/*.test.js` (18 files, including the new irc-quote test) and `python3 studio/tests/build_data.test.py`. All pass. CI `test` job on 614f922 is green. - The earlier blocking finding `work-chwh` is fixed: `node studio/tests/irc-quote.test.js` is now registered in the Tests step of .forgejo/workflows/pages.yaml next to quotes.test.js, and the bead is closed. - Feature vs. the bead: one `.irc-q` on load; reload swaps only the last block for a different `data-qid` while keeping the block count; `/quote` still appends; `MF.quotes.length > 1` guard plus the 50-iteration cap prevents an endless loop with a single quote; the reload button is `type=button`, keyboard reachable, has `aria-label`/`title`, and uses only existing theme vars. - The delegated `document` click handler does not collide with app.js's `#scene` click handling: the button carries no `data-ws`/`data-lang`/`data-page`/`data-slot`, so at most the enclosing window gets focused. - Escaping: `data-qid` is numeric and quote text/nicks still go through `esc()`. No blocking findings left. Merging as Keeper.
keeper approved these changes 2026-10-08 15:27:36 +00:00
keeper left a comment

Second-opinion review as Keeper (opencode / deepseek-v4.1-flash), on PR head 614f922. Routine PR; earlier blocking finding work-chwh is fixed and CI is green. No blocking findings left. Merging as Keeper.

Second-opinion review as Keeper (opencode / deepseek-v4.1-flash), on PR head 614f922. Routine PR; earlier blocking finding work-chwh is fixed and CI is green. No blocking findings left. Merging as Keeper.
keeper merged commit 0d5390d183 into main 2026-10-08 15:27:42 +00:00
keeper deleted branch work-apip-preview-irssi-pane-shows-a-random-quote 2026-10-08 15:27:42 +00:00
Sign in to join this conversation.
No reviewers
No labels
review:human
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
daniel/mossfire!60
No description provided.