githubnext/chopinPublic

Let's compose rich plans together

Merge branch 'main' into design/readonly-decision-cards

MAMaggie Appleton authored committed by GitHub
64dcc60Patch
269 files changed+15450-3171
StackedSplit
.github/workflows/ci.yml+2 −0
apps/server/src/agent/job-scope.test.ts+2 −2
apps/server/src/agent/revise-open-decision-5.test.ts+7 −1
apps/server/src/agent/revise-open-decision.test-fixtures.ts+7 −1
apps/server/src/agent/scoped-request-boundary.test.ts+7 −1
apps/server/src/agent/tools.test.ts+1 −1
apps/server/src/chat/activity.test.ts+164 −0
apps/server/src/chat/activity.ts+65 −0
apps/server/src/chat/invoke.test.ts+5 −0
apps/server/src/chat/job-profiles.test.ts+1 −1
apps/server/src/chat/service.test.ts+279 −2
apps/server/src/chat/service.ts+144 −48
apps/server/src/comments/excerpt.test.ts+31 −0
apps/server/src/comments/inject.ts+4 −2
apps/server/src/comments/service.ts+6 −2
apps/server/src/conversation-plan/planner-jobs-memory.test-fixtures.ts+3 −1
apps/server/src/conversation-plan/scripted-harness.test.ts+2 −1
apps/server/src/conversation-plan/scripted-runner.test.ts+2 −2
apps/server/src/conversation-plan/scripted-runner.ts+1 −0
apps/server/src/harness/agents.ts+30 −1
apps/server/src/harness/atomic.contract.test.ts+1 −0
apps/server/src/harness/atomic/adapter.test.ts+85 −1
apps/server/src/harness/atomic/adapter.ts+97 −0
apps/server/src/harness/atomic/full.test.ts+54 −4
apps/server/src/harness/atomic/full.ts+7 −0
apps/server/src/harness/session.ts+12 −4
apps/server/src/main.ts+2 −2
apps/server/src/mcp/create.ts+18 −1
apps/server/src/mcp/update-lifecycle.test.ts+20 −0
apps/server/src/mcp/update.test.ts+12 −0
apps/server/src/plan/creation.test.ts+12 −0
apps/server/src/plan/edit.test.ts+13 −0
apps/server/src/plan/edit.ts+3 −1
apps/server/src/plan/rate-limit.test.ts+101 −0
apps/server/src/plan/research-placement.test-fixtures.ts+1 −1
apps/server/src/plan/research-projection-authority.test.ts+26 −0
apps/server/src/plan/research-projection-jobs.test-fixtures.ts+4 −3
apps/server/src/plan/room.test.ts+96 −0
apps/server/src/plan/room.ts+2 −0
apps/server/src/plan/service.ts+37 −3
apps/server/src/questions/inject.test.ts+39 −0
apps/server/src/questions/inject.ts+7 −2
apps/server/src/research/routes.test.ts+45 −1
apps/server/src/research/routes.ts+23 −0
apps/server/src/research/service.test.ts+8 −0
apps/server/src/research/service.ts+20 −0
apps/server/src/storage/memory/research.ts+10 −0
apps/server/src/storage/port.ts+5 −0
apps/server/src/storage/postgres/research.ts+12 −0
apps/server/src/storage/research-publication-contract.ts+3 −0
apps/web/bundle-budget.ts+2 −1
apps/web/src/add-project-dialog.tsx+67 −42
apps/web/src/anchored-child-surface.tsx+7 −65
apps/web/src/anchored-picker.tsx+8 −28
apps/web/src/api.test.ts+2 −5
apps/web/src/api.ts+1 −83
apps/web/src/app.tsx+9 −8
apps/web/src/assets/icons/planner-resume.svg+1 −1
apps/web/src/assets/icons/planner-stop.svg+0 −1
apps/web/src/channel-workspace.tsx+116 −0
apps/web/src/chat/chat.tsx+375 −105
apps/web/src/chat/command-picker.tsx+50 −0
apps/web/src/chat/commands.test.ts+57 −0
apps/web/src/chat/commands.ts+91 −0
apps/web/src/chat/composer.css+48 −0
apps/web/src/chat/mention-picker.tsx+3 −25
apps/web/src/chat/mentions.test.ts+2 −1
apps/web/src/chat/model.test.ts+272 −14
apps/web/src/chat/model.ts+194 −18
apps/web/src/chat/reference-picker.test.ts+21 −0
apps/web/src/chat/reference-picker.tsx+3 −2
apps/web/src/chat/references.test.ts+22 −0
apps/web/src/chat/references.ts+17 −0
apps/web/src/chat/research-brief-editor.tsx+34 −3
apps/web/src/chat/research-offer-transcript.test.ts+101 −0
apps/web/src/chat/research-offer.css+25 −0
apps/web/src/chat/research-offer.test.ts+36 −14
apps/web/src/chat/research-offer.tsx+410 −213
apps/web/src/chat/research-transcript.ts+6 −3
apps/web/src/chat/transcript-source.test.tsx+44 −7
apps/web/src/chat/transcript-state.test.ts+121 −0
apps/web/src/chat/transcript-state.ts+119 −0
apps/web/src/chat/transcript.test.tsx+30 −1
apps/web/src/chat/transcript.tsx+314 −135
apps/web/src/chat/work-progress.test.tsx+89 −0
apps/web/src/chat/work-progress.tsx+224 −0
apps/web/src/child-history.ts+65 −0
apps/web/src/child-provenance.tsx+89 −0
apps/web/src/delete-document-dialog.tsx+2 −2
apps/web/src/design-audit/icons.tsx+2 −0
apps/web/src/design-audit/interactive.tsx+3 −3
apps/web/src/design-audit/surfaces.css+29 −10
apps/web/src/design-audit/surfaces.tsx+43 −24
apps/web/src/device-authorization.ts+42 −0
apps/web/src/document-actions-menu.tsx+10 −19
apps/web/src/document-rename.tsx+94 −7
apps/web/src/document-route-swap.test.ts+19 −7
apps/web/src/document-route-swap.ts+5 −5
apps/web/src/document-search-dialog.tsx+47 −32
apps/web/src/document-workspace-host.tsx+51 −8
apps/web/src/empty-workspace.tsx+39 −0
apps/web/src/hosted-login.tsx+35 −0
apps/web/src/hosted.test.ts+3 −2
apps/web/src/hosted.tsx+35 −153
apps/web/src/icon-assets.test.ts+9 −1
apps/web/src/icon-tooltip.css+14 −1
apps/web/src/icon-tooltip.test.ts+11 −1
apps/web/src/icon-tooltip.tsx+122 −14
apps/web/src/local-login-view.tsx+1 −1
apps/web/src/local-login.tsx+11 −9
apps/web/src/main.tsx+1 −0
apps/web/src/menu-dismissal.ts+15 −0
apps/web/src/motion-contract.test.ts+5 −0
apps/web/src/motion-contract.ts+9 −1
apps/web/src/navigation-chrome.test.ts+52 −10
apps/web/src/navigation-dialog.tsx+10 −2
apps/web/src/navigation-model.test.ts+2 −2
apps/web/src/navigation-model.ts+2 −1
apps/web/src/navigation-palette.tsx+136 −0
apps/web/src/navigation-shell.tsx+45 −22
apps/web/src/navigation.css+372 −73
apps/web/src/new-document-dialog.tsx+4 −4
apps/web/src/pane-motion.test.ts+18 −0
apps/web/src/pane-motion.ts+98 −0
apps/web/src/project-sidebar-chrome.tsx+3 −3
apps/web/src/project-sidebar.tsx+144 −60
apps/web/src/rename-document-dialog.tsx+0 −33
apps/web/src/repository-cache.test.ts+2 −2
apps/web/src/repository-cache.ts+5 −303
apps/web/src/repository-picker.tsx+4 −4
apps/web/src/repository-snapshot.ts+303 −0
apps/web/src/research-requests.ts+56 −6
apps/web/src/research-sidebar.test.ts+1 −3
apps/web/src/room-workspace.tsx+204 −19
apps/web/src/sidebar-row-presence.test.ts+88 −0
apps/web/src/sidebar-row-presence.ts+105 −0
apps/web/src/theme.css+384 −3
apps/web/src/theme.test.ts+29 −4
apps/web/src/title-edit.ts+33 −0
apps/web/src/tokens.test.ts+2 −14
apps/web/src/use-document-creation.ts+9 −1
apps/web/src/wire.test.ts+104 −0
apps/web/src/wire.ts+68 −1
apps/web/src/workspace-model.test.ts+20 −2
apps/web/src/workspace-model.ts+21 −7
apps/web/src/workspace.tsx+65 −21
bun.lock+1 −0
docs/agent-work-progression-design.md+49 −0
e2e/callout.e2e.ts+4 −0
e2e/chat-anchoring.e2e.ts+50 −0
e2e/chat-commands.e2e.ts+95 −0
e2e/chat-composer.e2e.ts+5 −3
e2e/chat-mentions.e2e.ts+62 −0
e2e/chat-references.e2e.ts+8 −6
e2e/code.e2e.ts+19 −0
e2e/collab.e2e.ts+16 −1
e2e/comment-motion.e2e.ts+1 −1
e2e/connection.e2e.ts+236 −0
e2e/conversation-plan-layout.e2e.ts+1 −1
e2e/conversation-plan-ui.e2e.ts+1 −1
e2e/decision-evidence.e2e.ts+3 −3
e2e/decision-marker.e2e.ts+32 −1
e2e/document-creation.e2e.ts+20 −11
e2e/document-navigation.e2e.ts+369 −36
e2e/editing.e2e.ts+263 −8
e2e/focus-ring.e2e.ts+3 −2
e2e/harness.e2e.ts+134 −0
e2e/harness/fake-harness.ts+87 −34
e2e/hosted.e2e.ts+42 −9
e2e/interface-quality.e2e.ts+11 −6
e2e/local-auth.e2e.ts+4 −4
e2e/navigation-focus-recovery.e2e.ts+2 −2
e2e/research-child-recovery.e2e.ts+46 −0
e2e/research-child-surface.e2e.ts+67 −32
e2e/research-conversation.e2e.ts+2 −2
e2e/research-offers-ui.e2e.ts+11 −10
e2e/research-recovery-database.ts+2 −1
e2e/responsive-activity.e2e.ts+12 −5
e2e/responsive-comments.e2e.ts+204 −5
e2e/responsive-content.e2e.ts+57 −0
e2e/responsive-decisions.e2e.ts+3 −4
e2e/responsive-workspace.e2e.ts+38 −12
e2e/shell.e2e.ts+47 −5
e2e/sidecar.e2e.ts+44 −46
e2e/smoke.e2e.ts+386 −46
e2e/source/evidence-hover.native.ts+2 −2
e2e/source/research-offers.native.ts+5 −2
e2e/source/transcript-source.native.ts+5 −2
e2e/toolbar.e2e.ts+211 −13
package.json+2 −1
packages/dialect/src/dialect.test.ts+119 −1
packages/dialect/src/dialect.ts+43 −0
packages/dialect/src/index.ts+3 −1
packages/dialect/src/serialize.ts+20 −1
packages/dialect/src/validate.ts+51 −0
packages/editor/package.json+9 −1
packages/editor/src/changes-chip.tsx+11 −14
packages/editor/src/comment-geometry.test.ts+127 −231
packages/editor/src/comment-geometry.ts+119 −102
packages/editor/src/comment-layer.tsx+393 −156
packages/editor/src/comment-sheet-reveal.ts+4 −1
packages/editor/src/comment-sheet.test.ts+14 −4
packages/editor/src/comment-sheet.tsx+76 −26
packages/editor/src/comments.test.tsx+51 −2
packages/editor/src/comments.tsx+185 −78
packages/editor/src/connection-notice.test.ts+17 −0
packages/editor/src/connection-notice.ts+42 −0
packages/editor/src/content-swap.test.tsx+17 −0
packages/editor/src/content-swap.tsx+13 −8
packages/editor/src/display-name.ts+4 −0
packages/editor/src/face.tsx+47 −29
packages/editor/src/index.ts+13 −0
packages/editor/src/plan-editor.tsx+54 −12
packages/editor/src/popover-dismissal.ts+36 −0
packages/editor/src/provider.test.ts+255 −4
packages/editor/src/provider.ts+193 −22
packages/editor/src/research-launcher.test.ts+68 −0
packages/editor/src/research-launcher.ts+54 −0
packages/editor/src/status.test.ts+95 −0
packages/editor/src/status.tsx+148 −37
packages/editor/src/styles.css+438 −50
packages/editor/src/toolbar/bubble.tsx+32 −21
packages/editor/src/toolbar/index.tsx+17 −1
packages/editor/src/toolbar/link.test.ts+76 −0
packages/editor/src/toolbar/link.tsx+633 −0
packages/editor/src/toolbar/position.ts+72 −0
packages/editor/src/toolbar/research-launch.tsx+91 −0
packages/editor/src/toolbar/research.tsx+2 −22
packages/editor/src/toolbar/slash.test.ts+24 −1
packages/editor/src/toolbar/slash.tsx+104 −57
packages/editor/src/toolbar/surface.ts+5 −1
packages/editor/src/toolbar/url.test.ts+89 −0
packages/editor/src/toolbar/url.ts+73 −14
packages/editor/src/widget-options.ts+2 −0
packages/editor/src/widgets-plugin.tsx+2 −42
packages/editor/src/widgets/decorator-selection.test.ts+14 −0
packages/editor/src/widgets/decorator-selection.tsx+20 −0
packages/editor/src/widgets/image.tsx+8 −2
packages/editor/src/widgets/index.ts+2 −0
packages/editor/src/widgets/language-menu.tsx+8 −10
packages/editor/src/widgets/render-blocks.tsx+50 −3
packages/editor/src/widgets/research.tsx+43 −2
packages/editor/src/widgets/tab-edges.test.ts+23 −0
packages/editor/src/widgets/tab-edges.ts+34 −0
packages/editor/src/widgets/tab-key.test.ts+209 −0
packages/editor/src/widgets/tab-key.tsx+257 −0
packages/editor/src/widgets/tabs.tsx+25 −8
packages/icons/src/icon.tsx+1 −3
packages/icons/src/index.ts+7 −0
packages/icons/src/line.tsx+90 −21
packages/icons/src/system.tsx+3 −4
packages/protocol/chat.d.ts+12 −2
packages/protocol/research.d.ts+9 −0
packages/question/src/react/questionnaire-controller.ts+17 −6
packages/question/src/react/unreachable.test.ts+16 −0
packages/question/src/react/use-questionnaire-refresh-save.test.ts+3 −1
packages/visuals/src/ui/badge.css+24 −0
packages/visuals/src/ui/badge.test.tsx+9 −0
packages/visuals/src/ui/badge.tsx+6 −1
packages/visuals/theme.css+2 −0
patches/mdast-util-to-markdown@2.1.2.patch+13 −0
scripts/design-contract/boundaries.test.ts+5 −1
scripts/design-contract/exceptions/dynamic-editor.json+9 −9
scripts/design-contract/exceptions/dynamic-packages.json+54 −5
scripts/design-contract/exceptions/dynamic-web.json+55 −21
scripts/design-contract/exceptions/preserved-values.json+19 −52
scripts/impeccable-baseline.json+21 −0