goldnead/statamic-clientrooms
Client rooms for Statamic: give each client a private, gated area of your site to access files, updates, and shared content. Manage rooms, members, and permissions from the control panel and render them on the front end with simple tags.
Architecture fit. This is a Statamic addon (Laravel/PHP) that extends the Control Panel rather than the application runtime. The v0.9.2 change is a presentation-layer contract: the addon now implements settingsNavParent() returning [section, name], which lets the brand-context addon place its settings page as a sub-item under the parent nav entry the package already registers. That is a clean, additive extension point — no service provider rebinding, no middleware, no data model change. It fits the expected Statamic addon shape (nav registration + settings blueprint + views) and stays inside the CP layer, which is the lowest-risk place to integrate.
Integration feasibility. Low effort. The notes explicitly state no migration and no new config key, so a composer version bump is the entire install path. The only conditional is a soft dependency on statamic-brand-context >= 1.16; older versions ignore the method and retain the previous layout. Because the fallback is "ignore and keep working," the package degrades gracefully rather than failing — this is the right pattern for a cross-addon contract in a CMS ecosystem where addon versions drift independently.
Technical risk. Low-to-moderate, concentrated in one area: the coupling is implicit and undocumented at the framework level. settingsNavParent() is a convention-based hook resolved by another addon, not a Statamic core API. Risks are (a) silent layout changes when brand-context changes its resolution order, (b) shared "Addon-Suite" grouping behaviour for addons without their own nav, which changes information architecture for users who install the suite, and (c) no automated way for us to detect a mismatch — a version constraint alone won't surface a wrong nav parent, only a visually wrong CP. The release is pre-1.0 (v0.9.x), so semver does not yet guarantee API stability.
Key questions.
settingsNavParent() defined and versioned by statamic-brand-context, or is it an informal convention that could be renamed without a major bump?composer.json — ^1.16, >=1.16, or unconstrained?[section, name] value static, or does it depend on user permissions / CP language files (the German string "Einstellungen" in the notes suggests i18n)?Stack fit. Requires a Laravel host running Statamic with a Control Panel in use. No queue workers, no storage, no external services, no PHP extension requirements changed. It is a pure CP-surface dependency, so it does not constrain the host application's PHP version, database, or deploy topology beyond what Statamic already requires. Confirm the host's Statamic major (v4 vs v5) before adopting, as addon nav registration APIs differ between them.
Migration path. Trivial by design: bump the composer constraint, run composer update, clear Statamic's view/contents caches (php please cache:clear or the CP utility), and verify the CP nav. No migration, no config publish, no data backfill. Rollback is a composer constraint revert — state risk is effectively zero because nothing is persisted.
Compatibility. Two axes to pin:
statamic-brand-context version. Below 1.16 the new method is inert (safe). At or above 1.16, the addon's settings move under its own nav entry and any sibling addons without nav entries get folded into a shared "Addon-Suite" page. This second effect touches addons we may not own, so the visual outcome depends on the whole installed addon set, not just this package.Sequencing.
statamic-brand-context to >= 1.16 first (or confirm it is already there), otherwise v0.9.2 delivers no visible change.Maintenance. Near-zero steady state: no migrations to re-run, no config to drift, no cron or queue surface. The ongoing cost is dependency-tracking — this package now has a meaningful version relationship with brand-context, so those two should be upgraded as a pair in the maintenance calendar rather than independently.
Support. Anticipate a small, specific class of tickets: "my settings page moved" and "my other addon's settings are now grouped under Addon-Suite." Both are cosmetic but highly visible to editors, and both are caused by an upgrade the user may not know they took. Pre-brief the support desk and the CP documentation owner; a one-paragraph release note plus a screenshot of the new nav is sufficient.
Scaling. No runtime scaling dimension — the change affects CP rendering only, and the nav resolution is a per-request constant. It does not touch content delivery, caching, or query volume. Editor-count scaling is unaffected. The only scaling-adjacent concern is addon-count scaling: the more addons installed, the more the shared "Addon-Suite" grouping collapses into a long undifferentiated list, which is a usability ceiling worth watching past roughly a dozen addons.
Failure modes.
Ramp-up. Minimal engineering ramp-up — a mid-level Laravel developer can perform and validate the upgrade in under an hour, most of it staging verification. The real ramp-up is on the product side: whoever owns the CP information architecture needs to sign off on the new nav grouping, because the change alters where editors find settings across the whole addon suite, not just this package. Budget a short design review with the editorial lead before production rollout, and treat v0.9.2 as a UI-affecting change despite its small diff. Given the pre-1.0 version and the implicit cross-addon contract, plan to re-review this assessment at v1.0, when the nav API should be considered frozen.
How can I help you explore Laravel packages today?