Commit Graph
1084 Commits
Author SHA1 Message Date
weishu a0b1bb1524 refactor: remove unused onboardingCompleted field from Settings 2025-12-31 17:24:13 +08:00
weishu 4efc263d9b chore: add LGPL-3.0-or-later license and update package.json licenses
- Add LICENSE file to root and cli/ directories with LGPL-3.0-or-later text
- Create cli/NOTICE file with MIT attribution for happy-cli derived code
- Update license field in cli/, server/, and web/ package.json to "LGPL-3.0-or-later"
- Add NOTICE to cli/package.json files array for npm publishing
2025-12-31 13:08:02 +08:00
weishu d61cfc90c2 refactor: replace specific character regex with comprehensive non-alphanumeric pattern
Update the regex in getProjectPath to replace all non-alphanumeric characters
with dashes instead of only specific ones. This provides more robust handling
of edge cases in working directory paths.
2025-12-31 12:18:34 +08:00
weishu 705ce24e17 refactor: remove unnecessary getCleanEnv() function
Simplify environment handling by removing the getCleanEnv() function that was
filtering out local node_modules/.bin paths. Running from home directory is
sufficient to avoid local cwd side effects.
2025-12-31 11:16:45 +08:00
weishu f796ad8749 feat(web): add sticky group headers to session list 2025-12-30 18:49:38 +08:00
weishu 6afee1f7ff Release version 0.3.1 2025-12-30 17:58:53 +08:00
ecfe0eff60 feat(web): 优化会话列表展示 - 按目录分组并显示更新时间 (#22)
* feat(web): add session list grouping by project directory

- Group sessions by project path with collapsible sections
- Sort groups by active status first, then by latest update time
- Sort sessions within each group by update time (descending)
- Add visual indicators for groups with active sessions
- Display project count in header statistics

Co-authored-by: weishu <twsxtd@gmail.com>
2025-12-30 17:42:20 +08:00
weishu b7dce6bf3f refactor: use undefined instead of null for optional return type 2025-12-30 17:39:24 +08:00
weishu 754d9dc0e8 feat: auto-detect git worktree context from git commands
When HAPI_WORKTREE_* environment variables are not set, fall back to
probing git to detect if running inside a worktree. This enables
worktree features to work automatically without explicit env vars.
2025-12-30 16:44:18 +08:00
weishu ce6234da3f fix: prevent race condition in MessageQueue2 wait logic 2025-12-30 13:26:33 +08:00
weishu b160888101 feat: implement message backfill to prevent message loss on reconnection 2025-12-30 13:22:27 +08:00
weishu 90e6879552 feat: add local session soft resume support for remote codex sessions 2025-12-30 11:59:34 +08:00
weishu e758efb0ec feat: unify app name 2025-12-29 14:36:24 +08:00
weishu 517eb46b4e feat: new PWA icon 2025-12-29 14:36:24 +08:00
weishu 7845708123 fix git commit prompt 2025-12-29 14:36:24 +08:00
weishuandGitHub 1dc5892df2 Add funding information for GitHub and Patreon
Updated funding model with GitHub Sponsors and Patreon usernames.
2025-12-29 11:15:09 +08:00
weishu 1a6099cd6f ci: add GitHub Pages deployment workflow for web app
Adds automated deployment to GitHub Pages with custom domain app.hapi.run, and updates vite.config.ts to support dynamic base URL via VITE_BASE_URL environment variable
2025-12-29 09:30:53 +08:00
weishu afdec27b13 Release version 0.3.0 2025-12-28 20:57:16 +08:00
weishu 334cebc2da feat: add real-time permission and model mode synchronization close #21
Implements bidirectional sync of permission/model modes between CLI sessions and web app. Adds Codex-specific permission modes (read-only, safe-yolo, yolo) alongside Claude's modes. Web can now control CLI session state via RPC set-session-config handler, while CLI broadcasts state changes through keep-alive payloads. UI controls are flavor-aware, showing appropriate modes for Claude vs Codex vs Gemini. Type centralization in api/types eliminates circular dependencies.
2025-12-28 20:51:18 +08:00
weishu 2dc09a80db fix: pass through all permission modes in claudeRemote 2025-12-28 20:51:18 +08:00
weishu 1ef7bee01d feat: add listSlashCommands method to SyncEngine 2025-12-28 17:00:47 +08:00
weishu 05deb6fff8 feat: add directory autocomplete with validation for new session form 2025-12-28 16:31:53 +08:00
weishu ce40de900f fix: update slash command descriptions for claude, codex, and gemini.
close #20
2025-12-28 15:19:08 +08:00
weishu fbc0d601f8 feat: add slash command autocomplete to HappyComposer
Implements full-stack slash command autocomplete with agent-specific built-in commands and user-defined command discovery. Includes React Strict Mode fix for suggestion handling.
2025-12-28 15:19:08 +08:00
weishu 20c05a06ec fix: correct UTF-8 encoding in base64 decode for file paths fix #20
The old decodeBase64 implementation tried atob() first which returns
garbled text for UTF-8 content (e.g., Chinese characters), and only
fell back to correct UTF-8 decoding when atob() threw an exception
(which it doesn't for valid base64).

Changes:
- Add encodeBase64/decodeBase64 utilities to web/src/lib/utils.ts
  using TextEncoder/TextDecoder for proper UTF-8 support
- Update file.tsx to use shared decodeBase64 instead of buggy local impl
- Update files.tsx to use shared encodeBase64 instead of deprecated
  escape/unescape approach
2025-12-28 14:38:05 +08:00
weishu d68b91fd07 ci: restrict Docker workflow to release tags and manual dispatch 2025-12-28 14:27:57 +08:00
weishu 2004d22afe fix: capture process PID in local variable for TypeScript control flow 2025-12-28 14:01:12 +08:00
weishu c35a5ce827 feat: add git worktree session support with improved UI
Implement comprehensive worktree session support allowing users to spawn sessions in temporary git worktrees. Includes backend worktree management, full-stack integration, and refined UI for session type selection.

Backend:
- Add worktree creation/removal utilities with branch management
- Track worktree metadata (basePath, branch, name, path) in session metadata
- Automatic cleanup of worktrees when sessions fail or exit
- Enhanced error handling with stderr tail logging

UI improvements:
- Redesign session type toggle with improved alignment and spacing
- Move worktree description inline with label for cleaner layout
- Add branch name input field that appears when worktree mode selected
- Auto-focus on worktree input when switching modes
- Reduce gap between radio options from gap-3 to gap-1.5
- Update descriptive text and placeholders for clarity

Integration:
- Thread worktree parameters through API client, RPC handlers, and daemon
- Add worktreeEnv utility to read worktree info from environment
- Update session spawning to support both simple and worktree modes
2025-12-28 13:17:58 +08:00
weishu 0eab45c49c refactor: consolidate copy-to-clipboard logic and icons 2025-12-28 13:13:38 +08:00
weishu 50d5c4fd35 fix: resolve TypeScript type inference issue in claudeLocal.ts
Remove unnecessary Promise wrapper and move args building outside try block
so cleanupMcpConfig becomes const with proper type inference instead of never
2025-12-28 13:12:15 +08:00
weishu 83d0ce3211 feat: add copy path button to file viewer 2025-12-28 12:32:28 +08:00
Evan7198andweishu 62f0cf4c41 fix: improve cross-platform compatibility for path and file operations
Use basename() instead of split('/').pop() and 'wx' flag instead of
fs constants for better Windows compatibility.
2025-12-28 12:16:51 +08:00
weishu 2ef7e0ec5f refactor: extract MCP config handling to use temp files on Windows 2025-12-28 11:36:56 +08:00
weishu 7922356669 feat: add timeout and retry logic to bun install in release script 2025-12-28 00:03:37 +08:00
weishu 1d50f3c2f3 0.2.2 2025-12-27 23:45:24 +08:00
weishu 007721bdc8 fix: codex session selection 2025-12-27 22:24:18 +08:00
weishu 7c1baa28ee fix: add padding to terminal container
Add p-3 class to terminal page container to create spacing between
the terminal and page edges, matching the padding used elsewhere on
the page (header, error messages, etc.).
2025-12-27 21:34:47 +08:00
weishu 3bdcc14ed0 refactor: simplify yolo mode implementation by removing env vars
Remove HAPPY_GEMINI_ARGS and HAPPY_GEMINI_COMMAND environment variables.
Refactor gemini.ts to export registerGeminiAgent(yolo) function that
directly configures args instead of reading from environment.
2025-12-27 21:24:16 +08:00
58e61b3db9 feat: create new session with yolo mode (#13)
* feat: create new session with yolo mode

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>

* fix: harden sequence typecheck

* feat: add unified --yolo flag across all agents

---------

Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
Co-authored-by: weishu <twsxtd@gmail.com>
2025-12-27 21:03:34 +08:00
weishu 126c5e483c fix: we need bun 1.3.5 becuase of the Terminal feature. close #15 2025-12-27 17:10:30 +08:00
Ruihang XiaandGitHub 3954636a0a docs: update build command (#14) 2025-12-27 11:57:12 +08:00
weishu 5342512ff1 Release version 0.2.1
fix: compile error for ink

see https://github.com/vadimdemedes/ink/issues/571
2025-12-26 21:45:46 +08:00
weishu f03c7f2cc8 feat: add intelligent session matching based on cwd and timestamp 2025-12-26 21:11:43 +08:00
NickGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
09faf443ce feat(server): add Dockerfile + CI docker build/push (#10)
* feat: add server Docker image build (Dockerfile + GH Actions)

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2025-12-26 20:56:08 +08:00
weishu 19c2e054a9 fix: extend ink Key type with runtime properties 2025-12-26 20:45:50 +08:00
weishu b497abda98 refactor: extract CLI argument parsing into shared utility 2025-12-26 20:45:37 +08:00
weishu 5d79a3f1ef refactor: extract spawn abort handling into shared utility 2025-12-26 18:18:12 +08:00
weishu b3499bb5ed fix: terminal state restoration and abort handling regression
Fixes regression introduced in 1a23bfa430.

- Add restoreTerminalState helper to disable kitty keyboard protocol and
  CSI u key release reporting when switching modes or cleaning up
- Improve claudeLocal abort handling with SIGINT → SIGTERM → SIGKILL
  escalation timeouts for graceful process termination
- Fix useSwitchControls to properly handle CSI u space sequences (0x20)
  and key.name/key.sequence detection for space key presses
- Fix typo: exutFuture → exitFuture in claudeLocalLauncher
2025-12-26 18:07:45 +08:00
weishu 3adaa0f77c refactor: use ref objects for session tracking in closures 2025-12-26 18:02:33 +08:00
aababe6a57 fix: use timing-safe comparison for CLI API token validation (#9)
* fix: use timing-safe comparison for CLI API token validation

Replace direct string comparison (===) with constant-time comparison
using crypto.timingSafeEqual to prevent timing attacks that could
leak information about the token character by character.

Affected locations:
- server/src/web/routes/auth.ts (accessToken validation)
- server/src/web/routes/cli.ts (bearer token middleware)
- server/src/socket/server.ts (socket.io /cli namespace auth)

* Update server/src/utils/crypto.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-26 17:22:04 +08:00