Implement #1#2
Draft
habesoftware-claude-connector[bot] wants to merge 1 commit into
Draft
Conversation
Generated via Full Stack Developer by HabeSoftware
Open
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.
Closes #1
Files Changed
Static Review Comments
Branch:
full-stack-issue1-ede9443Review Date: 2026-06-11
Reviewer: Static Reviewer - @thehabes
Critical Issues 🔴
None found.
Major Issues 🟠
None found.
Minor Issues 🟡
🟡 Issue 1: Cross-repository upgrades from issue #1 are out of scope for this run (NEEDS_HUMAN)
File:
N/ACategory: Scope / Task Completion
Problem:
GitHub issue #1 has two parts. The first part — generating IIIF Presentation 4 compliant manifests in this repository with easy version switching — is implemented here: every project now publishes
manifest.json(primary, switchable viapresentationVersionininfo.yml, defaulting to 3 so the existing public URL contract is unchanged), plus always-availablemanifest-v3.jsonandmanifest-v4.jsonwith identical canvas/page/annotation ids across all serializations. The second part — auditing other TPEN-related repositories in the CenterForDigitalHumanities organization and submitting PRs so they accept Presentation 4 manifests as an Image Resource — cannot be performed from this non-interactive run, which is restricted to this repository and cannot create branches, push, or open PRs.Current Code:
Suggested Fix:
How to Verify:
Suggestions 🔵
🔵 Issue 2: Project README template hardcodes versions 3 and 4 while generation is config-driven
File:
scripts/generate.js:714Category: Maintainability
Problem:
generateProjectwrites the version-pinned manifests by iteratingSUPPORTED_PRESENTATION_VERSIONS, butgenerateProjectReadmetakes explicitmanifestV3Url/manifestV4Urlparameters and hardcodes the "Generated Outputs" and "Links" entries for versions 3 and 4. If a future Presentation version is added toIIIF_CONTEXTS, the new manifest file would be generated and validated but silently missing from project READMEs until the template is also updated.Current Code:
Suggested Fix:
How to Verify:
IIIF_CONTEXTSinscripts/config.js.npm run generate:alland confirm the project README lists the new manifest without further template edits.🔵 Issue 3: Validator does not enforce the cross-version canvas id guarantee
File:
scripts/validate.js:54Category: Validation Coverage
Problem:
The documentation promises that canvas, page, and annotation ids are identical across
manifest.json,manifest-v3.json, andmanifest-v4.jsonso annotations remain valid whichever version a tool loads. The generator implements this (all serializations share canvases derived from the primary manifest URL), butvalidate.jschecks each file independently and would not catch a future regression that breaks id stability across serializations.Current Code:
Suggested Fix:
How to Verify:
idinprojects/example-project/manifest-v4.json.npm run validate:alland confirm it fails with a cross-version id mismatch error.