| Files | Last commit | Last update |
|---|---|---|
fix(web): serve security.txt, drop x-powered-by, send plain http to https codewhale.net had no /.well-known/security.txt, every page response carried x-powered-by: Next.js and x-opennext: 1, and a plain-http request to codewhale.net was answered over http. www.codewhale.net redirected to codewhale.net but kept the http scheme. - web/public/.well-known/security.txt (RFC 9116): Contact is the GitHub private vulnerability report form named in SECURITY.md, Policy is SECURITY.md, Expires 2027-10-19, Preferred-Languages en, zh, Canonical https://codewhale.net/.well-known/security.txt. - next.config.ts: poweredByHeader: false. OpenNext reads the same setting, so it also removes x-opennext. - middleware.ts: the canonical-host redirect now covers both site hosts. A request to codewhale.net or www.codewhale.net whose URL scheme or X-Forwarded-Proto is http gets one 308 to https://codewhale.net with the same path and query, before any other branch. Other hosts (localhost, previews) are untouched. Not covered: paths the Workers asset layer serves before the Worker runs, for example /install.sh and /.well-known/security.txt itself. Middleware never sees them, so plain http for those needs the zone's HTTPS redirect or worker-first routing for those paths. Not deployed by this commit. Evidence (local only): - npx tsc --noEmit: exit 0. - npx eslint middleware.ts next.config.ts: exit 0, no findings. - npm test (web): node --test 7 passed, 0 failed; vitest 74 files, 772 tests passed. - npx next build + next start: security.txt 200 text/plain; /en 200 with no x-powered-by; Host codewhale.net with X-Forwarded-Proto http -> 308 https://codewhale.net/en/install?ref=a; Host www.codewhale.net -> 308 https://codewhale.net/en; X-Forwarded-Proto https -> 200; localhost unchanged; POST over http -> 308 (method kept). - OpenNext Cloudflare build (next build in standalone mode, then opennextjs-cloudflare build --skipNextBuild) under local wrangler dev: worker saw http://codewhale.net/en and answered 308; over https /en is 200 with no x-powered-by and no x-opennext; /install.sh and /.well-known/security.txt were served by the asset layer with no worker invocation (0 worker spans). - No existing test covers the middleware and none was added. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> | 19 days ago | |
web(brand): pixel-dither whale for the terminal side (pet docs page); usage note for the two marks Smooth aurora mark stays the identity; the 192-cell dither whale (7.6 KB lossless WebP) is the terminal-native mark. 404 poster untouched. tsc clean; vitest 772 passed, 0 failed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> | 29 days ago | |
Add mixed-material merch collection and private interest signup Visitors can choose cotton tees, stretch ombre/polo/hoodie styles, desk gear and the planned doll, then optionally give CNY/USD item-price feedback. Eight apparel styles retain the Ocean Wave mascot and a separate contributor at-cost flow; all purchase/supplier gates remain disabled. Signup awaits durable CURATED_KV, validates bounded same-origin requests, records explicit unverified opt-ins for 180 days, and applies native 5/min limits. Owner-session admin read/delete has no public contact/count path. No campaign service, live payment, supplier order or deployment is enabled. Validation on wave/0.10.1-next: - npm test: 1266 passed, 7 existing skips (101+19+384+762). - npm run check:web:PASS (facts/docs/tokens/ESLint/TypeScript/production build). - Source interest suite: 38/38 passed; source/assets match reviewed slice. - Native Workerd persisted local KV through restart; sixth request 429. - Full OpenNext local preview:EN/ZH 200, availability true, synthetic save 200, stored server-derived budgets; unauthorized admin 401. - Browser administration-policy verification unavailable; no new rendered interaction or screenshot proof. Existing DraftClaimLock, model settings, dependencies and auth safeguards are preserved. Contributor-language and delivery/artwork routes still need quotes and physical samples; survey prices exclude shipping/tax. Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 1 month ago | |
docs: point every link at the codewhale-hq organization Hunter moved the Codewhale repositories to github.com/codewhale-hq on 2026-10-05. Rewrite Hmbown/<moved repo> slugs to codewhale-hq/<repo> in docs, READMEs (all 19), website, CHANGELOGs, workflows, issue templates, Cargo/npm/VS Code/nix/winget metadata, install and updater code, the bundled first-party marketplace catalog and their tests: 1,795 references in 434 files, plus four escaped regex literals. Docker images publish to ghcr.io/codewhale-hq/codewhale from the next release. Old URLs keep working through GitHub's transfer redirects (verified live: API releases/latest, HTML releases/latest, release asset downloads, codeload tarballs, git clone), so released clients keep updating. Left unchanged on purpose: Hmbown/codewhale-cu-plugin (not moved yet; its shipped updater refuses redirects), Hmbown/deepseek-skills, cwc and other repos that did not move; package identities (winget Hmbown.CodeWhale, NSIS publisher); vendor/codewhale-ratatui (frozen reviewed package); and the extension-host GitHub adapter with tools/github/report.rs and their parity fixture, which need a bundle rebuild and move together in a follow-up. README translation stamps updated to the new README.md hash. Validation: npm test (wrapper 101/0, SDK 19/0, extension host 398 passed / 0 failed / 7 skipped, web 763/0) and npm run check:web exit 0 (one pre-existing facts-lib.mjs lint warning). cargo check --workspace --tests --all-features --locked: exit 0. cargo test -p codewhale-cli -p codewhale-release -p codewhale-protocol and the touched codewhale-tui modules (client, cloud_dispatch, commands, dispatch_runner, llm_client::mock, oauth, operate, plugins::marketplace, remote_control, remote_setup, tools::mcp_registry, tools::web::fetch, working_set, tui::ui::tests): all ok, 0 failed. check-readme-translations (18 in sync), readme locales, TUI locale parity, product vocabulary, web locales, contributor credit, plugin claims, release-workflows.test.js and check-versions all pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 1 month ago | |
web(brand): whale belly #F4F8FF to kit White in the pose SVGs and icon.svg Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> | 29 days ago | |
feat(web): show finished work and explain models and connected tools Replace the homepage terminal-view gallery with a labelled weekly report computed from sample orders, matching input/report CSV downloads, and concrete app-building and connected-email tasks. Revise 18 locale editions around building apps, automating work, plugins/MCP/APIs, existing model accounts and own inference. Keep released capabilities and native/hosted development status explicit. Refresh native renderer captures from an actual local Engine task and reviewer, README media, product/design guidance and contributor credits; require Next.js 16.4. Validation: npm test PASS: package 101, SDK 19, extension 413 passed/7 skipped, dependency guards 7, web 74 files/772 tests. npm run check:web PASS: 24 docs topics, 150 design tokens, 0 lint errors/1 existing warning, typecheck, 894 static pages. After note/credit edits, focused changelog/public-copy/public-surface checks 24/24 and changelog sync PASS. Browser reviewed desktop/mobile, light/dark, Chinese and Arabic RTL; light text contrast checked. Native capture uses a local scripted provider. Download payloads and links were checked; in-app native file-save completion was not observed. Production still serves 24a7b99a. No deployment or publication claim. Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 1 month ago | |
fix(web): re-capture the terminal preview from the 0.10.1 candidate The six website/README terminal frames came from e9401490 (2026-10-02), 136 commits and several TUI chrome, posture and theme refactors before the release candidate. Re-capture all six from a commit-stamped build of 8ba2bbf805e1 (3a788990 plus the Custom-slot picker fix) with the opt-in website_current_terminal_capture test, which now records every published frame including the Fleet and Tasks work bar. Sealed HOME, ~/my-project, offline, no provider, no submitted prompts or fixture history. Visible differences: home shows v0.10.1 (8ba2bbf805e1); the provider list shows Custom (OpenAI-compatible) needs endpoint instead of the broken custom (custom) legacy · legacy; the work bar is captured on the real launch screen rather than an unrecorded manual sequence. README image is the home frame exported by render-terminal-capture.mjs --svg and rasterized at 1000x480; facts, media manifest and all 19 README languages point at it. Production codewhale.net still serves an older main deploy (a v0.10.0 PNG with a temp-dir path); it changes only through a human-approved deploy. Validation: npm test passed: wrapper 101/0, runtime SDK 19/0 + strict types, extension host 384 passed/0 failed/7 skipped, web 762 passed/0 failed (74 files). npm run check:web exit 0 (facts, docs, install, tokens, lint with one pre-existing facts-lib.mjs warning, TypeScript, production build 894 pages). render-terminal-capture.mjs --check current. Browser QA on the local dev server: Home/Composer/Workbar/Fleet/Providers/Help views show the new frames, no .tmp path, desktop and 390px widths. Binary sha256 d0923bef…806d8db; capture tool sha256 4b6b6426…ca559d3a7. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: CodeWhale Bot <bot@codewhale.net> | 1 month ago | |
web: add Codewhale x OrcaRouter offer to the homepage Shows the OrcaRouter partner graphic as a linked card between the release status line and the terminal preview, pointing at the Codewhale redeem link (orcarouter.ai/redeem/1a6250545fdc4e0aaccb0a4470159e67). Copy follows the offer page's stated terms: +30% credit on eligible top-ups, usable only on deepseek/deepseek-v4.1-flash(-1017), one claim per developer, sign-up closing 2026-11-21 04:29:57 PST. The card hides itself after that instant (endsAt 2026-11-21T12:29:57Z); the page already revalidates every 300s, so it drops off without a redeploy. The link carries rel="sponsored". The image is the supplied 1440x810 JPG re-encoded to WebP (124 KB), served unoptimized like the 404 poster. Its alt is empty because the card text states the offer. Copy lives in lib/content/partner-promo.ts with en/zh via pickText, the same bridge RELEASE_HIGHLIGHTS uses on this page; other locales fall back to English. Verified: next dev on 127.0.0.1:3241, /en at desktop width (image left, text right) and /zh at 375px (stacked, no horizontal overflow), image loaded at 1440px natural width, no console errors. eslint on the two TS files clean; tsc --noEmit clean; vitest public-surface-contract, i18n/dictionaries, iszh-ceiling: 3 files, 33 passed. Full web gate (npm run check) not run. Not deployed: web.yml deploys only on manual dispatch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> | 18 days ago | |
web: keep the whale-road look, restore the old site's strengths Keeps the top bar, navy ground, ombre buttons, the whale on the horizon with its reflection, v2 pose marks, verbs-first docs and status dot+word. Restores, re-inked into the current tokens: - Editorial type scale: section titles at 28-40px (--text-section, back from 22px) and a two-column section form (Section layout="split": title, scope and link left; a ruled, mono-keyed list right) on home, product, runtime and models. Boxed icon rows stay only where a list needs its marks (runtime integrations, community links). - Strata water (components/strata.tsx): the hero water rising under the home horizon and reflection; a waterline band above the footer on every page (footer sea moved to .site-footer-sea); one mid-home band into deep water (.home-deep.stage). Static, aria-hidden, hidden in forced colours, inks from --strata-* tokens, no hex in the component. - The Codwhale 404 poster (codwhale-404.webp restored from d4c3b47fe^1) with its original copy in en/zh, in a navy frame with the current buttons. - Seals (components/seal.tsx) in the ombre, and bilingual Han titles (PageHeader titleAside) on faq (问), runtime (接 集 信 数), constitution (法 序 证) and feed (动), keeping each page's pose. - Numbered chapter labels on home (01-04; chapterTerminal, chapterTerminalTitle, chapterModels restored for all 18 locales from d4c3b47fe^1, chapterAvailability new), per-topic source-doc provenance behind a Details disclosure on the docs index, and a visible "Copy" word on the copy button. - The homepage terminal is now the live capture (TerminalCapture). - /constitution: the "See how it decides" panes are labelled as illustrations; no real session is cited for them. Contract tests updated to the new decisions (ocean-contract, public-surface-contract, docs-ia); gt catalogs re-exported. Tests (web): npx vitest run: 56 files, 502 passed, 0 failed. Root gate: npm test (67 + 14 node tests passed, 0 failed; web 502 passed) and npm run check:web (facts, release, docs, tokens, lint, tsc, next build) exit 0. check:locales PASS. Lint gates: check-blocking-calls-budget, check-dead-code-budget, check-command-crate-boundaries, split/module_graph --check, cargo fmt --check all exit 0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> | 1 month ago | |
web(brand): recolor belly pixels in icon-192, icon-512 and apple-icon to kit White (smaller files: 8.8/38.5 KB to 7.5/28.2 KB) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> | 29 days ago | |
web(brand): recolor belly pixels in icon-192, icon-512 and apple-icon to kit White (smaller files: 8.8/38.5 KB to 7.5/28.2 KB) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> | 29 days ago | |
fix(cli): remove the marked PATH block and Codewhale completions on uninstall A receipted release copy of codewhale uninstall --yes removed its program files but left the user to hand-delete the PATH lines and completion files the installer had told them to create. #7091 asks for a complete, verifiable uninstall; this completes the shell half of it. Uninstall now plans and applies two extra removals, both scoped to this install and gated on the same receipted copy that owns the program files: - This install's exact three-line # >>> codewhale PATH >>> block, in the same profile list the old report walked. The block is only matched when its middle line names this install directory, so another copy's block and a bare export PATH=… line the user wrote are never touched. The profile is edited by staging replacement bytes and renaming the original aside, so a failure installing the replacement restores the user's own file by name; a symlinked, unreadable or non-UTF-8 profile is reported and skipped. The profile's mode is adopted before the guard captures it, since GuardedFile pins ctime. - The Codewhale-generated completion files at their documented paths, honouring XDG_DATA_HOME and XDG_CONFIG_HOME. They are kept while another Codewhale copy remains on PATH, because a second install still wants them. Cleanup failures after the program is already gone are reported individually and exit non-zero rather than being silently swallowed. --help/dry-run prints Would remove and changes nothing. The installers still never edit shell profiles themselves; they now print the PATH line as that marked block, so there is something provably ours to remove. A bare export PATH=… line from an older install remains the user's. Verified: cargo test -p codewhale-cli --lib update:: 109 passed / 0 failed (269 filtered); vitest run lib/public-installer-contract.test.ts 25 passed, covering the printed marker block for zsh/bash/dash and the unrecognised-shell case. Release build of codewhale-cli clean, no warnings. Not verified: no real Windows host, no installed release artifact, and no run against a profile this repository does not own. Refs #7091 | 9 days ago |
| Files | Last commit | Last update |
|---|---|---|
| 19 days ago | ||
| 29 days ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 29 days ago | ||
| 1 month ago | ||
| 1 month ago | ||
| 18 days ago | ||
| 1 month ago | ||
| 29 days ago | ||
| 29 days ago | ||
| 9 days ago |