Skip to content
Closed

1 #859

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
976 commits
Select commit Hold shift + click to select a range
4d4d617
fix(app): update logo image for better branding
kuaifan Mar 4, 2026
fbb9074
fix(app): remove armeabi-v7a from ABI_FILTERS in production configura…
kuaifan Mar 4, 2026
8bfffb1
fix(app): preserve shared sessions section when hiding inactive sessions
kuaifan Mar 4, 2026
508fdb8
feat: persist DooTask connection to server via UserKVStore
kuaifan Mar 4, 2026
3216fb0
feat(cli): add daemon auto-start on boot with enable/disable commands
kuaifan Mar 4, 2026
76204a8
fix(app): preserve AskUserQuestion answers on conversation reload
kuaifan Mar 4, 2026
313f765
feat: add HTTP endpoint for session spawning
kuaifan Mar 5, 2026
30437f9
feat(app): show sessions shared by me on friend profile page
kuaifan Mar 5, 2026
a33eca8
fix(app): tap empty space in toolbar focuses input instead of trigger…
kuaifan Mar 5, 2026
2fb8863
feat(app): improve user profile page layout and interactions
kuaifan Mar 5, 2026
f77150a
feat(app): cache shared-by-me sessions for instant display
kuaifan Mar 5, 2026
1cc1e61
feat(app): add pull-to-refresh on user profile page
kuaifan Mar 5, 2026
df221ae
fix: friend system feed lifecycle and pull-to-refresh full reload
kuaifan Mar 5, 2026
06b141c
fix(app): deduplicate feed items on initial/full-refresh load
kuaifan Mar 5, 2026
7a4f141
fix(app): replace friends map on sync instead of merging
kuaifan Mar 5, 2026
64b9ac2
fix(app): refresh feed when friend status changes
kuaifan Mar 5, 2026
98bb65a
fix(app): feed item disappears when same item arrives via socket and …
kuaifan Mar 5, 2026
faed9b4
fix(app): changelog read state now syncs across all hook instances
kuaifan Mar 5, 2026
b42fa62
fix(app): show inbox dot for native app updates, fix comment accuracy
kuaifan Mar 5, 2026
27f7e43
fix(app): prevent DooTask card layout jitter when assignees load async
kuaifan Mar 5, 2026
4065f84
fix(app): validate todos is array before calling filter to prevent crash
kuaifan Mar 5, 2026
1030f5c
fix(app): add ToolSearch with dynamic title based on input query
kuaifan Mar 5, 2026
3b2b83b
fix(app): preload all icon fonts at startup to prevent page transitio…
kuaifan Mar 5, 2026
a1d1fdf
feat(app): add GPT-5.4 general-purpose model to model catalog
kuaifan Mar 6, 2026
073d902
fix(server): replay first message to CLI when session-scoped connecti…
kuaifan Mar 6, 2026
3af62d5
fix(app,server): sort sessions by createdAt instead of updatedAt to p…
kuaifan Mar 6, 2026
f79d155
fix(app): add resilient git status refresh on session recovery and tr…
kuaifan Mar 6, 2026
489f610
feat(cli,app): add on-demand loading of trimmed tool outputs
kuaifan Mar 6, 2026
031906d
feat(cli): support snake_case tool_use_result in SDK message pipeline
kuaifan Mar 6, 2026
34c81b2
refactor(app): extract tool output loading/error card styles
kuaifan Mar 6, 2026
cfbc01a
refactor(app): extract git status session selection into dedicated mo…
kuaifan Mar 6, 2026
2e126e5
feat(cli): unify system prompt injection for Codex and Gemini
kuaifan Mar 7, 2026
4a2b795
chore(cli): bump version to 0.1.4
kuaifan Mar 7, 2026
bf82db8
feat(app): add CLI session hot-upgrade support
kuaifan Mar 7, 2026
f6472d9
chore(license): remove obsolete LICENSE file
kuaifan Mar 7, 2026
4d391ae
chore(cli): bump version to 0.1.5
kuaifan Mar 7, 2026
5ff6172
feat(app): show CLI model as primary with arrow indicating pending sw…
kuaifan Mar 7, 2026
9df0fdf
feat(app): add edit button to session info page header
kuaifan Mar 7, 2026
47f7f1a
fix(app): format model IDs with date suffixes into human-readable names
kuaifan Mar 7, 2026
5d28abb
feat(app): tap to copy metadata values in session info page
kuaifan Mar 7, 2026
754a4a2
feat(app): add image support to message drafts
kuaifan Mar 8, 2026
c536b9b
feat(app): add "shared by me" filter tab to terminal sessions list
kuaifan Mar 8, 2026
3f8e866
fix(cli): guard heartbeat version check against missing package.json
kuaifan Mar 8, 2026
8e9a45b
feat(app): add TaskOutput to known tools registry
kuaifan Mar 8, 2026
6b35d9a
fix(cli): pin Codex to v0.101.0 via npx to avoid V2 protocol mismatch
kuaifan Mar 8, 2026
af5249e
fix(cli): add startup notification and lifecycle closure for Codex se…
kuaifan Mar 8, 2026
6b7381d
chore(cli): bump version to 0.1.6
kuaifan Mar 9, 2026
8c1cd2b
feat(dootask): globalize WebSocket connection and add real-time updates
kuaifan Mar 9, 2026
b5f9b42
fix(dootask): show simple status badge in task list for tasks without…
kuaifan Mar 9, 2026
01cd95f
feat(session): add related DooTask task entry in session info page
kuaifan Mar 9, 2026
efb480e
fix(session): copy externalContext and sessionIcon when forking/dupli…
kuaifan Mar 9, 2026
dd49224
feat(session-history): add device and agent filter dropdowns
kuaifan Mar 9, 2026
6618879
fix(new-session): restore permission mode from storage when switching…
kuaifan Mar 10, 2026
7d8b55e
fix(dootask): preserve task list during same-account token refresh
kuaifan Mar 10, 2026
871d737
fix(dootask): don't update state on token refresh failure
kuaifan Mar 10, 2026
4161a82
fix(dootask): avoid duplicate loading indicators during pull-to-refresh
kuaifan Mar 10, 2026
0fcdc77
fix(codex): don't terminate turn on transient error events
kuaifan Mar 10, 2026
f76dbd9
feat(files): show offline message when session is disconnected
kuaifan Mar 11, 2026
a2e1400
feat(new-session): store permission mode per agent type
kuaifan Mar 11, 2026
59c0a03
fix(toast): avoid keyboard overlap on iOS + add dev demo
kuaifan Mar 11, 2026
fe602e9
feat(sessions): add metadata cache for session listing performance
kuaifan Mar 11, 2026
8bb0ffd
feat(sync): unify message-list updates through dispatch queue
kuaifan Mar 11, 2026
8c043f0
fix(sync): remove non-null assertion and batch websocket dispatches
kuaifan Mar 11, 2026
5249c58
feat(session-preview): expand/collapse messages and increase preview …
kuaifan Mar 11, 2026
c8b0e41
feat(session-cache): add runtime stats and diagnostics to SessionCache
kuaifan Mar 11, 2026
4d9ec46
fix(machine): preserve displayName on daemon restart and allow empty …
kuaifan Mar 11, 2026
b45afe4
docs: consolidate CLAUDE.md into root and .claude/rules
kuaifan Mar 11, 2026
066e087
fix(i18n): localize machine rename success/error messages
kuaifan Mar 11, 2026
332c44c
fix(tools): soften error box styling and show error in Edit detail view
kuaifan Mar 11, 2026
6b67255
feat(tools): add dual-mode long-press copy to detail views
kuaifan Mar 11, 2026
03db54d
fix(docker): add happy-wire build step to server and webapp Dockerfiles
kuaifan Mar 12, 2026
bbde1c6
fix(server): increase max messages per POST from 100 to 200
kuaifan Mar 12, 2026
93182b3
feat(mcp): add preview_html tool with full-page HTML preview
kuaifan Mar 12, 2026
27c4958
docs(server): update Prisma migration rule to allow AI-created migrat…
kuaifan Mar 12, 2026
7b9d88c
feat(docs): add reference to CLAUDE.md in AGENTS.md
kuaifan Mar 12, 2026
a2a7aed
fix(happy-app): align empty-session state with desktop copy
kuaifan Mar 12, 2026
fe1ed4c
feat(delivery): add CLI message receipt tracking loop
kuaifan Mar 12, 2026
4faf882
fix(delivery): gate receipt tracking by cli capability
kuaifan Mar 12, 2026
c812226
fix(server): narrow Prisma Json typing for account/feed/github
kuaifan Mar 13, 2026
d3e15fa
feat(server): add session pending queue and auto-dispatch
kuaifan Mar 13, 2026
37c2e65
feat(app): add pending queue sync, panel UI, and i18n
kuaifan Mar 13, 2026
947fa1e
fix(cli): remove auto soft-interrupt on queued messages
kuaifan Mar 13, 2026
068ce5b
fix(queue): harden pending dispatch concurrency and cleanup semantics
kuaifan Mar 13, 2026
f7b3430
fix: resolve pre-existing type errors in githubConnect and files page
kuaifan Mar 13, 2026
0ab96b1
feat(delivery): add CLI message receipt tracking with legacy compatib…
kuaifan Mar 13, 2026
9c0a386
fix(codex): pause idle timeout while waiting for user approval
kuaifan Mar 13, 2026
86ff6b2
feat(happy-app): migrate session mode config to cloud KV storage
kuaifan Mar 13, 2026
44d3648
fix(happy-app): address code review issues in session mode config
kuaifan Mar 13, 2026
73b39f2
feat(project): add initial project configuration and ignore files
kuaifan Mar 13, 2026
979f892
feat(happy-cli): add daemon restart command
kuaifan Mar 13, 2026
a691306
feat(happy-cli): support new attribution setting, default off
kuaifan Mar 13, 2026
57c4dc1
Merge branch 'clever-beacon' into next
kuaifan Mar 13, 2026
ed6f2f0
fix(pending-queue): polish send-now flow and queue panel actions
kuaifan Mar 14, 2026
5ff68b1
fix(pending-queue): improve icons, error handling, reconnect sync and…
kuaifan Mar 14, 2026
ecfa719
feat(pending-queue): show image count badge in pending message preview
kuaifan Mar 14, 2026
809a5db
feat(sessions): replace hideInactiveSessions toggle with Active/Inact…
kuaifan Mar 14, 2026
a2a76b3
feat(sessions): add empty state for active tab when no active sessions
kuaifan Mar 14, 2026
a237f3f
feat(codex): upgrade to v0.114.0 with fast mode support
kuaifan Mar 14, 2026
f12eb51
fix(sessions): preserve active tab selection across navigation
kuaifan Mar 14, 2026
8e0f7e4
feat(terminal): enhance command processing to handle string and array…
kuaifan Mar 14, 2026
a71bb32
fix(web_search): ensure query arguments are empty for tool calls
kuaifan Mar 14, 2026
db1bf57
fix(i18n): reorder agent names to Claude > Codex > Gemini priority
kuaifan Mar 14, 2026
7f2b306
perf(git-status): reduce shell RPC flood from git status polling
kuaifan Mar 14, 2026
f8abcf2
fix(sync): refresh model and permission mode on session navigation
kuaifan Mar 15, 2026
fe107a3
feat(file-viewer): add image preview with sharing support
kuaifan Mar 15, 2026
fdd1066
fix(codex): resolve v2 protocol field-level incompatibilities
kuaifan Mar 15, 2026
731490a
feat(tools): use tool input title for MCP tool display name
kuaifan Mar 15, 2026
7ebe943
chore(cli): bump version to 0.1.7
kuaifan Mar 15, 2026
3c311a0
fix(happy-app): keep empty markdown table cells renderable on web
kuaifan Mar 16, 2026
501a959
feat(orchestrator): add end-to-end run scheduling and MCP tools
kuaifan Mar 16, 2026
f6fe158
fix(happy-app): show "Read File" title for CodexBash read commands
kuaifan Mar 16, 2026
5ad92ad
feat(cli): add orchestrator guidance to first-turn prompts
kuaifan Mar 16, 2026
1d34e0d
feat(orchestrator): add V1 feature flag and integration paths
kuaifan Mar 16, 2026
4148dc3
fix(orchestrator): resolve races, limits, and schema duplication
kuaifan Mar 16, 2026
f4aebcb
fix(orchestrator): avoid shell expansion in oneshot prompt passing
kuaifan Mar 16, 2026
2b32e70
refactor(orchestrator): remove v1 feature flag gating
kuaifan Mar 16, 2026
09decd4
feat(happy-app): support anonymous nested fences in markdown code blocks
kuaifan Mar 16, 2026
8f8b188
Merge branch 'neat-spring' into next
kuaifan Mar 16, 2026
c7deadf
fix(happy-server): avoid Prisma groupBy inline type inference issue
kuaifan Mar 16, 2026
98d0d3f
fix(orchestrator): handle plaintext params in RPC handler
kuaifan Mar 16, 2026
1bd2453
fix(happy-app): Format MCP tool titles with correct prefixes
kuaifan Mar 16, 2026
14c2a89
fix(tools): support MCP tool naming with colons in addition to unders…
kuaifan Mar 16, 2026
cbac956
fix(codex): restore context on /duplicate by using thread/resume with…
kuaifan Mar 16, 2026
ab447aa
fix(permissions): send push notifications for Codex and Gemini permis…
kuaifan Mar 17, 2026
1aa5886
fix(orchestrator): audit dag/retry flow and context performance
kuaifan Mar 17, 2026
9f72184
fix(codex): support dynamic permission mode changes via RPC
kuaifan Mar 17, 2026
2d7078d
fix(orchestrator): cascade dependency_failed during cancel
kuaifan Mar 17, 2026
04a2f60
Merge commit '2d7078db58d14b6736188b13758ed7719a229e4e' into next
kuaifan Mar 17, 2026
d3f58c4
feat(orchestrator): support task-level working directory
kuaifan Mar 17, 2026
ba9e818
Merge commit 'd3f58c41ee9dda8e65e5d983c22495357b03865f' into next
kuaifan Mar 17, 2026
3ff57e2
feat: orchestrator app UI + code review fixes
kuaifan Mar 17, 2026
22d2e9c
Merge commit '3ff57e22beaee9ff9f661a8d00d564a02c889be6' into next
kuaifan Mar 17, 2026
0574d22
docs: add orchestrator usage scenarios and API reference
kuaifan Mar 17, 2026
6776076
feat: orchestrator activity badge with real-time running task count
kuaifan Mar 17, 2026
96be7bd
fix: status-colored segmented progress bar and task detail badge layout
kuaifan Mar 17, 2026
a63142f
feat: show run counts on filter tabs in orchestrator list
kuaifan Mar 17, 2026
8f1a2c0
feat: complete i18n for orchestrator list, run detail, and task detai…
kuaifan Mar 17, 2026
91b9820
fix: adjust padding for filter chip in orchestrator component
kuaifan Mar 17, 2026
33379b9
feat(orchestrator): add optional task-level model selection
kuaifan Mar 17, 2026
58e4401
feat(orchestrator): expose available models per provider via get_context
kuaifan Mar 17, 2026
c6e04f5
feat(orchestrator): send follow-up message to task via session resume
kuaifan Mar 17, 2026
a537d36
feat(orchestrator): extract display helpers and improve run/task rend…
kuaifan Mar 18, 2026
2034511
feat(orchestrator): add auto-approve flags, improve schemas and sessi…
kuaifan Mar 18, 2026
1f66a01
fix(orchestrator): add submit error logging and test target alias rej…
kuaifan Mar 18, 2026
4ab1506
feat(ToolOutputDetail): enhance rendering of orchestrator output and …
kuaifan Mar 18, 2026
f70d978
feat(gemini): add normalizeToolName to align MCP tool names with Code…
kuaifan Mar 18, 2026
9821ce9
refactor(transport): extract createTool helper and register orchestra…
kuaifan Mar 18, 2026
183b376
feat(AcpBackend): enhance tool call handling and input extraction for…
kuaifan Mar 18, 2026
86e8fa8
fix(gemini): emit permission-response instead of tool-result for perm…
kuaifan Mar 18, 2026
e13842b
fix(reducer): add fallback tool ID prefix matching for Gemini ACP
kuaifan Mar 18, 2026
8d2d026
feat(orchestrator): auto-fill workingDirectory and rewrite tool descr…
kuaifan Mar 18, 2026
40da3ac
fix(gemini): normalize ACP result format to match Codex structure
kuaifan Mar 18, 2026
dfbb9f5
chore(deps): add @paralleldrive/cuid2, remove @types/ps-list
kuaifan Mar 18, 2026
19a8b02
chore: rename repository references from hitosea/happy to hitosea/hap…
kuaifan Mar 18, 2026
d450e73
feat(codex): upgrade Codex from v0.114.0 to v0.115.0
kuaifan Mar 18, 2026
042dc87
fix(server): eagerly clear thinking state on RPC abort completion
kuaifan Mar 18, 2026
decef8a
docs: add Version 7 release notes
kuaifan Mar 18, 2026
5aecf5b
refactor(i18n): move initialMessage to session namespace and remove r…
kuaifan Mar 18, 2026
b4daa11
style(app): change dark mode user message background to blue-gray
kuaifan Mar 18, 2026
34c2b45
refactor(app): extract edit tool file path to subtitle
kuaifan Mar 18, 2026
c68cd6e
fix(server): acquire lock before dispatching next pending message
kuaifan Mar 18, 2026
c3c0534
style(dootask): update retry text color to match theme
kuaifan Mar 18, 2026
794f2f9
fix(happy-app): prevent duplicate send on rapid Enter
kuaifan Mar 18, 2026
fb4905b
style(AgentInput): adjust send button icon opacity for dark theme
kuaifan Mar 18, 2026
60215f7
feat(web): implement handleImagePasteEvent for image handling and add…
kuaifan Mar 18, 2026
27c2a3f
feat(acp): prefer rawInput for tool input and surface title as descri…
kuaifan Mar 18, 2026
ee89126
chore: add release-changelog skill
kuaifan Mar 18, 2026
b314025
feat(happy-app): add long-press copy menu to SessionPreviewSheet
kuaifan Mar 18, 2026
c0d2568
feat(happy-app): pin active sessions at top of session history
kuaifan Mar 18, 2026
85ebedd
feat(happy-app): add long-press menu and inverted FlatList to Duplica…
kuaifan Mar 18, 2026
1cc76e0
chore(cli): bump version to 0.1.8
kuaifan Mar 18, 2026
72d0946
feat(happy-wire): add react-native entry point to package.json
kuaifan Mar 19, 2026
67cfc5c
feat(happy-app): add flex property to title style for better layout
kuaifan Mar 19, 2026
b71d722
fix(cli): eliminate bash dependency in orchestrator spawn
kuaifan Mar 19, 2026
2a9ca10
fix(cli): skip default workingDirectory for remote machine tasks
kuaifan Mar 19, 2026
5cf9f02
feat(happy-app): reverse message order for better user experience
kuaifan Mar 19, 2026
e724954
chore(cli): bump version to 0.1.9
kuaifan Mar 19, 2026
55b4170
fix(ci): isolate integration tests and build happy-wire before typecheck
kuaifan Mar 19, 2026
ead5009
docs: add orchestrator guide
kuaifan Mar 19, 2026
c534095
feat(orchestrator): increase default task timeout from 15min to 24h
kuaifan Mar 19, 2026
22e191d
feat(orchestrator): resolve current_machine target to controller sess…
kuaifan Mar 19, 2026
6826a9b
fix(orchestrator): resolve current_machine via explicit controllerMac…
kuaifan Mar 19, 2026
97f7448
fix(orchestrator): default all tasks to controllerMachineId when no t…
kuaifan Mar 19, 2026
e1de36a
feat(orchestrator): expose outputText field in task and execution res…
kuaifan Mar 19, 2026
c52e717
chore(cli): bump version to 0.2.0
kuaifan Mar 19, 2026
523959c
fix(happy-app): improve sheet copy menus
kuaifan Mar 19, 2026
c5d3624
feat(prompt): refactor system prompt handling and improve first-turn …
kuaifan Mar 19, 2026
33abd27
fix(orchestrator): add 504 retry and improve timeout defaults for pen…
kuaifan Mar 19, 2026
8163179
fix(cli): flush outbox before setting taskCompleted
kuaifan Mar 19, 2026
19f8983
feat(cli): add MCP progress heartbeat for blocking orchestrator calls
kuaifan Mar 19, 2026
894a4b0
feat(orchestrator): detect per-machine CLI providers via real-time ba…
kuaifan Mar 20, 2026
a427556
feat(mcp): enhance MCP tool handling with dynamic title and icon form…
kuaifan Mar 20, 2026
454c57b
feat(orchestrator): show machine device names on orchestrator pages
kuaifan Mar 20, 2026
c77c578
fix(orchestrator): hide empty fields on task detail page
kuaifan Mar 20, 2026
51d7fc7
feat(orchestrator): replace blocking mode with push callback
kuaifan Mar 20, 2026
7905897
fix(cli): add graceful interrupt escalation for Claude Code abort
kuaifan Mar 20, 2026
6d26d3f
feat(mcp): add subtitle formatting for MCP tools and enhance title ha…
kuaifan Mar 20, 2026
b9b597f
perf(docker): optimize builds with scoped workspaces and yarn cache
kuaifan Mar 20, 2026
cfc8102
fix(codex): kill process group on close to prevent leaked child proce…
kuaifan Mar 20, 2026
6b6112b
fix(cli): unify abort handling across Codex, Gemini, and ACP backends
kuaifan Mar 20, 2026
07b869a
docs(orchestrator): clarify callback workflow and dependency behavior
kuaifan Mar 20, 2026
93afeb7
feat(app): show Run ID in orchestrator_submit tool subtitle
kuaifan Mar 20, 2026
2b3f203
refactor(orchestrator): improve dependsOn description and prompt stru…
kuaifan Mar 20, 2026
1ac7487
feat(tools): add LongPressCopy component for copying context and runs…
kuaifan Mar 20, 2026
30d34cc
feat(sync): add seq field and improve message ordering stability
kuaifan Mar 21, 2026
7e1857d
feat(tools): add orchestrator run polling and title cache
kuaifan Mar 21, 2026
3c1570d
fix(options): remove border styles, deduplicate destructive confirm, …
kuaifan Mar 21, 2026
8d9b55c
feat(orchestrator): show running task badges in session list and tool…
kuaifan Mar 21, 2026
3afa1c5
fix(options): improve options layout for mobile — stretch container, …
kuaifan Mar 21, 2026
7004228
feat(sync): track last run timestamp for session message dispatch to …
kuaifan Mar 21, 2026
32dba98
feat(orchestrator): replace global running count with per-run activit…
kuaifan Mar 21, 2026
3748ff2
fix(chatlist): debounce scroll-to-bottom button visibility to avoid f…
kuaifan Mar 21, 2026
3bf05df
fix(openclaw): prevent keyboard dismiss on chat state updates
kuaifan Mar 22, 2026
aaaf874
feat(markdown): support nested links inside bold/italic spans
kuaifan Mar 22, 2026
376a467
feat(tools): visualize orchestrator_submit tasks input
kuaifan Mar 22, 2026
025d267
refactor(options): remove recommended attribute, use ordering for pre…
kuaifan Mar 22, 2026
00a7b14
refactor(orchestrator): simplify workflow prompt and replace next.too…
kuaifan Mar 22, 2026
5b430b8
feat(orchestrator): post feed notification when terminal callback has…
kuaifan Mar 22, 2026
a238568
feat(orchestrator): add warn logs for stale dispatch and execution ti…
kuaifan Mar 22, 2026
b8b3ce7
refactor(tools): extract shared parseMcpResult to handle all MCP resu…
kuaifan Mar 22, 2026
2b8fef2
fix(openclaw): include global sessions in machine session list
kuaifan Mar 22, 2026
1467ed2
feat(feed): add notice kind with badge, meta.links, and detail page
kuaifan Mar 22, 2026
8c7c72e
feat(orchestrator): show prompt and full output on task detail, flatt…
kuaifan Mar 22, 2026
ed55588
fix(sessions): include sessions from projects without sessions-index.…
kuaifan Mar 22, 2026
938f296
feat(openclaw): add session name parameter to chat and refresh sessio…
kuaifan Mar 22, 2026
4448161
chore(cli): bump version to 0.2.1
kuaifan Mar 22, 2026
1288109
fix(app): show custom machine display name in empty chat view
kuaifan Mar 23, 2026
f62000c
fix(app): improve tool result content detection in ToolFullView
kuaifan Mar 23, 2026
ddeb7b6
fix(server): clear awaitingTurnStart on thinking=false to prevent /cl…
kuaifan Mar 23, 2026
511a303
fix(app): add missing ephemeral update schemas for orchestrator-run-t…
kuaifan Mar 23, 2026
ca3cd79
fix(cli): serialize Error objects with message and stack in logger
kuaifan Mar 23, 2026
77f2a5f
feat: add Claude model family selection with reasoning effort and 1M …
kuaifan Mar 24, 2026
289bc48
refactor: replace send-now endpoint with pin + abort for pending mess…
kuaifan Mar 24, 2026
4cc02a1
fix(cli): clear storedSessionIdForResume on /clear to prevent session…
kuaifan Mar 24, 2026
f3c78a2
fix(cli): send early keepAlive on Gemini session start
kuaifan Mar 24, 2026
a39a357
fix(server): add 1s delay before dispatching next pending message
kuaifan Mar 24, 2026
cd6adc0
feat(app): copy mode settings when duplicating sessions
kuaifan Mar 24, 2026
814a5cd
refactor(app): replace cancel button with action menu in orchestrator…
kuaifan Mar 24, 2026
dd29c27
feat(app): show machine providers and map queued status in orchestrat…
kuaifan Mar 24, 2026
e34e178
feat(app): save selected message as draft when duplicating session
kuaifan Mar 24, 2026
ed328d6
chore(cli): upgrade Codex CLI from v0.115.0 to v0.116.0
kuaifan Mar 23, 2026
3723a64
fix(cli): use strict DEBUG check to ignore ambient platform values
kuaifan Mar 24, 2026
adcd761
fix(app): prevent duplicate voice sessions and stale state on rapid o…
kuaifan Mar 24, 2026
321f000
chore(cli): bump version to 0.2.2
kuaifan Mar 24, 2026
f81e447
fix(cli): surface Claude Code stderr in crash error messages
kuaifan Mar 25, 2026
597b105
fix(gitignore): add .npmrc to ignore list
kuaifan Mar 25, 2026
35fcca2
fix(wire,cli): resolve correct context window for CLI-configured model
kuaifan Mar 25, 2026
1d523e1
feat(app,server): hide orchestrator icon when session has no runs
kuaifan Mar 25, 2026
a578f01
chore(cli): bump version to 0.2.3
kuaifan Mar 25, 2026
eecf86d
feat(ci): add release workflow for automated APK/AAB/IPA builds
kuaifan Mar 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .claude/rules/docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
paths:
- docs/**
---

Never commit changes under `docs/` — this directory is local reference only, not shipped with code.
36 changes: 36 additions & 0 deletions .claude/rules/happy-app.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
paths:
- packages/happy-app/**
---

## Gotchas

- Never use `Alert` from React Native — always use `@/modal` instead
- Never use Unistyles for expo-image — use plain inline styles
- Use `useUnistyles` (NOT `useStyles`) when you need theme/runtime values outside `StyleSheet.create`
- Custom header: `createHeader` from `@/components/navigation/Header` (not `NavigationHeader`)
- Screen params ALWAYS in `_layout.tsx`, not in individual pages — avoids layout shifts
- Always use expo-router API, not react-navigation API

## Patterns to Follow

- `useHappyAction` from `@/hooks/useHappyAction` for async operations — errors handled automatically
- `t()` from `@/text` for ALL user-visible strings — must add to all 10 languages: `en`, `ru`, `pl`, `es`, `ca`, `it`, `pt`, `ja`, `zh-Hans`, `zh-Hant`
- Dev/debug pages can skip i18n
- `ItemList` for most list containers, `Avatar` for avatars, `AsyncLock` for exclusive async locks
- `useGlobalKeyboard` for hotkeys (Web only, don't modify it)
- Wrap pages in `memo`, store them in `sources/app/(app)/`
- Styles at the very end of component/page files
- Layout width constraints from `@/components/layout` on full-screen ScrollViews
- Non-trivial hooks → dedicated file in `hooks/` folder with a comment explaining logic

## Core Principles

- Never show loading errors — always retry
- No backward compatibility unless explicitly asked
- Web is secondary platform — avoid web-specific implementations unless requested
- Always show header on all screens

## Changelog

When adding features/fixes, update `/CHANGELOG.md` then run `npx tsx sources/scripts/parseChangelog.ts` to regenerate `sources/changelog/changelog.json`. Auto-parsed during `yarn ota`.
18 changes: 18 additions & 0 deletions .claude/rules/happy-cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
paths:
- packages/happy-cli/**
---

## Gotchas

- ALL imports must be at the top of the file — never import mid-code
- All debugging goes through file-based logger — never use console for debug output (interferes with agent terminal UI)
- Dual mode architecture: interactive mode spawns CLI process (child_process.spawn, NOT node-pty), remote mode uses internal SDK (`src/claude/sdk/`)
- Claude SDK is internal (`src/claude/sdk/`), not the `@anthropic-ai/claude-code` npm package

## Patterns to Follow

- Named exports only (no default exports)
- As few `if` statements as possible — prefer better design over control flow branching
- Don't create trivial small functions / getters / setters
- Daemon logs default to `~/.happy/logs/` (or `$HAPPY_HOME_DIR/logs/`)
22 changes: 22 additions & 0 deletions .claude/rules/happy-server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
paths:
- packages/happy-server/**
---

## Gotchas

- Create Prisma migrations when schema changes — follow existing naming convention (`YYYYMMDDHHMMSS_description`). Run `yarn generate` when new types are needed
- Avoid enums — use maps instead

## Patterns to Follow

- Use `inTx` for database transactions, `afterTx` to emit events after commit succeeds
- Don't run non-transactional things (like file uploads) inside transactions
- Use `eventRouter.emitUpdate()` for persistent events, `emitEphemeral()` for transient
- Use `privacyKit.decodeBase64` / `privacyKit.encodeBase64` from `privacy-kit` — never use Buffer
- DB operation files: dedicated file in relevant `@/app/` subfolder, prefix with entity then action (e.g. `friendAdd`)
- After writing an action, add a documentation comment explaining the logic; keep it in sync
- All operations must be idempotent — clients may retry automatically
- Don't return values from action functions "just in case" — only essential returns
- Don't add logging unless asked
- Always use GitHub usernames
54 changes: 54 additions & 0 deletions .claude/skills/deploy-cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
---
name: deploy-cli
description: 构建并全局安装 happy-next-cli,重启 daemon
---

# CLI 工具部署

构建 happy-cli 包,全局安装,并重启 daemon。

## 执行步骤

逐步执行 `deploy/build-cli.sh` 的内容,提供进度反馈:

### 步骤 1:清理旧构建产物

```bash
cd /home/coder/workspaces/happy/packages/happy-cli
rm -f happy-next-cli-*.tgz
```

### 步骤 2:构建 CLI

```bash
cd /home/coder/workspaces/happy/packages/happy-cli
npm run build
```

完成后反馈:CLI 构建成功

### 步骤 3:打包并全局安装

```bash
cd /home/coder/workspaces/happy/packages/happy-cli
TARBALL=$(npm pack)
npm install -g "./$TARBALL"
```

完成后反馈:已全局安装,展示安装的包名和版本

### 步骤 4:重启 daemon

```bash
happy daemon stop && happy daemon start
```

完成后反馈:daemon 已重启

## 返回格式

向用户展示:

- **构建结果**: 成功/失败
- **安装包**: 包名和版本
- **Daemon 状态**: 重启结果
75 changes: 75 additions & 0 deletions .claude/skills/deploy-server.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
---
name: deploy-server
description: 部署主服务(server + webapp + voice),包含前置检查和构建进度反馈
---

# 主服务部署

构建并部署 happy-server、happy-app(webapp)、happy-voice 三个 Docker 镜像,然后用 docker compose 拉起所有服务。

## 前置检查

部署前必须执行以下检查,任一不通过则**暂停并提示用户**:

1. **未提交更改检查**:运行 `git status --porcelain`,如果有未提交的更改,警告用户 `git reset --hard origin/dev` 会丢失这些更改,询问是否继续
2. **分支状态检查**:运行 `git fetch origin && git log HEAD..origin/dev --oneline`,展示即将拉取的新提交,让用户确认
3. **Docker 可用性检查**:运行 `docker info`,确认 Docker daemon 正在运行

## 执行步骤

通过逐步执行 `deploy/build-server-web-voice-up.sh` 的内容来提供进度反馈,而不是直接运行整个脚本:

### 步骤 1:同步代码

```bash
cd /home/coder/workspaces/happy
git fetch origin
git reset --hard origin/dev
```

完成后反馈:代码已同步到 origin/dev 最新提交 `<commit hash>`

### 步骤 2:构建 happy-server 镜像

```bash
cd /home/coder/workspaces/happy
docker build -f Dockerfile.server -t happy-server:latest .
```

完成后反馈:happy-server 镜像构建成功

### 步骤 3:构建 happy-app(webapp)镜像

```bash
cd /home/coder/workspaces/happy
docker build -f Dockerfile.webapp -t happy-app:latest .
```

完成后反馈:happy-app 镜像构建成功

### 步骤 4:构建 happy-voice 镜像

```bash
cd /home/coder/workspaces/happy/packages/happy-voice
docker build -f Dockerfile -t happy-voice:latest .
```

完成后反馈:happy-voice 镜像构建成功

### 步骤 5:启动服务

```bash
cd /home/coder/workspaces/happy/deploy
docker compose up -d
```

完成后反馈:所有服务已启动,运行 `docker compose ps` 展示服务状态

## 返回格式

向用户展示部署摘要:

- **同步提交**: `<commit hash> <message>`
- **镜像构建**: server / webapp / voice 各自的构建结果
- **服务状态**: docker compose ps 输出
- **耗时**: 总部署时间
33 changes: 33 additions & 0 deletions .claude/skills/expo-coder.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
name: expo-coder
description: 通过 code-server 端口转发启动 Expo 开发模式,无需 ngrok tunnel
---

# Expo Code-Server 开发启动器

通过 code-server 内置端口转发启动 happy-app,速度比 ngrok tunnel 快。

## 执行步骤

1. 先结束已有的 Expo/Metro 进程
2. 启动 Expo 并设置 `EXPO_PACKAGER_PROXY_URL` 为 code-server 代理地址
3. 返回连接信息给用户

## 操作流程

```bash
# 1. 清理旧进程
pkill -f "expo start" 2>/dev/null
pkill -f "metro" 2>/dev/null
sleep 1

# 2. 启动 Expo(通过 code-server 端口转发)
EXPO_PACKAGER_PROXY_URL=https://8081--main--dootask--kuaifan.coder.hitosea.com yarn workspace happy-app start
```

## 返回格式

向用户展示:

- **Code-Server URL**: `https://8081--main--dootask--kuaifan.coder.hitosea.com`
- **提示**: 在 Expo Go 中手动输入上面的 URL 连接
61 changes: 61 additions & 0 deletions .claude/skills/expo-tunnel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
name: expo-tunnel
description: 启动 Expo tunnel 开发模式,返回公网 URL 供手机连接
---

# Expo Tunnel 开发启动器

启动 happy-app 的 Expo tunnel 模式,获取公网 URL。

## 执行步骤

1. 先结束已有的 Expo/Metro 进程
2. 后台启动 `yarn workspace happy-app start --tunnel`
3. 等待 tunnel 连接成功(轮询 ngrok API)
4. 从 ngrok API 获取公网 URL
5. 保存 URL 到 `.expo-tunnel` 文件
6. 返回连接信息给用户

## 操作流程

```bash
# 1. 清理旧进程
pkill -f "expo start" 2>/dev/null
pkill -f "metro" 2>/dev/null
sleep 1

# 2. 后台启动 tunnel
yarn workspace happy-app start --tunnel &

# 3. 轮询等待 tunnel 就绪(最多 60 秒)
for i in {1..12}; do
URL=$(curl -s http://localhost:4040/api/tunnels 2>/dev/null | jq -r '.tunnels[] | select(.proto=="https") | .public_url' 2>/dev/null)
if [ -n "$URL" ] && [ "$URL" != "null" ]; then
break
fi
sleep 5
done

# 4. 保存到文件
echo "$URL" > .expo-tunnel

# 5. 显示结果
cat .expo-tunnel
```

## 输出文件

URL 会保存到项目根目录的 `.expo-tunnel` 文件,方便随时查看:

```bash
cat .expo-tunnel
```

## 返回格式

向用户展示:

- **Tunnel URL**: `https://xxx.exp.direct`
- **Expo Go 连接**: `exp://xxx.exp.direct`
- **文件位置**: `.expo-tunnel`
- **提示**: tunnel 模式热更新稍慢,摇一摇手机打开开发者菜单
Loading