Skip to content

chore: make the lint gate green and actually run it - #33

Merged
PhilflowIO merged 4 commits into
masterfrom
chore/repo-hygiene
Aug 14, 2026
Merged

chore: make the lint gate green and actually run it#33
PhilflowIO merged 4 commits into
masterfrom
chore/repo-hygiene

Conversation

@PhilflowIO

@PhilflowIO PhilflowIO commented Aug 14, 2026

Copy link
Copy Markdown
Owner

Stacked on #32 — base is fix/todo-fetch-override, not master. See "Why stacked" below; GitHub will retarget this to master automatically once #32 merges. Review #32 first.

The three loose ends from #30/#31, and the reason they went unnoticed for so long.

The through-line

pnpm lint has been red on master. Nothing caught it, because the lint gate never ran:

  • ci.yml — the workflow that runs typecheck, lint and test — triggers only on pull requests to main. The default branch is master and no main branch exists, so it has never run on any PR. That is also why the makeAddressBook typecheck error from fix(carddav): honour fetch override in makeAddressBook #31 sat on master unnoticed.
  • release.yml had its lint step commented out.

So the only workflow that actually ran was quality-checks.yml, which does not lint.

Changes

Commit
style: apply prettier to the last lint holdouts pnpm lint --fix. Whitespace only across 4 files.
chore(hooks): drop deprecated husky v8 preamble Removes the shebang + _/husky.sh source.
ci: run CI on pull requests to master branches: [main][master, main], matching quality-checks.yml.
ci: re-enable lint in the release workflow Uncomments the step.

pnpm lint now reports 0 errors, and two workflows will actually enforce it.

The husky change is verified rather than assumed: the three commits after it were made with the preamble removed, and the hook still ran every check — signature scan, version check, dist rebuild — with the DEPRECATED warning gone.

The prettier pass is whitespace only, but the non-minified bundles pick up the reformatting, so dist/ is rebuilt and the patch version bumped. The dist diff is generated; the CI gate verifies it.

Why stacked on #32

Basing this on master produces a genuine merge conflict with #32. Both branches rewrite the same lines of client.ts: prettier collapses the six long single-line DAVClient todo methods into multi-line form, and #32 rewrites those same lines into multi-line form plus a fetch: this.fetchOverride entry. Two different rewrites of the same region — git cannot auto-merge them. I confirmed this by building the branch both ways.

Stacking avoids it: lint --fix runs against the post-#32 tree, where 6 of the 10 errors are already gone as a side effect of that PR, leaving only the 4 genuinely-formatting ones. Merge #32 first and this applies cleanly. If you would rather have it off master, say so and I will re-cut it — that just means #32 rebases instead.

Verification

$ pnpm lint      # 0 errors
$ pnpm typecheck # clean
$ pnpm test
Tests:       42 passed, 42 total

Workflow triggers after the change:

ci             -> pull_request: branches ['master', 'main']
release        -> release: types ['published']
quality-checks -> pull_request + push: branches ['master', 'main']

Note

ci.yml will now run for real for the first time, on this PR and every future one. It runs pnpm test across Node 18/20/22/24 with mocked fetch. If it turns up something that has been failing invisibly on a Node version I have not exercised locally (I am on 22, .nvmrc says 24), that is the gate doing its job rather than a regression from this PR — tell me and I will fix it separately.

CI status on this PR

This PR shows 0 checks, and that is expected: quality-checks.yml triggers on pull_request: branches: [master, main], so it does not fire for a PR targeting fix/todo-fetch-override. Once #32 merges and GitHub retargets this to master, the workflow will run.

Until then the gates were run locally against this exact tree: pnpm lint 0 errors, pnpm typecheck clean, 42/42 tests, and the dist gate (pnpm build then git diff dist/) reproduces the committed build.

`pnpm lint` has been red for some time with auto-fixable prettier
errors. It went unnoticed because ci.yml, which runs lint, only
triggers on pull requests to `main` while the default branch is
`master`, and release.yml has its lint step commented out -- so nothing
ever ran it.

Whitespace only, produced by `pnpm lint --fix`. No behaviour change,
though the non-minified bundles pick up the reformatting, hence the
version bump.
husky 9 printed a DEPRECATED warning on every single commit and states
these two lines will fail outright on v10. Hooks are invoked directly
by husky 9, so the shebang and the `_/husky.sh` source are both
redundant.

Verified by committing with it removed: the hook still runs every check
and the warning is gone.
ci.yml triggered only on pull requests to `main`, but the default
branch is `master` and no `main` exists -- so typecheck, lint and test
have never run on any pull request. quality-checks.yml already targets
both branches; this matches it.
Commented out at some point and never restored, which is half the
reason lint rot went unnoticed. `pnpm lint` is clean again as of the
preceding commit, so the step passes.
@PhilflowIO
PhilflowIO changed the base branch from fix/todo-fetch-override to master August 14, 2026 20:40
@PhilflowIO PhilflowIO closed this Aug 14, 2026
@PhilflowIO PhilflowIO reopened this Aug 14, 2026
@PhilflowIO
PhilflowIO merged commit a8bf4e0 into master Aug 14, 2026
1 check passed
@PhilflowIO
PhilflowIO deleted the chore/repo-hygiene branch August 14, 2026 20:42
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.

1 participant