Repo hygiene: add .editorconfig, keep artifacts out of root, fix .gitignore #39

Closed
opened 2026-08-30 12:50:40 +02:00 by orkun · 1 comment
Owner

Problem

A few small repo-hygiene gaps add friction and inconsistency:

  • No .editorconfig — indentation/charset/newline conventions aren't
    machine-enforced, so editors drift (matters for a project that ships its own
    formatter and cares about byte-identical output).
  • Root gets littered with build output — programs write out.ppm into the
    working directory (tracked separately in the assets issue); the root should stay
    clean.
  • .gitignore inconsistency — **.zip is ignored yet the Kenney zips are
    tracked (see assets issue); the ruleset should be internally consistent.
  • build/ at the root holds generated .ll/objects during development; make
    sure everything generated is under build/ and ignored, and nothing generated
    escapes it.

Proposal

  • Add .editorconfig matching the project's Ludic style (indent width, LF,
    UTF-8, trailing-newline, trim trailing whitespace).
  • Ensure all generated output (render dumps, IR, objects, binaries) lands under
    build/ (or bin/) and is ignored; keep the repo root free of artifacts.
  • Reconcile .gitignore so ignored patterns and tracked files don't contradict.
  • Optionally add a bin/x clean that wipes generated output predictably.

Acceptance criteria

  • .editorconfig present and consistent with ludic-fmt.
  • No generated artifacts land outside build//bin/.
  • .gitignore is internally consistent with what's tracked.

Found during the repository-cleanup / DX pass.

## Problem A few small repo-hygiene gaps add friction and inconsistency: - **No `.editorconfig`** — indentation/charset/newline conventions aren't machine-enforced, so editors drift (matters for a project that ships its own formatter and cares about byte-identical output). - **Root gets littered with build output** — programs write `out.ppm` into the working directory (tracked separately in the assets issue); the root should stay clean. - **`.gitignore` inconsistency** — `**.zip` is ignored yet the Kenney zips are tracked (see assets issue); the ruleset should be internally consistent. - **`build/` at the root** holds generated `.ll`/objects during development; make sure everything generated is under `build/` and ignored, and nothing generated escapes it. ## Proposal - Add `.editorconfig` matching the project's Ludic style (indent width, LF, UTF-8, trailing-newline, trim trailing whitespace). - Ensure all generated output (render dumps, IR, objects, binaries) lands under `build/` (or `bin/`) and is ignored; keep the repo root free of artifacts. - Reconcile `.gitignore` so ignored patterns and tracked files don't contradict. - Optionally add a `bin/x clean` that wipes generated output predictably. ## Acceptance criteria - [ ] `.editorconfig` present and consistent with `ludic-fmt`. - [ ] No generated artifacts land outside `build/`/`bin/`. - [ ] `.gitignore` is internally consistent with what's tracked. Found during the repository-cleanup / DX pass.
orkun added the
priority:low
area:repo
cleanup
dx
labels 2026-08-30 12:50:40 +02:00
orkun closed this issue 2026-08-30 15:46:48 +02:00
Author
Owner

Done in 1c9235a.

  • Added .editorconfig mirroring ludic-fmt (2-space, LF, UTF-8, trim trailing whitespace + final newline; 4-space for Python tooling; Markdown keeps trailing whitespace for hard line breaks).
  • Reconciled .gitignore: root-anchored /build/ and /out.ppm, normalised the misleading **.zip glob to *.zip, and documented that the Kenney art is tracked extracted while the download/plugin zips are local-only (no zip is tracked, so this is now internally consistent). .idea -> .idea/.
  • Added bin/x clean to sweep build/, the root out.ppm, and stray bin/*.tmp, keeping the toolchain binaries so the running x survives.

Note: I did not redirect the runtime's headless dump into build/ — a shipped game binary shouldn't depend on a ./build dir existing; instead the artifact is gitignored and bin/x clean removes it. All acceptance criteria met; 46/46 tests green.

Done in 1c9235a. - Added `.editorconfig` mirroring ludic-fmt (2-space, LF, UTF-8, trim trailing whitespace + final newline; 4-space for Python tooling; Markdown keeps trailing whitespace for hard line breaks). - Reconciled `.gitignore`: root-anchored `/build/` and `/out.ppm`, normalised the misleading `**.zip` glob to `*.zip`, and documented that the Kenney art is tracked *extracted* while the download/plugin zips are local-only (no zip is tracked, so this is now internally consistent). `.idea` -> `.idea/`. - Added `bin/x clean` to sweep `build/`, the root `out.ppm`, and stray `bin/*.tmp`, keeping the toolchain binaries so the running `x` survives. Note: I did not redirect the runtime's headless dump into `build/` — a shipped game binary shouldn't depend on a `./build` dir existing; instead the artifact is gitignored and `bin/x clean` removes it. All acceptance criteria met; 46/46 tests green.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: workshopsoft/ludic#39
No description provided.