From 17fcaa8a58c92bff55920b98d931631679597164 Mon Sep 17 00:00:00 2001 From: Nucleic Date: Mon, 20 Jul 2026 21:07:28 -0700 Subject: [PATCH] Merge nucleic/hazy-velvet-urchin-kzfr into dev --- NUCLEIC_FORK.md | 1 + brush-core/src/prompt.rs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/NUCLEIC_FORK.md b/NUCLEIC_FORK.md index c9f6eab..56acdc8 100644 --- a/NUCLEIC_FORK.md +++ b/NUCLEIC_FORK.md @@ -11,6 +11,7 @@ Every fork change is marked with a `// nash:` comment. Current patches: | --- | --- | | `brush-shell/src/productinfo.rs` | `PRODUCT_NAME` → `nash`; display string identifies the fork | | `brush-shell/src/args.rs` | usage/version strings rebranded | +| `brush-core/src/prompt.rs` | `\$` (`PromptPiece::DollarOrPound`) renders the atom sign `⚛` (U+269B) for non-root instead of `$`; root still shows `#` | | `brush-core/src/expansion.rs` | corpus divergence D1: added `ExpansionPiece::LiteralText` — literal unquoted text is never field-split (bash splits only expansion results) but keeps glob characters active. Parameter-expansion substitutions (`${v:-word}` etc.) convert back to splittable at the expansion boundary; `ExpanderOptions.field_split_literal_text` lets data-string callers opt in. Upstream candidate. | | `brush-core/src/completion.rs` | `compgen -W` word list opts into `field_split_literal_text` (the -W string is data) | | `brush-shell/tests/cases/compat/ifs.yaml` | removed `known_failure` from 3 IFS tests the D1 fix repairs | diff --git a/brush-core/src/prompt.rs b/brush-core/src/prompt.rs index cb3f0c1..db38879 100644 --- a/brush-core/src/prompt.rs +++ b/brush-core/src/prompt.rs @@ -87,7 +87,8 @@ fn format_prompt_piece( if users::is_root() { "#".to_owned() } else { - "$".to_owned() + // nash: the interactive shell symbol is the atom sign (U+269B) rather than `$`. + "\u{269B}".to_owned() } } // NOTE: We mimic bash and convert \[ into \001, a.k.a. RL_PROMPT_START_IGNORE.