|
Pokered Save Editor 2
Pokemon Red & Blue save file editor - Qt 6 C++/QML
|
The standards for this repo. The overriding goal: a clean, faithful, low-risk history — "a dull flat repo over a screwed-up one." Established 2026-06-07.
The clean-vs-faithful tension only exists when branches diverge. Because we never commit on main directly, dev is always strictly ahead, so dev → main is always a fast-forward:
This gives a clean linear history and keeps every original commit/message faithfully — so we do not squash, rebase, or reorder. (Tradeoff: main's history includes dev's intermediate commits. Fine at this stage; if pristine release history is wanted later, tag releases or switch to squash-merges then — not now.)
Before commit dab0a1d (2026-06-13) the version file was VERSION.txt and the changelog folder was version/. That commit renamed them to VERSION and version-notes/ (the changelog was later moved into notes/ and renamed notes/version/ on 2026-06-14 — a subdirectory, so it no longer collides with the root VERSION). Because the Windows filesystem is case-insensitive, the working-tree file VERSION and an old commit's tracked directory version/ are the same path, so git checkout <pre-rename-ref> aborts with "untracked working tree files would be overwritten: version". Going forward this never bites a normal dev → main FF (both have VERSION + notes/version/); it only happens when checking out / bisecting old history. Workarounds: fast-forward a ref without a working-tree switch — git fetch . dev:main (FF-only; safely updates local main off-branch) — or temporarily move VERSION aside before the historical checkout. (This case collision is exactly why the file was originally suffixed .txt; renaming version/ → version-notes/ is what freed the bare VERSION name. See reference/versioning.md.)
Push on every commit, same as commits themselves: early and often. All chat tabs/sessions are expected to keep the remote current, just like they keep the living notes current — don't leave green work sitting only on the local machine.
Standing default (2026-06-10): commit/push on dev AND the green-gated main fast-forward are now fully automatic — done by default without being asked (by design explicit instruction). This supersedes the "push only when asked" phrasing in the Hard safety rules below; the only-when-asked restriction now applies just to the genuinely destructive ops (force-push, history rewrite, reset --hard, rebase, clean -fd, branch deletion), which remain off-limits without an explicit request. The full default loop (build+launch, test, debug/profile, commit/push/FF) lives in CLAUDE.md → "Default Workflow — Do These By Default."
Do not rebase/squash/reorder/amend already-pushed commits to "tidy up." It's both the #1 corruption risk and what destroys faithfulness. The discipline lives in writing good commits up front, not in after-the-fact surgery.
Done: master renamed to main locally; dev created; both pushed to origin; GitHub default branch set to main; stale origin/master deleted (verified 0 unique commits on it first, with a guard). Remote now has exactly main (stable) + dev; origin/HEAD → origin/main. Repo: github.com/junebug12851/pokered-save-editor-2. No commits were lost in the rename.