Repository navigation
refactor(canvas): finish strict TypeScript integration - #57
Merged
lukasoppermann merged 38 commits intoOct 22, 2026
Merged
Conversation
Convert remote branch lookup to strict TypeScript while retaining its generated JavaScript runtime. Include migrated modules in lint, type checks, and plugin freshness checks. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9d7306a9-9831-4c78-89e7-3c5b581c895e
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1aff284a-77f1-4bcf-8245-e30889a2f392
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2e9f29a3-a43f-469a-a5aa-8318559d915a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dbbad477-1ff0-4721-b2a8-01308dc63448
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
There was a problem hiding this comment.
🔵 Needs a closer look
Installed-plugin registration and connected actions still need the pending consumer-session smoke check.
1 open issue
1 file not reviewed
hub/package-lock.json: Generated file
What changed in this PR
Completes the canvas extension’s strict TypeScript migration while keeping installed plugins independent of a compiler or package installation.
Changes:
- Migrates remaining Node implementation modules to TypeScript with committed JavaScript output.
- Checks canvas and action contracts against locked SDK types.
- Validates saved connections, preserves explicit URL overrides, and updates tests and documentation.
| File | Description |
|---|---|
hub/package.json |
Adds the SDK development dependency. |
hub/package-lock.json |
Locks SDK and transitive dependencies. |
hub/docs/prototype-canvas.md |
Documents the completed migration and runtime boundaries. |
.github/extensions/replica-prototype/tsconfig.json |
Maps SDK types for compilation. |
.github/extensions/replica-prototype/test-support/with-context/index.mts |
Adds the typed test-context helper. |
.github/extensions/replica-prototype/test-support/with-context/index.mjs |
Regenerates the JavaScript helper. |
.github/extensions/replica-prototype/register-prototype-canvas/index.test.mjs |
Tests invalid saved connections and explicit overrides. |
.github/extensions/replica-prototype/register-prototype-canvas/index.mts |
Adds typed registration and connection validation. |
.github/extensions/replica-prototype/register-prototype-canvas/index.mjs |
Updates distributed registration output. |
.github/extensions/replica-prototype/comment-actions/index.mts |
Uses SDK action and schema types. |
.github/extensions/replica-prototype/check-prototype-server/index.mts |
Defines explicit server-status variants. |
.github/extensions/replica-prototype/check-assets/index.mts |
Adds typed asset verification. |
.github/extensions/replica-prototype/check-assets/index.mjs |
Regenerates asset-checking output. |
Review effort: Max
alliscode
approved these changes
Oct 21, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 2e9f29a3-a43f-469a-a5aa-8318559d915a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dbbad477-1ff0-4721-b2a8-01308dc63448
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2e9f29a3-a43f-469a-a5aa-8318559d915a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 2e9f29a3-a43f-469a-a5aa-8318559d915a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dbbad477-1ff0-4721-b2a8-01308dc63448
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dbbad477-1ff0-4721-b2a8-01308dc63448
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d99a971-b97e-45c6-a109-5fa860c3e63e
Migrate local servers, preview proxy, connection storage and development-server lifecycle to strict TypeScript while retaining generated JavaScript runtime modules. Keep host capabilities and explicit startup behavior unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 20ca3725-52e8-4e11-9258-99515de7789d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d99a971-b97e-45c6-a109-5fa860c3e63e
lukasoppermann
force-pushed
the
lukasoppermann-canvas-typescript-integration
branch
from
October 22, 2026 06:14
f8e48fc to
01445aa
Compare
…-hub-connection' into lukasoppermann-canvas-typescript-hub-connection
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2e9f29a3-a43f-469a-a5aa-8318559d915a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dbbad477-1ff0-4721-b2a8-01308dc63448
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dbbad477-1ff0-4721-b2a8-01308dc63448
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dbbad477-1ff0-4721-b2a8-01308dc63448
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2e9f29a3-a43f-469a-a5aa-8318559d915a
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
alliscode
reviewed
Oct 22, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 20ca3725-52e8-4e11-9258-99515de7789d
…ermann-canvas-typescript-publication
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 20ca3725-52e8-4e11-9258-99515de7789d
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
…as-typescript-collaboration' into lukasoppermann-canvas-typescript-runtime
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: dbbad477-1ff0-4721-b2a8-01308dc63448
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2c5cb6d7-c080-4957-a125-07380321d056
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 20ca3725-52e8-4e11-9258-99515de7789d
…as-typescript-collaboration' into lukasoppermann-canvas-typescript-runtime
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 20ca3725-52e8-4e11-9258-99515de7789d
Base automatically changed from
lukasoppermann-canvas-typescript-runtime
to
main
October 22, 2026 17:30
Merge the verified runtime layer, check the remaining Pick & polish implementation with strict TypeScript, and preserve generated plugin output and saved-state recovery. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d99a971-b97e-45c6-a109-5fa860c3e63e
GitHub retargeted this layer to main after #56 landed. The main tree exactly matches the verified runtime parent; retain the validated integration tree while recording its landed ancestry. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3d99a971-b97e-45c6-a109-5fa860c3e63e
lukasoppermann
deleted the
lukasoppermann-canvas-typescript-integration
branch
October 22, 2026 17:51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Why
Finish checking the canvas's authored Node implementation with strict TypeScript while keeping the installed plugin independent of a compiler or package installation. This final migration layer includes the runtime work landed in #56.
What changes
Convert canvas registration, asset checking, the shared test-context helper and the remaining Pick & polish implementation to authored TypeScript with committed JavaScript output. This includes note storage, conversation validation, batch projection, author profiles and setup-page rendering; shared identity patterns are inherited from the earlier migration layers. Registration and action declarations use the real SDK types from an exact, locked Hub development dependency; the host still supplies the runtime SDK.
Saved connection fields and URLs are checked before restoration, and explicit URL input still overrides saved state. Pick & polish validates stored notes and batches, action inputs and remote responses before using their fields. The guide describes the completed inventory: 65 authored TypeScript modules, two JavaScript entry shims, generated browser assets and validators, and 55 Node runtime test files that exercise the distributed output.
Browser assets and installer behavior remain unchanged from the landed parent. The project provider reload, discovery and invalid-input rejection were verified in the real host; a final installation and connected-action smoke check in the separate prototype consumer session remains pending.