Skip to content

Releases: nash87/parkhub-php

v5.1.0

07 May 00:27
959981d

Choose a tag to compare

What's Changed

🔒 Security

  • fix: reconcile PHP release preflight and admin updates by @nash87 in #446
  • build(deps): bump the actions group with 3 updates by @dependabot[bot] in #445

📚 Documentation

  • test: full-route v5 design-smoke gate + mobile shell + admin polish by @nash87 in #450
  • docs: refresh ParkHub handoff status + nix gate progress by @nash87 in #451

🤖 CI

  • ci: default PHP VEX metadata to GitHub by @nash87 in #448
  • ci: preserve fop local failure status by @nash87 in #449
  • build(deps-dev): bump vite from 7.3.2 to 8.0.10 in /parkhub-web by @dependabot[bot] in #444
  • ci: widen diff-aware design-smoke gate regex by @nash87 in #452
  • ci: Nix/Garnix baseline + flake.lock for release-grade reproducibility by @nash87 in #453
  • ci: switch nix-contract gate to --strict (--require-lock) by @nash87 in #455
  • ci: port image-scan lefthook gate (fleet parity with fop-web-ui#171, fop-web-backend#62) by @nash87 in #456
  • fix(ci): parameterize NODE_BASE+WOLFI_BASE build-args for cloud CI by @nash87 in #457
  • fix(ci): use real Docker Hub digest for node:22-slim by @nash87 in #458

📦 Dependencies

  • build(deps): bump the npm-tooling-deps group with 4 updates by @dependabot[bot] in #441
  • build(deps-dev): bump globals from 16.5.0 to 17.6.0 by @dependabot[bot] in #442
  • build(deps): bump the npm-deps group in /parkhub-web with 6 updates by @dependabot[bot] in #443

Other Changes

  • ci: refresh PHP Gitea workflow mirror host by @nash87 in #447
  • feat(image-security): SOTA-2026 Wolfi runtime rebase (closes T-2774, T-2749) by @nash87 in #454
  • chore(release): bump to v5.1.0 by @nash87 in #459

Full Changelog: v5.0.4...v5.1.0

v5.0.3

29 Apr 05:24
5a4d380

Choose a tag to compare

What's Changed

  • chore(release): bump version to 5.0.3 + version-drift guards by @nash87 in #398
  • fix(ci): fop-local-ci.sh auto-fallback to direct mode when fop missing by @nash87 in #399
  • fix(ci): define skip_step in fop-local-ci.sh (was undefined → exit 127 on GHA) by @nash87 in #401

Full Changelog: v5.0.2...v5.0.3

ParkHub PHP v5.0.1

26 Apr 08:32
43c08f3

Choose a tag to compare

What's Changed

  • ci(deploy): unblock Render demo deploy by @nash87 in #327
  • feat(i18n): translate v5 onboarding tour — 10 locales + tour.* namespace by @nash87 in #328
  • feat(ui): port Buchungen, Fahrzeuge, Credits to v5 + TanStack Query by @nash87 in #329
  • sync(tests+a11y): cherry-pick Gitea fixes for parity with parkhub-rust by @nash87 in #330
  • feat(v5): Wave 2 — port Buchen/Kalender/Karte/Profil main screens by @nash87 in #331
  • fix(v5): check ApiResponse.success across all mutations + queries by @nash87 in #332
  • feat(v5): Wave 3 — port 7 Fleet screens by @nash87 in #333
  • build(deps): bump library/composer from b148074 to dc292c5 by @dependabot[bot] in #334
  • fix(v5): calendar uses from/to params + Buchen guards invalid datetime by @nash87 in #335
  • feat(v5): Wave 4+5 — final 11 admin screens (26/26 parity) by @nash87 in #337
  • fix(v5): mirror rust #374 fleet-screen fixes to PHP Wave 3 by @nash87 in #336
  • fix(v5): admin-nav screens use admin APIs (mirror rust #376) by @nash87 in #338
  • feat(v5): upgrade Analytics bar chart to uPlot canvas by @nash87 in #339
  • perf(v5): lazy-load UPlotChart on Analytics to protect LCP budget by @nash87 in #340
  • fix(v5): lazy-load UPlotChart (mirror #379 fix) by @nash87 in #341
  • test(analytics): regression guard for uPlot data-ref stability by @nash87 in #342
  • test(v5): 100% happy-path + visual coverage for 26 screens (T-1948) by @nash87 in #343
  • chore(v5): retire PlaceholderV5 + add Playwright mobile-chrome project by @nash87 in #344
  • test(a11y): axe-core audit + WCAG 2.1 AA fixes for v5 (T-1974) by @nash87 in #346
  • feat(v5): Tier-1 2026 UX quick-wins (T-1977) by @nash87 in #347
  • chore(storybook): catalog v5 primitives with Storybook 10 + a11y + test-runner by @nash87 in #345
  • build(deps): bump postcss from 8.5.8 to 8.5.10 in /resources/js in the npm_and_yarn group across 1 directory by @dependabot[bot] in #349
  • build(deps): bump postcss from 8.5.9 to 8.5.10 in /parkhub-web by @dependabot[bot] in #350
  • docs(marketing): v5 design showcase in README by @nash87 in #351
  • test(a11y): Dashboard/Profil regression guards + PWA OfflineIndicator wire-up by @nash87 in #352
  • feat: local-first CI workflow (Lefthook + drift gates + Biome) by @nash87 in #356
  • feat(ux): Tier-2 polish — conflict check, iCal, PDF export, undo, filter persist by @nash87 in #348
  • feat(v5): full customization framework — settings + sidebar variants + density + fonts + feature toggles by @nash87 in #353
  • feat(v5/assistent): Lokal badge + Vorschläge eyebrow + privacy footer by @nash87 in #354
  • build(deps): bump the npm-tooling-deps group with 6 updates by @dependabot[bot] in #357
  • build(deps-dev): bump tailwindcss from 3.4.19 to 4.2.4 by @dependabot[bot] in #361
  • build(deps-dev): bump @types/node from 24.10.13 to 25.6.0 by @dependabot[bot] in #359
  • build(deps): bump the actions group with 5 updates by @dependabot[bot] in #363
  • ci(codeql): add actions language analysis by @nash87 in #364
  • ci(deps): pin past tailwind 4.2.4 vite regression by @nash87 in #366
  • build(deps): bump @tanstack/react-query from 5.100.1 to 5.100.3 in the npm-tooling-deps group by @dependabot[bot] in #368
  • fix(branding): remove KI/AI from v5 user-facing strings by @nash87 in #355
  • fix(deps): override uuid to ^14.0.0 (close GHSA-w5hq-g745-h8pq) by @nash87 in #367
  • ci(security): swap trufflehog (AGPL) for gitleaks (MIT) by @nash87 in #365
  • fix(v5/policies): only re-init draft on activeId change by @nash87 in #370
  • fix(v5/analytics): wait for lazy UPlotChart canvases (mirrors parkhub-rust) by @nash87 in #376
  • ci(deps): Dependabot cooldown + tailwind 4.2.3 ignore + align github-actions group with rust by @nash87 in #371
  • docs: post-merge-train drift cleanup by @nash87 in #372
  • docs(web): replace parkhub-web/README boilerplate with real overview by @nash87 in #373
  • chore(web): install @astrojs/check, exclude stories from tsc (Phase 1) by @nash87 in #374
  • test(api/client): kill 87 tsc errors via firstCall/nthCall helpers (Phase 2) by @nash87 in #375
  • test(hooks/useWebSocket): kill 42 tsc errors via wsAt() helper (Phase 3) by @nash87 in #377
  • ci(lefthook): close silent-pass holes (lint-ts, typecheck-ts, vitest) by @nash87 in #378
  • test(views): kill 37 tsc errors in Visitors+AdminUpdates (Phase 4a) by @nash87 in #379
  • test(views,components): -41 tsc errors in admin/EV test suites (Phase 4b) by @nash87 in #380
  • chore(version): bump to 4.14.0 — parkhub-rust parity baseline by @nash87 in #381
  • test(web): Phase 4c — kill 8 file-level tsc errors with mixed patterns by @nash87 in #382
  • chore(web): bump parkhub-web/package.json to 4.14.0 (parity with VERSION) by @nash87 in #383
  • chore(version): bump to 4.15.0 — parkhub-rust 4.15.0 parity catch-up by @nash87 in #384
  • ci: pilot fop local-first PR attestation by @nash87 in #385
  • refactor(web): mirror useDraftFromActive hook (parkhub-rust parity) by @nash87 in #386
  • ci(security): add typos + zizmor as advisory CI checks (Wave 5c) by @nash87 in #387
  • release: cut v5.0.1 by @nash87 in #388

Full Changelog: v5.0.0...v5.0.1

ParkHub v5.0.0 — Design System

23 Apr 09:26
v5.0.0
b3d9599

Choose a tag to compare

ParkHub v5.0.0 — Design System

The v5 release of ParkHub. New flagship design system, 3-step transparency onboarding, global command palette.

Highlights

🎨 v5 Design System

  • 3 canonical themes in OKLCH: Marble Light (flagship default), Marble Dark, Void (dark-first editorial). One <html> attribute flip re-skins the entire app — no remount.
  • Shared primitives: Badge, Card, StatCard, SectionLabel, Row, Toggle (role=switch, ARIA), LiveDot, Divider, V5Icon, HelpTip. All tokenized, all accessible, 40+ unit tests.
  • Self-hosted fonts: Inter Variable (all weights in one ~48KB woff2) + DM Mono. CSP-safe — no external font fetches.
  • Bento Dashboard (/v5): reference implementation with animated KPIs via @number-flow/react, live zone heatmap, quick-actions.

⌘K Command Palette

  • Powered by cmdk — the 2026 standard (Linear, Vercel).
  • Works on every route (not just /v5). Maps v5 nav → existing v4 paths via react-router.
  • Sections grouped by main / fleet / admin, fuzzy search across label/number/id.
  • ESC closes, keyboard focus and ARIA delegated to cmdk.

🎓 3-Step Onboarding Tour (/tour)

Post-Welcome, pre-Login experience that builds trust before first use:

  1. Privacy & Data — self-hosted, TLS 1.3 + Argon2, GDPR Art. 15/17/20 as self-service, data minimization.
  2. Feature toggles — 8 modules (Bookings = required, Credits/EV/Swap/Waitlist/Guest Pass/Analytics/AI opt-in). Preferences saved locally; users change anytime.
  3. Trust & Compliance — 2160+ tests, GDPR, TLS 1.3, Lighthouse CI, OpenAPI 99% + drift-gate, audit-log badges.

Skip and Back both respected. Standalone mount — wraps own V5ThemeProvider + toast provider.

💡 HelpTip primitive

Inline contextual help — small "i" button that reveals a popover with explanatory text. Escape / click-outside closes, role=tooltip, aria-expanded/controls, focus restore. Used throughout the onboarding tour, available for any surface.

New 2026 dependencies

Dep Purpose
cmdk ⌘K command palette primitive
@tanstack/react-query Server-state layer (wired at app root)
@number-flow/react Counter animations for KPIs
@fontsource-variable/inter + @fontsource/dm-mono Self-hosted fonts

Quality gates

  • 2160/2160 unit + integration tests pass (parkhub-php)
  • Lighthouse CI green — LCP under 3.5s budget via Inter Variable
  • All existing CI checks green (Frontend builds, Backend tests, Integration tests, E2E smoke, CodeQL, PHPStan, OpenAPI drift, Security, Secret scan, Composer/npm Audit)

Migration notes

  • Marble is now the default theme. Existing users with classic or any other theme persisted in localStorage keep their preference. Fresh installs land on Marble.
  • /v5 coexists with the main app — no behavior change for existing routes.
  • Navigation never dead-ends: placeholder screens in the v5 shell link back to their v4 routes during the per-screen migration.

What's next (follow-ups)

  • 25 remaining screens ported to v5 primitives (Buchungen, Buchen, Karte, EV-Laden, etc.) — one PR per screen, all consuming the primitives established here.
  • Tour strings translated to all 10 locales (currently DE with i18n fallback).
  • HelpTip woven into existing forms (Book, Settings, Admin).
  • parkhub-rust ThemeContext registry: add Marble/Void as first-class entries (required for Marble-default flip there).

v4.13.4

21 Apr 05:19
v4.13.4
c92cdb2

Choose a tag to compare

Full Changelog: v4.13.3...v4.13.4

v4.12.0

16 Apr 20:47

Choose a tag to compare

Full Changelog: v4.11.0...v4.12.0

v4.11.0

16 Apr 11:00

Choose a tag to compare

Full Changelog: v4.10.0...v4.11.0

v4.10.0

15 Apr 21:04

Choose a tag to compare

Full Changelog: v4.9.0...v4.10.0

v4.9.0

13 Apr 16:15

Choose a tag to compare

Full Changelog: v4.8.0...v4.9.0

v4.8.0

13 Apr 01:43

Choose a tag to compare

Full Changelog: v4.7.0...v4.8.0

What's Changed

  • chore(deps): bump the npm-tooling-minor-patch group with 8 updates by @dependabot[bot] in #294

Full Changelog: v4.7.0...v4.8.0