fix(release): stop the package from stripping the Modules admin screen - #323
Merged
jakub-przepiora merged 1 commit intoSep 28, 2026
Merged
Conversation
The rsync rules that keep locally installed modules out of a release were
written unanchored:
--exclude='modules/*'
An rsync pattern without a leading slash matches at any depth, and this
repository has a second directory called `modules`:
`backend/resources/js/Pages/admin/modules`. So every release package was built
without those three pages. Vite then had nothing to compile, the Inertia
resolver found no component, and the UI answered "Page unavailable" — on the one
screen that uploads and enables a module, which is the only way to install one
on the web build at all.
The patterns are now anchored to the transfer root, meaning backend/modules and
nothing else. Verified by running the real rules against this repository: the old
set produced 225 of 228 pages and dropped exactly Index, Install and Store; the
anchored set produces 228, and backend/modules still contains only the three
bundled examples and README.
Also adds the check that would have caught it. The existing guard compares the
Dockerfile's COPY paths against the package, and it passed here because the
directory it copies was present — merely emptied. The new one asserts every
tracked file under backend/resources is in the package: that tree is entirely
source that ships, so anything missing from it is a mistake by definition.
Against a package built with the old rules it reports the three files and fails.
|
Important Review skippedAuto reviews are limited based on label configuration. 🏷️ Required labels (at least one) (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository: Mes-Open/OpenMes/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
What shipped broken
Opening Admin → Modules on an installation made from the release package shows:
That is the Inertia resolver failing to find a component, and it is the one screen that uploads and enables a module — the only way to install one on the web build. So the package shipped without the ability to install anything into it.
Why
The rsync rules that keep locally installed modules out of a release were written unanchored:
An rsync pattern without a leading slash matches at any depth, and this repository has a second directory called
modules:Those three files were dropped from every package. Vite then had nothing to compile, so the pages were absent from the bundle, and the resolver fell through to
_MissingPage— which explains the message, and also why it blames a missing feature: from the browser's side that is exactly what it looks like.The fix
Every pattern is anchored to the transfer root, so it means
backend/modulesand nothing else.Verified by running the real rules against this repository:
modules/*)admin/modules/{Index,Install,Store}.jsx/modules/*)Control in the other direction: with the anchored rules,
backend/modules/in the package still contains onlyREADME.mdand the three bundled examples. Nothing private rides along, which was the whole point of the exclusion.The check that was missing
The existing guard compares the Dockerfile's
COPYpaths against the package. It passed here, because the directory it copies was present — merely emptied.This adds a guard with a premise strong enough to be useful: every tracked file under
backend/resourcesmust be in the package. That tree is entirely source that ships, so anything missing from it is a mistake by definition — no allowlist to maintain and no judgement call at review time.Run against a package built with the old rules it names the three files and fails the release; against the anchored rules it reports zero.
Scope
Workflow and changelog only. No application code, so nothing here changes a running installation — but the next package will have a screen the last few did not.