goldnead/statamic-certificates
Statamic Certificates is an addon for creating and managing certificates in Statamic. Define templates, issue certificates with unique verification codes, and let recipients validate authenticity through a simple public endpoint, all from the control panel.
Architecture fit This remains a Statamic Control Panel addon shipped as a Laravel/PHP Composer package, with no new runtime architecture introduced since v0.1.4. Two releases are now in scope for this assessment:
settingsNavParent() returning a [section, name] tuple) pointing the addon's settings at its own CP nav entry.statamic-courses ^0.6 is added to the Composer constraint. The release explicitly states nothing the addon reads has changed, so there is no code-path or data-shape delta.Architecturally, v0.1.6 is the more consequential of the two for a TPM even though it is the smaller change in code terms. It converts an implicit assumption ("this addon works alongside statamic-courses") into an explicit, machine-enforced constraint. That is good hygiene — the constraint is now discoverable by Composer rather than by incident — but it also means the addon's installability is now a joint function of two third-party packages rather than one.
Integration feasibility High for both releases; v0.1.6 is again a Composer version bump with no migration, no config key, and no cache-clear step beyond normal autoload refresh.
The integration variable set has grown from one to two:
statamic-brand-context (soft feature gate, from v0.1.4). At >= 1.16 the addon's settings render as the sub-item "Einstellungen" beneath its own CP nav entry; below 1.16 the method is ignored and the prior layout persists. Addons with no nav of their own collapse into a shared "Addon-Suite" page under Settings.statamic-courses (hard constraint, from v0.1.6). Hosts must now resolve to ^0.6 to install this release.The second is the sharper edge: the brand-context gate degrades silently, whereas a Composer constraint fails loudly at composer update. Loud is preferable, but it lands at dependency-resolution time, which is often CI rather than a developer's machine — so the practical failure surfaces as a red pipeline, not a conversation.
Technical risk Low, and unchanged in kind from v0.1.4 — but the risk profile has shifted from presentational to dependency-graph:
statamic-courses ^0.6 can conflict with any other package in the host that requires <0.6, including other addons in the same suite. This is the most likely cause of an install failure and it is entirely outside this package's control.^0.6 was added. Whether that is a widening (previously ^0.5 || ^0.6, now including 0.6), a tightening (previously unconstrained or *, now floored at 0.6), or a replacement of a 0.5-only constraint materially changes the upgrade story — a tightening is a potentially breaking change for hosts on 0.5, while a widening is strictly additive. The release framing implies additive, but it is not stated.Key questions
statamic-courses constraint in v0.1.6 a widening, a tightening, or a replacement of the prior constraint? Is it require or require-dev/suggest?statamic-courses and statamic-brand-context minimums?statamic-brand-context a hard require or an optional suggest/soft dependency? If hard, what is its minimum constraint?settingsNavParent() fail closed (ignore) or fail loudly if the referenced [section, name] entry does not exist?statamic-courses 0.5 vs 0.6 resolution paths?Stack fit
Standard Laravel + Statamic CP stack. No new infrastructure, queue, storage, or external service dependency. The v0.1.6 change touches only composer.json metadata; v0.1.4 touches only the admin surface. Neither affects request-path performance or application domain logic.
Migration path
No data or schema migration for either release. Upgrade path is composer update on this package; nothing to publish, no config keys to add. The one new prerequisite: the host must already resolve, or be able to resolve, statamic-courses ^0.6 — so the effective migration is a two-package co-upgrade where previously it was a one-package bump.
Compatibility
Backward compatible at the code level for both releases; the new nav method is additive and older brand-context releases ignore it. Forward compatibility for the CP layout requires brand-context >= 1.16. v0.1.6 constrains forward install compatibility with statamic-courses: hosts pinned to 0.5 will be unable to install this release, which is a deliberate and correct use of Composer, but should be communicated as a coordinated upgrade rather than a routine patch.
Sequencing
statamic-courses version the host resolves today, and enumerate any other package pinning <0.6 before touching anything.statamic-courses to ^0.6 first, on its own, and verify the host's course functionality is unaffected — this isolates the riskier of the two changes.statamic-brand-context to >= 1.16, then this addon to v0.1.6. This yields the new CP layout and makes the v0.1.4 change observable and testable in one step.Maintenance
Still negligible ongoing cost, with one addition to the release checklist: this addon now participates in a two-package compatibility matrix (statamic-courses 0.6 and statamic-brand-context 1.16). The maintenance burden remains one of awareness rather than effort — future upgrades of either dependency should be paired deliberately rather than left to Composer's resolution order.
Support Two support vectors now, distinguishable by where they surface:
statamic-courses. Almost always another package pinning <0.6, not this addon. Support intake should capture the full composer why-not statamic-courses 0.6 output.Scaling No effect. CP navigation metadata renders for authenticated admin users only and is not on the hot path; cost is constant per admin request regardless of application traffic. The dependency constraint has no runtime footprint at all.
Failure modes
statamic-courses resolution conflict — host or sibling addon pinned to <0.6, blocking install. Loud, caught at CI or deploy, most likely failure mode introduced by v0.1.6.Ramp-up Very low. For a TPM this needs no engineering onboarding beyond a two-line dependency note. The practical ramp-up is for whoever owns the admin release checklist: record both paired constraints (this addon ↔ brand-context 1.16, this addon ↔ statamic-courses 0.6) so future upgrades do not silently revert the CP layout or block installs. Add a standing check that Composer resolution is exercised in CI against the host's real dependency set, so constraint conflicts fail before deploy rather than during it.
How can I help you explore Laravel packages today?