The shimmer progress renderer writes from a worker thread via `fs.writeSync(1, ...)` to keep the animation smooth while the main thread is busy in SQLite. That path bypasses Node's TTY-aware UTF-8->codepage conversion on Windows, so glyphs like `|`/`<>`/`-` were emitted as raw UTF-8 bytes and reinterpreted by the console's OEM codepage (CP437, CP936, ...), producing strings like `鋍?[0m 鉒?[0m Scanning files 鈥?N found`. Add `src/ui/glyphs.ts` with `supportsUnicode()` detection plus matched Unicode + ASCII glyph sets, and route all CLI/shimmer output through `getGlyphs()`. Defaults: ASCII on Windows and on Linux kernel consoles (`TERM=linux`), Unicode everywhere else. `CODEGRAPH_UNICODE=1` and `CODEGRAPH_ASCII=1` are escape hatches. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
36c8dbc404
commit
e176062c56
@@ -13,9 +13,12 @@
|
||||
* unsupported Node.js major version (currently 25+). Pinned via unit
|
||||
* test so the recovery commands and override instructions can't be
|
||||
* silently stripped by future edits.
|
||||
*
|
||||
* Uses ASCII glyphs to stay readable on Windows OEM-codepage consoles
|
||||
* (see ../ui/glyphs.ts for the rationale).
|
||||
*/
|
||||
export function buildNode25BlockBanner(nodeVersion: string): string {
|
||||
const sep = '─'.repeat(72);
|
||||
const sep = '-'.repeat(72);
|
||||
return [
|
||||
sep,
|
||||
`[CodeGraph] Unsupported Node.js version: ${nodeVersion}`,
|
||||
@@ -29,7 +32,7 @@ export function buildNode25BlockBanner(nodeVersion: string): string {
|
||||
' nvm install 22 && nvm use 22 # nvm',
|
||||
' brew install node@22 && brew link --overwrite --force node@22 # Homebrew',
|
||||
'',
|
||||
'To override (NOT recommended — you will likely OOM):',
|
||||
'To override (NOT recommended - you will likely OOM):',
|
||||
' CODEGRAPH_ALLOW_UNSAFE_NODE=1 codegraph ...',
|
||||
sep,
|
||||
].join('\n');
|
||||
|
||||
Reference in New Issue
Block a user