Skip to content

feat: upgrade to Lattice 0.59 and bump all dependencies - #6

Merged
bambamboole merged 1 commit into
mainfrom
feat/lattice-0.59
Aug 19, 2026
Merged

feat: upgrade to Lattice 0.59 and bump all dependencies#6
bambamboole merged 1 commit into
mainfrom
feat/lattice-0.59

Conversation

@bambamboole

Copy link
Copy Markdown
Contributor

Upgrades the starter kit from Lattice 0.34 to 0.59 and brings every dependency to its latest compatible version.

Lattice migration (0.35 → 0.59 breaking changes)

  • Namespace move off the pre-split Lattice\Lattice\* onto the extracted package namespaces (Lattice\Core, Lattice\Ui, Lattice\Form, Lattice\Table, Lattice\Actions) across 43 files
  • PageContainer is gone — the PageWidth::Full default matches the old ::Default, so the attribute parameter is dropped on all pages
  • openModal() takes a Modal instance now: the two-factor setup modal is shipped from the enable action instead of sitting in the page tree; covered by a new regression test asserting the open-modal effect
  • Form handlers return Effects::respond()->toast() (the FormDefinition::toast() helper was removed)
  • labelAction() takes a component — the forgot-password link is a Link::make()
  • JS: createPlugin replaced by a plain object satisfies Plugin; Button/Input/IconRenderer/useT import from @lattice-php/ui; ComponentProps augmentation targets @lattice-php/core; @lattice-php/core and @lattice-php/ui added as direct npm deps
  • Config: new context.inherited_keys and frontend.plugins keys, typescript.module@lattice-php/core; boost.json gains the lattice-closures skill

Dependency bumps

  • Pest 4 → 5 (PHPUnit 13), TypeScript 5.9 → 6.0 (tsconfig drops the deprecated baseUrl), @vitejs/plugin-react 5 → 6, @laravel/passkeys 0.2 → 0.4, CI node 22 → 24, latest minors everywhere else (Inertia 3.7, Vite 8.2, Tailwind 4.3.3, oxlint/oxfmt, Playwright)
  • Deliberately held back: TypeScript 7 (native port; the Lattice monorepo pins ^6.0.3) and @types/node at ^24 to match the CI node version

Verification

tsc --noEmit, Pint, PHPStan, the Vite build, and the full Pest suite (72 tests incl. the 4 browser tests) all pass; composer outdated --direct is clean.

Migrate off the pre-split Lattice\Lattice namespace onto the extracted
package namespaces (Lattice\Core, Lattice\Ui, Lattice\Form,
Lattice\Table, Lattice\Actions) and adopt the 0.35-0.59 breaking changes:

- AsPage container: PageContainer is gone; the PageWidth::Full default
  matches the old behaviour, so the parameter is dropped
- openModal() takes a Modal instance now; the two-factor setup modal is
  shipped from the enable action instead of sitting in the page tree
- form handlers return Effects::respond()->toast() instead of the removed
  FormDefinition::toast() helper
- labelAction() takes a component, so the forgot-password link is a Link
- JS: createPlugin is a plain object satisfying Plugin; Button/Input/
  IconRenderer/useT now import from @lattice-php/ui; ComponentProps
  augmentation targets @lattice-php/core

Dependency bumps: lattice 0.34 -> 0.59 (composer + npm, plus direct
@lattice-php/core and @lattice-php/ui deps), Pest 4 -> 5 (PHPUnit 13),
TypeScript 5.9 -> 6, @vitejs/plugin-react 5 -> 6, @laravel/passkeys 0.4,
CI node 22 -> 24, and latest minors across the board. tsconfig drops the
TS6-deprecated baseUrl; vite.config uses import.meta.dirname.

Adds a regression test asserting the enable-2FA action ships the
open-modal effect.
@bambamboole
bambamboole merged commit 5b0f8cd into main Aug 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant