Skip to content

docs: document the per-platform custom library structure - #133

Open
gantoine wants to merge 3 commits into
mainfrom
docs/custom-library-structure
Open

docs: document the per-platform custom library structure#133
gantoine wants to merge 3 commits into
mainfrom
docs/custom-library-structure

Conversation

@gantoine

@gantoine gantoine commented Sep 8, 2026

Copy link
Copy Markdown
Member

Description

Documents the per-platform custom library structure (filesystem.structure) added in rommapp/romm#3571.

Two pages change:

  • Folder Structure gains a Custom library structure section, between the visual reference of the default layouts and the naming convention: the template syntax, declaring several templates for one platform, what happens when games move within the structure, and the gotchas (hidden folders, grouping-level vs multi-file game, same-named files in different folders).
  • Configuration File gains a filesystem.structure entry with a short example, linking to the section above for the full syntax.

Live pages: https://docs.romm.app/latest/getting-started/folder-structure/ and https://docs.romm.app/latest/reference/configuration-file/

Why

The feature shipped with its whole reference living as a 45-line comment block in config.example.yml, which is the wrong home for it: it is prose, it is not discoverable from the docs site, and the example config is meant to be skimmed. rommapp/romm#3571 now keeps only the syntax essentials plus the examples there, and links here, matching how the streaming block already points at its guide.

Every claim on the new page was re-checked against the implementation rather than copied over from the comment. One note did not survive that check and is deliberately absent: the old comment said a move that also changes a game's size is not detected as a relocation, because a size pre-filter runs before hashing. That pre-pass was dropped during review of rommapp/romm#3571 (mark_missing_roms now runs before the identify loop, so every unmatched file reaches get_matching_missing_rom), and archives are hashed over their decompressed members, so compressing a game no longer breaks relocation. The page states the conditions that actually apply today: all three hashes must match, non-hashable platforms fall back to the title id read out of the binary, and an ambiguous identity imports as a new game.

Verification

AI disclosure

Written with Claude Code, including the pass verifying each documented behavior against the backend source. I reviewed the result before submitting.

🤖 Generated with Claude Code

gantoine and others added 3 commits September 7, 2026 21:38
Add a "Custom library structure" section to Folder Structure covering the
template syntax, several templates per platform, relocation semantics and the
gotchas, plus a `filesystem.structure` entry in the config reference.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Testing the feature against a live library showed RomM moves nothing when a
platform's template is removed: the nested games are flagged missing and the
folders that grouped them are picked up as multi-file games instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Matching a gamelist entry now keys on its path relative to the platform folder,
falling back to a bare file name, and both exporters write paths (and media)
that follow the structure.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant