Skip to content

Commit 730bdff

Browse files
vikast908claude
andcommitted
feat(brand): pen-nib logo + the nib glyph across the TUI
Adopt the fountain-pen-nib logo (from the docs site) as the canonical mark: assets/logo-light.png + logo-dark.png, shown at the top of the README via <picture> (light/dark). In the TUI, the prompt and section/status markers now use the brand nib glyph (the pen-nib motif) instead of the per-theme fleuron; the theme palette still follows the active theme (test updated to match). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent b96f114 commit 730bdff

5 files changed

Lines changed: 11 additions & 4 deletions

File tree

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
<div align="center">
22

3+
<picture>
4+
<source media="(prefers-color-scheme: dark)" srcset="assets/logo-dark.png">
5+
<img src="assets/logo-light.png" alt="Writing Agent" width="128">
6+
</picture>
7+
38
<img src="assets/writing-agent-banner.svg" alt="Writing Agent - a self-correcting, autonomous writing system that turns a topic into a publication-ready manuscript" width="820">
49

510
### an autonomous writing studio - books, articles & more

assets/logo-dark.png

45.8 KB
Loading

assets/logo-light.png

45.8 KB
Loading

src/book_agent/shell.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,13 @@ def _sync_palette() -> None:
3838
for k in ("GOLD", "GOLD_HI", "INK", "PARCH", "DIM", "RULE", "ERR",
3939
"ON_CLR", "OFF_CLR"):
4040
g[k] = getattr(ui, k)
41-
g["_FLEURON"] = ui.FLEURON
41+
g["_FLEURON"] = _NIB
4242
_NODES = ["planner", "toc", "writer", "critic", "judge", "verifier", "summarizer",
4343
"consolidation", "production", "learner", "researcher", "humanizer",
4444
"diagram", "diagram_fallback", "chat"]
4545
_EXIT = {"exit", "quit", "q", ":q"}
46-
_FLEURON = ui.FLEURON
46+
_NIB = "✒" # the brand glyph: a pen nib (matches the logo)
47+
_FLEURON = _NIB # used for the prompt + section/status markers
4748
_MAX_HISTORY = 10 # max messages kept for multi-turn context (5 user + 5 assistant)
4849

4950
_SLASH_HELP = [
@@ -2054,7 +2055,7 @@ def run_shell(parser, commands, cfg: ModelConfig, settings: Settings) -> None:
20542055
pass
20552056
elif global_mode == "article":
20562057
sfx_plain = " [article]" # no active book - show global mode
2057-
prompt_plain = f"\n {slug}{book_part}{sfx_plain} "
2058+
prompt_plain = f"\n{_NIB} {slug}{book_part}{sfx_plain} "
20582059
elif console:
20592060
mode_tag = f" [{INK}]article[/]" if not book and global_mode == "article" else ""
20602061
prompt_plain = (f"\n[{GOLD}]{_FLEURON}[/] "

tests/test_themes.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ def test_shell_sync_palette_follows_theme():
4343
ui.apply_theme("violet-bloom")
4444
shell._sync_palette()
4545
assert shell.GOLD == ui.THEMES["violet-bloom"]["GOLD"]
46-
assert shell._FLEURON == ui.THEMES["violet-bloom"]["FLEURON"]
46+
# The prompt/marker glyph is the fixed brand nib (matches the logo), not the per-theme fleuron.
47+
assert shell._FLEURON == shell._NIB == "✒"
4748

4849

4950
def test_themes_are_visually_distinct():

0 commit comments

Comments
 (0)