feat(core): adopt feedpak_version — read on load + stamp on manifest writes (§4) - #530
Merged
Merged
Conversation
…writes (spec §4)
Core never read or emitted the manifest `feedpak_version` field. Adopt it:
- sloppak.py: `FEEDPAK_VERSION = "1.2.0"` constant (the format version this build
targets); `LoadedSloppak.feedpak_version` read from the manifest on load
(string, else None for legacy/absent).
- Stamp the version on the two core manifest-rewrite paths, without downgrading
an existing (possibly higher) declared version:
- gp2notation: `setdefault` before its notation-add rewrite.
- songmeta: opportunistically when a metadata field is supplied (gated on the
existing `dirty` flag, so never a standalone rewrite).
Core has no create-from-scratch path (RS-free repo) — the editor plugin's
create-mode save stamping FEEDPAK_VERSION is a follow-up in that repo. Internal
"sloppak" naming is intentionally left as-is (a rename is out of scope / risky).
Codex-reviewed: no P1/P2. +6 tests (read present/absent/non-string; metadata-write
stamp-when-absent / preserve-existing / no-op-no-stamp) + updated the gp2notation
key-order test for the appended version. 197 sloppak/songmeta/gp2notation tests pass.
Closes #527. Part of #334.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 20, 2026
byrongamatos
pushed a commit
that referenced
this pull request
Jul 2, 2026
PR #530 set accept=".feedpak,.sloppak" on the shared upload input, but a later index.html edit reverted the attribute to ".sloppak" only. The client-side extension filter (app.js) and the server upload endpoint both accept .feedpak, so the only effect was the OS file-picker hiding .feedpak files from the dialog. Restore the dual filter. Signed-off-by: Kris Anderson <topkoa@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Core never read or emitted the manifest
feedpak_versionfield (spec §4 versioning). This adopts it.Change
sloppak.py—FEEDPAK_VERSION = "1.2.0"(the format version this build targets);LoadedSloppak.feedpak_versionread from the manifest on load (string, elseNonefor legacy/absent).gp2notation—setdefaultbefore its notation-add rewrite;songmeta— opportunistically when a metadata field is supplied (gated on the existingdirtyflag → never a standalone rewrite).Core has no create-from-scratch path (RS-free repo) — the editor plugin's create-mode save stamping
FEEDPAK_VERSIONis a follow-up in that repo. Internalsloppaknaming is intentionally left as-is (a rename is out of scope / risky).Review
Codex-reviewed: no P1/P2. (P3s addressed: clarified the
songmetacomment redirtysemantics; the new test is included.)Tests
+6 cases (read present/absent/non-string; metadata-write stamp-when-absent / preserve-existing / no-op-no-stamp) + updated the gp2notation key-order test.
197 passed.Closes #527. Part of #334.
🤖 Generated with Claude Code