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.
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [mauriceboe/trek](https://github.com/mauriceboe/TREK) | patch | `3.2.0` → `3.2.1` |
---
### Release Notes
<details>
<summary>mauriceboe/TREK (mauriceboe/trek)</summary>
### [`v3.2.1`](https://github.com/mauriceboe/TREK/releases/tag/v3.2.1)
[Compare Source](https://github.com/mauriceboe/TREK/compare/v3.2.0...v3.2.1)
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](https://github.com/mauriceboe/TREK/wiki/Plugins) 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](https://github.com/mauriceboe/TREK/issues/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](https://github.com/mauriceboe/TREK/issues/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](https://github.com/mauriceboe/TREK/issues/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](https://github.com/mauriceboe/TREK/issues/1447), [#​1448](https://github.com/mauriceboe/TREK/issues/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](https://github.com/mauriceboe/TREK/issues/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](https://github.com/mauriceboe/TREK/issues/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:** <https://github.com/mauriceboe/TREK/compare/v3.2.0...v3.2.1>
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTIuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1Mi4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
3.2.0→3.2.1Release Notes
mauriceboe/TREK (mauriceboe/trek)
v3.2.1Compare Source
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.
costs.create)trips.update, metadata C/U/DplaceDetailProvider,warningProvider(+invoke.hooktransport)events:subscribe(name + trip only)db:meta(no schema fork)sidebar/hero, pagestrip-pagetype, +place-detailslotwindow.trek.ui, typed SDK, Cookbook + example.zip, registry force-refreshPlugin platform
*_editpermission (#1429)trip-pageplugins (a tab inside every trip) and aplace-detailwidget slotplaceDetailProviderandwarningProvider, also atGET /api/place-details/:idand/api/trip-warnings/:idevents:subscribe) — react toplace:*,day:*,budget:*,file:*, …db:meta) — per-plugin key/value store on trips/places/daysctx.packing.list/ctx.files.list; costs read + write (get/list/create/update/delete)<!-- trek:ui -->→ tokens, glass, dark-mode, accent, appearance flags,window.trek), native scaffold, themed dev preview, auto-height glassy cardsctxreturns,window.trek.uiDOM helpers, Plugin Cookbook +trip-doctorexample,clack/promptsCLI.zip; force-refresh the registryPlugin security
hook:*grant enforced — implementing a hook isn't enough without the consentpacking.listrespects per-user visibility (#858) — no leaking another member's private itemsBudget & costs
Collections, files & wallet
.pkpassessupported, incl. booking uploads and the files tab (#1447, #1448)Guests
Planner & mobile
Other
Full changelog: https://github.com/mauriceboe/TREK/compare/v3.2.0...v3.2.1
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.