Skip to content

chore: align TypeScript and enforce compiler checks - #133

Merged
johnnyhuy merged 1 commit into
mainfrom
agent/issue-131-typescript-gate
Nov 13, 2026
Merged

johnnyhuy merged 1 commit into
mainfrom
agent/issue-131-typescript-gate

Conversation

@johnnyhuy

@johnnyhuy johnnyhuy commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

TypeScript now uses ~5.8.0 in the root and GitHub theme workspaces, matching the Backstage 1.56.5 app template. mise run typecheck checks workspace source without emitting files or using an incremental cache, and mise run lint runs that check before ESLint so the existing PR workflow catches compiler failures.

Part of #85. Closes #131. The parent epic stays open.

This slice changes development tooling and dependencies. Nothing user-facing changed, so browser capture is not applicable and no screenshot was fabricated. Command transcripts provide the evidence.

All commands below ran with MISE_TRUSTED_CONFIG_PATHS="$PWD" for this fresh worktree.

  • mise run install passed with existing peer dependency warnings.
  • CI=true mise run install passed with the immutable lockfile check.
  • mise run typecheck --version reported TypeScript 5.8.3.
  • mise run typecheck passed with no source errors.
  • mise run lint passed across all five workspaces after the compiler check.
  • mise run test --runInBand --verbose passed with 45 tests across seven suites. One existing test/suite remains skipped.
  • mise run build passed and built the local Docker image in 302.93 seconds. Docker was initially stopped; starting the installed Docker Desktop resolved that environment blocker. No image was pushed.

Before the update, the compiler rejected Backstage's DOM.AsyncIterable library with TS6046. After the update, both typecheck and lint rejected a temporary number variable assigned a string with TS2322 and exit code 2. The probe was removed, the clean lint gate passed again, and no dist-types directory was emitted. No application source or compiler strictness settings changed.

$ mise run typecheck --version
Version 5.8.3

$ mise run typecheck
[typecheck] $ yarn typecheck
# exit 0 on clean workspace source

# Temporary invalid source, removed after checking
$ mise run typecheck
error TS2322: Type 'string' is not assignable to type 'number'.
# exit 2
$ mise run lint
error TS2322: Type 'string' is not assignable to type 'number'.
# exit 2, before ESLint

# Clean source restored
$ mise run lint
Checked   2 files in packages/backend
Checked   3 files in plugins/permission-backend-module-default
Checked   1 files in packages/backstage-theme-github
Checked   8 files in plugins/plausible
Checked  51 files in packages/app
# exit 0

$ mise run test --runInBand --verbose
Test Suites: 1 skipped, 7 passed, 7 of 8 total
Tests:       1 skipped, 45 passed, 46 total
Ran all test suites in 4 projects.

$ mise run build
#40 [build 24/24] RUN yarn build:backend
#53 DONE 44.0s
Image ghcr.io/echohello-dev/backstage:latest Built
Finished in 302.93s
# exit 0

The source check retains Backstage's inherited skipLibCheck default. Existing peer dependency and test-console warnings remain. Yarn 4.3.1 also reported optional TypeScript patch warnings in Docker; dependency installation and the backend build still passed. The development guide documents the new task and compiler alignment for future upgrades.

Pre-merge verification on 13 November 2026

Rechecked commit dab35ef in a fresh scheduled-run worktree. The branch already contains origin/main at 48e4714, so no rebase was needed. No code changes were required, and the working tree stayed clean.

All four gates passed again with MISE_TRUSTED_CONFIG_PATHS="$PWD".

$ mise run install
Done with warnings in 1m 21s
Finished in 81.28s
# exit 0

$ mise run lint
Checked   2 files in packages/backend
Checked   3 files in plugins/permission-backend-module-default
Checked   1 files in packages/backstage-theme-github
Checked   8 files in plugins/plausible
Checked  51 files in packages/app
# compiler check and ESLint passed, exit 0

$ mise run test --runInBand --verbose
Test Suites: 1 skipped, 7 passed, 7 of 8 total
Tests:       1 skipped, 45 passed, 46 total
Ran all test suites in 4 projects.
# exit 0

$ mise run build
Image ghcr.io/echohello-dev/backstage:latest Built
Finished in 6.00s
# cached local Docker build, exit 0, no image pushed

The existing peer dependency and test-console warnings remain. All five PR checks are green, including the CI build transcript. Transcript evidence succeeded. Browser capture is not applicable because nothing user-facing changed; no capture path was blocked.

Match the Backstage 1.56.5 compiler baseline and run a clean workspace type check before ESLint in the existing CI gate.

Co-authored-by: OpenAI Codex <noreply@openai.com>
@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​typescript@​5.3.3 ⏵ 5.8.31001009010090

View full report

@johnnyhuy
johnnyhuy merged commit cc69c73 into main Nov 13, 2026
5 checks passed
@johnnyhuy
johnnyhuy deleted the agent/issue-131-typescript-gate branch November 13, 2026 16:08
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.

Align TypeScript with the Backstage compiler defaults

1 participant