Skip to content

v0.7.3

Choose a tag to compare

@jaspertey jaspertey released this 30 Oct 13:09
1c154db

Upgrading

  • Run kit:update plan|apply for core (re-pinned sha256:909d632f…822e → sha256:9a290690…555b): feature.json adds class-variance-authority and tw-animate-css to requires.npm. No stub changes.
  • The dev floor for tey/standards is now ^0.11.52, the first release that reads an inventory's features block.

Added

  • CI guards the adoption inventory's completeness (contributor-facing). composer test:adoption-completeness (tests/AdoptionCompletenessCheck.php, in the same CI job as the other adoption checks) fails when a page, layout or shell component a feature installs under resources/js/pages is named by no surfaces.json row's uses.files, uses.components or uses.imports and has no entry in the new resources/adoption/internal.json, and when a row with handRolled signals has no adoption fixture expecting it hand-rolled (or an unproven entry there). Stale internal.json entries fail too, and every entry needs a reason. Rows adopted in no fixture are listed as a note. To pass, uses.files now also names the shell partials (UserMenu, WorkspaceSwitcher, Breadcrumbs, GlobalSearch, UserAvatar, Wordmark, FocusShell under shell.workspace; GuestShell and Public/Markdown under shell.public), the remaining auth screens (ResetPassword, ConfirmPassword, VerifyEmail), the dashboard partials, Sections/Index, Search, the placeholder, error and no-workspace pages (workspace.pages), Settings/Delete (workspace.settings) and the People pages and invitation page (access.members); internal.json lists the sample notes pages and the welcome steps. New fixtures pin a hand-rolled outcome for the 19 rows that had none: public-shell-hand-rolled, split-hand-rolled, search-hand-rolled, action-bar-hand-rolled, menu-hand-rolled, modal-hand-rolled, rich-text-hand-rolled, list-hand-rolled, badge-hand-rolled, avatar-hand-rolled, alert-hand-rolled, activity-hand-rolled, timezone-hand-rolled, auth-hand-rolled, passkeys-hand-rolled, teams-hand-rolled (workspace.pages, access.members, workspaces.tenancy) and mcp-hand-rolled. No stub changes, no re-pin.

Changed

  • A workspace without the dashboard opens its first navigation page. With workspace.dashboard off, the workspace root (/@{workspace}, and / in the short form) was a 404. It now redirects (302) to the first primary navigation page the viewer may open, or to /me/workspaces when there is none. At the kit's home, a person with several workspaces still goes to the root of the one they last used, so with the dashboard off they land on its first page instead of the workspace list (docs/dashboard.md › Without a dashboard). Give your page order < -10 to make it first. Only the capability being off redirects: a role that lacks dashboard.read, a non-member and a JSON client are refused as before. An accepted invitation's landing uses the same lookup, unchanged. No stub changes, no re-pin. composer test:workspace-root (new, in CI) covers it; test:capability-guard now expects the root's redirect.

Fixed

  • standards:adoption no longer reads the kit's own dependencies and host UI as gaps. resources/adoption/surfaces.json now carries a top-level features object: for each feature with requires.npm or requires.host_ui, its npm package names and its host UI primitives, exactly as its feature.json lists them. tey/standards 0.11.52 treats those packages as the kit's (never a package.json gap or a third-party import) and those components/ui files as kit-owned (never an app component, gap or hand-rolled hit) for each installed feature. The schema allows the field, and the inventory test fails when it drifts from the feature.json files.

  • core declares every npm package its components need. Kit/Feedback/alertVariants.ts (like the shadcn button it pairs with) imports class-variance-authority, and the kit's menus, toasts and select animate with tw-animate-css utilities (animate-in, fade-in-0, zoom-in-95); neither was in requires.npm, so a host without them got no plan attention for it. Both are now required, at ^0.7.1 and ^1.4.0.

  • The adoption inventory reads hand-rolled account and settings pages wherever they live. account.pages and workspace.settings applied only when a route URI said settings, so an app serving its own account page at /account, or workspace settings at /w/{workspace}/deletion, read n/a. Two facts computed from file names close that: has-account-pages (pages under Account/, Me/, Profile/, Security/, Preferences/, Settings/{Account,Profile,Security,Password,Preferences}/, and *AccountSettings*, *ProfileSettings*, *UserSettings*, *UserPreferences* pages) and has-workspace-settings-pages (Teams/Show.vue, Team*/Settings/, Workspace*/Edit, Workspace*/Deletion/, Organisation/Organization settings, Settings/Workspace*, Settings/Team*, and *TeamSettings*, *WorkspaceSettings*, *OrganizationSettings* pages). Both read inside tey/mod module page folders too, and never flag the kit's own Workspace/Account/** and Workspace/Settings/** pages or components/ui/**. A domain component such as SlideSettings.vue matches none of them. account.pages also counts the kit's Password and Delete pages as adoption.

  • New surfaces: settings.frame and mcp.connections. settings.frame is the account and workspace settings frame (Workspace/Account/Layout.vue, Workspace/Settings/Layout.vue); an app's own Account/Layout.vue, Settings/Layout.vue, Settings/Index or layouts/settings/** reads hand-rolled. mcp.connections is the AI assistants page (Workspace/Settings/Connections/Page.vue); *Connection*, *ConnectedApp*, *Assistant* and *Token* pages under Settings/, Account/, Profile/ or Me/, ConnectedApp*/, ApiTokens/ and Jetstream's API/ pages, and an app controller, view model, action or Livewire class referencing Passport's Token/TokenRepository or Sanctum's PersonalAccessToken read hand-rolled.

  • platform.timezone flags an app's own timezone picker. A *Timezone*.vue outside the kit's components and Welcome timezone pages reads hand-rolled. The kit ships no passkey management page (only the PasskeyOffer), so auth.passkeys is unchanged.

The fixtures account-hand-rolled, account-kit-installed and slide-settings-domain pin these outcomes. No stub changes, no re-pin.


What's Changed

  • Declare feature npm and host UI deps in the adoption inventory by @jaspertey in #465
  • Read hand-rolled account and settings pages in the adoption inventory by @jaspertey in #468
  • Guard the adoption inventory's completeness in CI by @jaspertey in #470
  • Open the first navigation page at a workspace root without a dashboard by @jaspertey in #457
  • Release v0.7.3 by @jaspertey in #473

Full Changelog: v0.7.2...v0.7.3