Files
MeshTerm/.gitignore
T
Jean-Pierre MartineauandClaude Opus 5 365df236b9 The promises in CONTRIBUTING are checked by a machine
`.github/` starts here: the three commands the contributing guide asks a
contributor to run, run for them on every push and pull request.

Two jobs rather than one. Style is a property of the source, so `lint` runs once
on Linux and a failure means one thing. Behaviour is a property of the machine,
so `test` runs across the systems the description now promises — Windows, macOS
and Linux — which until this file existed had only ever been checked on one of
them, whatever the description said.

The matrix is shaped for a private repository, where minutes are metered and
billed by a multiplier: Linux 1x, Windows 2x, macOS 10x. Linux therefore carries
the whole 3.10 to 3.13 range, and the expensive runners cover its ends, since a
version-dependent break shows up at an end rather than in the middle. Seven legs,
about fifty billed minutes a run. The comment says to widen it to the full
product once the repo is public and standard runners stop costing anything.

Two small decisions worth their lines. `fail-fast` is off: the point of a run is
the whole picture of what broke, and a first red leg cancelling its siblings
hides the rest until the next push. And `concurrency` cancels a superseded run,
because a second push makes the first run's answer obsolete and those are metered
minutes spent on a stale commit.

One line of `.gitignore` came with it. The catch-all `.*/` that hides `.venv`
and the caches was hiding `.github/` too — the same rule `.claude/` already needed
an exception to. It fails silently in the worst way: a workflow that is never
committed looks exactly like a workflow that never runs.

The version risk this was expected to surface is already gone: the suite was run
locally on 3.13 as well as the usual 3.10, and both report 1888 passing. What
remains genuinely unchecked is macOS.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 03:49:42 -04:00

36 lines
1.0 KiB
Plaintext

# Python
__pycache__/
*.py[cod]
*.egg-info/
build/
dist/
# Ignore all dot-directories (.venv, .pytest_cache, .ruff_cache, .vscode, ...)
.*/
# ...except the project's tracked Claude config. Private working notes stay out:
# settings.local.json is per-machine, and plans/ + housekeeping.md are internal
# planning that names hardware and unshipped ideas.
!.claude/
.claude/settings.local.json
.claude/plans/
.claude/housekeeping.md
# ...and except the GitHub configuration, which only works where GitHub looks for
# it. The catch-all above hid it silently: a workflow that is never committed is
# indistinguishable from one that never runs.
!.github/
# Other virtual environments
venv/
# MeshTerm runtime data
*.db
output/
# Developer environment: the machine-specific half of the .claude/ skills (device
# addresses, logins, the local venv path). .dev.env.example is tracked and shows the shape.
.dev.env
# Built radio firmware (scripts/xiao-radio/build-firmware.sh writes it here)
scripts/xiao-radio/*.uf2
scripts/xiao-radio/_meshcore-build/