# macOS
.DS_Store

# IntelliJ
.idea/

# Dependencies. The JavaScript implementation has no runtime dependencies and three development ones;
# the absence of a lockfile anywhere else is what proves the other implementations have none at all.
node_modules/

# Build output, per implementation. Each is regenerated by that implementation's build.
/js/dist
/rust/target
/python/dist
/python/*.egg-info
__pycache__/

# mdBook output, regenerated by `mdbook build`.
/docs/*/book

# The specification, copied into the npm package at pack time. `docs/syntax.md` at the repository root
# is the only copy that is edited: npm cannot include a file from outside the package directory, and
# that is why the package silently shipped without its own specification until 2026-09-24.
/js/docs

# One licence, copied beside each package that publishes on its own. `LICENSE.txt` at the repository
# root is the only copy anybody edits; npm, Cargo, hatch and Composer each need one inside their own
# package directory, and a path escaping that directory resolves to nothing.
#
# **`rust/` is NOT excluded, and `js/` never was.** Cargo decides what to pack from what git reports,
# so an excluded copy is invisible to it and the crate would publish with the MIT metadata field and
# no licence text. Naming it in `include` is not enough either: Cargo then counts the file as an
# uncommitted change and `cargo publish` refuses without `--allow-dirty`, which is the one flag that
# switches off the check that a published crate matches a commit. So the two files Cargo needs are
# tracked, and `scripts/crates-cut.sh` refuses to package while either differs from its source.
/python/LICENSE.txt
/php/LICENSE.txt
/go/LICENSE.txt

# The phase folder is its own repository, nested here, and this repository excludes it. That is one of
# the two arrangements `groove-phase tracking` recognises, and it is the one this package needs: the
# folder holds inboxes, a to-do and membership, and this repository is about to be public.
/.phase/
