程序员阿江(Relakkes) fa0a5bac77 docs(agents): say what shape a regression test has to have
The existing rule — production changes need a same-area regression test — is
satisfied by exactly the tests that failed to hold. ContextUsageIndicator.tsx was
fixed three times in ninety minutes; all three fixes shipped tests, and all three
tests covered only their own hop. 21 of the last 70 fix commits edit lines
another fix wrote within 30 days.

Coverage was never the missing signal. That file sits at 87% branch coverage.
What the tests had in common was shape, so this writes the shape down, with the
commit behind each rule:

- drive the transition instead of assigning the state it produces (component
  tests call setState 744 times and a real store action 3 times, and assigned
  state cannot expose "A did not update B")
- assert the invariant, not today's output (2262973a4 asserted the bug and the
  next fix inverted that exact line)
- cover both directions of any drop/merge rule (the replay guard was only ever
  tested for "discard the replay")
- test the join, not each end (deleting ChatInput's refreshNonce term left 314
  tests green)
- never retune an existing test's inputs to keep it green (128f75ab5 changed five
  tests' props rather than accept they described unreachable states)
- do not mock the module under test
- comparing content to decide identity means the identity exists upstream

Plus the two blind spots worth checking rather than trusting: desktop/electron is
not instrumented at all, and Bun's LCOV emits no branch records, so src/ and
adapters/ report 100% branch coverage for data that was never collected.

The desktop file gains the module-placement rules the Settings split and the
reachability guard produced.
2026-08-04 18:05:54 +08:00
2026-04-01 10:30:17 +08:00
2026-07-29 09:23:05 +08:00

Claude Code Haha

Claude Code Haha

GitHub Stars GitHub Forks GitHub Issues GitHub Pull Requests License English 中文 Docs

English · 简体中文

Claude Code Haha is a desktop Claude Code workspace for macOS, Windows, and Linux: sessions, projects, branch / Worktree launch, workspace changes and diff review, permission approval, model setup, Computer Use, H5 remote access, IM integration, and scheduled tasks in one app.

Desktop Preview · Install · Highlights · More Docs · Sponsorship · User Group


Desktop Preview

Download Desktop

Empty desktop session before the first task
Start with a clear, empty session
Project and permissions stay visible
Real task running with the Activity panel open
Follow the task as it runs
Tool calls and stage-by-stage progress stay in view
Workspace diff review
See exactly what changed
A focused, full-width syntax-highlighted diff
Built-in browser previewing the page that was just changed
Verify on the spot
The real edited page in the built-in browser
Model picker showing providers, presets, and local endpoints
Choose the exact model
Your providers, presets, and local endpoints in one list
Skill marketplace
Missing a trick? Install it
Source and safety status shown up front

Sponsorship & Partnership

This project is maintained in the author's spare time. Corporate or individual sponsorships are welcome to support ongoing development. Custom features, integrations, and business partnerships are also open for discussion.

Sponsor Description
TeamoRouter Thanks to TeamoRouter for sponsoring this project. TeamoRouter is an enterprise-grade Agentic LLM gateway: run Claude Code, Codex, Gemini CLI, and other popular AI agents through one unified API with no subscription and up to 90% off official pricing. It aggregates hundreds of official model providers (OpenAI, Anthropic, Vertex, Azure, AWS Bedrock) verified for Agent protocol compatibility, with near-official TTFT, a 99.6% SLA, and industry-leading cache hit rates. It also adds centralized billing, team management, BYOK, usage analytics, and one-click Teamo Desktop. New users who register through this link get 10% off their first top-up.
XuanShu API Thanks to XuanShu API for sponsoring this project. XuanShu API is an all-in-one, enterprise-grade AI gateway that gives you access to leading global models through a single unified API, and works out of the box with popular AI coding tools such as Claude Code, Codex, and Gemini CLI. Stability comes first: multi-account pool scheduling and automatic failover smooth out upstream account fluctuations. Model calls are priced as low as 25% of official rates, and balance top-ups get roughly a 20% bonus with no expiry. New users who register through this link receive a $5 credit.

