Incorporate PR #578, retain the overflow regression tests from #561,
and match the complete request field in retained summaries.
Co-authored-by: ship <shiyipeng2002@163.com>
Tailwind v4 dropped the v3 preflight rule that set `cursor: pointer` on
`button, [role="button"]`, so every <button> in the web app fell back to
the UA default. <a> elements (nav links, GitHub icon) were unaffected, which
is why only the locale switcher and dark-mode toggle looked broken in the header.
Restore the rule once in globals.css instead of adding `cursor-pointer` to
each of the 18 buttons. `:not(:disabled)` keeps disabled playback controls
on the default cursor.
Closes#594
The else branch in inject_background_results is never reached in the
current agent_loop call pattern, where messages[-1] is always a user
message. Kept for independent reuse or future wake-up scenarios.
`fs.cpSync` in `copyChapterAssets` terminates the Node process on Windows
with Node 22. Running `npm run extract` (the `predev` hook of `npm run dev`)
prints "Source: root chapter folders (17)" and then exits with
STATUS_STACK_BUFFER_OVERRUN (exit code 0xC0000409) without any JS-level
error, so the course data is never written and the dev server never starts.
Replace it with a small recursive copy helper built on `fs.readdirSync` +
`fs.copyFileSync`, which is what `fs.cpSync` does internally minus the
native path that crashes here.
Verified on Windows 11 / Node v22.20.0:
- before: exit 0xC0000409, extraction aborted, no course-assets output
- after: exit 0, "17 versions / 16 diffs / 51 docs", 74 asset files written
Every chapter REPL treated an empty line as a quit command and exited with
status 0 without a word, while the banner only promises "Type q to quit".
Under VS Code's debugger the Python extension's environment-activation line
is often injected into stdin after the program started, so the first thing
the REPL read was a blank line and the chapter vanished right after its
banner.
An empty line is now ignored and the prompt comes back; q and exit still
quit, and EOF/Ctrl-C still end the loop. s17 already behaved this way. A
static test keeps every chapter's quit check free of the empty string.
Fixes#567
Clarify that specialized tools structure the model-harness interface for safer arguments, precise permissions, and shared logging. Keep the English, Chinese, and Japanese lessons in sync and regenerate the web content.\n\nRefs #549
Recognize the documented prompt is too long message in the bounded reactive-compaction path. Synchronize all three chapter READMEs and add regression coverage for recovery, compatible markers, retry exhaustion, and unrelated errors.
Validation: 21 targeted tests and 22 subtests passed. Full suite: 486 passed, 1 pre-existing S16 scenario ordering failure, 100 subtests passed.
Refs shareAI-lab/learn-claude-code#560. Prepared with AI assistance.