Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
291 commits
Select commit Hold shift + click to select a range
4f5a6bb
fix(planner): clear place search input when modal closes
sy-records Sep 22, 2026
aceb759
fix(planner): closing the place dialog resets the whole search block
mauriceboe Sep 23, 2026
d52154c
fix(maps): amap answers for tip-only places, region-bearing fallback …
pipipiper Sep 23, 2026
6124e0b
fix(maps): amap hours are read whole or not at all, and the tip stash…
mauriceboe Sep 23, 2026
53a422d
fix(roadtrip): other ways come from the router that draws the leg, an…
mauriceboe Sep 23, 2026
e6daed9
fix(roadtrip): the drive between two days can take another way too
mauriceboe Sep 23, 2026
ab3a81a
fix(roadtrip): a booked ferry is driven to, and one without a date sa…
mauriceboe Sep 23, 2026
451e6d2
fix(roadtrip): seat rides and the drive into tomorrow by one rule, an…
mauriceboe Sep 23, 2026
34c1dc7
fix(roadtrip): a drive bent through a via prints its whole length, an…
mauriceboe Sep 23, 2026
e921799
test(roadtrip): mount the phone case of a refused way the way the pho…
mauriceboe Sep 23, 2026
83d088e
fix(roadtrip): a merged drive keeps its first piece ends when a leg c…
mauriceboe Sep 23, 2026
cc5957d
fix(planner): offer trip places in manual transport
hiro-nikaitou Sep 23, 2026
3a67a8e
fix(planner): trip places in every manual location field, never at 0,0
mauriceboe Sep 23, 2026
7fa0434
refactor(planner): the night's hotels are read in shared
mauriceboe Sep 23, 2026
514e2e6
feat(roadtrip): a booked night can stand at both ends of its days
mauriceboe Sep 23, 2026
7e7d13c
feat(roadtrip): a day after a booked night starts at the stay, a day …
mauriceboe Sep 23, 2026
05651ee
docs(wiki): a road trip day can start and end at the stay
mauriceboe Sep 23, 2026
e6e520b
fix(roadtrip): the hotel at the edge of a day stands, drives and read…
mauriceboe Sep 23, 2026
05f533d
fix(roadtrip): a late check-out morning says so, a road driven twice …
mauriceboe Sep 23, 2026
41b14eb
fix(import): a booking the AI reads without its venue is asked for on…
mauriceboe Sep 23, 2026
ae80ad2
fix(immich): a server with a self-signed certificate can be connected…
mauriceboe Sep 23, 2026
8d78c98
fix(dayplan): a moving day with a flight draws no drive from one stay…
mauriceboe Sep 23, 2026
e8ec342
fix(share): the user picked to invite shows in the field before it is…
mauriceboe Sep 23, 2026
0df8218
feat(collections): a saved place keeps its price, website and phone, …
mauriceboe Sep 23, 2026
a910c2a
fix: follow-ups from the review of the price, Immich, moving day and …
mauriceboe Sep 23, 2026
f16698b
fix: an Immich error leaves out Node's advice, a locked save looks lo…
mauriceboe Sep 23, 2026
a1d6348
revert(collections): a saved place carries no price, website or phone…
mauriceboe Sep 23, 2026
b5457d9
fix(planner): a booked hotel stays in the place list when road trip s…
mauriceboe Sep 23, 2026
362b1ee
fix(map): a selected stay is flown to even when no pin stands for it
mauriceboe Sep 23, 2026
2350c3a
fix(places): a website without a scheme no longer blocks saving a place
mauriceboe Sep 23, 2026
1423ba8
fix(places): follow-ups from the review of the schemeless website fix
mauriceboe Sep 23, 2026
436f074
fix(planner): the delete question says plainly what goes with a booke…
mauriceboe Sep 23, 2026
2f6f921
feat(dayplan): a day can be deleted from the reorder dialog, after a …
mauriceboe Sep 23, 2026
b56f335
feat(dayplan): a day can be added with the next date, which extends t…
mauriceboe Sep 23, 2026
1b63285
feat(trips): shortening a trip says first which days go and what is o…
mauriceboe Sep 23, 2026
1639fc6
docs(wiki): deleting and adding days, and what shortening a trip removes
mauriceboe Sep 23, 2026
302101b
fix(dayplan): the delete question names every date and night it changes
mauriceboe Sep 23, 2026
f3ca0b1
test(mobile): the delete-day confirm test takes a free id
mauriceboe Sep 23, 2026
83be759
fix(dayplan): the delete question asks inside the day dialog, and its…
mauriceboe Sep 23, 2026
9547580
fix(dayplan): calmer day dialogs, and the shrink question side by side
mauriceboe Sep 23, 2026
c5ac479
fix(dayplan): sort the trip's dates with an explicit compare
mauriceboe Sep 23, 2026
2330760
fix(docsync): a store picked before the panel settles stays picked
mauriceboe Sep 24, 2026
3062df1
chore(notices): the release notice points at 4.3.2
mauriceboe Sep 24, 2026
e64ade0
fix(roadtrip): a flight day ends at the stay it lands at, and no driv…
mauriceboe Sep 24, 2026
e131580
feat(roadtrip): the ride block and the stay rows read as badges
mauriceboe Sep 24, 2026
8779529
feat(roadtrip): the corridor asks in one line, and a narrow rail stop…
mauriceboe Sep 24, 2026
151e321
chore: bump version to 4.3.2 [skip ci]
github-actions[bot] Sep 24, 2026
4346d7f
feat(help): in-app help center with per-screen guides and pictures
mauriceboe Sep 21, 2026
cd0a80e
feat(help): translate the trip block into all locales
mauriceboe Sep 21, 2026
5584d28
refactor(help): register a screen from one description, and fix the d…
mauriceboe Sep 21, 2026
431eb88
feat(help): pictures and translations for the trip's places column
mauriceboe Sep 21, 2026
72b32c6
docs(wiki): a page for the help center
mauriceboe Sep 21, 2026
1e9b23c
fix(help): the corrected places texts in the other languages too
mauriceboe Sep 21, 2026
1f01447
fix(collab): the expand button on a note showed its own translation key
mauriceboe Sep 21, 2026
d3a9e00
test(help): find the fold toggle inside its own row in the switcher
mauriceboe Sep 21, 2026
cb6aeb7
test(members): stop the location stub from swallowing the request it …
mauriceboe Sep 21, 2026
30a7cfd
feat(help): the English texts for the ten screens of a trip, and four…
mauriceboe Sep 21, 2026
0ed0d98
feat(help): ten more screens of a trip, registered with their guide s…
mauriceboe Sep 21, 2026
1a5a8a9
feat(help): translate the Collab block into all locales
mauriceboe Sep 21, 2026
e7db35b
feat(help): translate the Lists and Bookings blocks into all locales
mauriceboe Sep 21, 2026
3c805e2
feat(help): translate the Costs and Transports blocks into all locales
mauriceboe Sep 21, 2026
821a103
feat(help): translate the Road Trip block, and parity is green again
mauriceboe Sep 22, 2026
d2e3520
fix(help): the corrected sentences in the other languages too
mauriceboe Sep 22, 2026
e9393e9
fix(help): a duplicated trip outlived its guide and broke another screen
mauriceboe Sep 22, 2026
64b1908
fix(help): the locators the whole suite in one database showed up
mauriceboe Sep 22, 2026
f6b2880
fix(help): three more the whole suite showed up
mauriceboe Sep 22, 2026
13017b5
fix(help): the undo guide needs the day it puts a place on to stay open
mauriceboe Sep 22, 2026
05b453b
fix(help): the collection helper belongs beside the scripts, not insi…
mauriceboe Sep 22, 2026
168cd74
fix(help): three the third full run showed up
mauriceboe Sep 22, 2026
dbc369b
fix(help): the kind disc answers to its own label, and so does the ro…
mauriceboe Sep 22, 2026
e8637f7
fix(help): the leg mode lands when the menu closes, not when one icon…
mauriceboe Sep 22, 2026
0f28c92
fix(files): the image lightbox renders through a portal
mauriceboe Sep 22, 2026
b7dcb58
chore(i18n): drop the catalogue entries nothing renders
mauriceboe Sep 22, 2026
33b65ab
fix(i18n): two strings the locales had wrong
mauriceboe Sep 22, 2026
b1528b6
docs(wiki): a link can be edited now
mauriceboe Sep 22, 2026
4185142
feat(help): guides for what TREK talks to, and a seed that follows th…
mauriceboe Sep 22, 2026
c4d436b
feat(help): translate the new guides into all locales
mauriceboe Sep 22, 2026
8aa9e30
feat(help): every picture from one run
mauriceboe Sep 22, 2026
055c3ae
feat(help): readable rings, real documents and imagery in the pictures
mauriceboe Sep 22, 2026
3b05a59
fix(help): the days guide shows deleting a day and adding one with a …
mauriceboe Sep 24, 2026
20e912d
fix(help): the document sync guide speaks for every store, not only N…
mauriceboe Sep 24, 2026
79cd309
feat(login): an OIDC-only instance shows the way to the IdP, not a form
mauriceboe Sep 24, 2026
8906b66
feat(settings): set the Google Maps key through PLACES_API_KEY
mauriceboe Sep 24, 2026
9b843be
feat(i18n): add Azerbaijani (az) translation
shakirgv Sep 24, 2026
33aa1cd
feat(i18n): bring the Azerbaijani translation up to date with dev
mauriceboe Sep 24, 2026
9263421
feat(i18n): add Estonian (et) translation
Jaano Sep 24, 2026
ffa085a
feat(i18n): bring the Estonian translation up to date with dev
mauriceboe Sep 24, 2026
80502dc
feat(i18n): add Slovak (sk) translation
pipozzz Sep 24, 2026
3c036ea
feat(i18n): bring the Slovak translation up to date with dev
mauriceboe Sep 24, 2026
ba9936f
feat(i18n): add Thai (th) translation
chondaen12 Sep 24, 2026
b7f7770
feat(i18n): bring the Thai translation up to date with dev
mauriceboe Sep 24, 2026
bb5c5dc
docs: TREK ships 27 languages now
mauriceboe Sep 24, 2026
196dc12
feat(mobile): place details block in the place editor
pipipiper Sep 22, 2026
7ce3175
feat(settings): every date picker starts its week on the day you pick
mauriceboe Sep 24, 2026
650451b
feat(notifications): Web Push delivers notifications to every device,…
mauriceboe Sep 24, 2026
c7c9ba2
fix(journey): select all takes every photo in the range and imports k…
mauriceboe Sep 24, 2026
1727732
feat(plugins): plugins can add POI categories to the map and answer them
mauriceboe Sep 25, 2026
2a8071f
feat(plugins): search plugins can answer the place search as you type
mauriceboe Sep 25, 2026
5c312a8
feat(packing): print, PDF and Markdown/CSV export of packing lists
mauriceboe Sep 25, 2026
dc60f39
feat(ui): Costs bar like the other tabs, desktop packing list in the …
mauriceboe Sep 25, 2026
1f79776
feat(todo): To-Do in the look of the packing list, detail pane always…
mauriceboe Sep 25, 2026
8864edd
feat(budget): link existing expenses to bookings and places, several …
mauriceboe Sep 25, 2026
287b848
fix(budget): show the link controls on an explicit null check
mauriceboe Sep 25, 2026
0887f25
fix(ssrf): connect past a link-local DNS record instead of refusing t…
mauriceboe Sep 25, 2026
26ab4a5
fix(db): keep SQLite temp files in memory so trips can be deleted (#2…
mauriceboe Sep 25, 2026
bea3af4
fix(pwa): recover from a dead chunk and a broken precache after an up…
mauriceboe Sep 25, 2026
0a3a993
fix(share): only call a share link expired when the server says so (#…
mauriceboe Sep 25, 2026
30a3f66
fix(map): open a place from its pin after the map was dragged (#2504)
mauriceboe Sep 25, 2026
3c7f6e6
fix(mobile): pick the plan timeline's hotel legs by what the route dr…
mauriceboe Sep 25, 2026
a0952bd
fix(mobile): show the drive from a flight's arrival airport in the pl…
mauriceboe Sep 25, 2026
cf5920e
fix(atlas): a place that moves no longer keeps its old country (#2527)
mauriceboe Sep 25, 2026
5f77c2c
fix(notifications): show the header logo in Gmail and Outlook (#2507)
mauriceboe Sep 25, 2026
06bee95
fix(costs): read an expense entered in the display currency as it was…
mauriceboe Sep 25, 2026
e6f6601
fix(planner): transport edit window can delete the booking
Sep 26, 2026
a0d89ab
fix(planner): transport edit window can delete the booking
Sep 26, 2026
a5745fd
fix(ssrf): connect past a link-local DNS record instead of refusing t…
mauriceboe Sep 25, 2026
83d591d
fix(db): keep SQLite temp files in memory so trips can be deleted (#2…
mauriceboe Sep 25, 2026
c9dfe9c
fix(pwa): recover from a dead chunk and a broken precache after an up…
mauriceboe Sep 25, 2026
c5e405c
fix(share): only call a share link expired when the server says so (#…
mauriceboe Sep 25, 2026
5d4178d
fix(map): open a place from its pin after the map was dragged (#2504)
mauriceboe Sep 25, 2026
62f8b0d
fix(mobile): pick the plan timeline's hotel legs by what the route dr…
mauriceboe Sep 25, 2026
8b6a8d3
fix(mobile): show the drive from a flight's arrival airport in the pl…
mauriceboe Sep 25, 2026
ae73527
fix(atlas): a place that moves no longer keeps its old country (#2527)
mauriceboe Sep 25, 2026
6ed2561
fix(notifications): show the header logo in Gmail and Outlook (#2507)
mauriceboe Sep 25, 2026
44a12e2
fix(costs): read an expense entered in the display currency as it was…
mauriceboe Sep 25, 2026
cd06f0f
fix(journey): read GPS and the EXIF time offset from uploaded photos …
mauriceboe Sep 26, 2026
626adea
fix(journey): read GPS and the EXIF time offset from uploaded photos …
mauriceboe Sep 26, 2026
c6a0891
chore(notices): the release notice points at 4.3.3
mauriceboe Sep 26, 2026
99d7fb7
chore(notices): the release notice points at 4.3.3
mauriceboe Sep 26, 2026
aa1f76a
fix(costs): leave out an expense no rate is known for instead of coun…
mauriceboe Sep 26, 2026
d1dc854
fix(costs): leave out an expense no rate is known for instead of coun…
mauriceboe Sep 26, 2026
1ff2249
Merge pull request #2529 from liketrek/fix/v4.3.3
mauriceboe Sep 26, 2026
1c05ee4
chore: bump version to 4.3.3 [skip ci]
github-actions[bot] Sep 26, 2026
6c0d08a
Merge branch 'main' into fix/v4.3.3-dev
mauriceboe Sep 26, 2026
706c6c3
Merge pull request #2531 from liketrek/fix/v4.3.3-dev
mauriceboe Sep 26, 2026
b1c05bc
feat(llm-parse): read a photo, as a booking or as a receipt in Costs
Rem7474 Sep 24, 2026
237f42a
fix(llm-parse): harden photo reading and finish the receipt scan
mauriceboe Sep 26, 2026
acd0d65
feat(reservations): desktop bookings and transports in the phone's look
mauriceboe Sep 26, 2026
0dd07be
feat(planner): bring the plan tab and every trip dialog into the new …
mauriceboe Sep 27, 2026
9f5e332
test(reservations): pick the confirm button without Array.at, which t…
mauriceboe Sep 27, 2026
cb7014b
feat(costs): table view, and the wiki and help center for the new tri…
mauriceboe Sep 27, 2026
950029c
fix(weather): read a past day of the day details from the archive
mauriceboe Sep 27, 2026
33b4407
fix(weather): spell the German descriptions with their umlauts
mauriceboe Sep 27, 2026
350a144
fix(ui): full-height document previews, and tooltips only on keyboard…
mauriceboe Sep 28, 2026
c88f9a4
fix(i18n): labels the translators flagged, and two dashes in the UI
mauriceboe Sep 28, 2026
146fe4a
docs(help): the trip screens' guides for the new layout, with new pic…
mauriceboe Sep 28, 2026
af9710c
docs(wiki): the pictures that were missing, and the follow-ups of the…
mauriceboe Sep 28, 2026
3901aec
feat(trips): Share and Save to list in the new dialog look
mauriceboe Sep 28, 2026
21c068e
fix(trips): the Share dialog sits in the middle of the window like th…
mauriceboe Sep 28, 2026
bbf8d94
feat(share): the public trip page in the planner's design
mauriceboe Sep 28, 2026
9064ee5
test(share): the map test's page hook knows the folded days and the m…
mauriceboe Sep 28, 2026
acd003e
feat(dialogs): Vacay, Collections, Atlas and Journey in the new dialo…
mauriceboe Sep 28, 2026
2c486e6
fix(journey): the Studio export dialog in the new look, and the Atlas…
mauriceboe Sep 28, 2026
fe93df7
docs(help): new pictures for Collections, Vacay, Atlas and Journey
mauriceboe Sep 28, 2026
6f61b66
fix(share): the day line on the shared map asks for a picked day as a…
mauriceboe Sep 28, 2026
272df55
feat(packing): sort the packing list A to Z
mauriceboe Sep 29, 2026
26910ac
fix(packing): hand the list's unawaited calls to void
mauriceboe Sep 29, 2026
f83201f
fix(helm): quote Secret stringData values
Demisu Sep 27, 2026
6408751
fix(planner): the plan's costs follow the expenses in Costs
mauriceboe Sep 29, 2026
ec06035
fix(collab): a long link title wraps instead of being cut off
mauriceboe Sep 29, 2026
5c7aaab
fix(share): the shared map opens framed on the whole trip, not on a c…
mauriceboe Sep 29, 2026
7b0333a
fix(roadtrip): a booked night no longer shows up mid-day when the day…
mauriceboe Sep 29, 2026
bd5a6cc
fix(cors): the instance's own address no longer trips ALLOWED_ORIGINS
mauriceboe Sep 29, 2026
86243d4
fix(transit): keep the day's hotel in the from/to picks of the transi…
mauriceboe Sep 29, 2026
5f70061
fix(mobile): files attached while editing a booking are uploaded on save
mauriceboe Sep 29, 2026
91be785
fix(planner): a leg's time zone sits behind a globe instead of beside…
mauriceboe Sep 29, 2026
b8f2a86
chore(deps): bump ip-address from 10.5.0 to 10.7.2
dependabot[bot] Sep 29, 2026
22d5d67
chore(deps): bump undici from 7.29.0 to 7.30.0
dependabot[bot] Sep 29, 2026
7d22857
fix(mobile): restore day selection when reopening a trip
sy-records Sep 28, 2026
71a8b24
fix(map): keep the overview frame when the trip is edited
pipipiper Sep 28, 2026
fd5afb0
test(map): opening another trip with the overview on frames that trip
mauriceboe Sep 29, 2026
91dfab3
fix(planner): hand the day plan's unawaited calls to void
mauriceboe Sep 29, 2026
8fd46c4
feat: quality of life sweep from the feature discussions
mauriceboe Sep 30, 2026
f5103d0
test: follow the qol sweep in the e2e schemas and the assertions it c…
mauriceboe Sep 30, 2026
d643557
fix(journey): two quick swipes in the photo viewer turn pages instead…
mauriceboe Sep 30, 2026
e24da67
test: finish the qol sweep follow-up, one footer on the public journe…
mauriceboe Oct 1, 2026
ba3dc65
feat(public-api): next_trip in /api/v1/stats counts down to the next …
mauriceboe Oct 1, 2026
1fee38e
feat(oidc): OIDC_USERNAME_CLAIM picks the claim a new account's usern…
mauriceboe Oct 1, 2026
81ebc31
build(docker): OCI labels on the images, so Renovate links an update …
mauriceboe Oct 1, 2026
f7782b9
feat(planner): the places search also finds the description and the n…
mauriceboe Oct 1, 2026
b4f0a6d
feat(pdf): transport notes in the trip PDF, with a switch in the preview
mauriceboe Oct 1, 2026
104f0ee
feat(costs): each expense row shows who it is split between, with the…
mauriceboe Oct 1, 2026
c80ee6b
feat(planner): reach a hotel's booking from the plan, not only its place
mauriceboe Oct 1, 2026
44cc596
feat(dialogs): the focus starts inside a dialog and Tab stays there
mauriceboe Oct 1, 2026
542a57b
feat(auth): password rules checked while typing, with the server's ow…
mauriceboe Oct 1, 2026
9f0fe45
feat(planner): the panel widths can be dragged with a finger, also on…
mauriceboe Oct 1, 2026
48f28b4
feat(collections): navigate to a saved place from its sheet on the phone
mauriceboe Oct 1, 2026
ba0cc33
feat(mobile): today marked on the day rail, and a button back to it
mauriceboe Oct 1, 2026
94447fa
test(public-api): the other stats suites stub next_trip too
mauriceboe Oct 1, 2026
52934a8
fix(mobile): the map compass stands above the base-layer switcher
mauriceboe Oct 1, 2026
750b178
test(client): follow the password checklist and the labelled modal cl…
mauriceboe Oct 1, 2026
885896a
feat(files): FILE_UPLOAD_LIMIT_MB sets the upload limit for files and…
mauriceboe Oct 1, 2026
5138358
feat(net): the SSRF-guarded requests go through HTTP_PROXY / HTTPS_PR…
mauriceboe Oct 1, 2026
7acf7f5
feat(admin): a daily limit on Google API calls
mauriceboe Oct 1, 2026
f4626c9
feat(notifications): admin defaults for users, and channels blocked f…
mauriceboe Oct 1, 2026
1c34a74
feat(calendar): one feed event per leg of a connecting flight or train
mauriceboe Oct 1, 2026
88afdb9
feat(mcp): upload_trip_file tool for adding documents to a trip (#1566)
mauriceboe Oct 1, 2026
a416d41
feat(packing): templates keep weight, quantity and bag; packed and pe…
mauriceboe Oct 1, 2026
855c0a4
feat(settings): optional preferred map app for the navigate button (#…
mauriceboe Oct 1, 2026
3063606
feat(costs): enter a custom split in percent (#1709)
mauriceboe Oct 1, 2026
477f416
feat(journey): set a journey's status by hand (#762)
mauriceboe Oct 1, 2026
a98449d
feat(planner): ask before a stray click throws away an edited place o…
mauriceboe Oct 1, 2026
1f464ce
feat(places): sort the places list by name, rating, age or last chang…
mauriceboe Oct 1, 2026
d1f4dea
feat(pwa): reopen the trip and tab the installed app was in (#1024)
mauriceboe Oct 1, 2026
99c6287
feat(pwa): a relaunch also returns to the plan day it was on (#666)
mauriceboe Oct 1, 2026
8c37597
feat(dashboard): search every trip by title, date or a place on it (#…
mauriceboe Oct 1, 2026
d61d8ca
feat(places): phone, e-mail and opening hours by hand when the search…
mauriceboe Oct 1, 2026
f4d81ea
feat(places): an empty search offers adding the place by hand (#2472)
mauriceboe Oct 1, 2026
f875c85
feat(journey): geotagged photos on the journey's own map, both render…
mauriceboe Oct 1, 2026
81d7022
feat(journey): optionally place an entry where its first photo was ta…
mauriceboe Oct 1, 2026
f9baf33
feat(studio): add photos from Immich and Synology like the journey ga…
mauriceboe Oct 1, 2026
db43372
fix: mark deliberately unawaited promises with void (Sonar S9383)
mauriceboe Oct 1, 2026
8d684b4
fix(journey): the photo-location switch marks its save as unawaited
mauriceboe Oct 1, 2026
b6b4904
feat(bookings): cruises list their ports of call with arrival and dep…
mauriceboe Oct 1, 2026
d694fc6
chore: journey type fields for the test typecheck, prettier on the ne…
mauriceboe Oct 1, 2026
647bb33
fix(costs): centre the amount/percent switch on its hint
mauriceboe Oct 1, 2026
39074f6
fix(places): hours can be typed, and an edited place takes over the l…
mauriceboe Oct 1, 2026
62950ae
test(e2e): hand-made schemas follow the new columns; placing entries …
mauriceboe Oct 1, 2026
1e4cc85
test(calendar): per-leg zones from one endpoint per airport (#2389)
mauriceboe Oct 1, 2026
8f4accc
test(calendar): a test id of its own
mauriceboe Oct 1, 2026
5669f8b
fix(places): e-mail check without a backtracking regex; explicit grou…
mauriceboe Oct 1, 2026
d7bf7f2
fix(background-tasks): no state update after unmount when the feature…
mauriceboe Oct 1, 2026
4bc7c5c
feat(settings): a settings kit in the planner's language; cards, navi…
mauriceboe Oct 1, 2026
788a586
feat(settings,admin): every tab and popup in the planner's design
mauriceboe Oct 1, 2026
56dfd56
fix(settings): stacked rows take no height from their basis; grouped …
mauriceboe Oct 1, 2026
cf3818c
feat(settings): confirmations in the shared dialog, token colours on …
mauriceboe Oct 1, 2026
05b53d0
docs(wiki): bring every page up to the next release; admin settings, …
mauriceboe Oct 1, 2026
c93cf2b
docs(help): new pictures for every screen that changed, guides for th…
mauriceboe Oct 1, 2026
c7793a6
fix(email): link notification preferences to settings tab
sy-records Sep 28, 2026
4f2f937
Clarify how the existingSecret really works
oscarcarlsson Oct 2, 2026
a856c68
docs(helm): list PLACES_API_KEY and VAPID_PRIVATE_KEY among existingS…
mauriceboe Oct 4, 2026
a9c78f6
fix(mobile): prevent layout breaking from long unbroken text in notes
diogormendes Oct 2, 2026
5bcb377
fix(mobile): trim the note wrap classes to one rule and cover the kep…
mauriceboe Oct 4, 2026
b6c3b89
test(planner): pin a weekday in the opening hours inspector test so i…
mauriceboe Oct 4, 2026
a44c966
feat(places): share the rating floor between the lists and the map
EvKoh Oct 3, 2026
66f1160
feat(map): filter trip places from the mobile map
EvKoh Oct 3, 2026
fe5a8a8
fix(map): make the places filter sheet opaque
EvKoh Oct 3, 2026
b551402
docs(wiki): describe the map's places filters
EvKoh Oct 3, 2026
a9f7adf
fix(map): move the tracks filter fallback to the always-mounted plann…
EvKoh Oct 3, 2026
3951e8c
fix(map): announce the places filter control as opening a dialog
EvKoh Oct 3, 2026
db3c9d6
fix(mobile): announce which Show and rating chip is chosen
EvKoh Oct 3, 2026
eee361e
docs(places): say where the map's places filter departs from the lists
EvKoh Oct 3, 2026
3d99e56
test(map): keep the places filter on a road trip's plan map without D…
EvKoh Oct 3, 2026
4b263c8
fix(mobile): align the places browser's filter panel with the map con…
EvKoh Oct 3, 2026
b6115d4
refactor(places): one name for the uncategorized bucket and the categ…
EvKoh Oct 3, 2026
d7e6562
Merge origin/dev into feat/orm
mauriceboe Oct 4, 2026
af533fc
fix(deps): sync the lockfiles with the bumped manifests and follow lu…
mauriceboe Oct 4, 2026
b653167
ci: give the server lint step an 8 GB heap for the type-aware rules
mauriceboe Oct 4, 2026
342d6ed
test(server): keep the no-promise-as-value rule tester out of single-…
mauriceboe Oct 4, 2026
35a7e3d
refactor(server): name the new migrations after the first seven words…
mauriceboe Oct 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
14 changes: 14 additions & 0 deletions .github/workflows/docker-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,12 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Image metadata
id: meta
run: |
echo "revision=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
echo "created=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_OUTPUT"

- name: Build and push by digest
id: build
uses: docker/build-push-action@v6
Expand All @@ -102,6 +108,9 @@ jobs:
no-cache: true
build-args: |
APP_VERSION=${{ needs.version-bump.outputs.version }}
labels: |
org.opencontainers.image.revision=${{ steps.meta.outputs.revision }}
org.opencontainers.image.created=${{ steps.meta.outputs.created }}

- name: Export digest
run: |
Expand Down Expand Up @@ -163,7 +172,12 @@ jobs:
digests+=("mauriceboe/trek@sha256:$(basename "$f")")
done
done
# The labels live on each platform image; the index gets the ones a
# client reads before it picks a platform (#1498).
docker buildx imagetools create \
--annotation "index:org.opencontainers.image.source=https://github.com/liketrek/TREK" \
--annotation "index:org.opencontainers.image.version=$VERSION" \
--annotation "index:org.opencontainers.image.licenses=AGPL-3.0-only" \
-t "mauriceboe/trek:latest-pre" \
-t "mauriceboe/trek:$MAJOR_TAG" \
-t "mauriceboe/trek:$VERSION" \
Expand Down
14 changes: 14 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,12 @@ jobs:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Image metadata
id: meta
run: |
echo "revision=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
echo "created=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_OUTPUT"

- name: Build and push by digest
id: build
uses: docker/build-push-action@v6
Expand All @@ -148,6 +154,9 @@ jobs:
no-cache: true
build-args: |
APP_VERSION=${{ needs.version-bump.outputs.version }}
labels: |
org.opencontainers.image.revision=${{ steps.meta.outputs.revision }}
org.opencontainers.image.created=${{ steps.meta.outputs.created }}

- name: Export digest
run: |
Expand Down Expand Up @@ -207,7 +216,12 @@ jobs:
digests+=("mauriceboe/trek@sha256:$(basename "$f")")
done
done
# The labels live on each platform image; the index gets the ones a
# client reads before it picks a platform (#1498).
docker buildx imagetools create \
--annotation "index:org.opencontainers.image.source=https://github.com/liketrek/TREK" \
--annotation "index:org.opencontainers.image.version=$VERSION" \
--annotation "index:org.opencontainers.image.licenses=AGPL-3.0-only" \
-t "mauriceboe/trek:latest" \
-t "mauriceboe/trek:$MAJOR_TAG" \
-t "mauriceboe/trek:$VERSION" \
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,10 @@ jobs:
run: cd server && npm run check:entities

- name: Lint
# Type-aware rules build the src + tests program, which outgrows
# Node's default ~4 GB heap on the runner.
env:
NODE_OPTIONS: --max-old-space-size=8192
run: cd server && npm run lint:check

- name: DB call-graph gate (no sync DB-touching methods, no raw transactions)
Expand Down
31 changes: 26 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ COPY client/ ./client/
RUN npm run build --workspace=client

# ── Stage 3: server ──────────────────────────────────────────────────────────
# --ignore-scripts skips native builds (better-sqlite3); they happen in the production stage.
# --ignore-scripts: nothing here needs a postinstall, tsc only reads types. The one
# native module, better-sqlite3, ships its binaries inside the npm tarball since 13.x.
FROM node:24-alpine AS server-builder
WORKDIR /app
COPY package.json package-lock.json ./
Expand All @@ -52,13 +53,22 @@ COPY server/package.json ./server/
# changeset, so it costs nothing. Everything copied after this point carries
# --chown=node:node for the same reason — a recursive chown in a later layer
# would copy up every inode it touches and duplicate the whole tree in the image.
#
# No compiler in this stage. better-sqlite3 13.x carries prebuilt binaries for
# amd64 and arm64 inside its tarball, so there is nothing left to build: the old
# python3 + build-essential fallback compiled it against whatever Node headers
# the base image had that day, and 24.19+ headers give an addon that aborts with
# "Assertion failed: (env) != nullptr" the first time a statement is collected
# (#2421). --ignore-scripts because a lockfile-driven npm ci still synthesises
# `node-gyp rebuild` for the binding.gyp it finds, blind to the package's
# gypfile:false (npm/cli#9837). The only other install scripts among the runtime
# deps are esbuild's binary check, redundant next to its optional platform
# package, and a telemetry ping.
RUN apt-get update && \
apt-get install -y --no-install-recommends tzdata dumb-init wget ca-certificates python3 build-essential \
apt-get install -y --no-install-recommends tzdata dumb-init wget ca-certificates \
libkitinerary-bin libsqlite3-0 && \
npm ci --workspace=server --omit=dev && \
npm ci --workspace=server --omit=dev --ignore-scripts && \
ln -sf "$(find /usr/lib -name kitinerary-extractor -type f | head -1)" /usr/local/bin/kitinerary-extractor; \
apt-get purge -y python3 build-essential && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/* /usr/local/lib/node_modules/npm /usr/local/bin/npm /usr/local/bin/npx && \
chown -R node:node /app

Expand Down Expand Up @@ -113,6 +123,17 @@ ENV PORT=3000
ARG APP_VERSION=dev
ENV APP_VERSION=${APP_VERSION}

# OCI metadata: Renovate, Watchtower and the registries read the source label to
# link an image update to its release notes (#1498). The release workflows add
# the commit and the build time; a local build carries everything else.
LABEL org.opencontainers.image.title="TREK" \
org.opencontainers.image.description="Self-hosted collaborative travel planner" \
org.opencontainers.image.url="https://github.com/liketrek/TREK" \
org.opencontainers.image.source="https://github.com/liketrek/TREK" \
org.opencontainers.image.documentation="https://github.com/liketrek/TREK/wiki" \
org.opencontainers.image.licenses="AGPL-3.0-only" \
org.opencontainers.image.version="${APP_VERSION}"

EXPOSE 3000

HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,9 +168,9 @@ Most of what follows is an addon an admin switches on or off. Lists, Costs, Docu
- **Admin panel**: users and invites, the permission matrix, packing templates, categories, addons, plugins, API keys, MCP tokens and OAuth sessions, backups, storage, audit log, and GitHub releases
- **Backups**: manual or scheduled hourly, daily, weekly or monthly, with retention in days. The zip carries the at-rest key, so a restore can decrypt its own secrets
- **Storage**: pluggable storage backends per content category — keep everything on local disk, or add S3-compatible backends and replicate any category to them, configured entirely from the admin panel
- **Notifications**: a per-user matrix of events against in-app, email (SMTP), webhook and ntfy, plus any channel a plugin registers
- **Notifications**: a per-user matrix of events against in-app, email (SMTP), webhook, ntfy and Web Push (on every device you turn it on for, even with TREK closed), plus any channel a plugin registers
- **Appearance**: light, dark or follow the OS, seven colour schemes plus a custom accent, transparency, compact density, reduce motion, and text size per tier
- **23 languages**: en, de, es, fr, it, nl, hu, ru, zh, zh-TW, pl, cs, ar (right to left), br, id, tr, ja, ko, uk, gr, sv, vi, ca
- **27 languages**: en, de, es, fr, it, nl, hu, ru, zh, zh-TW, pl, cs, ar (right to left), br, id, tr, ja, ko, uk, gr, sv, vi, ca, az, et, sk, th
- **In-app help**: the wiki ships inside the image and is served from disk at `/help`, so the docs match the version you are running

</td>
Expand Down
1 change: 1 addition & 0 deletions charts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,5 @@ See `values.yaml` for more options.
- `FORCE_HTTPS` is optional. Set `env.FORCE_HTTPS: "true"` only when ingress (or another proxy) terminates TLS. It enables HTTPS redirects, HSTS, CSP `upgrade-insecure-requests`, and forces the session cookie `secure` flag. Requires `TRUST_PROXY` to be set.
- Set `env.TRUST_PROXY: "1"` (or the number of proxy hops) when running behind ingress or a load balancer. Required for `FORCE_HTTPS` to detect the forwarded protocol correctly. In production it defaults to `1` automatically.
- `COOKIE_SECURE` is auto-derived (on when `NODE_ENV=production` or `FORCE_HTTPS=true`). Set `env.COOKIE_SECURE: "false"` only during local testing without TLS. **Not recommended for production.**
- Web Push needs no chart settings: TREK generates its key pair on first start and keeps it in the database on the data PVC. To bring your own pair, set `env.VAPID_PUBLIC_KEY` and `secretEnv.VAPID_PRIVATE_KEY` together (and optionally `env.VAPID_SUBJECT`); changing the pair later means every device has to turn push on again.
- Set `env.OIDC_DISCOVERY_URL` to override the auto-constructed OIDC discovery endpoint. Required for providers (e.g. Authentik) that expose it at a non-standard path.
4 changes: 2 additions & 2 deletions charts/trek/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
apiVersion: v2
name: trek
version: 4.3.0
version: 4.3.3
description: Minimal Helm chart for TREK app
appVersion: "4.3.0"
appVersion: "4.3.3"
7 changes: 5 additions & 2 deletions charts/trek/templates/NOTES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
- ENCRYPTION_KEY encrypts stored secrets (API keys, MFA, SMTP, OIDC) at rest.
- By default, the chart creates a Kubernetes Secret from `secretEnv.ENCRYPTION_KEY` in values.yaml.
- To generate a random key at install (preserved across upgrades), set `generateEncryptionKey: true`.
- To use an existing Kubernetes secret, set `existingSecret` to the secret name. The secret must
contain a key matching `existingSecretKey` (defaults to `ENCRYPTION_KEY`).
- To use an existing Kubernetes secret, set `existingSecret` to the secret name. The chart then
renders no Secret of its own and reads every secret env var from that secret: `ENCRYPTION_KEY`
(renamable via `existingSecretKey`), plus `ADMIN_EMAIL`, `ADMIN_PASSWORD`, `OIDC_CLIENT_SECRET`,
`UNSPLASH_ACCESS_KEY`, `PLACES_API_KEY`, `AMAP_API_KEY`, `AMAP_API_SECRET` and
`VAPID_PRIVATE_KEY`. Missing keys are simply left unset, so only provide the ones you use.
- If left empty, the server resolves the key automatically: existing installs fall back to
data/.jwt_secret (encrypted data stays readable with no manual action); fresh installs
auto-generate a key persisted to the data PVC.
Expand Down
18 changes: 18 additions & 0 deletions charts/trek/templates/configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,21 @@ data:
{{- if .Values.env.OIDC_ADMIN_VALUE }}
OIDC_ADMIN_VALUE: {{ .Values.env.OIDC_ADMIN_VALUE | quote }}
{{- end }}
{{- if .Values.env.OIDC_USERNAME_CLAIM }}
OIDC_USERNAME_CLAIM: {{ .Values.env.OIDC_USERNAME_CLAIM | quote }}
{{- end }}
{{- if .Values.env.OIDC_SCOPE }}
OIDC_SCOPE: {{ .Values.env.OIDC_SCOPE | quote }}
{{- end }}
{{- if .Values.env.HTTP_PROXY }}
HTTP_PROXY: {{ .Values.env.HTTP_PROXY | quote }}
{{- end }}
{{- if .Values.env.HTTPS_PROXY }}
HTTPS_PROXY: {{ .Values.env.HTTPS_PROXY | quote }}
{{- end }}
{{- if .Values.env.NO_PROXY }}
NO_PROXY: {{ .Values.env.NO_PROXY | quote }}
{{- end }}
{{- if .Values.env.OIDC_DISCOVERY_URL }}
OIDC_DISCOVERY_URL: {{ .Values.env.OIDC_DISCOVERY_URL | quote }}
{{- end }}
Expand Down Expand Up @@ -97,3 +109,9 @@ data:
{{- if .Values.env.AMAP_API_BASE }}
AMAP_API_BASE: {{ .Values.env.AMAP_API_BASE | quote }}
{{- end }}
{{- if .Values.env.VAPID_PUBLIC_KEY }}
VAPID_PUBLIC_KEY: {{ .Values.env.VAPID_PUBLIC_KEY | quote }}
{{- end }}
{{- if .Values.env.VAPID_SUBJECT }}
VAPID_SUBJECT: {{ .Values.env.VAPID_SUBJECT | quote }}
{{- end }}
12 changes: 12 additions & 0 deletions charts/trek/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,12 @@ spec:
name: {{ default (printf "%s-secret" (include "trek.fullname" .)) .Values.existingSecret }}
key: UNSPLASH_ACCESS_KEY
optional: true
- name: PLACES_API_KEY
valueFrom:
secretKeyRef:
name: {{ default (printf "%s-secret" (include "trek.fullname" .)) .Values.existingSecret }}
key: PLACES_API_KEY
optional: true
- name: AMAP_API_KEY
valueFrom:
secretKeyRef:
Expand All @@ -87,6 +93,12 @@ spec:
name: {{ default (printf "%s-secret" (include "trek.fullname" .)) .Values.existingSecret }}
key: AMAP_API_SECRET
optional: true
- name: VAPID_PRIVATE_KEY
valueFrom:
secretKeyRef:
name: {{ default (printf "%s-secret" (include "trek.fullname" .)) .Values.existingSecret }}
key: VAPID_PRIVATE_KEY
optional: true
volumeMounts:
- name: data
mountPath: /app/data
Expand Down
28 changes: 20 additions & 8 deletions charts/trek/templates/secret.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,18 @@ data:
{{- if .Values.secretEnv.UNSPLASH_ACCESS_KEY }}
UNSPLASH_ACCESS_KEY: {{ .Values.secretEnv.UNSPLASH_ACCESS_KEY | b64enc | quote }}
{{- end }}
{{- if .Values.secretEnv.PLACES_API_KEY }}
PLACES_API_KEY: {{ .Values.secretEnv.PLACES_API_KEY | b64enc | quote }}
{{- end }}
{{- if .Values.secretEnv.AMAP_API_KEY }}
AMAP_API_KEY: {{ .Values.secretEnv.AMAP_API_KEY | b64enc | quote }}
{{- end }}
{{- if .Values.secretEnv.AMAP_API_SECRET }}
AMAP_API_SECRET: {{ .Values.secretEnv.AMAP_API_SECRET | b64enc | quote }}
{{- end }}
{{- if .Values.secretEnv.VAPID_PRIVATE_KEY }}
VAPID_PRIVATE_KEY: {{ .Values.secretEnv.VAPID_PRIVATE_KEY | b64enc | quote }}
{{- end }}
{{- end }}

{{- if and (not .Values.existingSecret) (.Values.generateEncryptionKey) }}
Expand All @@ -40,26 +46,32 @@ metadata:
type: Opaque
stringData:
{{- if and $existingSecret $existingSecret.data }}
{{ .Values.existingSecretKey | default "ENCRYPTION_KEY" }}: {{ index $existingSecret.data (.Values.existingSecretKey | default "ENCRYPTION_KEY") | b64dec }}
{{ .Values.existingSecretKey | default "ENCRYPTION_KEY" }}: {{ index $existingSecret.data (.Values.existingSecretKey | default "ENCRYPTION_KEY") | b64dec | quote }}
{{- else }}
{{ .Values.existingSecretKey | default "ENCRYPTION_KEY" }}: {{ randAlphaNum 32 }}
{{ .Values.existingSecretKey | default "ENCRYPTION_KEY" }}: {{ randAlphaNum 32 | quote }}
{{- end }}
{{- if .Values.secretEnv.ADMIN_EMAIL }}
ADMIN_EMAIL: {{ .Values.secretEnv.ADMIN_EMAIL }}
ADMIN_EMAIL: {{ .Values.secretEnv.ADMIN_EMAIL | quote }}
{{- end }}
{{- if .Values.secretEnv.ADMIN_PASSWORD }}
ADMIN_PASSWORD: {{ .Values.secretEnv.ADMIN_PASSWORD }}
ADMIN_PASSWORD: {{ .Values.secretEnv.ADMIN_PASSWORD | quote }}
{{- end }}
{{- if .Values.secretEnv.OIDC_CLIENT_SECRET }}
OIDC_CLIENT_SECRET: {{ .Values.secretEnv.OIDC_CLIENT_SECRET }}
OIDC_CLIENT_SECRET: {{ .Values.secretEnv.OIDC_CLIENT_SECRET | quote }}
{{- end }}
{{- if .Values.secretEnv.UNSPLASH_ACCESS_KEY }}
UNSPLASH_ACCESS_KEY: {{ .Values.secretEnv.UNSPLASH_ACCESS_KEY }}
UNSPLASH_ACCESS_KEY: {{ .Values.secretEnv.UNSPLASH_ACCESS_KEY | quote }}
{{- end }}
{{- if .Values.secretEnv.PLACES_API_KEY }}
PLACES_API_KEY: {{ .Values.secretEnv.PLACES_API_KEY | quote }}
{{- end }}
{{- if .Values.secretEnv.AMAP_API_KEY }}
AMAP_API_KEY: {{ .Values.secretEnv.AMAP_API_KEY }}
AMAP_API_KEY: {{ .Values.secretEnv.AMAP_API_KEY | quote }}
{{- end }}
{{- if .Values.secretEnv.AMAP_API_SECRET }}
AMAP_API_SECRET: {{ .Values.secretEnv.AMAP_API_SECRET }}
AMAP_API_SECRET: {{ .Values.secretEnv.AMAP_API_SECRET | quote }}
{{- end }}
{{- if .Values.secretEnv.VAPID_PRIVATE_KEY }}
VAPID_PRIVATE_KEY: {{ .Values.secretEnv.VAPID_PRIVATE_KEY | quote }}
{{- end }}
{{- end }}
32 changes: 31 additions & 1 deletion charts/trek/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,16 @@ env:
# OIDC claim used to identify admin users.
# OIDC_ADMIN_VALUE: ""
# Value of the OIDC claim that grants admin role.
# OIDC_USERNAME_CLAIM: ""
# Claim a new account's username comes from, e.g. "preferred_username". Unset: name, then preferred_username.
# OIDC_SCOPE: "openid email profile groups"
# Space-separated OIDC scopes to request. Must include scopes for any claim used by OIDC_ADMIN_CLAIM.
# OIDC_DISCOVERY_URL: ""
# Override the OIDC discovery endpoint for providers with non-standard paths (e.g. Authentik).
# HTTP_PROXY: ""
# HTTPS_PROXY: ""
# NO_PROXY: "localhost,127.0.0.1"
# Outbound proxy for TREK's requests to the internet; NO_PROXY lists hosts that bypass it.
# DEMO_MODE: "false"
# Enable demo mode (hourly data resets).
# MCP_RATE_LIMIT: "300"
Expand Down Expand Up @@ -108,6 +114,15 @@ env:
# Send the Amap (高德地图) calls through an egress proxy, a cache or a gateway that speaks the same API instead of
# restapi.amap.com directly. The key itself is a credential and goes under secretEnv.AMAP_API_KEY, or into
# Admin > Settings > API Keys. Defaults to https://restapi.amap.com.
# VAPID_PUBLIC_KEY: ""
# Web Push key pair, public half (base64url, 65 bytes). Leave both halves empty and TREK generates a pair on
# first start and keeps it in the database, so it travels with backups. To use your own pair, set this and
# secretEnv.VAPID_PRIVATE_KEY together, e.g. from `npx web-push generate-vapid-keys`. Changing the pair later
# means every device has to turn push on again.
# VAPID_SUBJECT: ""
# The contact push services see with every Web Push message: a mailto: address or an https:// URL. Defaults to
# APP_URL when it is an https:// address other than localhost, else https://github.com/liketrek/TREK. No email
# address is sent unless you set one here.


# Secret environment variables stored in a Kubernetes Secret.
Expand All @@ -133,6 +148,11 @@ secretEnv:
# Get a free key at https://unsplash.com/developers. Can also be set per-admin
# in Admin > Settings; this value overrides that. Leave empty to disable.
UNSPLASH_ACCESS_KEY: ""
# Optional Google Maps API key (Places API (New) enabled) for place search, photos,
# details and Google transit. Overrides the key set in Admin > Settings > API Keys,
# whose field then shows this variable read-only. Leave empty to use the key from the
# admin panel, or none.
PLACES_API_KEY: ""
# Optional Amap (高德地图) Web 服务 key for place search and geocoding inside mainland
# China. Overrides the key set in Admin > Settings > API Keys. A Web 端 (JS API) key is
# a different credential and is rejected with INVALID_USER_KEY. Leave empty to use the
Expand All @@ -142,11 +162,21 @@ secretEnv:
# with signing enabled, because such a key rejects every unsigned request. Leave empty
# otherwise. The endpoint itself is not a secret and is set under env.AMAP_API_BASE.
AMAP_API_SECRET: ""
# Optional Web Push key pair, private half (base64url, 32 bytes). Only used together with
# env.VAPID_PUBLIC_KEY; a pair whose halves do not belong together, or only one half, turns
# push off with an error in the log until it is fixed, and every device stays registered.
# Leave both empty to let TREK keep a generated pair in its database.
VAPID_PRIVATE_KEY: ""

# If true, a random ENCRYPTION_KEY is generated at install and preserved across upgrades
generateEncryptionKey: false

# If set, use an existing Kubernetes secret that contains ENCRYPTION_KEY
# If set, the chart renders no Secret of its own and instead reads every secret env
# var from this existing Kubernetes secret. Expected keys: ENCRYPTION_KEY (rename via
# existingSecretKey), ADMIN_EMAIL, ADMIN_PASSWORD, OIDC_CLIENT_SECRET,
# UNSPLASH_ACCESS_KEY, PLACES_API_KEY, AMAP_API_KEY, AMAP_API_SECRET,
# VAPID_PRIVATE_KEY. Missing keys are simply left unset (they are optional), so only
# provide the ones your setup needs.
existingSecret: ""
existingSecretKey: ENCRYPTION_KEY

Expand Down
1 change: 1 addition & 0 deletions client/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ playwright/.cache/

# vite-plugin-pwa dev output (devOptions.enabled)
dev-dist/
e2e/help/media.env
Loading
Loading