Repository navigation
ci: port kotobae's quality gates and CI for TypeScript - #8
Merged
Merged
Conversation
2 tasks done
3 tasks done
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.
Closes #4 except the branch protection step (after merge). Part of #2.
Why
The repository had no lint, no formatter check and no CI, so nothing stopped a regression from landing. This ports kotobae's TypeScript gates so every pull request runs them.
What changed
eslint.config.js): kotobae's config without the React plugins, Node globals. complexity / max-depth / max-lines / max-lines-per-function / max-params stay warnings..prettierrc,.prettierignore): kotobae's settings, plusembeddedLanguageFormatting: offfor Markdown. Without it Prettier added a trailing comma inside the README'ssettings.jsonexample, which breaks the JSON a user pastes. The.tsfiles and docs are reformatted (formatting only).scripts/quality-gate*.mjs,quality-baseline.json,knip.json): the TypeScript scope of kotobae's gate. The Rust collectors and platform handling are removed. Two fixes on the way:typefield per issue and so collects nothing.knipIssuesFromReportreads the new shape and has a test.Function '...'.Async function 'main' ...fell back to a line-based key, so editing lines abovemainwould have shown up as a new violation. It now reads async functions and methods, with a test.runFfmpeg,FilmPart,SceneandTimingScenewere exported but unused outside their file. Theffmpegbinary is ignored (it is the PATH fallback on purpose).mainincli.tswith complexity 25 (limit 20).lint,fmt,fmt-check,typecheck,quality-test,lint-quality,lint-quality-ts,quality-baseline, andcheck(everything CI runs).test/test-coveragecome with Add unit tests, the coverage gate and a render smoke test #5..github/workflows/ci.yml): thenode-suitejob onpull_request, Node 22,npm ci, concurrency cancel,contents: read.Verification
make check: ESLint 0 errors / 1 baselined warning, Prettier clean,tscclean, 21 quality gate tests pass, baseline gate unchangednarrateleavestiming.jsonbyte-identical, andstillsat 30 s and 57.5 s match earlier PNGs byte for bytedependencies,optionalDependenciesandpeerDependenciesonly (read from the CLI's code, not from docs)node-suite)Not verified
node-suiteas a required status check on theProtect masterruleset (adding it before merge would block every open pull request that has no CI yet).