Skip to content

v3.2.1

Latest

Choose a tag to compare

@mauriceboe mauriceboe released this 05 Jul 22:36
f4d1c0b

Plugins go from read-mostly observers to a real extension platform: they can now write to the itinerary, contribute native data, react to core events, add whole planner tabs, and match TREK's look — all behind the same sandboxed, permission-gated boundary. Plus budget, collections, files, guest and mobile fixes. No breaking changes — every new capability is opt-in and admin-consented; existing plugins keep working.

Plugins: 3.2.0 vs 3.2.1

Please consult the wiki for more information.

Capability 3.2.0 3.2.1
Usable permissions ~8 ~18
Write / mutate methods 1 (costs.create) ~16 — costs C/U/D, places C/U/D, days C/U/D, itinerary assign/unassign, trips.update, metadata C/U/D
Provider hooks 0 (declared but dead) 2 live — placeDetailProvider, warningProvider (+ invoke.hook transport)
Event subscriptions events:subscribe (name + trip only)
Read subsystems trips, costs, users + packing, files
Entity metadata db:meta (no schema fork)
UI extension points slots sidebar/hero, pages + trip-page type, + place-detail slot
Design & DX minimal UI design kit, window.trek.ui, typed SDK, Cookbook + example
Distribution registry install + sideload .zip, registry force-refresh
Plugin dependency Inter plugin dependencies (for potential plugin libraries)
Addon dependency Ensure specific addon is enabled

Plugin platform

  • Permission-gated planner write APIs (places, days, itinerary, trips), each gated by the acting user's own *_edit permission (#1429)
  • trip-page plugins (a tab inside every trip) and a place-detail widget slot
  • Provider hooks wired: placeDetailProvider and warningProvider, also at GET /api/place-details/:id and /api/trip-warnings/:id
  • Core event subscriptions (events:subscribe) — react to place:*, day:*, budget:*, file:*, …
  • Entity metadata (db:meta) — per-plugin key/value store on trips/places/days
  • Broader reads: ctx.packing.list / ctx.files.list; costs read + write (get/list/create/update/delete)
  • TREK UI design kit (<!-- trek:ui --> → tokens, glass, dark-mode, accent, appearance flags, window.trek), native scaffold, themed dev preview, auto-height glassy cards
  • Author DX: typed ctx returns, window.trek.ui DOM helpers, Plugin Cookbook + trip-doctor example, clack/prompts CLI
  • Sideload a plugin by uploading a .zip; force-refresh the registry

Plugin security

  • Open redirect prevented in the plugin route proxy
  • hook:* grant enforced — implementing a hook isn't enough without the consent
  • packing.list respects per-user visibility (#858) — no leaking another member's private items
  • IPC parent/child sealed, arbitrary API access blocked, full capability surface hardened + tested

Budget & costs

  • FX rate frozen on every cost and settlement write, so a later rate drift can't re-open a settled position (#1445)
  • New "Outstanding amount" card

Collections, files & wallet

  • Editing a saved place no longer resets its status to "idea"
  • Save picker shows above the mobile place detail
  • Apple Wallet .pkpasses supported, incl. booking uploads and the files tab (#1447, #1448)

Guests

  • Guest names are per-trip again — the same friend can be "Jake" on two trips instead of being auto-renamed to "Jake 2" (#1446)

Planner & mobile

  • Drag & drop disabled on mobile so the places list scrolls
  • Day-plan collapse state persists after closing the page
  • Remove-from-day button is icon-only on mobile (#1432)

Other

  • Keep stored settings when an update fails; Unsplash API key usage fixed
  • Translation fixes (Vietnamese "Disabled", remaining new keys across 22 locales)
  • Added a Code of Conduct

Full changelog: v3.2.0...v3.2.1