| docs(competition): deep research on superset.sh — architecture, sync, terminal, Electric SQL Add superset.sh as a competitor reference with comprehensive research: - Architecture: Turborepo monorepo, 7 apps + 15 packages, agent-agnostic orchestration, host-service with zero Electron awareness - Sync: 4-layer state distribution (cloud Postgres, local SQLite, host-service SQLite, renderer localStorage), Electric SQL for cloud-to-local real-time sync, cloud DB command queue for CLI→desktop - Terminal: two coexisting architectures (V1 desktop daemon with HeadlessEmulator for TUI restoration, V2 host-service WebSocket with 64KB ring buffer replay), 5 layers of scrollback preservation - Electric SQL evaluation: API, performance (6ms latency), CDN caching, comparison to alternatives, viability for Happy - Ship velocity: 3-person team, 2,100+ commits in 5.5 months Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| Clean up repo: remove dev slop from README, move experimental docs, fix logo - Remove "Run From Source", "Local Dev Environment", and "Release" sections from root README - Move product.md, roadmap.md, and agent definitions to docs/experimental/ - Add agents.md explaining the automated factory experiment - Delete .agents/ and .vscode/ - Make logotype-dark.png white fill for GitHub dark mode visibility Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> | 5 个月前 |
| Merge remote-tracking branch 'origin/main' into feat/app-polish | 4 个月前 |
| docs: add slash-command validation note | 6 个月前 |
| Split self-host publishing out of the production server package d2d2f730 renamed packages/happy-server to happy-server-self-host so the self-host runtime could be published to npm, but that directory is also the production backend, and the rename left /Dockerfile.server and /Dockerfile running `pnpm --filter happy-server ...`. pnpm exits 0 on an unmatched filter, so the production image's build step became a no-op and its CMD became a container that prints one line and exits 0 instead of serving. Production has not been redeployed since. Actually split the two roles: - packages/happy-server goes back to being private "happy-server", the production backend. It is never published, so npm's squatted bare name is irrelevant to it. - packages/happy-server-self-host is a new publishing shell that keeps the published name and version. Its build bun-bundles the sibling's sources/standalone.ts into dist/ and copies prisma/ in, both of which must live inside the package because the runtime resolves migrations from cwd. It asserts its dependency list matches the sibling's, since the bundle externalizes every dependency and drift would otherwise fail at require time. Fixing the Docker filters alone was not enough: `build` now also bundles the npm runtime via bun, which neither image installs, and the full typecheck includes machinesRoutes.spec.ts, which imports happy-app source that the builder stage does not copy. Production therefore gets tsconfig.build.json, which excludes specs, and `build` runs that typecheck only. Every pnpm filter invocation gets --fail-if-no-match so a future rename fails the build instead of silently doing nothing, and Dockerfile.server's CMD no longer depends on the package name at all. Add .github/workflows/server.yml: the server package had no CI coverage, which is why this went unnoticed for 74 days. It typechecks and tests the package and builds both images and boots them, asserting they serve — the only check that catches a no-op CMD. Also revert 450f29e9, a hardcoded voice grant for one account that was written to deploy immediately and never shipped. | 1 个月前 |
| docs: add 3dparty.md — SaaS services we use (RevenueCat, ElevenLabs, PostHog, Paper) Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| chore(happy-cli): collapse local dev workflow to `pnpm cli:install` Single command builds, links the workspace over the global `happy` (via npm link), restarts the daemon, and verifies. Reuses ~/.happy/ — no separate dev home dir. HAPPY_HOME_DIR still works as an opt-in sandbox. package.json scripts: 20+ -> 6. Replaced `$npm_execpath` with literal `pnpm` (portable, Windows cmd.exe safe). Dropped tsx-based `dev`/`cli` paths — the daemon always spawns the built binary, so running unbuilt source was a desync waiting to happen. release-it is gone. Publish flows through the /release skill, which drives pnpm publish + git tag + gh release directly. Added .agents/skills/dev/SKILL.md documenting the full workflow: build, install, test, run the CLI / server / app / Tauri, plus troubleshooting. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 4 个月前 |
| docs: add realtime-sync-and-rpc doc + cross-references High-level overview of socket management, RPC routing, and known observability gaps. Cross-referenced from multi-process.md and README index. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| wip: working on docs | 7 个月前 |
| wip: working on docs | 7 个月前 |
| feat(app): stable chat list — expand up in place, collapse from either side One inverted FlashList. Work groups expand upward with the bottom anchored; a trailing Hide row lands on the pixels the tapped ribbon vacated. Expansion state is one toggle set, collapsed by construction — a group paged in from history or a turn that just completed is closed on its first painted frame, so nothing on screen moves except by the reader's own scroll. The Legend List (non-inverted) experiment is deleted; @legendapp/list rolls back to the dev-demo pin. Its lessons live in docs/chat-list-scrolling.md, the exact bar in docs/chat-list-acceptance.md, and scripts/perf-e2e.mjs enforces the budgets against the 10 most recent real sessions on a real simulator. Syntax highlighting in diffs stays off by default until it is off the first-commit path. | 18 天前 |
| docs: trim the Legend List record to transferable lessons The non-inverted Legend experiment is deleted and @legendapp/list stays on the pinned v2 (dev demo only). The doc kept ~145 lines of v3 API notes and line numbers into a package version we do not install, describing a file that no longer exists — actively misleading. Replaced with the three orientation-independent findings, one of which (collapsed-by-default) is what ChatList ships today. Also deletes dev/chat-scroll.tsx: scaffolding for that concluded experiment, unreferenced, recoverable from history. | 17 天前 |
| ref: more docs | 7 个月前 |
| Replace demo launcher with isolated reusable mobile gym | 1 天前 |
| docs: add community deep dive — 502 contributors profiled Full analysis of every external contributor by GitHub activity, career background, geographic distribution, retention cohorts, and contribution patterns. Includes VIP wall of notable users (OpenAI, Meta, CMU, Google, Apollo/Meteor, Instagram #1 eng, etc.) Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| fix(deploy): keep migration in TeamCity recipe | 29 天前 |
| feat: migrate from yarn 1 to pnpm 10 (#1033) * feat: migrate from yarn 1 to pnpm 10 Yarn install was taking ~82s (warm cache, no scripts). pnpm achieves ~7.5s for the same operation — an 11x speedup thanks to its content-addressable store and hard-linking. Key changes: - Add pnpm-workspace.yaml, .npmrc (shamefully-hoist for RN compat) - Replace yarn.lock with pnpm-lock.yaml (imported via pnpm import) - Use workspace:* protocol for @slopus/happy-wire cross-references - Move happy-cli resolutions to root pnpm.overrides - Add pnpm.onlyBuiltDependencies allowlist for native build scripts - Update all 3 Dockerfiles to use corepack + pnpm - Update CI workflows to use pnpm/action-setup@v4 - Update all scripts, tests, and docs referencing yarn Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * chore: bump changelog to version 8 for pnpm migration OTA Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> * fix(ci): pnpm pack outputs to repo root, use --pack-destination pnpm pack puts the tarball in the current directory (repo root) unlike yarn which puts it in the package directory. Use --pack-destination to match the expected path in the smoke test workflow. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Happy <yesreply@happy.engineering> | 5 个月前 |
| ref: more docs | 7 个月前 |
| chore: remove unused ENABLE_SESSION_PROTOCOL_SEND flag from docs and tests The flag was planned as a rollout toggle for session protocol user text but was never implemented in code. CLI already emits only the modern format, app already accepts both formats. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> | 5 个月前 |
| docs: add layout spec, diff viewer plan, and roadmap updates - Three-column layout spec (layout-core.md): sidebar | center | context panel - Context panel & diff viewer plan with user stories and implementation priority - Roadmap additions: push notification routing, navigation bugs, workspaces & checkouts Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| feat(app): prepare diff syntax off-thread and unify mobile presentation | 11 天前 |
| docs: add realtime-sync-and-rpc doc + cross-references High-level overview of socket management, RPC routing, and known observability gaps. Cross-referenced from multi-process.md and README index. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| feat: add voice onboarding and upsell experiments | 5 个月前 |
| Resolve sandbox permission mode flow and document precedence | 7 个月前 |
| Unify app analytics around sync-layer sends | 5 个月前 |
| wip: working on docs | 7 个月前 |
| docs: add realtime-sync-and-rpc doc + cross-references High-level overview of socket management, RPC routing, and known observability gaps. Cross-referenced from multi-process.md and README index. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| docs: remove duplicative plan, layout-core.md is source of truth Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| feat: add happy-wire and session protocol migration | 7 个月前 |
| feat: add happy-wire and session protocol migration | 7 个月前 |
| feat(app): voice usage UI, signed URL auth, hard limit messaging - Switch to signedUrl for ElevenLabs session auth (websocket default) - Bypass mode only with custom agent ID (can't bypass default agent) - Voice settings shows usage bar (UsageBar component) - Hard limit: "configure your own ElevenLabs agent" modal - Subscription required: paywall presentation - All 10 language translations for usage + limit strings Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |
| docs: add voice architecture documentation Covers ElevenLabs integration components, session routing, context delivery channels (sendContext vs sendPrompt), VAD detection, prompt batching, and voice agent lifecycle. Also adds docs/notes/ to gitignore. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering> | 5 个月前 |