Commit Graph
66 Commits
Author SHA1 Message Date
quanticsoul4772 3c3ea269a9 fix(setup): stop Node's DEP0190 warning when npm runs on Windows (#1057)
Windows runs npm.cmd through a shell, and passing an argument array with `shell: true` is deprecated in Node 24 (DEP0190). Every `npm run doctor` and every Pinokio install on Windows printed the warning. npmProcessSpec now takes the npm arguments and, on Windows, joins them into the command string; the arguments are fixed subcommands (`--version`, `ci`). Unix behavior is unchanged.
2026-10-16 15:28:39 -07:00
Sameh Khamis 7ec0b14cab Move the changelog entry into changelog.d
Main now takes release notes as one fragment per pull request (#787).
2026-10-16 15:26:29 -07:00
Sameh Khamis 1344b5d77e Merge branch 'main' into fix/geo-distance-dateline 2026-10-16 15:01:55 -07:00
Sameh Khamis 3e6680000a Merge branch 'main' into fix/cctv-missing-numbers 2026-10-16 15:01:54 -07:00
Sameh Khamis a7cd998201 Move the changelog entry into changelog.d and note seed and datasheet fallbacks
Main takes release notes as one fragment per pull request (#787). A missing value still falls back to a matching seed camera, and a datasheet can still set the field of view.
2026-10-16 15:01:46 -07:00
Sameh Khamis c6f0f9db0a Share one antimeridian-safe distance and move the changelog entry
The flights records and the mesh-floor sampler kept identical copies of the equirectangular distance; both now import src/data/approxDistance.js. The changelog entry moves to changelog.d (#787), and CURRENT-STATE notes the antimeridian behaviour.
2026-10-16 15:01:29 -07:00
Sameh Khamis 31ef637ba7 Merge branch 'main' into fix/director-goto-shot 2026-10-16 14:53:56 -07:00
Rudy Mizrahi Celekli fa8e3e989f fix(tools): exclude unknown altitude from requested aircraft bands (#1115)
aircraft_in_area compared a nullable altitude, so a contact with neither barometric nor geometric altitude matched max_altitude_m as though it were at zero. Require a reported finite altitude only when a band is requested; unfiltered queries keep the contact.
2026-10-16 14:53:50 -07:00
Sameh Khamis d5a7246302 Merge branch 'main' into fix/overpass-failure-phrases-in-data 2026-10-16 14:44:04 -07:00
quanticsoul4772andClaude Opus 5.5 8f6671b6c2 Merge upstream main into feat/tools-area-breakdowns
Move the changelog entry into changelog.d/1056-area-tool-breakdowns.md
(upstream's one-file-per-PR rule, #787) and leave CHANGELOG.md as on main.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 14:22:39 -07:00
Sameh Khamis 41be10f320 Move the changelog entry into changelog.d
Main now takes release notes as one fragment per pull request (#787).
2026-10-16 14:16:36 -07:00
Sameh Khamis aa7943a07b Move the changelog entry into changelog.d
Main now takes release notes as one fragment per pull request (#787).
2026-10-16 14:16:34 -07:00
Sameh Khamis 1d62cdd805 Move the changelog entry into changelog.d
Main now takes release notes as one fragment per pull request (#787).
2026-10-16 14:16:32 -07:00
Said TurkseverandClaude Opus 5.5 4d42516ffe Make changelog assembly recoverable after a partial write
`--write` wrote CHANGELOG.md and then removed fragments one by one, so a
failure after the write left surviving fragments that a rerun spliced in
a second time.

The write is now staged. The assembled file goes into
changelog.d/.assembling/, the fragments are renamed in beside it, and
renaming the assembled file over CHANGELOG.md is the single commit
point. A run that fails rolls itself back when it can; otherwise the next
`npm run changelog` reads the staging directory and either restores the
fragments (assembled file still staged) or deletes the leftovers (batch
landed). `--check` reports a staged batch instead of reporting past it.

A failure-injection test makes every filesystem call in a `--write` fail
in turn, both as a one-off error and as a crash with no in-process
rollback. It asserts the retry produces exactly the uninterrupted
CHANGELOG.md, with each entry once and an empty directory. The test
fails against the previous write-then-delete and against delete-first.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 11:01:25 +01:00
daikaginza d29ff40d04 docs: add this pull request's own changelog fragment (#787)
Dogfoods the convention rather than describing it: the entry for #787 arrives
as `changelog.d/787-changelog-fragments.md` and `CHANGELOG.md` is untouched.

A fragment needs the pull request number, which only exists once the pull
request is open, so it lands in a second commit. `changelog.d/README.md` says
to push first and add the fragment after, for the same reason.

Checked against the one consumer that constrains the design: assembling this
fragment moves the `DISPLAY ▸ Draw` marker in `CHANGELOG.md` by exactly the
length of the spliced entry, and the 1200-character window that
`src/annotations/drawTool.test.mjs` slices after it is byte-identical.
2026-09-28 08:17:18 +07:00
daikaginza 114b0eeaba feat(tooling): one changelog file per pull request
`CONTRIBUTING.md` asks every runtime change to add an entry at the top of
`CHANGELOG.md`, so two pull requests in flight write into the same few lines and
git has nothing to merge on. Against `main` at `81eb443`, `git merge-tree` over
the 85 open pull requests GitHub reports as conflicting that aren't mine puts
`CHANGELOG.md` in the conflict set of 41 — more than any other path — and for 6
it is the only one. `docs/CURRENT-STATE.md`, the other file rule 3 names,
conflicts for 23, and merges cleanly for 23 of the 41: edits land in the section
for the area you touched, so they only collide when the areas do.

A pull request now adds `changelog.d/<pull request>-<slug>.md` instead. Distinct
filenames never conflict, and the pull request number makes them distinct for
free. `npm run changelog` splices the directory into `CHANGELOG.md` and empties
it; `npm run changelog:check` reports the batch and changes nothing.

Fragment text is copied through unchanged apart from trailing whitespace.
`src/annotations/drawTool.test.mjs` reads `CHANGELOG.md` as prose and slices a
fixed window after a heading, so an assembler that reflowed an entry could move
text across that window. Fragments are deliberately outside
`scripts/format-scope.json` for the same reason.

The assembler refuses a batch before writing anything when a filename is not
`<pull request>-<slug>.md` or two fragments claim one pull request number, and
a unit test runs that check over the real `changelog.d/`, so a fragment the
release could not assemble fails `npm test` in the pull request that adds it
rather than at release time.

Refs #781.
2026-09-28 08:14:11 +07:00