Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
532 commits
Select commit Hold shift + click to select a range
64ce0d5
docs(reports): collapse P3 plan into a single final-solution doc
wbxl2000 Jun 13, 2026
be7ab77
fix(kimi-web): normalize chat block spacing
wbxl2000 Jun 13, 2026
f5a7f21
feat(web): land P3 — goal / swarm / subagent + terminal + view split
wbxl2000 Jun 13, 2026
f72ff7d
docs(reports): P3 landing acceptance review
wbxl2000 Jun 13, 2026
2d855b0
fix(terminal): make node-pty load and spawn in packaged + pnpm-dev bu…
wbxl2000 Jun 13, 2026
3f968e0
fix(web): use a real monospace font + tighter line height in the term…
wbxl2000 Jun 13, 2026
932f579
style(web): drop the staggered line-in animation on expanded tool-cal…
wbxl2000 Jun 13, 2026
3e56a27
feat(web): move the tool-call summary into the card when expanded
wbxl2000 Jun 13, 2026
0feac28
feat(web): show the full, un-truncated summary in the expanded tool card
wbxl2000 Jun 13, 2026
c9f5a62
revert(web): keep the sending moon until the turn ends
wbxl2000 Jun 13, 2026
71036ec
style(web): bump composer textarea font-size to 14px
wbxl2000 Jun 13, 2026
1c13b81
fix(web): dedupe the daemon echo of an image steer (no double user bu…
wbxl2000 Jun 13, 2026
59c2c19
fix(web): don't flash the chat pane when opening an empty session
wbxl2000 Jun 13, 2026
bbe96ee
fix(web): auto-scroll to the latest content after a mid-stream refresh
wbxl2000 Jun 13, 2026
b02810a
fix(web): stop subagent turns from fragmenting the parent transcript
wbxl2000 Jun 13, 2026
527a07d
feat(web): remove the floating todo/background-task overlay
wbxl2000 Jun 13, 2026
4f97954
feat(web): show all background tasks in the tasks tab, scroll on over…
wbxl2000 Jun 13, 2026
9aef7e9
feat(web): running spinner + unread blue dot left of the session title
wbxl2000 Jun 13, 2026
bc14eac
feat(web): unify archive/remove wording + keep the confirm within the…
wbxl2000 Jun 13, 2026
12fc909
feat(web): new-conversation button + workspace picker on the empty co…
wbxl2000 Jun 13, 2026
27e2f34
feat(web): add a Fork entry to the session row menu
wbxl2000 Jun 13, 2026
42b8464
feat(web): recall sent messages with ArrowUp/ArrowDown in the composer
wbxl2000 Jun 13, 2026
977e638
feat(web): capture console.log/info/debug + reusable log export
wbxl2000 Jun 13, 2026
9de3efe
feat(web): extract settings into a dedicated Settings page
wbxl2000 Jun 13, 2026
cafab7e
feat(web): browser notification when a turn completes (with a setting…
wbxl2000 Jun 13, 2026
f417d4d
feat(web): modes selector (plan/goal/swarm) + fix swarm double-render
wbxl2000 Jun 13, 2026
be49a9b
feat(web): add a chat context header (workspace/session, git, open, c…
wbxl2000 Jun 13, 2026
961e4f6
feat(web): default path + fuzzy recursive search in the add-workspace…
wbxl2000 Jun 13, 2026
451dee9
chore(web): remove the non-functional /undo slash command
wbxl2000 Jun 13, 2026
d2a9b84
docs(reports): results report for the second web TODO sweep (19 items)
wbxl2000 Jun 13, 2026
b0a25b8
test(web): provide browser storage in vitest under node 24
wbxl2000 Jun 14, 2026
494c0ab
docs(reports): add web goal2 acceptance notes
wbxl2000 Jun 14, 2026
10286f6
feat: show shortPath over branch in sidebar workspace header
wbxl2000 Jun 14, 2026
e6b088e
feat(kimi-code-web): use rounded chat bubble icon for new session button
wbxl2000 Jun 14, 2026
9d95813
feat(kimi-code-web): add workspace creation in empty composer and tid…
wbxl2000 Jun 14, 2026
d021961
feat: add manual swarm and goal activation to web ui
wbxl2000 Jun 14, 2026
c7a769a
feat: remove copy-conversation button from view-tabs
wbxl2000 Jun 14, 2026
9c0b2fb
feat: reorder chat-header layout and simplify git status styling
wbxl2000 Jun 14, 2026
8f5ab5c
style: make chat-header action buttons borderless icon + text
wbxl2000 Jun 14, 2026
cf35f6e
feat: move copy-all to kebab menu and add session actions in chat-header
wbxl2000 Jun 14, 2026
69d83e5
feat: redesign chat-header open button with open-in menu
wbxl2000 Jun 14, 2026
b57f274
feat: align chat-header diff stats with git ++/-- red/green style
wbxl2000 Jun 14, 2026
22e4580
style(web): thinner, fainter scrollbars across all components
wbxl2000 Jun 14, 2026
947e2e7
fix(web): re-pin chat to bottom when a turn finishes streaming
wbxl2000 Jun 14, 2026
8028cf4
fix(web): keep the working moon spinning after a refresh mid-stream
wbxl2000 Jun 14, 2026
1fa155e
fix(web): subagent card margins in bubble layout + expandable task/re…
wbxl2000 Jun 14, 2026
b6534c0
feat(web): rebuild subagent cards from the transcript so they survive…
wbxl2000 Jun 14, 2026
eaee45f
fix(web): stop code blocks getting stuck on the loading skeleton
wbxl2000 Jun 14, 2026
c73e045
fix(web): tick running task timers + make task rows expandable to vie…
wbxl2000 Jun 14, 2026
4f82b2f
fix(web): dedupe image-steer echo via a loose (text+image-count) match
wbxl2000 Jun 14, 2026
1f2a218
fix(web): let ↑/↓ walk all the way through input history once browsing
wbxl2000 Jun 14, 2026
20fcbbe
feat(web): minimize button on question/approval cards + stack option …
wbxl2000 Jun 14, 2026
632772f
feat(web): archive-confirm text matches title size; workspace remove …
wbxl2000 Jun 14, 2026
ba59c67
feat(web): persist unsent composer drafts per session in localStorage
wbxl2000 Jun 14, 2026
4350596
feat(web): implement undo + edit-and-resend the last user message
wbxl2000 Jun 14, 2026
6747999
fix(web): reflect the agent's plan mode in the composer toggle
wbxl2000 Jun 14, 2026
3485e10
fix(web): hide an empty {} argument from the tool-call title (kept in…
wbxl2000 Jun 14, 2026
d9ba945
feat(web): show file/media preview as a split pane (peer of chat/files)
wbxl2000 Jun 14, 2026
d369f8a
docs(reports): results report for the third web TODO sweep (16 items)
wbxl2000 Jun 14, 2026
2b84879
chore(kimi-web): temporarily hide open-in-app header menu
wbxl2000 Jun 14, 2026
c2ac693
docs: design doc for temporarily disabling swarm and goal modes in we…
wbxl2000 Jun 14, 2026
a876eeb
feat(web): gray out swarm and goal modes with not-supported label
wbxl2000 Jun 14, 2026
3e6b57f
docs: design doc for composer queue bubble + expanded panel
wbxl2000 Jun 14, 2026
a307849
feat(kimi-web): move undo button out of bubble with new icon and conf…
wbxl2000 Jun 14, 2026
0b0f409
fix: inherit split layout attributes
wbxl2000 Jun 14, 2026
d55ce4a
fix(kimi-web): smooth moon spinner speed
wbxl2000 Jun 14, 2026
866b4e5
feat(web): wire swarm and goal controls to agent-core
sailist Jun 15, 2026
b673d81
fix(tui): only show provider refresh status for added models
sailist Jun 12, 2026
03a147d
feat(tasks): add background task command and output polling to web
sailist Jun 15, 2026
1d955aa
feat(web,server): wire open-in app menu to daemon endpoint
sailist Jun 15, 2026
c37506d
feat(kimi-web): expose git diff line stats in chat header
sailist Jun 15, 2026
134152b
fix(kimi-web): hide terminal tab temporarily
wbxl2000 Jun 15, 2026
fa9a005
feat(kimi-web): add UI font size setting
wbxl2000 Jun 14, 2026
28639c8
fix(kimi-web): repin chat after tail layout settles
wbxl2000 Jun 14, 2026
f514b10
feat(kimi-web): show live subagent progress
wbxl2000 Jun 14, 2026
b70524f
fix(kimi-web): align plaintext colors in dark mode
wbxl2000 Jun 14, 2026
8b9c177
feat(kimi-web): stream running bash output
wbxl2000 Jun 14, 2026
78ed752
fix(kimi-web): avoid shiki overload on large messages
wbxl2000 Jun 14, 2026
62ee580
feat(kimi-web): preselect recommended questions
wbxl2000 Jun 14, 2026
c0fe0c5
feat(kimi-web): add conversation outline nav
wbxl2000 Jun 14, 2026
d4cd50e
fix(kimi-web): tighten mobile layouts
wbxl2000 Jun 14, 2026
9188365
feat(kimi-web): animate undo removal
wbxl2000 Jun 14, 2026
1957dd9
feat(kimi-web): reorganize bottom dock
wbxl2000 Jun 14, 2026
175e98d
fix(web): lengthen session row running spinner arc
wbxl2000 Jun 15, 2026
3a5d12f
Merge branch 'main' into feat/web
wbxl2000 Jun 15, 2026
935ac5c
feat(kimi-web): turn goal mode into a toolbar toggle
wbxl2000 Jun 15, 2026
35a3b37
feat(config): add config API endpoint with redaction support
sailist Jun 15, 2026
13ea027
fix: keep web tool calls collapsed by default
wbxl2000 Jun 15, 2026
9f62540
feat(kimi-web): split dock work panel into bash, subagent, and todos …
wbxl2000 Jun 15, 2026
ba4431b
feat(kimi-web): beta proportional conversation outline with viewport …
wbxl2000 Jun 15, 2026
d7b8727
fix(kimi-web): avoid streaming markdown placeholders
wbxl2000 Jun 15, 2026
1d4c91d
fix(kimi-web): hide legacy conversation outline when beta TOC is off
wbxl2000 Jun 15, 2026
af7cdc1
chore(kimi-web): rename beta settings section to Experimental / 实验性
wbxl2000 Jun 15, 2026
c8e9af8
fix(web): scale UI font size consistently
wbxl2000 Jun 15, 2026
ffda17d
fix(web): remove task tabs from tab bar
wbxl2000 Jun 15, 2026
93bb587
feat(web): refresh OAuth model metadata for always-thinking models
wbxl2000 Jun 15, 2026
841429b
fix(kimi-web): use 'Sub Agent' and 'Mode' in English labels
wbxl2000 Jun 15, 2026
9718c47
fix(kimi-web): keep swarm subagents across background-task refreshes
wbxl2000 Jun 15, 2026
11c4ea3
fix(kimi-web): hide completed swarm cards from conversation bottom stack
wbxl2000 Jun 15, 2026
4fa5607
feat(session): add session-level abort and expose current_prompt_id i…
sailist Jun 15, 2026
ae5b811
fix(server): allow aborting queued prompts and add server-e2e send/ca…
sailist Jun 15, 2026
5aec368
fix(kimi-web): prevent file preview scroll jump when opening a file a…
wbxl2000 Jun 15, 2026
b2d1c0b
fix(kimi-web): show just now for sessions created less than a minute ago
wbxl2000 Jun 15, 2026
f23a67e
fix(kimi-web): keep sidebar logo intact and hide product name on narr…
wbxl2000 Jun 15, 2026
26106ef
fix(kimi-web): preserve markdown code gutter
wbxl2000 Jun 15, 2026
5386c84
feat(web): carry message createdAt into ChatTurn
wbxl2000 Jun 15, 2026
04e46e6
feat(web): add formatMessageTime utility
wbxl2000 Jun 15, 2026
b13cd18
feat(i18n): localize yesterday label for message timestamps
wbxl2000 Jun 15, 2026
8da29ef
feat(web): render timestamp below user query bubble
wbxl2000 Jun 15, 2026
4d4b55b
fix(web): move user query timestamp outside the bubble
wbxl2000 Jun 15, 2026
2f51358
fix(web): place timestamp on same line as undo action
wbxl2000 Jun 15, 2026
b8ae8d3
fix(web): swap timestamp and undo positions, reveal undo text on hover
wbxl2000 Jun 15, 2026
bfa58aa
feat(web): make timestamp a button that toggles full date time
wbxl2000 Jun 15, 2026
448419c
feat(web): update sidebar branding and enlarge session tags; clean up…
wbxl2000 Jun 15, 2026
f478908
style(web): equalize timestamp and undo button heights and alignment
wbxl2000 Jun 15, 2026
6de14cb
feat(web): make workspace names bolder to distinguish from session ti…
wbxl2000 Jun 15, 2026
a6bf756
feat(kimi-web): rename themes to Explore/Native and remove accent sel…
wbxl2000 Jun 15, 2026
709421a
style(web): nudge undo icon up by 1px
wbxl2000 Jun 15, 2026
0a0395a
style(web): align both meta actions to the right
wbxl2000 Jun 15, 2026
8efc4ab
style(web): remove gap between undo and timestamp buttons
wbxl2000 Jun 15, 2026
ef53cfc
style(web): nudge undo icon up by another 0.5px
wbxl2000 Jun 15, 2026
5f31774
feat(web): tune workspace name font-weight to 500
wbxl2000 Jun 15, 2026
40a4ebc
fix(kimi-web): center tag/question text and limit shell-cmd height in…
wbxl2000 Jun 15, 2026
8fa4374
style(kimi-web): remove icons from session pending tags
wbxl2000 Jun 15, 2026
ff482f9
feat(kimi-web): limit recent workspaces in empty-composer picker
wbxl2000 Jun 15, 2026
61d989c
feat(kimi-web): rename sidebar new-workspace button to new-chat and a…
wbxl2000 Jun 15, 2026
f4e5238
style(kimi-web): refine sidebar typography, spacing and font settings
wbxl2000 Jun 15, 2026
cb6caeb
style(kimi-web): unify Composer typography with sidebar
wbxl2000 Jun 15, 2026
c4064e5
style(kimi-web): keep model pill color dimmed
wbxl2000 Jun 15, 2026
7ea9c74
style(kimi-web): adjust ChatHeader git status spacing and badge layout
wbxl2000 Jun 15, 2026
bb1f596
style(kimi-web): polish composer dock chip styles
wbxl2000 Jun 15, 2026
e229ba7
feat(kimi-web): refresh session list relative times on a 30s clock
wbxl2000 Jun 15, 2026
069f317
fix(kimi-web): decode base64 file content in the preview pane
wbxl2000 Jun 15, 2026
55f3d9a
feat(kimi-web): show per-session answer/approve tags in the sidebar
wbxl2000 Jun 15, 2026
b52714c
feat(kimi-web): pop the KAP debug panel out into a separate window
wbxl2000 Jun 15, 2026
c428e40
feat(kimi-web): open subagent detail in the side panel; inline agent-…
wbxl2000 Jun 15, 2026
2c9b5e4
style(kimi-web): align DiffView focus outline with KMBlue
wbxl2000 Jun 15, 2026
7181d0c
feat(kimi-web): surface goal protocol errors; ignore global config-ch…
wbxl2000 Jun 15, 2026
f294b78
feat(kimi-web): support video attachments in user messages end-to-end
wbxl2000 Jun 15, 2026
462abb9
feat(kimi-web): add /swarm and /goal slash commands
wbxl2000 Jun 15, 2026
fed54bc
feat(kimi-web): add /btw side chat backed by child sessions
wbxl2000 Jun 15, 2026
dab01c8
style(kimi-web): pin user message bubble font size to 15px
wbxl2000 Jun 15, 2026
7ac2dbe
Merge origin/feat/web into feat/web
wbxl2000 Jun 15, 2026
e319ead
Merge origin/main into feat/web
wbxl2000 Jun 15, 2026
f478803
style(kimi-web): use Lucide PR icon and text-only git status in header
wbxl2000 Jun 15, 2026
94d37f9
fix(kimi-web): update undo tooltip copy and reduce hover delay
wbxl2000 Jun 15, 2026
9abc23b
fix(kimi-web): auto-scroll to bottom on send, session switch, and tab…
wbxl2000 Jun 15, 2026
a334d01
fix(kimi-web): drop duplicate config-changed case shadowing the real …
wbxl2000 Jun 15, 2026
afa304b
style(kimi-web): unify PR badge with git status pills and drop change…
wbxl2000 Jun 15, 2026
548bfd9
style(kimi-web): remove unused changes computed in ChatHeader
wbxl2000 Jun 15, 2026
cc6e015
fix: keep packaged web build in sync
wbxl2000 Jun 15, 2026
7c8be94
fix(web): support slash command input tails
wbxl2000 Jun 15, 2026
88a3847
fix(web): scope composer dock to chat tab
wbxl2000 Jun 15, 2026
7904491
fix(web): route btw through side-channel agents
wbxl2000 Jun 15, 2026
3c53c30
feat(web): open changed files from git status
wbxl2000 Jun 15, 2026
e4bfdb8
feat(web): copy final assistant summary
wbxl2000 Jun 15, 2026
960dbb5
feat(web): add tabbed model picker
wbxl2000 Jun 15, 2026
b5c5f3b
fix(web): keep composer input height fixed
wbxl2000 Jun 15, 2026
d361857
fix(web): preview composer attachments
wbxl2000 Jun 15, 2026
bee4fa7
feat(web): open workspace links in files tab
wbxl2000 Jun 15, 2026
1ae8a38
fix(web): stabilize subagent progress
wbxl2000 Jun 15, 2026
3a7af11
docs(web): design tab split workflow
wbxl2000 Jun 15, 2026
d30506f
feat(web): connect daemon config settings
wbxl2000 Jun 15, 2026
963949d
fix: resolve CI failures on feat/web
sailist Jun 15, 2026
9cb1c0c
fix(server): suppress debug logs by default
sailist Jun 16, 2026
04a32d1
fix(kimi-web): remove model picker top blue bar and widen dialog
wbxl2000 Jun 16, 2026
e078742
fix(kimi-web): replace model picker checkmark with icon
wbxl2000 Jun 16, 2026
a3c6a5d
fix(kimi-web): hide the Open in app menu
wbxl2000 Jun 16, 2026
949c935
feat(kimi-web): scope composer dock to chat tab and polish BTW side chat
wbxl2000 Jun 16, 2026
edb30d3
feat(server): expose live session status via HTTP and WebSocket
sailist Jun 16, 2026
7e84056
fix(kimi-web): label sidebar session removal as Archive
wbxl2000 Jun 16, 2026
f62c7ac
feat(kimi-web): make tab/split chrome accessible
wbxl2000 Jun 16, 2026
6e494cb
fix(kimi-web): move auth banner into layout flow
wbxl2000 Jun 16, 2026
172456a
fix(kimi-web): enlarge and label header/sidebar icon buttons
wbxl2000 Jun 16, 2026
22f6c1d
feat(kimi-web): give overlay dialogs modal focus management
wbxl2000 Jun 16, 2026
f5caf4c
feat(kimi-web): consistent rules for the right-side detail layer
wbxl2000 Jun 16, 2026
eae691e
fix(kimi-web): calm the diff line colors
wbxl2000 Jun 16, 2026
6871eb8
docs(web): record tab/split convergence + UI audit follow-through
wbxl2000 Jun 16, 2026
6373d60
feat(kimi-web): add side-tab navigation to SettingsDialog
wbxl2000 Jun 16, 2026
f1620ca
feat(session): persist session archive state and add include_archive …
sailist Jun 16, 2026
de0a7b4
feat(kimi-web): give SettingsDialog modal focus management
wbxl2000 Jun 16, 2026
7322ec1
Merge remote-tracking branch 'origin/feat/web' into feat/web
wbxl2000 Jun 16, 2026
53cf01c
refactor(workspace): centralize registry into a single workspaces.json
sailist Jun 16, 2026
cf0bc81
feat(workspace): add workspace lifecycle WS events
sailist Jun 16, 2026
9f7962f
Merge remote-tracking branch 'origin/main' into HEAD
sailist Jun 16, 2026
52c1bb8
feat(fs): add fs:mkdir action for creating directories
sailist Jun 16, 2026
2a0a8b9
style(kimi-web): set fixed heights for all modal dialogs
wbxl2000 Jun 16, 2026
6d005ae
feat(kimi-web): add collapsible sidebar
wbxl2000 Jun 16, 2026
9400b24
Merge remote-tracking branch 'origin/main' into HEAD
sailist Jun 16, 2026
b231b04
refactor(web): temporarily hide new workspace button in sidebar
wbxl2000 Jun 16, 2026
b650369
feat(kimi-web): add starred models support to model picker and compos…
wbxl2000 Jun 16, 2026
a049be7
test(kimi-web): cover chat dock composer alignment
wbxl2000 Jun 16, 2026
64cd33f
feat(server): expose GitHub pull request in git status and web header
sailist Jun 16, 2026
183aac8
feat(kimi-web): surface 5-state session status with a separate busy flag
wbxl2000 Jun 16, 2026
db524fa
fix(kimi-web): persist unread dots across a page reload
wbxl2000 Jun 16, 2026
f0f6970
style(kimi-web): redraw collapse/expand sidebar icons
wbxl2000 Jun 16, 2026
5627479
feat: add server-hosted web UI and document its packages
sailist Jun 16, 2026
f5ca173
test(kimi-web): cover empty-session flash + draft-send paths
wbxl2000 Jun 16, 2026
7a43b1b
chore: ignore generated docs and reports
wbxl2000 Jun 16, 2026
720ce9f
style(apps/kimi-web): remove app shell top border
wbxl2000 Jun 16, 2026
c813314
fix(build): build kimi-web assets before native SEA build
sailist Jun 16, 2026
a67be00
feat(web): hide context indicator on empty session composer
wbxl2000 Jun 16, 2026
f1e739c
feat(kimi-web): unify detail panel layout
wbxl2000 Jun 16, 2026
20f8a2d
Merge remote-tracking branch 'origin/feat/web' into feat/web
wbxl2000 Jun 16, 2026
247f1d2
fix(web): improve dark toc tooltip contrast
wbxl2000 Jun 16, 2026
c5f0837
fix(web): keep markdown code blocks mounted
wbxl2000 Jun 16, 2026
8c492c1
fix(web): tighten dark color contrast
wbxl2000 Jun 16, 2026
cf722fa
fix(web): close dock cards on outside click
wbxl2000 Jun 16, 2026
8de58ea
feat(web): show session content summaries
wbxl2000 Jun 16, 2026
8151f83
fix(web): report web client telemetry
wbxl2000 Jun 16, 2026
348735d
refactor(services): merge @moonshot-ai/services into agent-core
sailist Jun 17, 2026
a213be0
refactor(server): remove Swagger UI and --swagger flag
sailist Jun 17, 2026
bded627
feat(server): add on-demand daemon for kimi web with idle shutdown
sailist Jun 17, 2026
17f4397
fix(web): improve mobile dialog layouts
wbxl2000 Jun 17, 2026
20d50a8
fix(ci): resolve lint, typecheck, and nix build failures
sailist Jun 17, 2026
90c6c8c
fix(web): distinguish native markdown links
wbxl2000 Jun 17, 2026
aebb7ef
fix(vis-web): enable experimentalDecorators for typecheck
sailist Jun 17, 2026
f7bc4f8
Revert "feat(web): show session content summaries"
wbxl2000 Jun 17, 2026
a68f4d5
fix(web): align active toc-bubble highlight with bubble edges
wbxl2000 Jun 17, 2026
a24bbcf
fix(web): hide conversation toc when chat pane is too narrow
wbxl2000 Jun 17, 2026
12214d5
feat(server): add `kimi server ps` to list active clients
sailist Jun 17, 2026
e913659
feat(kimi-web): add queue chip to chat dock workbar
wbxl2000 Jun 17, 2026
0e0733a
Merge remote-tracking branch 'origin/feat/web' into feat/web
wbxl2000 Jun 17, 2026
138982e
fix(agent-core): hide console window when spawning git/gh on Windows
sailist Jun 17, 2026
231ac2b
feat(server): add startup and ws connection telemetry for kimi web
sailist Jun 17, 2026
590180a
feat(web): dynamic page title based on session or workspace
wbxl2000 Jun 17, 2026
815d9a5
fix(web): show recently active sessions at the top of the web session…
wbxl2000 Jun 17, 2026
3fe129d
feat(web): show running indicator in dynamic page title
wbxl2000 Jun 17, 2026
e82bf1e
feat(kimi-web): show elapsed time for completed assistant turns
wbxl2000 Jun 17, 2026
c412ece
fix(kimi-web): resolve TDZ error on App mount
wbxl2000 Jun 17, 2026
8e5f1cf
refactor(kimi-web): align turn duration and support multi-tab timing
wbxl2000 Jun 17, 2026
78b9a66
feat: display per-turn wall-clock duration in web chat
wbxl2000 Jun 17, 2026
e35430e
feat(web): use animated spinner in page title while running
wbxl2000 Jun 17, 2026
5b54b1d
feat(server): add kill command and background server run
sailist Jun 17, 2026
59d05f1
Merge remote-tracking branch 'origin/main' into refactor/core
sailist Jun 17, 2026
a2eb522
fix(server): remove duplicate startBtw key in prompt e2e test
sailist Jun 17, 2026
3455805
chore: bundle Inter font locally
wbxl2000 Jun 17, 2026
e03873b
fix(nix): update pnpmDeps hash for new font dependency
sailist Jun 17, 2026
23bc7d5
fix(server): restore web client telemetry and stabilize skills cleanup
sailist Jun 17, 2026
fc4d944
chore: remove trailing blank lines
wbxl2000 Jun 17, 2026
ecd9268
chore(changeset): remove consumed changeset files
sailist Jun 17, 2026
6743def
chore: clean up web release changesets
wbxl2000 Jun 17, 2026
da50fdd
docs: clean up kimi web readme
wbxl2000 Jun 17, 2026
fa4dcf6
chore: scope package lint to cli release
wbxl2000 Jun 17, 2026
7d4ec5f
chore: remove temporary design docs and preview files from PR
wbxl2000 Jun 17, 2026
3744d4e
chore(kimi-web): remove dev stub daemon
wbxl2000 Jun 17, 2026
7f8c558
test(server-e2e): accept aborted image prompt scenario
wbxl2000 Jun 17, 2026
c695ea1
chore: update flake.nix workspace paths and add new changesets
wbxl2000 Jun 17, 2026
d113d91
feat(server): daemonize by default and fall back to port +1
sailist Jun 17, 2026
433d92b
fix(cli): resolve oxlint unbound-method errors in server run
sailist Jun 17, 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
  •  
  •  
  •  
49 changes: 42 additions & 7 deletions .agents/skills/gen-changesets/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,18 @@ All other `@moonshot-ai/*` packages are treated as internal packages, including
## Core Rules

1. **Inspect the actual changes first.** Use `git status` / `git diff --name-only` to identify which packages were actually changed.
2. **List packages that were actually changed.** Source code, build config, package metadata, and other changes that affect a package's output or behavior need a changeset entry for that package.
3. **Do not list unchanged internal packages.** For example, if `packages/node-sdk` was not changed, do not list `@moonshot-ai/kimi-code-sdk` just because another internal package changed. The SDK follows the same rule as other internal packages: list it only when it was actually changed.
4. **Internal package source changes that enter the CLI bundle must manually list the CLI.** `@moonshot-ai/kimi-code` inline-bundles `@moonshot-ai/*` source, but those internal packages are devDependencies from the CLI's perspective, so changesets will not automatically propagate bumps. If a change enters the CLI output, also list `@moonshot-ai/kimi-code`.
2. **List packages that changesets can release.** If a changed package is ignored in `.changeset/config.json`, do not put that ignored package in frontmatter together with a non-ignored package; changesets rejects mixed ignored/non-ignored frontmatter.
3. **Map ignored internal changes to the affected released package.** If an ignored internal package changes CLI output or behavior, list `@moonshot-ai/kimi-code` and describe the actual user-visible or release-artifact change in the changelog text.
4. **Internal package source changes that enter the CLI bundle must manually list the CLI.** `@moonshot-ai/kimi-code` inline-bundles `@moonshot-ai/*` source, but those internal packages are devDependencies from the CLI's perspective, so changesets will not automatically propagate bumps. If a change enters the CLI output, list `@moonshot-ai/kimi-code`.
- **Web app (`@moonshot-ai/kimi-web`) changes always enter the CLI bundle.** `@moonshot-ai/kimi-web` is ignored by changesets (see `.changeset/config.json`) and cannot be mixed with `@moonshot-ai/kimi-code` in one changeset frontmatter. Describe the web change in the changelog text, but list `@moonshot-ai/kimi-code` so the CLI release carries the bundled `dist-web` output.
5. **Docs-only and tests-only changes usually do not need a changeset.** README, internal docs, and `test/` changes that do not enter package output do not trigger a CLI bump.
6. `@moonshot-ai/vis` / `vis-server` / `vis-web` are ignored by changesets and should not be handled.

## Workflow

1. List the packages that were actually changed.
1. List the changed packages and check whether each one is ignored by `.changeset/config.json`.
2. Choose a bump level for each package.
3. If an internal package change enters the CLI bundle, add `@moonshot-ai/kimi-code`.
3. If an ignored internal package change enters the CLI bundle, put `@moonshot-ai/kimi-code` in frontmatter instead of mixing the ignored package into the same changeset.
4. Create a short kebab-case file under `.changeset/`.
5. Split unrelated changes into separate changesets; keep one logical change in one file.

Expand Down Expand Up @@ -69,7 +70,6 @@ An internal package fixes a bug visible to CLI users:

```markdown
---
"@moonshot-ai/agent-core": patch
"@moonshot-ai/kimi-code": patch
---

Expand All @@ -80,7 +80,6 @@ An internal package has an internal-only change, but it enters the CLI bundle:

```markdown
---
"@moonshot-ai/agent-core": patch
"@moonshot-ai/kimi-code": patch
---

Expand All @@ -97,10 +96,46 @@ Only SDK source changed, and the CLI does not use it:
Clarify session status typing for internal SDK callers.
```

## Web app changes

`@moonshot-ai/kimi-web` is ignored by changesets and must **never** appear in a changeset frontmatter. Because the web app is bundled into the CLI release artifact, any web change that ships must list `@moonshot-ai/kimi-code` instead and describe the actual web-facing change in the text.

- If a PR contains both web UI changes and server API changes, split them into separate changesets so each entry has a focused description.
- Do not enumerate every micro-tweak; keep it to one sentence that captures what the web user gets.

Web-only fix:

```markdown
---
"@moonshot-ai/kimi-code": patch
---

Fix the web chat not scrolling to the bottom after sending a message.
```

Web UI plus server APIs in the same PR (split into two changesets):

```markdown
---
"@moonshot-ai/kimi-code": minor
---

Add the server-hosted web UI, including chat layout and session list behaviors.
```

```markdown
---
"@moonshot-ai/kimi-code": minor
---

Add the server REST and WebSocket APIs that power the web UI.
```

## Red Flags

- You are about to write `major` without asking the user.
- Internal package source enters the CLI bundle, but `@moonshot-ai/kimi-code` is missing.
- A changeset frontmatter mixes ignored internal packages with non-ignored packages.
- `packages/node-sdk` was not changed, but `@moonshot-ai/kimi-code-sdk` was listed for "internal package sync".
- The changelog entry is in Chinese.
- The wording claims more than the diff actually did.
Expand Down
10 changes: 9 additions & 1 deletion .changeset/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,22 @@ Current publishable packages:

All other workspace packages are private internal packages, are not published to npm, and are excluded via `ignore` in `.changeset/config.json`:

- `@moonshot-ai/acp-adapter`
- `@moonshot-ai/agent-core`
- `@moonshot-ai/kaos`
- `@moonshot-ai/kimi-code-oauth`
- `@moonshot-ai/kimi-telemetry`
- `@moonshot-ai/kaos`
- `@moonshot-ai/kimi-web`
- `@moonshot-ai/kosong`
- `@moonshot-ai/migration-legacy`
- `@moonshot-ai/protocol`
- `@moonshot-ai/server`
- `@moonshot-ai/server-e2e`
- `@moonshot-ai/vis`
- `@moonshot-ai/vis-server`
- `@moonshot-ai/vis-web`
- `daemon`
- `kimi-migration-legacy`

Version impact from internal dependencies must be judged manually. The published artifacts for CLI and SDK bundle internal workspace packages into the artifact itself; runtime `dependencies` of published packages must not include any `@moonshot-ai/*` internal workspace packages.

Expand Down
5 changes: 0 additions & 5 deletions .changeset/compaction-retry-think-only.md

This file was deleted.

15 changes: 14 additions & 1 deletion .changeset/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,22 @@
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": [
"@moonshot-ai/acp-adapter",
"@moonshot-ai/agent-core",
"@moonshot-ai/kaos",
"@moonshot-ai/kimi-code-oauth",
"@moonshot-ai/kimi-telemetry",
"@moonshot-ai/kimi-web",
"@moonshot-ai/kosong",
"@moonshot-ai/migration-legacy",
"@moonshot-ai/protocol",
"@moonshot-ai/server",
"@moonshot-ai/server-e2e",
"@moonshot-ai/vis",
"@moonshot-ai/vis-server",
"@moonshot-ai/vis-web"
"@moonshot-ai/vis-web",
"daemon",
"kimi-migration-legacy"
],
"snapshot": {
"useCalculatedVersion": true,
Expand Down
7 changes: 0 additions & 7 deletions .changeset/dispose-kaos-process-stdio.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/sdk-api-refactor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@moonshot-ai/kimi-code-sdk": patch
---

Add host-side config helpers `loadRuntimeConfigSafe` and `resolveConfigPath` for inspecting config without spinning up a full KimiCore.
10 changes: 10 additions & 0 deletions .changeset/server-web-release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
"@moonshot-ai/kimi-code": minor
---

Add the server-hosted web UI and the CLI commands that power it:

- `kimi server` to start, stop, and manage the local server.
- `kimi web` to open the server-hosted web UI in a browser.
- Server REST and WebSocket APIs for the web client.
- Web chat layout, session list, auto-scroll, and related behaviors.
7 changes: 7 additions & 0 deletions .github/workflows/_native-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,13 @@ jobs:
node apps/kimi-code/scripts/update-catalog.mjs --out "$CATALOG_FILE"
echo "KIMI_CODE_BUILT_IN_CATALOG_FILE=$CATALOG_FILE" >> "$GITHUB_ENV"
- name: Build Kimi web assets
# The SEA blob step embeds apps/kimi-code/dist-web; build the web app
# and stage its assets before producing the native executable.
run: |
pnpm --filter @moonshot-ai/kimi-web run build
node apps/kimi-code/scripts/copy-web-assets.mjs
- name: Build native executable (release profile, macOS signed)
if: runner.os == 'macOS' && inputs.sign-macos
run: pnpm --filter @moonshot-ai/kimi-code run build:native:release
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,9 @@ jobs:
echo "Typechecking ${config}"
pnpm dlx --package @typescript/native-preview@beta tsgo -p "${config}" --noEmit
done
- name: Typecheck kimi-web (vue-tsc)
run: pnpm --filter @moonshot-ai/kimi-web run typecheck
- name: Typecheck vis-server
run: pnpm --filter @moonshot-ai/vis-server run typecheck
- name: Typecheck vis-web
run: pnpm --filter @moonshot-ai/vis-web run typecheck
3 changes: 3 additions & 0 deletions .github/workflows/pkg-pr-new.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ jobs:
- name: Build package dependencies
run: pnpm run build:packages

- name: Build Kimi web assets
run: pnpm --filter @moonshot-ai/kimi-web run build

- name: Generate Kimi Code built-in catalog
shell: bash
run: |
Expand Down
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
node_modules/
dist/
dist-web/
dist-single/
dist-native/
.tmp-api-extractor/
Expand All @@ -14,3 +15,12 @@ coverage/
plugins/cdn/
superpowers
.worktrees/

Dockerfile
!packages/daemon-e2e/Dockerfile
docker-compose.yml
.dockerignore

docs/superpowers/
reports/
.superpowers/
9 changes: 7 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,16 @@ This is a TypeScript monorepo built for agent-assisted development. Keep the roo
## Project Map

- `apps/kimi-code`: the CLI / TUI application. It consumes core capabilities through `@moonshot-ai/kimi-code-sdk` and must not depend directly on `@moonshot-ai/agent-core`. When writing or modifying its terminal UI, use the `write-tui` skill (`.agents/skills/write-tui/SKILL.md`).
- `apps/kimi-web`: the browser web UI, a peer to the TUI. Vue 3 + Vite + vue-i18n; talks to the server over REST + WebSocket under `/api/v1`. It must not depend on `@moonshot-ai/agent-core` (wire types are re-implemented locally). See `apps/kimi-web/AGENTS.md`.
- `apps/vis`, `apps/vis/server`, `apps/vis/web`: visual debugging tools for sessions and replays.
- `packages/agent-core`: the unified agent engine, including Agent, Session, profile, skills, tools, plan, permission, background, records, and other core capabilities.
- `packages/agent-core`: the unified agent engine, including Agent, Session, profile, skills, tools, plan, permission, background, records, the in-process DI service layer (`src/services/`), and other core capabilities.
- `packages/node-sdk`: the public TypeScript SDK and harness.
- `packages/kosong`: the LLM / provider abstraction layer.
- `packages/kaos`: the execution environment and file/process abstractions.
- `packages/oauth`: Kimi OAuth and managed auth utilities.
- `packages/telemetry`: shared client-side telemetry infrastructure.
- `packages/server`: the Kimi Code server. Hosts `agent-core` sessions and exposes them over REST + WebSocket (`/api/v1`); bootstrapped from `src/start.ts` and consumed by `apps/kimi-code`. See `packages/server/AGENTS.md`.
- `packages/server-e2e`: live e2e tests and scenarios against a running server (`KIMI_SERVER_URL`, default `http://127.0.0.1:58627`). See `packages/server-e2e/AGENTS.md`.

## Environment Requirements

Expand All @@ -32,9 +35,11 @@ This is a TypeScript monorepo built for agent-assisted development. Keep the roo
## Monorepo Workspace Maintenance

- `pnpm-workspace.yaml` is the source of truth for workspace membership, but `flake.nix` also contains **hardcoded** `workspacePaths` and `workspaceNames` lists.
- **Whenever you add or remove a workspace package, you MUST update both `pnpm-workspace.yaml` and `flake.nix`.**
- **Whenever you add or remove a workspace package, you MUST update both `pnpm-workspace.yaml` and `flake.nix` — for every package, including leaf / test / e2e packages that nothing depends on.**
- `pnpm-workspace.yaml` uses globs (`packages/*`, `apps/*`), so most packages land there automatically; `flake.nix` is fully manual and is where omissions happen.
- Missing a path in `flake.nix`'s `workspacePaths` will silently drop files from the Nix build's `src` fileset.
- Missing a name in `flake.nix`'s `workspaceNames` will break `pnpmConfigHook` because dependencies for that workspace will not be fetched.
- The automated "Check flake.nix workspace sync" (`scripts/check-nix-workspace.mjs`) only validates the transitive dependency **closure of `@moonshot-ai/kimi-code`**. A leaf package outside that closure (e.g. an e2e package nobody imports) slips through even when it is missing from `flake.nix`. A green check is therefore NOT proof that `flake.nix` is fully in sync — keep it updated by hand on every add/remove, do not rely on the check to catch omissions.

## General Coding Rules

Expand Down
20 changes: 18 additions & 2 deletions apps/kimi-code/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@
},
"files": [
"dist",
"dist-web",
"scripts/postinstall.mjs",
"scripts/postinstall",
"README.md"
],
"type": "module",
"imports": {
"#/tui/theme": "./src/tui/theme/index.ts",
"#/cli/sub/server": "./src/cli/sub/server/index.ts",
"#/cli/sub/server/*": "./src/cli/sub/server/*.ts",
"#/*": [
"./src/*.ts",
"./src/*/index.ts",
Expand All @@ -45,8 +48,8 @@
"provenance": true
},
"scripts": {
"build": "pnpm -C ../kimi-web run build && tsdown && node scripts/copy-web-assets.mjs",
"prebuild": "node scripts/build-vis-asset.mjs",
"build": "tsdown",
"catalog:update": "node scripts/update-catalog.mjs --out dist/built-in-catalog.json",
"smoke": "node scripts/smoke.mjs",
"build:native:js": "node scripts/native/01-bundle.mjs",
Expand All @@ -58,6 +61,8 @@
"test:native:smoke": "node scripts/native/smoke.mjs",
"dev": "node scripts/dev.mjs",
"dev:cli-only": "tsx --import ../../build/register-raw-text-loader.mjs ./src/main.ts",
"dev:server": "tsx --tsconfig ./tsconfig.dev.json --import ../../build/register-raw-text-loader.mjs ./src/main.ts server run --foreground",
"dev:server:restart": "node scripts/dev-server-restart.mjs",
"dev:plugin-marketplace": "node scripts/dev-plugin-marketplace-server.mjs",
"build:plugin-marketplace": "node scripts/build-plugin-marketplace-cdn.mjs",
"dev:prod": "node dist/main.mjs",
Expand All @@ -70,15 +75,26 @@
},
"optionalDependencies": {
"@mariozechner/clipboard": "^0.3.2",
"koffi": "^2.16.0"
"chalk": "^5.4.1",
"cli-highlight": "^2.1.11",
"commander": "^13.1.0",
"koffi": "^2.16.0",
"node-pty": "^1.1.0",
"pathe": "^2.0.3",
"pino-pretty": "^13.0.0",
"semver": "^7.7.4",
"smol-toml": "^1.6.1",
"zod": "^4.3.6"
},
"devDependencies": {
"@earendil-works/pi-tui": "^0.74.0",
"@moonshot-ai/acp-adapter": "workspace:^",
"@moonshot-ai/kimi-code-oauth": "workspace:^",
"@moonshot-ai/kimi-code-sdk": "workspace:^",
"@moonshot-ai/kimi-telemetry": "workspace:^",
"@moonshot-ai/kimi-web": "workspace:^",
"@moonshot-ai/migration-legacy": "workspace:^",
"@moonshot-ai/server": "workspace:^",
"@moonshot-ai/vis-server": "workspace:^",
"@moonshot-ai/vis-web": "workspace:*",
"@types/semver": "^7.7.0",
Expand Down
27 changes: 27 additions & 0 deletions apps/kimi-code/scripts/copy-web-assets.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { cp, rm, stat } from 'node:fs/promises';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';

const appRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
const repoRoot = resolve(appRoot, '../..');
const source = resolve(repoRoot, 'apps/kimi-web/dist');
const target = resolve(appRoot, 'dist-web');

async function assertBuiltWeb() {
try {
const info = await stat(resolve(source, 'index.html'));
if (!info.isFile()) {
throw new Error('index.html is not a file');
}
} catch {
throw new Error(
`Kimi web build output was not found at ${source}. Run \`pnpm --filter @moonshot-ai/kimi-web run build\` first.`,
);
}
}

await assertBuiltWeb();
await rm(target, { recursive: true, force: true });
await cp(source, target, { recursive: true });

console.log(`Copied Kimi web assets to ${target}`);
Loading
Loading