What's Changed
- Session spawn UI - move to machine detail & style by @bra1nDump in #69
- feat: add Simplified Chinese language pack by @pyflmcp in #74
- resolve markdown copy issues by adding full-text selection and copy functionality by @GrocerPublishAgent in #82
- Fixes compatibility with GLM coding plan by @Lesiuk in #97
- fix: allow hiding inactive sessions from view as an experimental setting by @GrocerPublishAgent in #127
- feat: Add Claude Sonnet 4.5 support by @krzemienski in #151
- Fix press not activating randomly by @tiann in #266
- Fix notification not working on Android 13+ by @tiann in #259
- fix: re-fetch messages when control returns to mobile by @kmizzi in #263
- fix: retry message fetch when session encryption not ready by @kmizzi in #262
- Fix first message not sent to model on new session creation by @tiann in #270
- feat: Add Markdown Table Rendering, Code Block Copy Button, and Mermaid Diagram Support by @nick3 in #232
- feat(web): prevent MultiTextInput web keydown handler from firing during IME composition by @OrdinarySF in #296
- feat: update shell wrapper removal logic to handle zsh and absolute paths by @OrdinarySF in #298
- feat: add Claude Code AskUserQuestion tool view with radio/checkbox UI by @SaneBow in #317
- fix:
/newmodal path picker not applying on web + persist “new session” draft state locally by @leeroybrun in #309 - feat(i18n): add Japanese language support by @manatto in #339
- feat: add 'Enter to Send' setting for agent input (web) by @leeroybrun in #312
- Feat(i18n): Add Italian translations by @sstraus in #342
- feat: ability to swipe to archive/delete sessions from the top-level page by @danielamitay in #327
- fix: TypeScript issues + add Github action to prevent PRs introducing new issues by @leeroybrun in #360
- feat: New Session Page w/ one touch Profiles, adds z.ai / deepseek / microsoft AI Backend Support by @ahundt in #272
- Use wizard for new session by @denysvitali in #135
- feat(gemini): Add ACP integration with model selection and improved tool display by @Scoteezy in #376
- docs: update CLAUDE.md to match current project state by @hyacz in #406
- Refactor create mono repo by @GrocerPublishAgent in #404
- fix(markdown): implement column-first layout for consistent table cell widths by @hyacz in #408
- fix(expo-app): patch hoisted deps and add libsodium-wrappers ESM shim by @leeroybrun in #467
- fix(expo-app): pin libsodium-wrappers to 0.7.15 by @leeroybrun in #468
- feat: add win32-arm64 difftastic,ripgrep for bundling in with CLI by @GrocerPublishAgent in #409
- fix(cli): propagate Claude exit code to happy process by @fopina in #475
- feature(cli): add --chrome and --no-chrome flags for Chrome mode (Claude) by @gaius-codius in #476
- feat(cli): implement accurate cost calculation for Claude models by @tianrking in #484
- fix(cli): intercept --settings flag to prevent conflict with internal hook settings by @Lylll9436 in #485
- fix: align path normalization with Claude Code to fix session sync by @HirokiKobayashi-R in #590
- fix: set explicit S3 region to skip MinIO auto-detection by @maiqigh in #569
- Simplify session creation, migrate Codex to app-server, and improve resume + notifications by @bra1nDump in #898
- fix(happy-app): don't intercept Enter on mobile web touch devices by @EricSeastrand in #854
- fix(happy-app): handle blank lines and empty cells in markdown table parser by @Yoowatney in #730
- Auto-approve safe Codex title tool by @ohxiaowo in #935
- fix: gitignore .env.production + Docker build fixes (#868, #866) by @chris-yyau in #911
- fix(happy-app): add type safety for todos array by @cjunxiang in #775
- fix(happy-cli): show install instructions when codex is not installed by @MatrixA in #858
- fix: add windowsHide to all spawn/execSync calls to prevent console popups on Windows by @LightYear512 in #950
- fix: resolve Windows npm shim scripts in findClaudeInPath by @LightYear512 in #951
- fix: preserve switch intent when ExitCodeError is caught in local launcher by @easyfan in #974
- fix(happy-cli): Windows fixes — bash RPC cmd flashing, codex spawn ENOENT, MCP bridge launch by @Scoteezy in #1022
- feat: migrate to official claude-agent-sdk and fix session lifecycle bugs by @Scoteezy in #1018
- fix(Dockerfile): add curl for healthcheck by @cyijun in #1024
- feat: add yolo mode, config panel fix, and archived sessions toggle by @Scoteezy in #1017
- fix(sync): prevent concurrent settings loss during sync roundtrip by @AaronZ021 in #1008
- feat: auto-exit CLI on archive and unlock send for disconnected sessions by @chaehyun2 in #992
- Multi-process server via Socket.IO Redis adapter by @bra1nDump in #1029
- feat: migrate from yarn 1 to pnpm 10 by @bra1nDump in #1033
- feat(server): multi-process via streams adapter + room-based RPC routing by @bra1nDump in #1042
- test(server): integration tests + minikube provisioning for multi-process by @bra1nDump in #1047
- deploy(server): scale to 3 replicas (maxUnavailable 0, maxSurge 2) by @bra1nDump in #1046
- fix(happy-app): Enter key not working on Windows web app by @chphch in #1041
- feat(happy-app): scroll-to-bottom button in chat session by @chphch in #1045
- Fix filename typo from LICENCE to LICENSE by @eltociear in #903
- fix(acp): accept null in formatOptionalDetail type by @seibe in #705
- fix(happy-cli): add missing await to fs.writeFile in Codex session spawning by @HirokiKobayashi-R in #594
- fix: dismiss camera on unmount and prevent duplicate scans by @dzlobin in #541
- fix(happy-cli): handle Windows PID reuse in daemon state check by @shenaibin789-glitch in #809
New Contributors
- @pyflmcp made their first contribution in #74
- @GrocerPublishAgent made their first contribution in #82
- @Lesiuk made their first contribution in #97
- @krzemienski made their first contribution in #151
- @tiann made their first contribution in #266
- @kmizzi made their first contribution in #263
- @nick3 made their first contribution in #232
- @OrdinarySF made their first contribution in #296
- @SaneBow made their first contribution in #317
- @leeroybrun made their first contribution in #309
- @manatto made their first contribution in #339
- @sstraus made their first contribution in #342
- @danielamitay made their first contribution in #327
- @ahundt made their first contribution in #272
- @denysvitali made their first contribution in #135
- @Scoteezy made their first contribution in #376
- @hyacz made their first contribution in #406
- @fopina made their first contribution in #475
- @gaius-codius made their first contribution in #476
- @tianrking made their first contribution in #484
- @Lylll9436 made their first contribution in #485
- @HirokiKobayashi-R made their first contribution in #590
- @maiqigh made their first contribution in #569
- @EricSeastrand made their first contribution in #854
- @Yoowatney made their first contribution in #730
- @ohxiaowo made their first contribution in #935
- @chris-yyau made their first contribution in #911
- @cjunxiang made their first contribution in #775
- @MatrixA made their first contribution in #858
- @LightYear512 made their first contribution in #950
- @easyfan made their first contribution in #974
- @cyijun made their first contribution in #1024
- @AaronZ021 made their first contribution in #1008
- @chaehyun2 made their first contribution in #992
- @chphch made their first contribution in #1041
- @eltociear made their first contribution in #903
- @seibe made their first contribution in #705
- @dzlobin made their first contribution in #541
- @shenaibin789-glitch made their first contribution in #809
Full Changelog: v3...v1.1.5