返回 CodeWhale
PRODUCT.md
根目录 / docs / PRODUCT.md
1 # Product
2
3 <!-- impeccable:product-schema 1 -->
4
5 ## Platform
6
7 web (the public site and docs in `web/`), documenting a terminal application
8 (the Rust TUI in `crates/tui`). Paths below are relative to the repository
9 root.
10
11 ## Users
12
13 Developers who run a coding agent in their own terminal against their own
14 repositories: solo maintainers, small teams, and open-source contributors. They
15 arrive at the site to decide whether to install, to install, and then to look up
16 how a command, mode, or concept works. Many already use a competing agent and
17 compare on model choice, cost, and control.
18
19 ## Product Purpose
20
21 Codewhale is an open-source (MIT) coding agent and terminal UI written in Rust
22 (Ratatui + Tokio; sandboxed tools via Bubblewrap/Seatbelt). Given a model and a
23 task it reads the repository, edits files, runs the checks, and stops when the
24 job is done or it needs a human. The site exists to (1) get a developer from
25 "what is this" to a working install in one screen, and (2) be the canonical,
26 current documentation for the shipped release. Success is an install that works
27 and a docs answer found without leaving the page.
28
29 ## Positioning
30
31 Bring your own model. Codewhale is provider-neutral: any hosted, gateway, or
32 local model, and a different model per role. The user's model inventory is the
33 **Fleet** (`codewhale fleet`, `/fleet`; `pod` remains a compatibility alias).
34 Modes are Plan, Work, Operate; permission levels are Ask, Auto-Review, Full
35 Access. The agent runs on the user's machine, in the user's terminal — there is
36 no hosted runtime to sell.
37
38 ## Operating Context
39
40 - Install: official GitHub Releases first. New macOS/Linux installs use
41 `curl -fsSL https://codewhale.net/install.sh | sh`; Windows uses the matching
42 GitHub installer/archive. Existing direct installs use `codewhale update`.
43 npm and Cargo are secondary packaging routes; migration and PATH handling
44 follow `docs/INSTALL.md`. `latest` selects a published release, not the source
45 candidate. Facts (version, provider count, tool count, license) are
46 derived from the repository by `npm run prebuild` into
47 `web/lib/facts.generated.ts` and must never be hand-edited.
48 - Docs pages mirror `docs/*.md` in the repository; `npm run check:docs`
49 verifies the mapping. Public vocabulary lives in
50 `web/lib/content/vocabulary.ts` and `docs/public-surface-facts.json`.
51 - Localised through shared dictionaries in `web/lib/i18n/dictionaries/` with
52 locale-key parity enforced; no page-local copy forks.
53 - The terminal puts the conversation above the composer, posture and metrics.
54 Its workbar exposes Tasks, Fleet, Jobs, Files, Notes, Context, Git and Cost.
55 Product previews come from the installed native TUI's actual PTY cells;
56 the Ratatui explorer separately demonstrates reusable components with example data.
57
58 ## Capabilities and Constraints
59
60 - Public name is **Codewhale** (lowercase w). `CodeWhale` survives only in
61 compatibility identifiers (GitHub org/repo, package scopes).
62 - Provider and model names are first-class and neutral; never rank providers
63 in copy.
64 - `web/lib/media-manifest.ts` records the exact captured native build and
65 shared README image. Home, composer, workbar, provider selection and help
66 are captured in an isolated offline session, with their original text and
67 colors. They appear on the homepage, product page and getting-started guide.
68 Session video remains `pending`; static UI captures do not claim a completed
69 provider workflow. Build captions distinguish development builds from releases.
70 - `/context-window` does not exist on the current base; do not document it.
71 - Subagent role identifiers are those the code accepts (`general`, `explore`,
72 `planner`, `reviewer`, `implement`, `test`, `advisor`, `custom`); the older
73 spellings `worker`, `scout`, `builder`, `verifier`, `consultant`, and `oracle`
74 are accepted as compatibility aliases only. Do not invent public role names.
75
76 ## Brand Commitments
77
78 - Voice: quiet, dense, factual. Terminal vocabulary, no marketing superlatives,
79 no fabricated transcripts or reasoning traces.
80 - "It doesn't need to look special — it needs to look like Codewhale."
81 - Assets: the canonical vector family lives in the CWC repo at
82 `codewhale-apps/packages/brand/svg/` (mark, mark-gradient, mark-mono,
83 mark-reversed, wordmark, wordmark-inverted); `brand/` and
84 `web/public/brand/` carry byte-identical copies — sync from there, never
85 re-trace. The founder's brand sheet `brand/codewhalemarkfinal.png` remains
86 the source `scripts/brand/braille-mark.py` derives TUI launch art from. The
87 earlier local trace and `scripts/brand/trace-brand.py` were retired
88 2026-09-15 in favor of the canonical family. Web copies live in
89 `web/public/brand/`.
90 - Palette, type, shell direction, and the anti-slop rules are recorded in
91 `docs/design/DESIGN.md`; the colour tokens are owned by `crates/palette/src/rgb.rs`
92 and exported to `web/app/tokens.css`.
93
94 ## Evidence on Hand
95
96 - Real: GitHub stars (live), release version and changelog (generated),
97 provider/tool counts (generated), the v0.9.12 development-build screenshot.
98 - Absent, do not fabricate: testimonials, customer logos, benchmarks,
99 pricing, session video, or media of a published 0.9.12 release.
100
101 ## Product Principles
102
103 1. One owner per fact: every number and command on the site is derived from
104 the repository, never typed twice.
105 2. Content first: no permanent side chrome on the landing page; the docs page
106 is a reading surface, not a portal.
107 3. Show only what exists: pending media stays marked pending; commands are
108 documented only once they are on the base branch.
109 4. Provider-neutral, model-neutral, always.
110 5. Accessibility is not negotiable: AA contrast, ≥12px functional text, real
111 heading outline, keyboard-reachable everything.
112
113 ## Accessibility & Inclusion
114
115 WCAG 2.2 AA for text and controls. The audience includes screen-reader and
116 keyboard-only developers; the site is also read at 390px on phones.
117
117 lines MARKDOWN