Skip to content

Add visual editing, Typeshed conversion, and TDBIN benchmarks#59

Merged
MelbourneDeveloper merged 16 commits into
mainfrom
tdbin
Jul 18, 2026
Merged

Add visual editing, Typeshed conversion, and TDBIN benchmarks#59
MelbourneDeveloper merged 16 commits into
mainfrom
tdbin

Conversation

@MelbourneDeveloper

Copy link
Copy Markdown
Collaborator

TLDR

Adds a source-backed visual type editor for web and VS Code, introduces function declarations and end-to-end Typeshed conversion, and expands TDBIN performance validation with optimized hot paths and a MessagePack baseline.

Details

Added

  • Adds shared visual-editor controls, inspector, viewport, source editing, node creation, relationship drawing, drag/pan/zoom, auto-layout, and SVG export, then wires them into the playground and VS Code custom editor.
  • Adds packaged VS Code interaction commands and an Electron harness so the installed VSIX can exercise the same canvas workflow as the browser.
  • Adds function declarations with generics, async signatures, overload blocks, parameter/return edges, JSON serialization, layout, rendering, and model-builder support. Existing data-only emitters deliberately omit service functions.
  • Adds a Lezer-based Typeshed converter for classes, protocols, dataclasses, TypedDicts, NamedTuples, enums, aliases, conditionals, module functions, async functions, and overloads while excluding class methods.
  • Adds typediagram-typeshed for mirroring complete Typeshed checkouts into .td trees, plus --from typeshed --emit td and a Typeshed tab in the web converter.
  • Adds config-driven multi-language generation and watch mode with atomic output replacement, last-good-output preservation, and recovery after invalid edits.
  • Adds MessagePack to the TDBIN comparison corpus and generates both the detailed report and a reader-facing benchmark page from the measured JSON.

Changed

  • Optimizes TDBIN integer-block, list, writer, and packed-word hot paths while preserving the documented byte-identical wire behavior.
  • Replaces the web-only viewport implementation with the shared core editor viewport and refreshes SVG snapshots for the shared canvas styling.
  • Updates documentation, API examples, converter metadata, navigation, dependencies, coverage ratchets, and the bundle-size calculation for the new parser/editor runtime.

Specifications, compatibility, and removals

  • Documents the function grammar, Typeshed conversion rules, CLI workflows, and reproducible TDBIN benchmark methodology.
  • No public feature is removed. The old web-local viewport code is superseded by the shared implementation.
  • No breaking wire-format change is introduced. Function declarations and the Typeshed converter are additive model/API surface.

How Do The Automated Tests Prove It Works?

  • Typeshed converter and CLI tests cover class/data declarations, advanced annotations, overloads, async functions, conditional duplicates, complete tree mirroring, skipped empty modules, method exclusion, and failure paths without partial output.
  • Function integration tests exercise parsing, resolution, printing, JSON round trips, layout, SVG rendering, overloads, async signatures, and malformed-input recovery.
  • Visual-editor unit and Playwright tests exercise field and declaration edits, creation/deletion, relationships, generic-reference recovery, node dragging, pan/zoom, layout persistence, responsive controls, and export behavior.
  • VS Code tests cover the packaged command bridge, real text-document replacement, invalid-edit undo/recovery, echo suppression, external document changes, panel lifecycle, and the installed VSIX interaction flow.
  • Config-generation E2E tests prove initial generation, watch regeneration, atomic multi-target writes, last-good-output retention, and recovery after invalid source.
  • TDBIN benchmark fixtures feed identical values to TDBIN, Protobuf, and MessagePack; the committed generated reports expose exact sizes and Criterion medians for every corpus operation.
  • Coverage thresholds and bundle-size checks are ratcheted for the expanded core, CLI, web, and VS Code paths.

dependabot Bot and others added 15 commits July 9, 2026 17:56
---
updated-dependencies:
- dependency-name: "@eslint/js"
  dependency-version: 10.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 4.1.10
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: eslint
  dependency-version: 10.6.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: prettier
  dependency-version: 3.9.5
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: typescript-eslint
  dependency-version: 8.63.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: typescript
  dependency-version: 7.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: vitest
  dependency-version: 4.1.10
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: "@types/node"
  dependency-version: 26.1.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: elkjs
  dependency-version: 0.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: esbuild
  dependency-version: 0.28.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: happy-dom
  dependency-version: 20.10.6
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: markdown-it
  dependency-version: 14.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: "@types/vscode"
  dependency-version: 1.125.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: "@vscode/test-electron"
  dependency-version: 3.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: mocha
  dependency-version: 11.7.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: pdfkit
  dependency-version: 0.19.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: marked
  dependency-version: 18.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: "@playwright/test"
  dependency-version: 1.61.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: concurrently
  dependency-version: 10.0.3
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: monocart-coverage-reports
  dependency-version: 2.12.12
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: tsx
  dependency-version: 4.23.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: typedoc
  dependency-version: 0.28.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: typedoc-plugin-markdown
  dependency-version: 4.12.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
- dependency-name: vite
  dependency-version: 8.1.4
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
...

Signed-off-by: dependabot[bot] <support@github.com>
vsce package rejects a release when @types/vscode (^1.125.0, bumped by a
dependency update) is newer than engines.vscode (^1.99.0). The extension only
uses the 1.99-era API, so pin @types/vscode back to ^1.99.0 to match the
declared engine floor — restoring the v0.11.0 configuration that packaged
cleanly. Verified: vscode typecheck passes and `vsce package` succeeds.
Comment thread packages/cli/src/typeshed-cli.ts Fixed
Comment thread packages/vscode/src/webview/main.ts Fixed
@MelbourneDeveloper
MelbourneDeveloper merged commit c9a1c8a into main Jul 18, 2026
6 checks passed
@MelbourneDeveloper
MelbourneDeveloper deleted the tdbin branch July 18, 2026 23:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants