Commit Graph

27 Commits

Author SHA1 Message Date
CodeWhale Bot 037aab9cf3 docs: align the v0.9.6 public surface
Document Work and To-do as the two product concepts, synchronize every shipped locale, publish the six-tool and typed-image contracts, and keep static web generation offline while live GitHub chrome refreshes after deployment.
2026-08-11 06:16:30 -07:00
CodeWhale Bot b9e85906f7 docs(readme): drop a resume claim the ledger does not support
The previous commit added "including which role ran on which model" to the
resume bullet. Testing a real fleet run showed that is not true of the
Fleet ledger: `FleetTaskState` in `crates/tui/src/fleet/ledger.rs` carries
`entry`, `status`, `lifecycle_seq`, `leased_to`, `leased_at`, and
`completed_at` — no model, no provider, no route. A grep for `pub model` /
`pub provider` in that file returns zero.

The route *is* recorded, but by the sub-agent state
(`.codewhale/state/subagents.v1.json` holds
`runtime_profile.model = {fixed: "deepseek-v4-flash"}` and
`provider = "deepseek"`), which is a different system from `fleet.jsonl`.
Conflating the two put a claim in the README that the named artifact does
not back.

The rest of the fleet positioning stands and was verified in the same run:
spawning with only `type=scout` and no model resolved the scout profile's
pinned `deepseek-v4-flash` / `deepseek` route, with `permissions.write =
false`.

Reverted in English and all nine translations; re-stamped.

Assisted by Claude Code.
2026-08-07 16:31:26 -07:00
CodeWhale Bot d00b0fe404 docs(readme): lead with the thing that is actually different — mixed fleets
The README sold "any model, any provider" as *switching*: pick a provider,
pick a model, change it mid-task with `/model`. That undersells what the
runtime does. A saved role records its `provider`, `model`, and reasoning
tier explicitly, so roles in one fleet can run on different models from
different vendors in a single run — a cheap fast model directing an
expensive reasoning one, a GLM builder beside a Kimi reviewer.

That capability was documented in docs/FLEET.md (which even ships a
`provider = "zai"` / `model = "glm-5.2"` example) and absent from the front
door. `/fleet` was described as "runs a team of workers", which reads like
a thread pool rather than a team you compose.

Four changes, all prose:

- An intro paragraph stating the idea directly: you pick the model per
  role, and they don't have to match.
- The first "What it does" bullet now says roles pin their route
  explicitly, so a fleet can span vendors and a role's route does not
  depend on whichever provider happens to be active.
- A new bullet for the other half — roles and the constitution are files
  you author, so the harness matches your practice instead of ours.
- `/fleet` and the resume bullet name the per-role model.

Claims verified against `FleetProfileDraft` (`model`, `provider`,
`reasoning_effort` are per-profile fields) and docs/FLEET.md, not written
from the product pitch.

All nine translations updated in step and re-stamped; no new sections,
code blocks, or URLs, so the structural gates hold. Verified:
check-readme-translations.py, check-readme-locales.sh, 250 web tests,
check:docs.

Assisted by Claude Code.
2026-08-07 16:08:56 -07:00
CodeWhale Bot 2ec1c16370 fix(docs): strip removed account block from all 9 README translations + refresh source stamps 2026-08-06 01:02:17 -07:00
Hmbown 426d610c14 docs(readme): state the real Tab/Shift+Tab and undo/restore contracts
The one-paragraph TUI tour in README.md and all nine translations taught two
false preconditions and the wrong verb for undo.

