Commit Graph
20 Commits
Author SHA1 Message Date
Tommaso Casaburi bbc696dcec ci: make coverage badge publishing advisory 2026-07-03 14:24:38 +07:00
Tommaso CasaburiandGitHub aa5a985201 ci(react-doctor): add official PR-review Action, drop redundant CLI step (#1156)
Adds the official react-doctor GitHub Action (millionco/react-doctor@v1),
which posts inline review comments + a sticky summary for issues a PR
INTRODUCES (diffed against the merge-base) -- more visible than the
previous CLI '--annotations' markers.

Removes the now-redundant react-doctor steps from ci.yml (the
detect-changes/diff-annotations/skip steps and the push-time full scan)
so react-doctor runs once per PR, not twice. It reads doctor.config.jsonc,
so the React-Compiler rules we don't enforce stay suppressed.
2026-06-05 22:34:29 +07:00
Tommaso CasaburiandGitHub 0493492f55 fix(react-doctor): correct test exclusion + React-Compiler lint policy + state-sync fix (#1155)
* fix(react-doctor): correctly exclude test files from scoring

The intended test-file ignore in react-doctor.config.json was never
applied: react-doctor's config precedence reads the "reactDoctor" key
in package.json (which had no ignore), shadowing the config file. On
top of that, react-doctor 0.4.0's ignore.files matcher is broken — any
non-empty value collapses scan scope and drops real product files, not
just tests.

Consolidate to a single canonical doctor.config.json using
ignore.overrides (which works correctly): only test files are excluded
while all product code is still scored. Remove the shadowing
package.json key and the dead react-doctor.config.json.

Product-code baseline is 55 (92 errors, 515 warnings, 118 files).

* chore(react-doctor): add long-running task tracking for score effort

* refactor(react): remove compiler-redundant memoization in verified files

Delete manual useMemo/useCallback/memo that the React Compiler already
handles, in 7 files validated to be behavior-preserving (factories are
pure functions of compiler-trackable reactive inputs). Kept memos whose
factories read external mutable DOM/theme state with load-bearing deps
(e.g. use-reply-height-estimates metrics). Also hoists a regex and reads
a localStorage value once.

Note: this is code-quality cleanup; react-doctor's score is error-
weighted, so warning cleanup like this does not move the score. See
docs/agent-runs/react-doctor-score/progress.md.

* fix(react-doctor): adopt React-Compiler lint policy + fix one state-sync bug

react-doctor's score is dominated by React-Compiler optimizability
diagnostics that flag intentional patterns (the latest-ref idiom) and
current compiler limitations (try/finally, throw-in-try/catch the
compiler can't lower yet), not bugs. Rewriting that working code to
satisfy them would degrade it.

- Replace doctor.config.json with a documented doctor.config.jsonc that
  does not enforce the react-hooks-js (React Compiler) rules or
  react-compiler-no-manual-memoization. All real code-quality, a11y, and
  performance rules stay enforced.
- Fix one genuine state-sync bug: use-now-seconds refreshed 'now' via a
  synchronous setState inside an effect (an extra render with a stale
  value); move it to a render-time prev-prop comparison (React's
  adjust-during-render pattern), behavior-equivalent.

Score 54 (broken config) -> 63. type-check/lint/1051 tests pass; browser
smoke confirms timestamps render with no re-render regression. The
remaining no-adjust-state-on-prop-change diagnostics are real bugs but
entangled with legitimate side effects (navigate/ref-cancel/async) in
critical flows; left for careful follow-up.

* chore(react-doctor): remove the vanity score badge, keep PR-diff review

The single 0-100 react-doctor score mostly reflects React-Compiler
optimizability and isn't a meaningful health grade to display (see
docs/agent-runs/react-doctor-score). Remove the README badge and its now-
dead generation infra (CI write/upload/publish steps + the
write-react-doctor-badge.mjs script + doctor:badge package script).

Kept: react-doctor's actual value -- the PR step that runs
'yarn doctor --diff <base> --annotations' on pull requests touching React
files, surfacing newly-introduced issues inline. Coverage badge untouched.

* docs(react-doctor): document why the score is not a target to chase

Record the reasoning so future agents/contributors don't re-attempt to
grind the react-doctor score: it overwhelmingly reflects React-Compiler
optimizability (most 'errors' flag intentional patterns and current
compiler limitations, not bugs) and saturates on the fraction of clean
files, so ~63 is the honest ceiling and 90 only comes from disabling the
linter.

- Add a known-surprises entry with the full reasoning + mitigation.
- Reframe the AGENTS.md react-doctor verification line: it's a PR-diff
  reviewer for newly-introduced issues, not an aggregate score to raise.
2026-06-05 22:21:30 +07:00
Tommaso CasaburiandGitHub 029939089f fix(flags): align board flag rendering (#1142)
* fix(flags): align board flag rendering

* ci: run react doctor on changed pr files
2026-05-27 16:06:13 +07:00
Tommaso CasaburiandGitHub 556973a445 Improve React Doctor score and badge (#1127)
* fix(react doctor): improve quality score and badge

* fix(react doctor): address review feedback

* fix(review): address final bot feedback
2026-05-10 18:25:13 +07:00
Tommaso CasaburiandGitHub e7a6c377c9 Sign web release manifests (#1128)
* feat(release): sign web release manifests

* ci(doctor): skip non-ui pull requests
2026-05-10 14:59:28 +07:00
Tommaso Casaburi fdbb650baa build(android): add fdroid distribution flavor 2026-04-30 18:58:50 +07:00
Tommaso Casaburi 4ec74bc85e fix(ci): cache yarn after corepack in windows packaging 2026-03-20 18:32:43 +08:00
Tommaso Casaburi 1bec1fd549 Update ci.yml 2026-03-20 18:08:05 +08:00
Tommaso Casaburi 4d5ee595e4 fix(ci): windows job was hanging 2026-03-20 17:32:24 +08:00
Tommaso Casaburi 50301fb4e8 fix(ci): avoid husky during yarn install 2026-03-19 15:02:12 +08:00
Tommaso Casaburi da62c27180 fix(ci): drop legacy yarn install flags 2026-03-19 14:54:17 +08:00
Tommaso Casaburi 91e5131d29 fix(ci): remove setup-node yarn cache 2026-03-19 14:47:35 +08:00
Tommaso Casaburi f342179f1a chore(tooling): migrate 5chan to Yarn 4 2026-03-19 13:41:03 +08:00
Tommaso Casaburi 2de723a076 fix(ci): publish coverage badge via GitHub Pages 2026-03-17 20:24:12 +08:00
Tommaso CasaburiandGitHub 2c276f05eb fix(ci): scope Electron native rebuilds (#1099) 2026-03-17 18:22:56 +08:00
Tommaso CasaburiandGitHub c9bd6258b2 fix(electron): restore packaged desktop app loading (#1095)
* fix(electron): restore packaged desktop app loading

Rebuild and verify Electron native modules before packaging and use the Vite base URL for packaged asset preloads.

* test(preload-utils): cover non-root base urls
2026-03-17 17:04:47 +08:00
Tommaso CasaburiandGitHub b2946e8b2e fix(ci): publish coverage badge from badges branch (#1091)
* fix(ci): publish coverage badge from badges branch

* fix(ci): address badge review findings
2026-03-17 16:10:55 +08:00
Tommaso Casaburi d08becf4b2 chore(readme): add dynamic coverage badge 2026-03-16 20:55:01 +08:00
plebeius e46c7dd169 ci: add smoke-gated quality checks to the main pipeline
Replaced test.yml with ci.yml, added a built-app smoke runner in scripts/smoke-web-app.js, and inserted a release preflight so tags run the same core checks before packaging.
2026-03-08 12:41:52 +08:00