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.
This release is a small but developer-visible change to how the addon places its Control Panel settings. Start by checking two things:
statamic-brand-context version you have. Run composer show (or inspect composer.lock) for the package providing brand context. On 1.16+ the addon’s settings appear as the sub-item “Einstellungen” under the addon’s own CP navigation entry. On older versions the previous layout is retained.settingsNavParent() in the addon’s service provider / addon class. It returns a [section, name] tuple pointing at the addon’s own CP nav entry, which is what brand-context uses to nest the settings page.First use case: after upgrading, open the Control Panel and confirm the settings page is reachable in the expected place. If you run multiple addons from the same suite, check whether they should each declare their own settingsNavParent() or share the single “Addon-Suite” page under Settings.
No migration and no new config key are required, so upgrading is a composer update plus a visual check of the CP navigation.
Declaring your own settings parent. If the addon owns a CP navigation entry, expose it so settings nest correctly:
public function settingsNavParent(): array
{
return ['addons', 'my-addon']; // [section, name] of the addon's own nav entry
}
The exact section/name values must match the navigation entry the addon registers; brand-context resolves the tuple to that entry and appends the settings sub-item.
Sharing the suite page. Addons without their own CP navigation should not declare a parent. They fall through to the shared “Addon-Suite” page under Settings, which keeps related addon configuration in one place instead of scattering pages.
Version-aware behaviour. Because older brand-context versions ignore settingsNavParent(), you can ship the method unconditionally and let the host decide. This avoids version_compare branching in your addon and keeps the upgrade path non-breaking. If you need to assert the layout in tests, gate expectations on the brand-context version rather than on your own addon version.
Suite-level integration. When several addons in a suite are installed together, standardise on one of the two patterns: every addon declares its own parent (settings live next to each addon’s nav), or none do (one consolidated Addon-Suite page). Mixing the two produces a split settings experience, so decide per suite and document it.
[section, name] has to match an existing CP navigation entry. A typo leaves the settings page orphaned or back on the shared page — verify the values against your nav registration.settingsNavParent() is the mechanism for joining “Addon-Suite”. If you later add your own nav entry, remember to declare the parent or your settings will stay on the shared page.settingsNavParent() is the only hook introduced here. Keep it side-effect free and cheap — it may be called during nav assembly.How can I help you explore Laravel packages today?