Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
276 commits
Select commit Hold shift + click to select a range
d6b29df
fix(investigations): open the newly created session
andrasbacsai Sep 10, 2026
7c5e8fe
feat(chat): require GitHub discovery open/closed status
andrasbacsai Sep 10, 2026
ddcca7d
feat(preferences): add pstack skill pack install and status
andrasbacsai Sep 11, 2026
d8bc76e
feat(opinionated): skip setup-pstack when installing pstack skills
andrasbacsai Sep 11, 2026
d120f43
feat(magic): remove smoke test command and settings
andrasbacsai Sep 11, 2026
66b8b6a
fix(cli): find Unix CLIs via login shell and skip extra Codex tags
andrasbacsai Sep 14, 2026
4ebcd8a
fix(terminal): track kitty flags for Shift+Enter encoding
andrasbacsai Sep 14, 2026
a14fe46
Merge pull request #689 from noih/fix/terminal-shift-enter
andrasbacsai Sep 14, 2026
6e1278a
feat(chat): add GitHub issues magic command and stop CLI auto-switch
andrasbacsai Sep 14, 2026
03244af
fix: prevent projects.json corruption (#679) (#702)
manstfu Sep 14, 2026
cca2481
fix(sentry): route Sentry issue lookups to the org's region host (#697)
SeriousM Sep 14, 2026
3e49390
fix(persistence): make Claude/Codex sessions persist on Windows (#703)
manstfu Sep 14, 2026
33ff207
perf: reduce CPU and memory across projects (#705)
manstfu Sep 14, 2026
4389a44
fix(terminal): keep run-command output visible after exit
andrasbacsai Sep 14, 2026
2e278ba
chore(gitignore): ignore local AI todo file
andrasbacsai Sep 14, 2026
c18f52d
fix(preferences): preserve disabled Codex multi-agent setting
andrasbacsai Sep 14, 2026
a66fb1c
fix(chat): restore cancelled drafts only before execution
andrasbacsai Sep 14, 2026
89514cb
feat(git): enable combined sync button by default
andrasbacsai Sep 14, 2026
81faae7
feat(chat): add compact session actions to worktree menu
andrasbacsai Sep 14, 2026
fef6abf
feat(mcp): complete agent browser setup in one action
andrasbacsai Sep 14, 2026
146d43c
fix(preferences): update client cache before persisting patches
andrasbacsai Sep 14, 2026
c1a3979
feat(servers): add native multi-server project aggregation
andrasbacsai Sep 14, 2026
c14a06d
fix(servers): route project actions to their owning server
andrasbacsai Sep 14, 2026
1d6170e
feat(servers): group combined projects by owning server
andrasbacsai Sep 14, 2026
6e3d247
fix(projects): hide package scripts in mobile and native menus
andrasbacsai Sep 14, 2026
ac04444
fix(web-access): use compatible ID generation across UI
andrasbacsai Sep 14, 2026
3b4fe2b
fix(chat): use full-width two-column mobile magic menu
andrasbacsai Sep 14, 2026
f61932b
docs(ai): consolidate reusable engineering lessons
andrasbacsai Sep 14, 2026
24ba7f2
fix(pi): run PATH installation correctly through WSL (#680)
CamAnNguyen Sep 14, 2026
cefdd06
Delete .ai/todo.md
andrasbacsai Sep 14, 2026
5a8189e
fix(skills): discover nested skill directories (#664)
Whiteknight07 Sep 14, 2026
f157942
fix(chat): ignore IME composition Escape in session modal (#685)
noih Sep 14, 2026
130793d
Fix: Prevent premature "Response lost" crash status during active sen…
toanalien Sep 14, 2026
71fcb0f
fix(codex): discover symlinked skills and reload MCP (#673)
fsioni Sep 14, 2026
d499d50
fix(windows): resolve and safely launch npm shims (#678)
css521 Sep 14, 2026
6c58dac
fix(titlebar): align mobile status and side actions
andrasbacsai Sep 14, 2026
9979b9c
feat(web): sign-in screen and browser sign-out for web access (#711)
LeXillal Sep 14, 2026
225319a
feat(settings): support editing preferences on remote servers
andrasbacsai Sep 14, 2026
5f6e820
fix(chat): upload native clipboard images through active backend
andrasbacsai Sep 15, 2026
c23e540
fix(projects): hide status badges in narrow sidebar
andrasbacsai Sep 15, 2026
5c00e37
fix(chat): preserve active sessions and clear stale run state
andrasbacsai Sep 15, 2026
5ec0023
fix remote terminal routing
andrasbacsai Sep 15, 2026
5207f6d
fix(chat): preserve remote attachments and message timeline
andrasbacsai Sep 15, 2026
a3d080c
fix(chat): prevent stale session routing and remote image failures
andrasbacsai Sep 15, 2026
bd41e17
fix(chat): clear stale streams after completed session history loads
andrasbacsai Sep 15, 2026
488b856
fix(projects): group projects by server and defer session restore
andrasbacsai Sep 15, 2026
e247093
feat(multi-server): route session actions by owning server
andrasbacsai Sep 15, 2026
45395ce
refactor(chat): remove duplicate session actions from desktop header
andrasbacsai Sep 15, 2026
d7d2dca
fix(multi-server): route file previews and git status by owning server
andrasbacsai Sep 15, 2026
d6a2a34
fix(multi-server): route CLI status checks to owning server
andrasbacsai Sep 15, 2026
14f4085
fix(projects): stabilize worktree modals during server switches
andrasbacsai Sep 15, 2026
30aa9a1
fix(files): open files in view mode by default (#656)
manstfu Sep 15, 2026
946aeec
fix(projects): refresh replaced avatar images (#650)
fsioni Sep 15, 2026
62ab40f
fix(chat): recover completed runs before duplicate guard (#659)
fsioni Sep 15, 2026
b51d042
feat(ui): persist client view state and unify magic actions
andrasbacsai Sep 15, 2026
3eb5e2f
fix(preferences): default AI prompts to queue instead of auto-steering
andrasbacsai Sep 15, 2026
41f7d65
fix(remote): route terminal opens over SSH and hide local-only actions
andrasbacsai Sep 15, 2026
0efa481
fix(remote): route file and worktree opens to owning server
andrasbacsai Sep 15, 2026
698009a
fix(desktop): launch remote SSH sessions correctly in Ghostty
andrasbacsai Sep 15, 2026
e689d50
feat(projects): add provider-aware cloning and destination persistence
andrasbacsai Sep 15, 2026
127eba7
fix(chat): show git diff stats in mobile session headers
andrasbacsai Sep 15, 2026
0d64b5f
feat(remote): add manual server reconnect controls
andrasbacsai Sep 15, 2026
42063ef
fix(remote): scope backend models to the active server
andrasbacsai Sep 15, 2026
c7abe3b
fix(remote): scope OpenCode refresh and PI model preferences
andrasbacsai Sep 15, 2026
67cbdc6
fix(remote): start investigations after worktrees become ready
andrasbacsai Sep 16, 2026
0a7c737
fix(chat): hydrate running session history before live chunks
andrasbacsai Sep 16, 2026
5a1e112
fix(remote): prevent investigation cache loops and expose crash details
andrasbacsai Sep 16, 2026
196b7fe
docs(ai): document Web Access model selector verification
andrasbacsai Sep 16, 2026
eb73cc3
chore(ai): remove completed Web Access investigation notes
andrasbacsai Sep 16, 2026
76f5118
fix(github): exclude pull requests from issue results (#735)
andrasbacsai Sep 16, 2026
66554f4
fix: restore Windows WebView keyboard focus (#736)
andrasbacsai Sep 16, 2026
ace2f3e
test(preferences): cover GPT 6 Astra magic prompt selection (#737)
andrasbacsai Sep 16, 2026
be44282
fix(projects): avoid native macOS folder picker crash (#738)
andrasbacsai Sep 16, 2026
f96175e
fix(process): reap terminated CLI children (#740)
andrasbacsai Sep 17, 2026
b599094
feat(mcp): add session controls and preserve message settings (#745)
andrasbacsai Sep 17, 2026
7349008
chore: remove completed MCP session controls task
andrasbacsai Sep 17, 2026
7c1ce37
fix(server): persist complete Jean home in Docker volumes (#739)
andrasbacsai Sep 17, 2026
3aa5060
fix(server): include user-local binaries in runtime PATH (#741)
andrasbacsai Sep 17, 2026
91f4dd5
fix(projects): normalize Codex model for commit messages (#744)
andrasbacsai Sep 17, 2026
4e7df2d
fix(magic): restore sessions in Load Context (#743)
andrasbacsai Sep 17, 2026
61df189
fix(server): enable GitHub CLI updates in headless installs (#742)
andrasbacsai Sep 17, 2026
bcc1dc7
fix(investigation): consume flags after startup despite cache updates
andrasbacsai Sep 17, 2026
d82b66d
docs(readme): document file browser access and editing (#746)
andrasbacsai Sep 17, 2026
8fbed89
fix(projects): let folder rename input shrink within row (#748)
andrasbacsai Sep 17, 2026
427a7ff
fix(skills): include user-invocable skills in slash picker (#749)
andrasbacsai Sep 17, 2026
499d341
fix(chat): recognize running-run errors as duplicate sends (#750)
andrasbacsai Sep 17, 2026
9deaade
fix(chat): keep Codex goals in Jean turn lifecycle (#751)
andrasbacsai Sep 17, 2026
fea6a91
fix(chat): restore approval for Claude plain-text plans (#752)
andrasbacsai Sep 17, 2026
b91118a
feat(cli): allow minimizing upgrades to the titlebar (#747)
andrasbacsai Sep 17, 2026
81244d2
fix(codex): repair missing code-mode host at startup (#753)
andrasbacsai Sep 17, 2026
ad0f98a
fix(ui): collapse toast stack until user interaction
andrasbacsai Sep 17, 2026
151e80f
fix(ui): stabilize navigation controls, zoom insets, and unread counts
andrasbacsai Sep 17, 2026
0251dae
refactor(ui): migrate icons to ReIcon and refine sidebar navigation
andrasbacsai Sep 17, 2026
0a8fdfb
refactor(ui): move app version link to sidebar footer
andrasbacsai Sep 17, 2026
006df8e
fix(ui): simplify project row navigation and remove inline actions
andrasbacsai Sep 17, 2026
e0bfd76
fix(ui): refine sidebar styling and web title bar controls
andrasbacsai Sep 17, 2026
c045ec6
refactor(ui): remove session plan viewer and related shortcuts
andrasbacsai Sep 17, 2026
7117886
feat(ui): add mobile GitHub and sponsorship menu actions
andrasbacsai Sep 17, 2026
2c49109
feat(ui): streamline sidebar controls and add file search
andrasbacsai Sep 17, 2026
9e8397e
fix(ui): unify expansion toggles and split button height
andrasbacsai Sep 17, 2026
8a1b7d5
feat(ui): add recent worktrees view to projects sidebar
andrasbacsai Sep 17, 2026
b40fa05
feat(ui): support file attachments and persist sidebar state
andrasbacsai Sep 17, 2026
72ce253
feat(projects): add paginated recent sessions endpoint
andrasbacsai Sep 17, 2026
bb80aa9
feat(ui): show session status and naming progress
andrasbacsai Sep 17, 2026
22f8e0b
feat(ui): add separate steer action and working session indicator
andrasbacsai Sep 17, 2026
c44b6b5
style(ui): refine recent worktree list typography
andrasbacsai Sep 17, 2026
9ce1153
fix(ui): refine mobile session modal header actions
andrasbacsai Sep 17, 2026
e04c365
fix(ui): refine session status styling and zen mode control
andrasbacsai Sep 17, 2026
e31b203
fix(ui): reflect session naming and yolo status in recent worktrees
andrasbacsai Sep 17, 2026
4fb8397
fix(unread): show cached sessions while refreshing
andrasbacsai Sep 17, 2026
f5dc3da
fix(sessions): create an empty session after removing the last one
andrasbacsai Sep 17, 2026
0eef67f
fix(ui): refine mobile swipes and recent session visibility
andrasbacsai Sep 17, 2026
2b50273
fix(ui): open file browser on mobile modal swipe
andrasbacsai Sep 17, 2026
c941aed
fix(chat): update recent sessions and render selected tab
andrasbacsai Sep 17, 2026
e46e826
fix(ui): centralize mobile file browser swipe handling
andrasbacsai Sep 17, 2026
aa30de8
fix(ui): suppress mobile file browser animation after swipe
andrasbacsai Sep 17, 2026
b84074b
fix(ui): keep unread sessions selectable and dismiss controls visible
andrasbacsai Sep 17, 2026
8c1f42e
fix(ui): preserve chat context when opening mobile sidebar
andrasbacsai Sep 17, 2026
294621e
fix(ui): use official Sentry icon for Sentry contexts
andrasbacsai Sep 18, 2026
fcba104
fix(ui): remove mobile file-browser edge swipe
andrasbacsai Sep 18, 2026
e1c1afd
fix(ui): sync mobile sidebar swipe feedback with chat gestures
andrasbacsai Sep 18, 2026
fe1a716
feat(integrations): enforce required MCP and Agent Browser services
andrasbacsai Sep 18, 2026
6bbb940
fix(ui): prevent duplicate edited-files summaries in compact chat
andrasbacsai Sep 18, 2026
9efdece
refactor(ui): streamline MCP service settings
andrasbacsai Sep 18, 2026
e682186
feat(ui): add mobile layouts for commits and checkpoints
andrasbacsai Sep 18, 2026
dcd7672
fix(ui): restore cancelled drafts and stabilize recent navigation
andrasbacsai Sep 18, 2026
eb2a72f
fix(projects): scope linked projects and simplify session row details
andrasbacsai Sep 18, 2026
553bd17
fix(projects): highlight only the selected recent session
andrasbacsai Sep 18, 2026
b908272
fix(ui): refine prompt and recent worktree selection styling
andrasbacsai Sep 18, 2026
e0db32e
fix(projects): preserve recent worktree row styling
andrasbacsai Sep 18, 2026
04a01ee
fix(chat): queue messages during active turns
andrasbacsai Sep 18, 2026
cccc4e7
fix(chat): resolve relative diff paths within worktrees
andrasbacsai Sep 18, 2026
4d1f269
fix(ui): refresh diff actions and remove deleted worktrees from caches
andrasbacsai Sep 18, 2026
0b691e0
fix(chat): compact hidden prompt button and make it responsive
andrasbacsai Sep 18, 2026
bdd2f30
fix(chat): balance hidden prompt button horizontal padding
andrasbacsai Sep 18, 2026
1ba7943
feat(magic): add mobile-friendly Magic menu layout
andrasbacsai Sep 19, 2026
1e7de12
refactor(projects): label recent worktrees by execution mode
andrasbacsai Sep 19, 2026
db03f09
refactor(ui): simplify feature tour and recent worktree status labels
andrasbacsai Sep 20, 2026
0ac1e29
fix(magic): label linked projects by serving instance in Web Access
andrasbacsai Sep 20, 2026
71d4b51
fix(magic): use active remote name for linked project instances
andrasbacsai Sep 20, 2026
fbdce8d
feat(projects): show waveform for working recent worktrees
andrasbacsai Sep 20, 2026
02cc39c
feat(remote): add server names and improve project list layouts
andrasbacsai Sep 20, 2026
81453d6
fix(chat): load text attachments from their owning remote server
andrasbacsai Sep 20, 2026
8e204e6
fix(terminal): quote and translate CLI args for WSL terminals
thebristolsound Sep 21, 2026
c4393db
fix(workflows): resolve modal worktree for workflow runs
andrasbacsai Sep 21, 2026
492367f
fix(ci): use preferred array type syntax
andrasbacsai Sep 21, 2026
f42fa51
fix(windows): restore cross-platform clippy build
andrasbacsai Sep 21, 2026
c0c8b88
test(models): isolate picker catalog fixtures
andrasbacsai Sep 21, 2026
1c296a1
test(crypto): normalize glob paths on Windows
andrasbacsai Sep 21, 2026
5273e2f
fix(chat): preserve tool expansion across streamed remounts
andrasbacsai Sep 21, 2026
dd918ab
chore(release): bump version to 1.0.1
andrasbacsai Sep 21, 2026
f621a86
fix(transport): keep local desktop commands on Tauri handlers
andrasbacsai Sep 21, 2026
4dbc022
fix(background-tasks): prevent busy loops from unsupported poll requests
andrasbacsai Sep 21, 2026
cb49903
feat(projects): show unread sessions and validate investigations
andrasbacsai Sep 21, 2026
4ff8ab9
feat(mcp): reuse idle sessions and persist worktree PR links
andrasbacsai Sep 21, 2026
ba3e47a
fix(projects): preserve activity column alignment without diff stats
andrasbacsai Sep 21, 2026
50dca97
chore(release): bump version to 1.0.2
andrasbacsai Sep 21, 2026
0efc061
fix(chat): flush streaming output when animation frames stall
andrasbacsai Sep 21, 2026
8007918
fix(ci): elide redundant MCP session lifetime
andrasbacsai Sep 21, 2026
7638f3c
feat(cli-update): support automatic Grok CLI updates
andrasbacsai Sep 21, 2026
b740f9c
fix(chat): restore omitted streaming text prefixes
andrasbacsai Sep 21, 2026
f84cbe6
feat(chat): keep Grok ACP hosts warm across prompts
andrasbacsai Sep 21, 2026
61cb7a7
chore(release): bump version to 1.0.3
andrasbacsai Sep 21, 2026
c97f224
fix(projects): show session pin controls on mobile
andrasbacsai Sep 21, 2026
c087a01
fix(terminal): launch WSL terminal CLIs in exec mode
thebristolsound Sep 21, 2026
1c041f2
fix(chat): preserve Grok output across cancellation and restart
andrasbacsai Sep 22, 2026
101b1ce
feat(projects): separate pinned and unpinned worktrees
andrasbacsai Sep 22, 2026
84b2ed9
fix(chat): preserve active session tabs while session lists load
andrasbacsai Sep 22, 2026
5c95b82
fix(chat): use remote defaults when creating sessions
andrasbacsai Sep 22, 2026
b7b85ba
fix(preferences): use server-specific settings for remote worktrees
andrasbacsai Sep 22, 2026
fb0cbc2
fix(projects): open recent worktree cards without triggering pin actions
andrasbacsai Sep 22, 2026
e6ca14a
feat(projects): preserve running sessions and add worktree creation
andrasbacsai Sep 22, 2026
75b26d7
style(projects): tighten sidebar search and action spacing
andrasbacsai Sep 22, 2026
f111602
fix(ui): synchronize session streaming, scrolling, and window cleanup
andrasbacsai Sep 22, 2026
1287504
chore(release): bump version to 1.0.4
andrasbacsai Sep 22, 2026
c7f5328
chore(release): set version to 1.0.3
andrasbacsai Sep 22, 2026
6b038a7
fix(chat): limit normal input height to 30vh
andrasbacsai Sep 22, 2026
a9080c5
chore(server): restore locked package versions to 1.0.3
andrasbacsai Sep 22, 2026
f2a6d9f
fix(ui): persist pinned sessions and canvas labels in server UI state
andrasbacsai Sep 22, 2026
8c39baa
feat(preferences): add Claude Opus 5.5 model option
andrasbacsai Sep 22, 2026
b63770b
feat(preferences): add GPT 6 Codex models and fast modes
andrasbacsai Sep 22, 2026
2c0f091
feat(cli): expose managed binaries to user terminals
andrasbacsai Sep 22, 2026
28715a3
chore(release): bump application version to 1.0.4
andrasbacsai Sep 22, 2026
2c0d003
fix(projects): allow cross-instance links in Web Access
andrasbacsai Sep 22, 2026
b5aeddd
fix(ci): silence Windows executable helper warning
andrasbacsai Sep 22, 2026
1aea887
test: await toolbar focus cleanup
andrasbacsai Sep 22, 2026
7b09744
fix(worktree): clarify investigation action targets current worktree
andrasbacsai Sep 23, 2026
da4a45e
feat: add issue comment-close action and server-aware project moves
andrasbacsai Sep 23, 2026
bb91f62
fix(github): prefer session-scoped issue and PR context
andrasbacsai Sep 23, 2026
7a7125b
feat(chat): add issue investigation actions to context picker
andrasbacsai Sep 23, 2026
8a0cafa
feat(chat): paginate and refresh context mention results
andrasbacsai Sep 23, 2026
ee92bd1
fix(chat): centralize queued prompt processing in backend
andrasbacsai Sep 23, 2026
1642ca9
fix(terminal): launch WSL terminal CLIs in exec mode with WSL paths (…
andrasbacsai Sep 23, 2026
a74b3c1
feat(projects): show counts on collapsed sidebar items
andrasbacsai Sep 23, 2026
1f5b121
fix(chat): keep assistant replies in the correct turn
andrasbacsai Sep 23, 2026
bffeefe
feat(projects): make the folders section collapsible
andrasbacsai Sep 23, 2026
e5b29ac
fix(magic): use issue icon for Issue investigation
andrasbacsai Sep 23, 2026
2118ff1
fix(web): verify WebSocket connection after browser wake
andrasbacsai Sep 24, 2026
9daf5f6
fix(sessions): keep pinned and newly finished sessions visible
andrasbacsai Sep 24, 2026
1b3ae14
chore(release): bump version to 1.0.7
andrasbacsai Sep 25, 2026
8f95775
feat(usage): show plan tier and reset countdowns in usage views
andrasbacsai Sep 25, 2026
c0bfb42
feat(chat): add Download file action for file paths in messages
andrasbacsai Sep 25, 2026
52c082e
fix(chat): approve all Claude permission asks in YOLO Chrome runs
andrasbacsai Sep 25, 2026
092e17a
fix(ui-state): broadcast UI state saves to all clients
andrasbacsai Sep 25, 2026
59d81e0
feat(usage): refresh Claude usage from CLI rate_limit_event messages
andrasbacsai Sep 25, 2026
468d1e3
test(usage): cover claude-usage cache invalidation key
andrasbacsai Sep 25, 2026
a2abfe5
feat(sidebar): move recent list "Show more" actions into sidebar footer
andrasbacsai Sep 25, 2026
fcca187
fix(layout): hide title text in native desktop title bar
andrasbacsai Sep 25, 2026
846d02e
fix(chat): select a listed session when the active one was deleted
andrasbacsai Sep 26, 2026
a2b895d
fix(chat): keep manual renames and block early question answers
andrasbacsai Sep 27, 2026
5814d0c
feat(chat): open file paths on click, fail turns on Claude API errors
andrasbacsai Sep 27, 2026
1e45f93
fix(chat): read git sync button setting from local preferences
andrasbacsai Sep 27, 2026
dda7eb2
feat(branding): replace app icons and logo with dark-background design
andrasbacsai Sep 27, 2026
24ebae2
feat(mobile): widen drawers and add close buttons to sidebars
andrasbacsai Sep 27, 2026
ee19597
feat(preferences): show Web Access pane in mobile settings selector
andrasbacsai Sep 27, 2026
5e04207
style(chat): match file modal header buttons to dialog close button
andrasbacsai Sep 27, 2026
6b1b80b
fix(command-palette): center item icons on first line of label
andrasbacsai Sep 27, 2026
2b086cd
fix(preferences): make Web Access settings read-only outside desktop app
andrasbacsai Sep 27, 2026
0873d91
fix(chat): keep compact execution mode dropdown enabled during questions
andrasbacsai Sep 27, 2026
32255eb
feat(chat): add terminal/browser toggles to session modal header
andrasbacsai Sep 27, 2026
089399a
fix(icons): map ExternalLink to reicon Export5 icon
andrasbacsai Sep 27, 2026
52889ac
feat(auto-fix): add Mr. Robot status panel and retry limits
andrasbacsai Sep 27, 2026
0fed862
fix(projects): always show Git menu item on mobile and web access
andrasbacsai Sep 28, 2026
3e5ec30
fix(chat): allow file content modal header to shrink for long names
andrasbacsai Sep 28, 2026
e402c35
feat(chat): show Write, MultiEdit, and NotebookEdit in edited files
andrasbacsai Sep 28, 2026
a6e14ca
feat(chat): flag errored tool calls and recover stale Claude sessions
andrasbacsai Sep 28, 2026
fcdddd2
refactor(ui): replace hardcoded hues with theme status color tokens
andrasbacsai Sep 28, 2026
2be1fbb
style(ui): use primary color for open-in buttons and running spinners
andrasbacsai Sep 28, 2026
9a6b4e3
feat(projects): add Mod+Shift+1-9 shortcuts to open recent worktrees
andrasbacsai Sep 28, 2026
1ca0de0
fix(chat): preserve drafts and avoid stale session rejection (#784)
horacioh Sep 28, 2026
87cb233
feat(chat): send # picker investigation prompt after loading context
andrasbacsai Sep 28, 2026
6f10d8c
fix(chat): keep restored draft when cancel finds only earlier replies
andrasbacsai Sep 28, 2026
e235c6e
Merge remote-tracking branch 'origin/main'
andrasbacsai Sep 28, 2026
22b18f4
feat(projects): sync recent session pins with owning server
andrasbacsai Sep 28, 2026
ffb9442
fix(chat): don't mark Bash calls with non-zero exit codes as failed
andrasbacsai Sep 28, 2026
6c6a6b1
feat(preferences): add Claude Sonnet 5.5 model option
andrasbacsai Sep 28, 2026
14e7e3a
feat(models): sort Claude model options by version, newest first
andrasbacsai Sep 28, 2026
eb9957b
fix(projects): dedupe worktree teardown toasts across server connections
andrasbacsai Sep 28, 2026
db4e111
feat(chat): support /goal on Claude sessions with goal banner
andrasbacsai Sep 29, 2026
fcba9e5
feat(projects): compact Recent session rows with corner pin button
andrasbacsai Sep 29, 2026
3d28909
fix(chat): send issue investigation without waiting for query refetch
andrasbacsai Sep 29, 2026
e467afc
fix(usage): keep last-good usage visible when refetch fails
andrasbacsai Sep 29, 2026
7a15313
feat(chat): show goal as top-right badge with popover instead of banner
andrasbacsai Sep 29, 2026
f287bed
fix(projects): skip teardown script when worktree checkout is missing
andrasbacsai Sep 29, 2026
c3f0b96
fix(chat): recover sessions stuck running after a Jean crash
andrasbacsai Sep 29, 2026
1ab6696
feat(chat): show goal badge on the /goal message instead of top bar
andrasbacsai Sep 29, 2026
ebd63b8
fix(chat): switch sessions via Cmd/Ctrl+Arrow when caret is at text edge
andrasbacsai Sep 29, 2026
08653d8
fix(chat): recover orphaned runs at startup and drop status dot
andrasbacsai Sep 29, 2026
8ce1712
fix(projects): hide pinned session pin icon until hover on desktop
andrasbacsai Sep 29, 2026
3ceb596
Merge upstream v1.0.7 and preserve fork integrations
figassis Oct 3, 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
  •  
  •  
  •  
124 changes: 99 additions & 25 deletions .ai/lessons.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,113 @@
# Lessons

## Preserve alignment when simplifying controls

- When a user asks to simplify a footer control to an icon, keep its existing side alignment unless the user explicitly asks to center it.
- In a sidebar footer, keep a single action in the normal left-side position.

## Use stable, owner-aware resource identities

- Values, query keys, command arguments, and persisted references must include a stable resource ID and its owner when IDs are not globally unique.
- Register ownership at adapter boundaries so path-only commands and remote assets route through the correct server.
- Keep ownership visible in multi-source UI and test duplicate display names.
- Return one ID form per server on every transport path (ID-routed, path-routed, explicit server). Mixed scoped/raw IDs make valid resources look missing.
- Do not persist temporary session context under a broader worktree or project identity.

## Keep multi-server behavior at the correct boundary

- Native desktop can aggregate enabled remote servers, but Web Access must use only its serving origin.
- Treat remote profiles as parallel adapters. Do not replace the native app's local core with a global backend switch.
- A server can remain connected and selectable while excluded from aggregate dashboard results.
- Gate native-only connections, aggregation, routing, caches, and ownership labels with `isNativeApp()`.
- Store user state about a remote resource (pins, flags) on the server that owns it, not only in native local UI state, or Web Access clients of that server will not see it.
- Change state that several clients edit through narrow per-item commands on the owning server. Full snapshot saves must not overwrite it.

## Make state transitions atomic and observable

- Update durable storage and the active query cache before closing setup UI, or stale cache data can reopen it.
- Subscribe Zustand components to the data that controls rendering, not to stable getter functions.
- Guard Zustand mutations against no-op updates so unchanged values do not notify all subscribers.
- Test timing-sensitive close, reopen, refresh, and restoration paths, not only the persistence call.

## Verify behavior at system boundaries

- Read backend selection and ownership logic before relying on a command name or frontend callback.
- Test the real boundary contract: command arguments, CLI values, generated configuration, serialized data, and restored history.
- Verify every responsive UI branch and each supported runtime: native desktop, Web Access, and mobile where applicable.
- Keep long-running jobs backend-owned when they must survive client disconnects.

## Normalize external backend behavior end to end

- Classify a backend by its current documented transport and capabilities before integration. Do not keep old transport assumptions after a product migration.
- Normalize exact tool names and parameter shapes at the display boundary, with readable fallbacks for known native tools.
- Add live-stream and persisted-history parsers together, and route history by the per-run backend before generic fallback logic.
- Resolve default, custom, and empty prompts consistently on every backend; backend mode instructions must augment the shared prompt.
- A capability is complete only when preferences, every send path, persistence, rendering, cancellation, and tests all support it.

## Verify external tools from authoritative sources

- Check the current official site, migration guide, installer, release manifest, and binary help before designing an integration.
- Do not use an old registry entry or similarly named third-party package as proof of the supported product path.
- Check Jean-managed binary locations before declaring a tool unavailable; distinguish “not on PATH” from “not installed.”
- Verify installed skills through each harness's real discovery path. File presence alone does not prove discovery or invocation.

## Make setup actions produce a usable result

- If a feature needs dependent configuration, make its primary install action complete the safe required steps.
- Do not add a second setup action when Jean can configure the dependency automatically.
- Update default agent guidance when installation alone does not expose the intended workflow.

## Keep user-facing output explicit

- Discovery results must show a visible state for every result type, such as open, closed, or merged.
- Background actions should use one toast lifecycle: loading, then success or error with the same ID.
- Show persistent context such as resource ownership where the user needs it to understand later actions.

## Treat fresh-session creation as a backend contract

- Confirm that a “start” command explicitly creates a fresh session when the UI promises one.
- Wait for the returned session ID, select that exact session, and then open its view.
- Put one-shot investigation context on the created session so it cannot leak into later sessions.
- Test backend session selection and restoration, not only that the UI callback runs.

## Design cross-platform affordances explicitly

- Hide and disable keyboard-only actions outside native desktop unless they are useful in that runtime.
- Do not assume Unicode modifier glyphs render in browser fonts; use explicit labels such as `Ctrl` in Web Access.
- On plain HTTP, browser clipboard reads can fail. Use paste-event data for direct paste, and offer a text field when an action needs a manual fallback.
- Test click or tap behavior separately from native keyboard shortcuts.

## Keep task tracking proportional

- The project instructions require work to be tracked in `.ai/todo.md`, but do not expand it with excessive implementation detail.
- For small follow-up fixes, add only a short checklist and result instead of a long duplicate report.
- Explain that `.ai/todo.md` is internal task tracking when the user asks why it changes.
- Reset `.ai/todo.md` for each task and keep its checklist proportional to the work.
- For small fixes, record a short plan, verification, and result instead of a duplicate implementation report.
- Explain that `.ai/todo.md` is internal task tracking when a user asks why it changes.

## Normalize backend tool vocabularies at the display boundary
## Separate implementation limits from external limits

- Do not assume similar tools share names or parameter casing across backends.
- Capture real stream events, map exact backend names and keys to Jean's common renderer contract, and keep an explicit readable fallback for known native tools.
- Test both live-looking tool inputs and persisted inputs so reload does not reintroduce unhandled labels.
- For production-readiness reviews, classify every gap as either implementable in Jean or unavailable in the external backend.
- Do not mark work complete while implementable items remain.
- Report verification limits separately from implementation limits.

## Wire backend capability semantics end to end
## Reproduce the exact visible state before selecting a cache fix

- A backend flag is not supported until the frontend selects the correct setting type and every send path forwards it.
- For persistent-only MCP backends, add discovery and installers, but do not show a per-session switch that the CLI cannot honor.
- Test the exact CLI value set and the generated persistent config, not only the low-level command builder.
- Distinguish a stale canvas or list status from a stale status inside the open session.
- Trace the exact component and every state source that can keep a running indicator visible.
- Add a regression test for the user-visible open-session state, not only a nearby cache with similar data.
- When UI rendering defers a resource ID, defer its owner and routing context as one value. Never combine a previous server resource ID with the new server's worktree or path.
- If a switched chat shows an incomplete tool or running state, do not conclude that stale query routing is the full cause. Compare WebSocket event decoration and replay with the persisted session response before selecting the fix.

## Do not confuse incomplete work with upstream limits
## Test completion as one lifecycle, including selection

- When the user asks for production readiness, classify each gap as either implementable in Jean or unavailable in the external backend.
- Do not call work complete while implementable checklist items remain.
- Do not use an upstream limitation to excuse adjacent Jean work that is still possible.
- State verification limits separately from implementation limits.
- A completion fix must verify the open-session indicator and the active session ID together.
- Cache invalidation can affect both status data and automatic selection effects; test that completion never changes the user's current session.

## Verify product migrations against the current official CLI
- When fixing UI flicker, removing duplicate requests is not sufficient. Verify the actual first-paint and transition behavior. If the user reports that one header field appears late, test the rendered visibility gate, not only the data source wiring.

- Do not treat an old package registry entry as proof that a product is still the supported user path.
- Check the official product site, migration guide, installer, release manifest, and downloaded binary help before designing an integration.
- Do not rename an integration while keeping the old transport assumptions. Reclassify the backend from its current documented protocol.
- Do not install similarly named third-party packages. For Antigravity, use Google's official native installer and release manifest, not the unrelated npm package.
- When a remote attachment works for the backend but not in the UI, verify both upload routing and client preview URL ownership. A remote filesystem path is not directly loadable by the native webview; render it through the owning server file URL.

## Register live and history parsers together
## Use theme tokens for color, not Tailwind hues

- A new streaming backend needs two parser paths: the live response parser and the run-log reconstruction parser.
- Route persisted runs by the per-run backend or model prefix before using a generic fallback parser.
- Test history reload with the backend's real NDJSON format. Live streaming success does not prove that the response survives a query refresh or app reload.
- UI chrome is monochrome (`primary`, `foreground`, `muted-foreground`, `accent`). Use color only for status.
- Status colors: `success`, `warning`, `info`, `destructive` (+ `*-foreground` on solid backgrounds). They have light and dark values in `src/App.css`; opacity modifiers work (`bg-warning/10`).
- Do not add hardcoded hues such as `text-yellow-400`: they are tuned for one theme and fail contrast in the other. For categorical identity colors (file types, brands, GitHub closed/merged purple), use a `-600` + `dark:-400` pair.
Loading
Loading