⚠️ OpenSpec-managed issue — this content is automatically synced
from the openspec/ directory. Manual edits will be overwritten on next sync.
Artifacts
Specs
Tasks
Design
See design.md for technical design details.
Synced from openspec/changes/openregister-leaf-integrations by OpenSpec workflow
App: launchpad
Artifacts
Specs
Tasks
lib/Settings/register.d/dashboard-talk-leaf.jsonwith the fleet overlay shape:{"components": {"schemas": {"Dashboard": {"configuration": {"linkedTypes": ["talk"]}}}}(mirror larpingapp'sregister.d/player-to-contacts-leaf.json)lib/Settings/launchpad_register.json; verify withgit diff --statthat the base register file is unchangedocc app:enable launchpad(or the register repair step), fetch the Dashboard schema from OpenRegister and assertconfiguration.linkedTypes == ["talk"]. The register json itself warns that the importer can silently reject a schema — check the imported schema, not the file.type === 'group_shared'OR the dashboard has active shares (via the existing shares data fromGET /api/dashboard/{id}/shares) ORsharedWithis non-emptyPermissionService::canViewDashboard()(directly or via the object-level guard OpenRegister applies); document the resolved chain in the code comment at the mount pointdashboardShareApi#destroy,dashboardShareApi#revokeForRecipient) ends discussion access for the revoked userappinfo/routes.phpandlib/Controller/diff must be empty for this changecomposer check:strictand the hydra gates; the change must not introduce findingsDesign
See design.md for technical design details.
Synced from
openspec/changes/openregister-leaf-integrationsby OpenSpec workflowApp:
launchpad