Tab: the README said "when the composer is idle". The gate is EMPTINESS, not
idleness — crates/tui/src/tui/ui.rs:6978 does `if !app.input.is_empty() {
continue; }` immediately before `app.cycle_mode()`, and the comment at
ui.rs:6974-6977 explicitly denies the idle/running distinction ("Tab is
completion when the composer has content and a mode switch only when it is
empty ... so Tab never changes roles based on whether a turn happens to be
running"). A user with typed text and no turn running got completion, not a
mode switch.

Shift+Tab: the README applied the same "idle" qualifier. Shift+Tab has no
composer precondition at all — ui.rs:6363-6367 gates only on the modal stack,
per the comment at ui.rs:6358-6359 ("Shift+Tab is a shell-level permission
control. Keep it live in the composer.").

/restore: "undoes a turn" conflated two commands and described neither. Bare
`/restore` lists snapshots and reverts nothing
(crates/tui/src/commands/groups/skills/restore.rs:33-42 returns
`format_listing(&snapshots)` and returns early); `/restore <N>` reverts
workspace files only ("conversation history is unchanged", restore.rs:104-108).
The verb that undoes a turn is `/undo`
(crates/tui/src/commands/groups/debug/undo.rs:9-16). The product's own help
string already had this right — crates/tui/locales/en.json:287.

Also in this commit, because the translation stamp couples them:

- docs/KEYBINDINGS.md:18 inherited the same wrong "idle" qualifier on the
  Shift+Tab row; KEYBINDINGS.md:17 was already correct for Tab.
- README.id.md was stamped in sync but was missing the docs/AUTHORIZATION_ORDER
  and docs/HOOKS "Learn more" bullets that README.md:87-92 and the other eight
  translations carry, and its language switcher omitted Русский and Українська.
  Provenance: 171f0b2a2 touched README.md plus the eight files in the checker's
  TRANSLATIONS list and skipped README.id.md; 92128e669 then refreshed the stamp
  wholesale, so the marker certified a sync that did not exist.
- scripts/check-readme-translations.py checked only eight of the nine shipped
  translations. README.id.md was absent from both TRANSLATIONS and the
  LANGUAGE_LINKS exemption set, which is exactly how the gap above survived CI.
  Adding it makes the gate report "9 translations in sync".
- README.ru.md:24 listed [Українська](README.uk.md) twice.

The gate was already red before this commit: cc20f407f added the Discord link
and badge to README.md and to every translation body but never re-stamped, so
all eight checked files reported stale. All nine are now re-stamped to
sha256:a7f294018f28.

Verified: `python3 scripts/check-readme-translations.py` exit=0 ("9
translations in sync"), `bash scripts/check-readme-locales.sh` exit=0 (PASS).
2026-08-03 22:44:24 -07:00
Hmbown cc20f407f3 feat: link the Codewhale Discord from the README and the site
Adds https://discord.gg/37gfS3ksug in the places someone actually looks for
a community: a badge in the first badge row and an entry on the language/link
line of all ten READMEs, a Discord action in the site nav beside the star
badge, an entry in the footer Project column, and a link in the homepage
community section.

"Discord" is a brand name, so it is a literal rather than a dictionary key —
it needs no translation and every routed locale gets the identical link shape.
The one exception is the zh README's nav line, which reads "Discord 社区" so
the word is a noun phrase in context rather than a bare English token.

docs-ia.test.ts pins the footer project routes in exact locale-swap parity, so
its expectation is extended rather than relaxed — a new footer link still has
to appear in every locale or the test fails.

Receipts: cd web && npx tsc --noEmit exit=0; npm test -> 28 files, 235 tests
passed; npm run lint exit=0.
2026-08-03 22:35:58 -07:00
Hmbown 92128e669d docs(i18n): sync all README translations with the account-login delta
Absorbs the lane's README.md changes into every locale: the
'codewhale account login' quickstart line (code blocks byte-identical to
English), the translated provider-vs-account authentication paragraph, the
docs/WORKFLOW_EXPERIMENTAL_SEARCH.md bullet, and the refreshed source
stamp (sha256:4d02e29bfb3a). check-readme-translations.py is clean.

No-Issue: mechanical translation sync for the release train (CI Lint gate).

Agent-assisted: translated per-locale with a Claude Code workflow fan-out.
https://claude.ai/code/session_01AAEuFJrqcMqF1oztnjZeMy
2026-08-01 13:17:39 -07:00
Turisla 171f0b2a27 docs(permissions): publish and lock authorization order (#4980)
Publish the implemented authorization order and lock its precedence with regression coverage. Preserve the contributor's documentation, translation, and contract-test work.
2026-07-30 05:15:28 -07:00
Atmo Suwiryo 0ccca9886a docs: link README.id.md in main README header and update locale stamps 2026-07-29 14:43:33 +07:00
Hmbown b1de3b2672 docs(readme): add Russian and Ukrainian READMEs
README.ru.md and README.uk.md are full translations of README.md,
including the docs/HOOKS.md bullet the candidate added after the lane
forked. Every README's language nav gains the two links (each file omits
its own), and all eight translations are restamped against the new
README.md sha256.

check-readme-translations.py learns the two files in both TRANSLATIONS
and LANGUAGE_LINKS. `scripts/check-readme-translations.py` and
`scripts/check-readme-locales.sh` both pass.

Scope: this is the README half only — #4788/#4789 ship no fr/de/ca/id
READMEs and no marketing-site pages for those locales.

Harvested from the v0.9.2 localization lane (#3092, #4791).
2026-07-27 02:41:02 -07:00
Hunter B cb4e1a0f84 docs(readme): localize the hooks reference
Add the new TUI hooks documentation link to every complete README translation and advance their source stamps. Deterministic link and locale parity checks pass; native-speaker review remains a separate human gate.
2026-07-27 00:40:43 -07:00
Hunter B 705b79eb07 docs(readme): lead with the real origin story, research opencode/pi tone
Supersedes the previous simplification pass in this branch with a
stronger rewrite from a parallel session (PR #4746, branch
claude/github-readme-simplify-al6fi3): opens with the actual history
(native DeepSeek experience -> community-driven multi-provider harness)
instead of a slogan, researches the opencode/pi README register for
tone, and moves the feature list under a plain "What it does" heading
instead of bold marketing labels. Adopted verbatim (byte-identical,
including all 6 translations) since it lands the same brief better
than my first pass and matches the user's explicit direction, without
re-deriving the same research.

Also fixes the one JS/TS contract test the retired tagline broke
(web/lib/public-surface-contract.test.ts:145 pinned the literal phrase
"supported hosted and local models"): asserts the substantive
hosted-or-local claim instead of the exact retired marketing string.
Verified: full web vitest suite (136/136), both README CI gates
(check-readme-translations.py, check-readme-locales.sh).
2026-07-23 23:36:13 -07:00
Hunter B 090b606f10 docs(readme): cut the marketing-bullet section, simplify the pitch
The "Why Codewhale" bold-tagline bullet list and the hedge-heavy sandbox/
pricing paragraph read like generated landing-page copy, not a project
README. Folded the real facts (multi-provider, approval gating,
constitution.json write holds, fleet resume) into two plain paragraphs
and dropped the defensive edge-case detail (per-OS sandbox backend
enumeration, the "$0" pricing aside) that belongs in docs, not the
front page.

Retranslated the changed passages into all 6 shipped locales and
restamped each against the new README.md hash so
scripts/check-readme-translations.py stays green.
2026-07-23 23:31:29 -07:00
Hunter B 4b80259c67 docs(public): align release facts with runtime
Derive website sandbox facts from explicit runtime capability markers instead of source filenames. Document actual platform wrappers, narrow model and audit claims, and make two-package/three-command installs exact.

Verify release assets under their manifest filenames before renaming them, with an executable contract test for every Unix snippet. Refresh localized README receipts and keep source-candidate toolCount at 66.

Signed-off-by: Hunter B <hmbown@gmail.com>
2026-07-21 18:38:16 -07:00
Hunter B 2fe689fb64 docs(release): separate candidate and published truth
Label v0.9.1 as an unpublished source candidate while keeping v0.9.0 as the verified latest release. Correct channel and Android/Termux preview guidance, narrow model claims, synchronize localized README controls, and credit @fleitz for PR #4673/#4674 without rewriting contributor history.

Signed-off-by: Hunter B <hmbown@gmail.com>
2026-07-21 17:20:36 -07:00
Hunter Bown 8e34589f25 docs(web): align the public surface with Blue Stage (#4587)
* docs(web): align the public surface with Blue Stage

Carry the TUI's semantic Blue Stage palette into the website, keep Signal Gold on the whale and human-attention accents, and enforce the cross-surface token contract in tests. Route existing Install and Providers topics to their first-party pages and document the loopback-only browser client's real bootstrap and authentication boundaries.

Signed-off-by: Hunter B <hmbown@gmail.com>

* docs: keep translated READMEs in public-surface parity

Mirror the browser-client command and guide link across all six translated READMEs, with the source stamp updated to the exact English README. This restores the repository translation gate without translating or reordering executable commands.

Signed-off-by: Hunter B <hmbown@gmail.com>

---------

Signed-off-by: Hunter B <hmbown@gmail.com>
2026-07-19 18:26:49 -05:00
Hunter B 92f3310631 README: adopt the 0.9.1 hero — one runtime, every model, your machine
Rewrite the README top per the 0.9.1 public-surface brief: tagline, a
concrete first paragraph, three Why bullets (no lock-in, safe by
construction, work that survives), and the deepseek-tui origin line.
Fold the long What-it-does list into the Why bullets plus a short
Learn-more section that deep-links PROVIDERS, FLEET, and CONFIGURATION.

Port the changed hero and Learn-more sections into all six locale
READMEs and refresh their source stamps;
scripts/check-readme-translations.py passes. Star counts stay omitted
rather than hardcoded. No anti-cloud phrasing.

Prepared with agent assistance for the 0.9.1 public-surface pass.

Signed-off-by: Hunter B <hmbown@gmail.com>
2026-07-18 17:00:57 -07:00
Hunter B 29d3f0c321 release: prepare Codewhale v0.9.0
Integrate the underwater TUI, message-first Operate, Fleet and Workflow reliability, expanded model/provider catalog, exact custom-route restoration, docs-first site, localization, packaging, and release metadata for the v0.9.0 candidate.

Harden endpoint-bound credential provenance, approval and goal UX, Fleet attempt fencing and crash recovery, large-workspace mention discovery, Kimi budgeting, and release asset/version gates. Include the stopship Fleet and Workflow fixtures used by release dogfood.

Verified with workspace fmt/check/clippy/tests on Rust 1.88, release-script and npm suites, 18-crate publish dry run, production web build, Docker build check, secret scan, dependency audit, and protected-state hash validation.
2026-07-15 23:44:37 -07:00
Hunter B 1581b83446 docs: flat README in seven languages, drift gates, nested agent guidance
Rewrite the README in plain developer language — what it is, install, use,
what it does, how to contribute — with details linked out to docs and
codewhale.net. The contributor-culture section stays substantive: feedback
is a gift, harvested PRs keep credit, first-contribution paths explicit.

Translate it into 简体中文, 日本語, Tiếng Việt, 한국어, and (new) Español
and Português so every complete UI locale has a README. Each translation
carries a source stamp, and scripts/check-readme-translations.py — wired
into CI — fails whenever the English README changes without translations
following, or when code blocks, links, or section structure drift.
Machine translations follow each pack's terminology; flagged for native
review.

Make the repo self-explaining where the work happens: crates/tui/AGENTS.md
(shell grammar contract, l10n rules, PTY QA traps), crates/tui/locales/
AGENTS.md (pack parity discipline, translation conventions, how to add a
locale), web/AGENTS.md (derived facts, gate list). The blanket AGENTS.md
gitignore now carves out these maintained files.

Rewrite the 0.8.68 changelog section to cover the complete candidate —
the full underwater shell, streaming/repaint work, the exec JSONL fix,
the 104-key localization layer, harvests, and doc-status work — and
resync the packaged mirror.
2026-07-12 15:39:21 -07:00
Hunter B c176f05d37 chore(release): prepare v0.8.68
Update workspace, npm, changelogs, docs, and generated site facts for the 0.8.68 release. Refresh the public mode and Workflow language to match the shipped Plan/Act/Operate surface.
2026-07-09 17:41:38 -07:00
Hunter B 737ac98728 ci(release): pause riscv64 artifacts for v0.8.67
Sync to CNB / sync (push) Has been cancelled
Release / parity (push) Has been cancelled
Release / resolve (push) Has been cancelled
Release / build (codewhale-linux-arm64, codewhale, ubuntu-latest, linux-arm64, codew-linux-arm64, codew, aarch64-unknown-linux-gnu, codewhale-tui-linux-arm64, codewhale-tui) (push) Has been cancelled
Release / build (codewhale-linux-x64, codewhale, ubuntu-latest, linux-x64, codew-linux-x64, codew, x86_64-unknown-linux-musl, codewhale-tui-linux-x64, codewhale-tui) (push) Has been cancelled
Release / build (codewhale-macos-arm64, codewhale, macos-latest, macos-arm64, codew-macos-arm64, codew, aarch64-apple-darwin, codewhale-tui-macos-arm64, codewhale-tui) (push) Has been cancelled
Release / build (codewhale-macos-x64, codewhale, macos-latest, macos-x64, codew-macos-x64, codew, x86_64-apple-darwin, codewhale-tui-macos-x64, codewhale-tui) (push) Has been cancelled
Release / build (codewhale-windows-x64.exe, codewhale.exe, windows-latest, windows-x64, codew-windows-x64.exe, codew.exe, x86_64-pc-windows-msvc, codewhale-tui-windows-x64.exe, codewhale-tui.exe) (push) Has been cancelled
Release / bundle (push) Has been cancelled
Release / windows-installer (push) Has been cancelled
Release / docker (push) Has been cancelled
Release / release (push) Has been cancelled
Release / homebrew (push) Has been cancelled
2026-07-07 00:40:02 -07:00
Hunter B f4eb4419ff refactor: rename whaleflow -> workflow across the workspace
Completes the whaleflow -> workflow rename workspace-wide:
- crates/whaleflow{,-js} -> crates/workflow{,-js}; codewhale-whaleflow -> codewhale-workflow
- WhaleflowVm -> WorkflowVm, WhaleflowJsError -> WorkflowJsError,
  WHALEFLOW_LIFETIME_CAP -> WORKFLOW_LIFETIME_CAP, codewhale_whaleflow(_js) paths
- __whaleflow_* -> __workflow_* JS bridge symbols; CODEWHALE_WHALEFLOW_JS_* ->
  CODEWHALE_WORKFLOW_JS_* env vars; whaleflow-js-vm thread; fleet_whaleflow_ledger
  -> fleet_workflow_ledger durable owner tag
- CI: output key, bash var, path filter crates/workflow/*, job id
  workflow-rlm-cache, cargo -p codewhale-workflow
- docs renamed WHALEFLOW_AUTHORING -> WORKFLOW_AUTHORING and
  rfcs/WHALEFLOW_EXTERNAL_MEMORY -> WORKFLOW_EXTERNAL_MEMORY; inbound links,
  active doc prose, and web/lib/facts.generated.ts updated
- README zh-CN/ja-JP/vi 'current lane' section reframed to 0.8.67
- Cargo.lock updated. CHANGELOG and retro ledgers left as historical record.
2026-07-05 22:21:50 -07:00
Hunter B d6da71bbde Rename public Workflow surfaces 2026-07-05 14:42:42 -07:00
Hunter B 5bb6b107c5 release: prepare v0.8.67 local candidate 2026-07-05 11:11:15 -07:00
Hunter B 0950f103f1 docs: center constitution management surface
Document /constitution as the primary personal constitution surface, with structured user-global constitution data rendered to prose, repo-local law as optional project policy, AGENTS.md as project instructions, and memory/handoffs below those layers.

Mark the full base-prompt Markdown override as expert-only and keep WHALE.md as deprecated migration-only guidance. Update README translations and the web constitution page so the docs map has localized coverage.

Tests: git diff --check; npm --prefix web run check:docs; npm --prefix web run lint; cargo fmt --all -- --check

Refs #3811. Refs #3412. Refs #3806.
2026-06-30 19:25:18 -07:00
Hunter B b9fca236e6 release: bump workspace 0.8.65 -> 0.8.66
Bumps workspace + internal pins + npm wrapper + Cargo.lock + README install
tags + the packaged tui changelog slice + generated web facts to 0.8.66, and
finalizes the CHANGELOG [0.8.66] entry. Adds the v0.8.66 sub-agent
fanout/backpressure/lock-hot-path lane (#3783-#3817), the inline bottom-anchored
approval prompt (#3799), hotbar hidden-by-default until opt-in (#3807), and YOLO
provenance inheritance for runtime continuations (#3817) to the changelog, plus
release/docs hygiene guards (#3766-#3778).

Via scripts/release/prepare-release.sh; check-versions.sh green, fmt clean,
targeted tests (approval/hotbar/persist/provenance_gate/fanout) pass, and
publish-crates dry-run + npm-wrapper-smoke clean.
2026-06-29 22:48:09 -07:00
Matt Van Horn e9b365e5c5 docs: add Korean (ko-KR) README locale 2026-06-27 23:18:32 -07:00