📧 Contact: relakkes@gmail.com


Install the Desktop App

  1. Download the macOS / Windows / Linux desktop installer from Releases.
  2. On first launch, configure your model provider, API key, and default model in Settings.
  3. Public macOS releases require signing and notarization. Draft or unsigned temporary builds may still need one-time manual approval. Unsigned Windows installers may show SmartScreen; click "More info" -> "Run anyway". See the desktop installation guide.

Run the CLI from Source

For users who want to debug the underlying CLI, server, or local development flow:

bun install
cp .env.example .env
./bin/claude-haha

See environment variables and CLI setup for more configuration options.


Desktop Highlights

  • Multi-session workspace: tabs, project switching, terminal entry, and session history in one place, with a resizable sidebar.
  • Branch / Worktree launch: choose a repository branch and decide whether to use the current working tree or an isolated Worktree.
  • Review edits file by file: the workspace lists this turn's changes; open any file for a syntax-highlighted diff, or undo the whole turn.
  • Five permission modes: from "ask every time" to "skip permissions" — risky commands, tool calls, and follow-up questions are all approved in the GUI.
  • Bring your own model: sign in to Claude, ChatGPT, or Grok; use presets for DeepSeek, Kimi, Zhipu GLM and others; or point it at LM Studio and Ollama running locally.
  • Six colour themes: white, paper, warm classic, celadon, ink night, and ink blue — optionally following your system's light/dark setting.
  • Skill marketplace: discover, preview, and install third-party skills from ClawHub / SkillHub, with source and safety status shown up front.
  • Session activity panel: track task progress, background tasks, SubAgents, and sources in one side panel.
  • Computer Use: let the agent take screenshots, click, type, and control desktop apps after authorization.
  • Desktop pets: Dada, Huhu, Bubu, and Huihui change what they do with the task at hand — or raise one of your own (off by default).
  • H5 remote access: scan a QR code to continue the session in your phone browser; locking the screen won't kill a running task.
  • IM integration: chat, switch projects, and approve actions through Telegram / Feishu / WeChat / DingTalk / WhatsApp.
  • Scheduled tasks and usage stats: run planned tasks in their own sessions and track local token usage trends.

More Documentation

Full documentation site: https://cchaha.ai

Section Documents
Getting started What this is · Download and install · Connect a model provider · Your first session · Troubleshooting
Desktop features Feature overview · Computer Use · Desktop pets · Phone H5 and IM relay
IM integrations Overview and pairing · Feishu · Telegram · WeChat · DingTalk · WhatsApp
CLI Install and run · Command reference · Environment variables
Internals Desktop architecture · Multi-agent system · Skills system · Memory system · Computer Use architecture · Local server and API · Channel system · Project structure · Contributing and quality gates

☕ Buy Me a Coffee

If this project helps you, consider buying me a coffee — every bit of support keeps this project going ❤️

WeChat Pay
WeChat Pay
Alipay
Alipay
Buy Me a Coffee
Buy Me a Coffee

User Group

Scan the QR code below to join the cc-haha user group on Feishu (Lark) — the conversation there is mostly in Chinese. For questions and bug reports in English, Issues is the better place.

cc-haha Feishu user group QR code


Tech Stack

Category Technology
Language TypeScript
Desktop app Electron
Desktop UI React + Vite
Local runtime Bun
Terminal UI React + Ink
CLI parsing Commander.js
API Anthropic SDK
Protocols MCP, LSP

Acknowledgements

Thanks to the following open-source projects and community practices for reference and inspiration:

  • React: frontend engineering and component-based UI ecosystem.
  • Electron: cross-platform desktop app capabilities and engineering practices.
  • cc-switch: reference for model provider configuration.
  • LINUX DO: a new ideal developer community.

⭐ Star History

If this project helps you, please support it with a ⭐ Star so more people can discover Claude Code Haha.

Star History Chart
S
Description
No description provided
Readme MIT 596 MiB
Languages
TypeScript 96.3%
Swift 2.3%
CSS 0.3%
Python 0.3%
JavaScript 0.2%
Other 0.5%