githubnext/chopinPublic

Let's compose rich plans together

Merge remote-tracking branch 'origin/main' into maggie/visual-document-development-corpus

MAMaggie Appleton authored
fe81cdbPatch
266 files changed+15981-1577
StackedSplit
.env.example+3 −2
.github/workflows/pr-readiness-worker.lock.yml+1 −1
.github/workflows/pr-readiness-worker.md+6 −3
AGENTS.md+19 −17
README.md+6 −5
apps/server/package.json+1 −0
apps/server/src/agent/decision-prose.ts+3 −1
apps/server/src/agent/heading-tool.ts+3 −1
apps/server/src/agent/planner.test.ts+14 −1
apps/server/src/agent/planner.ts+35 −5
apps/server/src/agent/refine-placement.ts+3 −1
apps/server/src/agent/tools.test.ts+86 −3
apps/server/src/agent/tools.ts+9 −5
apps/server/src/auth/routes.test.ts+46 −1
apps/server/src/auth/routes.ts+14 −3
apps/server/src/auth/session-persistence.test.ts+234 −0
apps/server/src/auth/session.ts+130 −7
apps/server/src/channels/document-url.ts+25 −0
apps/server/src/channels/routes.test.ts+96 −0
apps/server/src/channels/routes.ts+16 −8
apps/server/src/chat/incoming.ts+13 −4
apps/server/src/chat/service.ts+1 −1
apps/server/src/conversation-plan/prose-job.test.ts+31 −1
apps/server/src/conversation-plan/prose-job.ts+21 −0
apps/server/src/harness/harness-v1.ts+8 −0
apps/server/src/harness/pi.contract.test.ts+1 −1
apps/server/src/main.ts+241 −65
apps/server/src/mcp/hosted.test.ts+59 −0
apps/server/src/mcp/hosted.ts+27 −9
apps/server/src/plan/decision-counts.test.ts+329 −0
apps/server/src/plan/edit.test.ts+81 −0
apps/server/src/plan/edit.ts+43 −1
apps/server/src/plan/service.ts+137 −3
apps/server/src/questions-service-durability-1.test.ts+4 −1
apps/server/src/questions/card-notifications.ts+3 −0
apps/server/src/questions/unanswered.test-fixtures.ts+97 −0
apps/server/src/questions/unanswered.test.ts+23 −0
apps/server/src/questions/unanswered.ts+36 −0
apps/server/src/socket/admission.ts+37 −4
apps/server/src/socket/decision-watch.test.ts+313 −0
apps/server/src/socket/decision-watch.ts+218 −0
apps/server/src/storage/contract.ts+204 −3
apps/server/src/storage/memory/adapter.ts+72 −17
apps/server/src/storage/model.ts+22 −3
apps/server/src/storage/port.ts+14 −3
apps/server/src/storage/postgres/adapter.test.ts+77 −1
apps/server/src/storage/postgres/adapter.ts+121 −15
apps/server/src/storage/postgres/migrations.ts+10 −0
apps/server/src/storage/postgres/migrations/016_persistent_sessions.sql+12 −0
apps/server/src/storage/postgres/migrations/017_unanswered_decisions.sql+3 −0
apps/server/src/storage/postgres/migrations/017_unanswered_decisions.ts+69 −0
apps/server/src/storage/postgres/research.ts+8 −1
apps/server/src/storage/postgres/startup.test.ts+18 −4
apps/server/src/testing/plan.ts+12 −3
apps/server/src/testing/seecode-assessment.ts+155 −0
apps/server/src/wire.ts+36 −3
apps/web/src/add-project-dialog.tsx+17 −3
apps/web/src/api.ts+8 −2
apps/web/src/app.tsx+5 −3
apps/web/src/channel-workspace.tsx+4 −2
apps/web/src/chat/chat.tsx+5 −3
apps/web/src/chat/composer.css+10 −3
apps/web/src/chat/decision-entry.test.tsx+3 −3
apps/web/src/chat/decision-entry.tsx+1 −1
apps/web/src/chat/markdown.css+9 −0
apps/web/src/chat/markdown.tsx+14 −1
apps/web/src/chat/mention-picker.tsx+4 −4
apps/web/src/chat/reference-picker.test.ts+50 −1
apps/web/src/chat/reference-picker.tsx+28 −17
apps/web/src/chat/references.ts+2 −0
apps/web/src/chat/transcript-source.test.tsx+34 −36
apps/web/src/chat/transcript.tsx+50 −27
apps/web/src/chat/work-progress.tsx+27 −15
apps/web/src/decision-view-control.tsx+28 −1
apps/web/src/diagram-gallery/page.tsx+0 −14
apps/web/src/diagram-gallery/styles.css+0 −14
apps/web/src/document-actions.tsx+165 −4
apps/web/src/document-activity.test.ts+75 −0
apps/web/src/document-activity.tsx+93 −0
apps/web/src/global-shortcuts.ts+33 −0
apps/web/src/hosted.tsx+9 −2
apps/web/src/icon-assets.test.ts+10 −1
apps/web/src/icon-tooltip.css+12 −0
apps/web/src/icon-tooltip.tsx+12 −0
apps/web/src/keyboard-shortcuts-dialog.tsx+63 −0
apps/web/src/motion-contract.test.ts+1 −1
apps/web/src/motion-contract.ts+1 −1
apps/web/src/navigation-chrome.test.ts+13 −6
apps/web/src/navigation-notice-view.tsx+20 −3
apps/web/src/navigation-shell.tsx+123 −2
apps/web/src/navigation.css+246 −4
apps/web/src/project-sidebar-chrome.tsx+3 −0
apps/web/src/project-sidebar.tsx+142 −16
apps/web/src/room-workspace.tsx+109 −10
apps/web/src/shortcuts.test.ts+144 −0
apps/web/src/shortcuts.ts+148 −0
apps/web/src/sidebar-decision-counts.test.ts+468 −0
apps/web/src/sidebar-decision-counts.tsx+67 −0
apps/web/src/sidebar-decision-plan.ts+55 −0
apps/web/src/sidebar-decision-watch.test.ts+232 −0
apps/web/src/sidebar-decision-watch.ts+214 −0
apps/web/src/theme.css+125 −8
apps/web/src/use-project-documents.ts+101 −4
apps/web/src/use-sidebar-decisions.ts+134 −0
apps/web/src/viewport.test.ts+26 −2
apps/web/src/viewport.ts+15 −11
apps/web/src/wire.ts+5 −4
apps/web/src/workspace.tsx+31 −0
bun.lock+41 −36
docs/architecture.md+23 −19
docs/authentication.md+54 −23
docs/channels.md+63 −2
docs/hosted-agent.md+15 −8
docs/preview-testing.md+5 −3
docs/self-hosting.md+14 −14
docs/storage.md+16 −6
docs/superpowers/plans/2026-10-08-seecode-rendering-module.md+0 −60
e2e/auth-lifecycle.e2e.ts+60 −7
e2e/code.e2e.ts+167 −1
e2e/collab.e2e.ts+49 −0
e2e/conversation-plan-prompts.e2e.ts+3 −3
e2e/conversation-plan-stress.e2e.ts+3 −3
e2e/database.ts+25 −3
e2e/decision-prose.e2e.ts+34 −3
e2e/diagram-gallery/gallery.e2e.ts+4 −81
e2e/document-activity.e2e.ts+73 −0
e2e/document-creation.e2e.ts+6 −1
e2e/document-navigation.e2e.ts+73 −1
e2e/editing.e2e.ts+42 −0
e2e/focus.ts+6 −2
e2e/github.ts+4 −2
e2e/harness/fake-harness.ts+2 −2
e2e/harness/scripted-planner.ts+1 −4
e2e/hosted.e2e.ts+57 −2
e2e/icon-size.e2e.ts+116 −0
e2e/keyboard-shortcuts.e2e.ts+119 −0
e2e/markdown-paste.e2e.ts+71 −0
e2e/mcp-update.e2e.ts+1 −1
e2e/playwright.config.ts+6 −3
e2e/research-child-recovery.e2e.ts+1 −1
e2e/research-workspace.e2e.ts+90 −3
e2e/responsive-activity.e2e.ts+2 −2
e2e/responsive-comments.e2e.ts+4 −0
e2e/responsive-workspace.e2e.ts+16 −0
e2e/seecode.e2e.ts+195 −0
e2e/shell.e2e.ts+3 −1
e2e/sidebar-decision-counts.e2e.ts+822 −0
e2e/sidecar-card-states.e2e.ts+4 −4
e2e/sidecar-option-async.e2e.ts+3 −3
e2e/sidecar-option-contracts.e2e.ts+2 −1
e2e/sidecar.e2e.ts+54 −9
e2e/smoke.e2e.ts+6 −2
e2e/source/decision-reader.fixture.ts+2 −1
e2e/source/icon-size.fixture.ts+103 −0
e2e/source/open-card.fixture.ts+2 −1
e2e/source/question-view-contracts.native.ts+2 −2
e2e/syntax-contrast.e2e.ts+3 −1
e2e/tab-authoring.e2e.ts+151 −0
e2e/table.e2e.ts+65 −3
e2e/toolbar.e2e.ts+29 −1
e2e/undo.e2e.ts+139 −0
package.json+7 −7
packages/diagrams/README.md+14 −1
packages/diagrams/src/diagram.tsx+2 −1
packages/diagrams/src/index.ts+2 −0
packages/diagrams/src/source.test.ts+23 −0
packages/diagrams/src/source.ts+20 −0
packages/diagrams/src/viewer/chrome.css+1 −1
packages/diagrams/src/viewer/diagram.test.tsx+0 −13
packages/diagrams/test/render.test.ts+9 −17
packages/dialect/src/convert.test.ts+1 −0
packages/dialect/src/dialect.ts+3 −0
packages/dialect/src/index.ts+2 −0
packages/dialect/src/parse.ts+22 −8
packages/editor/package.json+1 −0
packages/editor/src/anchors.test.ts+30 −1
packages/editor/src/anchors.ts+40 −1
packages/editor/src/changes-chip.test.tsx+21 −1
packages/editor/src/changes-chip.tsx+37 −13
packages/editor/src/changes-observer.tsx+54 −0
packages/editor/src/changes.ts+120 −2
packages/editor/src/collaboration.tsx+22 −2
packages/editor/src/comment-layer.tsx+13 −2
packages/editor/src/decisions.tsx+9 −0
packages/editor/src/history.test.ts+614 −0
packages/editor/src/history.ts+365 −0
packages/editor/src/index.ts+1 −0
packages/editor/src/labels.ts+132 −32
packages/editor/src/markdown-paste.test.ts+242 −0
packages/editor/src/markdown-paste.ts+350 −0
packages/editor/src/plan-editor.tsx+52 −2
packages/editor/src/presence-faces.test.tsx+6 −1
packages/editor/src/presence-faces.tsx+6 −0
packages/editor/src/provider.ts+3 −0
packages/editor/src/questionnaires.ts+18 −1
packages/editor/src/resolved-layer.tsx+4 −3
packages/editor/src/styles.css+874 −205
packages/editor/src/table/rails.tsx+177 −20
packages/editor/src/toolbar/bubble.tsx+136 −36
packages/editor/src/toolbar/index.tsx+4 −1
packages/editor/src/toolbar/placement.test.ts+130 −1
packages/editor/src/toolbar/placement.ts+101 −1
packages/editor/src/toolbar/research.test.tsx+3 −9
packages/editor/src/toolbar/research.tsx+126 −38
packages/editor/src/toolbar/shortcut.test.ts+17 −0
packages/editor/src/toolbar/shortcut.ts+16 −0
packages/editor/src/toolbar/slash.tsx+16 −1
packages/editor/src/toolbar/task-rule.test.ts+140 −0
packages/editor/src/toolbar/task-rule.ts+91 −0
packages/editor/src/trail.test.ts+17 −0
packages/editor/src/trail.ts+27 −8
packages/editor/src/widget-options.ts+8 −0
packages/editor/src/widgets-plugin.tsx+2 −0
packages/editor/src/widgets/code-view.tsx+9 −0
packages/editor/src/widgets/code.test.ts+24 −1
packages/editor/src/widgets/code.ts+25 −5
packages/editor/src/widgets/decision.test.tsx+29 −25
packages/editor/src/widgets/decision.tsx+90 −19
packages/editor/src/widgets/language-menu.tsx+6 −12
packages/editor/src/widgets/preview-selection.ts+124 −0
packages/editor/src/widgets/questionnaire-collapse-settled.test.tsx+80 −9
packages/editor/src/widgets/questionnaire.test.tsx+1 −1
packages/editor/src/widgets/questionnaire.tsx+76 −17
packages/editor/src/widgets/render-blocks.tsx+672 −49
packages/editor/src/widgets/research-composer.test.tsx+17 −1
packages/editor/src/widgets/research.tsx+51 −47
packages/editor/src/widgets/source-offset.test.ts+50 −0
packages/editor/src/widgets/source-offset.ts+56 −0
packages/editor/src/widgets/tab-authoring.test.ts+34 −0
packages/editor/src/widgets/tab-authoring.ts+50 −0
packages/editor/src/widgets/tabs.tsx+308 −42
packages/editor/src/widgets/writeup-status.tsx+59 −0
packages/icons/package.json+4 −1
packages/icons/src/brand.tsx+8 −1
packages/icons/src/filled.tsx+1 −0
packages/icons/src/icon.test.tsx+12 −0
packages/protocol/index.d.ts+96 −3
packages/protocol/plan.d.ts+8 −0
packages/protocol/question.d.ts+2 −0
packages/question/src/index.ts+1 −0
packages/question/src/react/index.ts+1 −0
packages/question/src/react/question-view-retained-contracts.test.ts+3 −1
packages/question/src/react/question-view.test.ts+13 −1
packages/question/src/react/question-view.tsx+93 −50
packages/question/src/react/relation-note.tsx+89 −0
packages/question/src/react/resolved-actions.test.ts+30 −0
packages/question/src/react/resolved-actions.tsx+8 −2
packages/question/src/relation.ts+8 −0
packages/visuals/theme.css+4 −1
patches/@ai-sdk%2Fharness-pi@1.0.128.patch+0 −25
patches/@ai-sdk%2Fharness-pi@1.0.148.patch+13 −0
scripts/design-contract/exceptions/dynamic-editor.json+40 −19
scripts/design-contract/exceptions/dynamic-packages.json+3 −3
scripts/design-contract/exceptions/dynamic-web.json+7 −7
scripts/design-contract/exceptions/preserved-values.json+0 −13
scripts/pr-maintenance/actions.test.ts+1 −0
scripts/pr-maintenance/application.mjs+1 −1
scripts/pr-maintenance/application.test.ts+81 −10
scripts/pr-maintenance/artifact.test.ts+1 −0
scripts/pr-maintenance/coordinator-run.mjs+65 −18
scripts/pr-maintenance/coordinator-run.test.ts+81 −1
scripts/pr-maintenance/inventory.mjs+31 −2
scripts/pr-maintenance/inventory.test.ts+27 −0
scripts/pr-maintenance/isolated-git.test-fixtures.ts+4 −0
scripts/pr-maintenance/proposal.test.ts+1 −0
scripts/pr-maintenance/worker-run.test.ts+1 −0