Skip to content

fix(release): stop the package from stripping the Modules admin screen - #323

Merged
jakub-przepiora merged 1 commit into
developfrom
fix/release-package-strips-modules-admin-screen
Sep 28, 2026
Merged

jakub-przepiora merged 1 commit into
developfrom
fix/release-package-strips-modules-admin-screen

Conversation

@jakub-przepiora

Copy link
Copy Markdown
Contributor

What shipped broken

Opening Admin → Modules on an installation made from the release package shows:

Page unavailable — This screen is not part of the installed system. It usually means the feature it belongs to is not installed or has been turned off.
admin/modules/Index

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:

--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/{Index,Install,Store}.jsx

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/modules and nothing else.

Verified by running the real rules against this repository:

Rules Pages in package Dropped
current (modules/*) 225 of 228 admin/modules/{Index,Install,Store}.jsx
anchored (/modules/*) 228 of 228 —

Control in the other direction: with the anchored rules, backend/modules/ in the package still contains only README.md and 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 COPY paths 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/resources must 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.

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.
@coderabbitai

coderabbitai Bot commented Sep 28, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one) (1)
  • cla-signed

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository: Mes-Open/OpenMes/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: f637552c-dec7-43d9-a794-9f02ab969cbe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@jakub-przepiora
jakub-przepiora merged commit 64453b3 into develop Sep 28, 2026
2 of 3 checks passed
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