Repository navigation
What's Changed
🚀 Features
- feat: open Mermaid diagrams in a zoomable preview by @Maxsky5 in #1024
- feat(workspace-sessions): run dev servers from each session by @Maxsky5 in #1023
- feat(frontend): keep modal content stable through transitions by @Maxsky5 in #1031
- feat(marketing): launch a public website that shows OpenDucktor at work by @Maxsky5 in #1030
- feat(chat): make generated images easier to view and save by @Maxsky5 in #1040
- feat(frontend): make changed files easier to scan and find in the Git panel by @Maxsky5 in #1042
- feat(kanban): open existing sessions from task cards by @Maxsky5 in #1046
- feat(frontend): collapse pending chat requests by @Maxsky5 in #1052
- feat(claude): control session permissions and sandbox access by @Maxsky5 in #1053
- feat(opencode): add advanced session permission settings by @Maxsky5 in #1055
- feat(workspaces): connect Git providers when adding a workspace by @Maxsky5 in #1058
- feat(runtimes): run one shared runtime per kind instead of one per workspace by @Maxsky5 in #1063
- feat(sessions): unify task and workspace session navigation by @Maxsky5 in #1076
- feat(prompts): make plans readable at a glance with diagrams, tables, and architect-level design by @Maxsky5 in #1071
- feat(frontend): send workspace diff comments to active chat by @Maxsky5 in #1080
- feat: let workspace agents resolve Git conflicts by @Maxsky5 in #1082
- feat(chat): make the composer and user messages match the app design by @Maxsky5 in #1090
- feat(git): choose a comparison branch per workspace session by @Maxsky5 in #1083
- feat(actions): run any repository command from the session bar in a real terminal by @Maxsky5 in #1091
- feat(sessions): complete launches without an open browser by @Maxsky5 in #1073
- feat(claude): let users disable built-in tools by @Maxsky5 in #1097
- feat(agents): add session speed levels for Claude and Codex by @Maxsky5 in #1088
- feat(sessions): let users choose, close, and move session panel tabs by @Maxsky5 in #1100
- feat(opencode): migrate the runtime to V2 by @Maxsky5 in #1098
- feat(autopilot): keep workflows moving across workspaces with no browser open by @Maxsky5 in #1104
- feat(frontend): reach tasks, chats, and actions from one Cmd+K palette by @Maxsky5 in #1106
- feat(frontend): show more changed files at once with compact tree view rows by @Maxsky5 in #1108
- feat(marketing): showcase the reworked OpenDucktor UI on the website by @Maxsky5 in #1110
- feat(sessions): queue messages to busy agents and steer them only on demand by @Maxsky5 in #1109
- perf(build): shrink web and Electron packages by @Maxsky5 in #1120
- feat(chat): let users steer messages by default by @Maxsky5 in #1127
- feat(host): keep workflows running after clients disconnect by @Maxsky5 in #1133
- feat(git-panel): review, stage, and commit agent work faster with a compact Git panel and History graph by @Maxsky5 in #1134
- feat: let remote clients use Electron and web hosts by @Maxsky5 in #1130
- feat(frontend): find Kanban tasks fast with board search and filters by @Maxsky5 in #1150
- feat(command-palette): sync pull requests on demand by @Maxsky5 in #1154
- feat(chat): jump back to any of your messages in long agent transcripts by @Maxsky5 in #1166
- feat(web): serve the latest stable web client at app.openducktor.dev by @Maxsky5 in #1181
- feat: show folder change totals in the Git panel by @Maxsky5 in #1183
- feat(browser): test your app inside OpenDucktor in browser tabs that agents can drive by @Maxsky5 in #1179
🐛 Fixes
- perf: keep the model picker responsive with large catalogs by @Maxsky5 in #1018
- fix(frontend): lock visual descriptions during saves and recovery by @Maxsky5 in #1017
- fix(core): keep file diffs visible for paths with spaces by @Maxsky5 in #1014
- fix(codex): show decoded file names in session diffs by @Maxsky5 in #1025
- fix(web): keep SSE listeners updated when one fails by @Maxsky5 in #1026
- fix(web): open quiet resumed task streams without task changes by @Maxsky5 in #1027
- fix(agent-studio): keep started task tabs visible by @Maxsky5 in #1028
- perf(frontend): prevent unused chat row refs from accumulating by @Maxsky5 in #1032
- perf(frontend): keep large Git diff lists responsive by @Maxsky5 in #1029
- fix: preserve terminal cleanup after renderer detach failures by @Maxsky5 in #1033
- perf(frontend): avoid repeated live session collection copies by @Maxsky5 in #1034
- fix(frontend): prevent picker clipping in dialogs by @Maxsky5 in #1036
- fix: clean up failed Codex runtimes without stopping the host by @Maxsky5 in #1037
- fix: prevent duplicate terminals after discovery failures by @Maxsky5 in #1038
- perf(web): avoid repeat packaged asset transfers by @Maxsky5 in #1039
- fix(terminal): restore live logs and responsive TUI resizing by @Maxsky5 in #1041
- fix(tasks): let reset, delete, and close work whatever branch the task worktree has checked out by @Maxsky5 in #1044
- fix(ui): bring back popover, tooltip, and sheet motion by @Maxsky5 in #1043
- fix(chat): stop layout shifts when switching sessions by @Maxsky5 in #1045
- fix(settings): remember the last opened section by @Maxsky5 in #1048
- fix: restore Resume after Claude and Codex turn failures by @Maxsky5 in #1049
- perf(notifications): avoid repeated work across tabs by @Maxsky5 in #1047
- fix(frontend): make composer autocomplete navigation predictable by @Maxsky5 in #1056
- perf(web): reduce web transfer sizes with gzip by @Maxsky5 in #1059
- fix(workspaces): allow close and removal after directory deletion by @Maxsky5 in #1060
- fix: avoid notification errors for missing permission by @Maxsky5 in #1061
- fix(claude): stop routine permission notices in chat by @Maxsky5 in #1064
- fix(host): load sessions imported from worktrees outside OpenDucktor by @Maxsky5 in #1066
- perf(workspace): cut file-list transfers after small edits by @Maxsky5 in #1062
- fix(opencode): avoid setup errors on the first message by @Maxsky5 in #1068
- fix(frontend): keep the chat at the bottom when the terminal or any panel resizes it by @Maxsky5 in #1070
- fix(host): recover from a slow login shell without restarting OpenDucktor by @Maxsky5 in #1072
- fix(frontend): let users scroll back down long transcripts after scrolling up by @Maxsky5 in #1077
- fix: offer Resume when Claude reaches its usage limit by @Maxsky5 in #1079
- fix(frontend): retain Git action state when session tools close by @Maxsky5 in #1081
- fix(frontend): align workspace chat feedback with task chat by @Maxsky5 in #1084
- fix(frontend): recover session navigation and transcript failures by @Maxsky5 in #1078
- fix(frontend): avoid duplicate blocked tasks in sidebar by @Maxsky5 in #1085
- fix(tasks): close merged tasks after stopping dev servers by @Maxsky5 in #1086
- fix(diagnostics): keep runtime failures out of Git and PATH checks by @Maxsky5 in #1087
- fix(files): open transcript files outside the working directory by @Maxsky5 in #1089
- fix(codex): prevent startup query failures by @Maxsky5 in #1093
- fix: keep optional model defaults from blocking workspace setup by @Maxsky5 in #1094
- fix(claude): keep idle sessions stable when changing models by @Maxsky5 in #1095
- fix: avoid Claude workspace startup title errors by @Maxsky5 in #1096
- fix(frontend): use role defaults for session quick actions by @Maxsky5 in #1099
- fix(sessions): make host-owned session starts work again after #1073 by @Maxsky5 in #1101
- perf(recovery): avoid repeated session scans and chat reloads by @Maxsky5 in #1051
- perf(attachments): stop large attachments from freezing the app for seconds by @Maxsky5 in #1103
- perf(frontend): batch task session refresh reads per workspace by @Maxsky5 in #1069
- fix(chat): prepare saved model choices before Send by @Maxsky5 in #1111
- fix(frontend): match modal footers to the dialog background by @Maxsky5 in #1119
- fix(frontend): prevent crashes when editing task descriptions by @Maxsky5 in #1118
- perf(tasks): stop reloading the board for each task change by @Maxsky5 in #1124
- fix(frontend): restore task chat speed controls by @Maxsky5 in #1125
- perf(history): avoid rereading unchanged conversations by @Maxsky5 in #1123
- fix(opencode): restore native subagent delegation by @Maxsky5 in #1126
- fix: keep chat composer pickers above the input by @Maxsky5 in #1128
- fix(host): stop restoring closed-task sessions at startup by @Maxsky5 in #1129
- fix(opencode): preserve subagent links and parent transcripts by @Maxsky5 in #1135
- fix(azure-devops): show real CI results instead of duplicate checks and system noise by @Maxsky5 in #1136
- fix(terminals): keep zsh Action history and add graceful restart by @Maxsky5 in #1132
- fix(frontend): stop catalog reads on starting runtimes and keep cached models visible by @Maxsky5 in #1137
- fix: prevent false directory errors when Claude sessions start by @Maxsky5 in #1138
- fix: show workspace session titles in notifications by @Maxsky5 in #1140
- fix(frontend): replace loud indigo and blue focus rings with one neutral gray by @Maxsky5 in #1141
- fix(claude): fix steering with attachments by listing models under the IDs Claude reports by @Maxsky5 in #1143
- fix(frontend): keep palette task actions on the current page by @Maxsky5 in #1144
- fix(claude): send messages in milliseconds instead of 2-3 s by @Maxsky5 in #1145
- fix(host): sync pull requests for all open workspaces by @Maxsky5 in #1146
- fix(host): prevent Windows host test timeouts by @Maxsky5 in #1147
- fix(frontend): show tasks at once when you switch to any open workspace by @Maxsky5 in #1148
- fix(frontend): keep chats live across workspace switches by @Maxsky5 in #1149
- fix(frontend): keep PR results across workspace switches by @Maxsky5 in #1151
- perf(tooling): speed up workspace type checks with Bun by @Maxsky5 in #1152
- fix(frontend): show Autopilot failures from every open workspace, not only the selected one by @Maxsky5 in #1157
- fix(frontend): clean up saved layouts in background workspaces by @Maxsky5 in #1156
- perf(chat): remove session setup from message sends by @Maxsky5 in #1153
- fix(frontend): keep workspace data cached between visits by @Maxsky5 in #1158
- perf(chat): stop re-rendering streamed replies and their diagrams on every update by @Maxsky5 in #1161
- fix(codex): keep prepared sessions idle until work starts by @Maxsky5 in #1162
- fix(frontend): keep session views mounted across workspaces by @Maxsky5 in #1160
- fix(opencode): reopen older workflow sessions and accept messages again by @Maxsky5 in #1165
- fix(frontend): make session panels respond again in kept session views by @Maxsky5 in #1167
- refactor(sessions): remove runtime details from task URLs by @Maxsky5 in #1159
- fix: queue Autopilot instructions for busy sessions by @Maxsky5 in #1168
- fix(electron): keep signing credentials out of unsigned packaging by @Maxsky5 in #1169
- fix(host): clean up Claude sessions when event delivery fails by @Maxsky5 in #1170
- perf(host): cut single-task MCP reads to one card by @Maxsky5 in #1171
- perf(host): avoid building cards for task ID reads by @Maxsky5 in #1172
- fix(frontend-core): avoid duplicate skipped model catalog queries by @Maxsky5 in #1173
- fix(deps): remove braces from the dependency tree by @Maxsky5 in #1174
- perf(frontend): reduce transcript streaming update cost by @Maxsky5 in #1175
- fix(host): avoid false Azure DevOps credential storage failures by @Maxsky5 in #1176
- fix(claude): prevent crashes when loading large sessions by @Maxsky5 in #1177
- fix: show skill names in Claude tool previews by @Maxsky5 in #1180
- fix: stop Codex peer messages from breaking session observation by @Maxsky5 in #1182
- fix(claude): restore complete session history by @Maxsky5 in #1184
🏗️ Refactoring
- refactor: move every Effect user to the stable Effect 4 runtime by @Maxsky5 in #1074
- refactor(codex): remove circular transcript mapper imports by @Maxsky5 in #1142
- refactor(frontend-core): share one client layer across desktop, web, and mobile by @Maxsky5 in #1155
Full Changelog: v0.9.0...v1.0.0