Commit graph

777 commits

Author SHA1 Message Date
dcaf723336 Add conference detail pages and cached flight searches 2026-10-02 10:46:26 +01:00
6b253f2d04 Refresh FX rates when configured currencies change
Compare the latest cached currency list before applying cache TTL and match cache filenames exactly. Preserve offline mode and failure retry backoff.

Closes #170
2026-10-01 13:25:52 +01:00
22976868ce Automatically record new Geomob events in personal data 2026-10-01 12:46:33 +01:00
51b8bf6ecb Make SpaceDevs cache files readable by the web server 2026-09-30 19:13:02 +01:00
5dce485216 Preserve SpaceDevs caches on disk write failures 2026-09-30 16:45:21 +01:00
3f6ee4f2ec Respect SpaceDevs request limits and cooldowns 2026-09-30 16:41:13 +01:00
69992bebb7 Fix HTML entities in GWR advance ticket dates 2026-09-25 15:56:16 +01:00
e75acc3364 Suppress GWR busy-page error emails and add regression tests 2026-09-20 16:11:14 +01:00
5aee8f5720 Advice for conference naming 2026-09-18 08:44:38 +01:00
cb370b9378 Extract accommodation, trip statistics, holiday mapping and debug helpers 2026-09-09 12:08:13 +01:00
e3eb3e5af8 Extract trip timezones and conference preparation into agenda modules 2026-09-09 12:03:51 +01:00
df7fd2fb9e Extract conference iCal generation into agenda module 2026-09-09 11:58:50 +01:00
2d224783b2 Drop 'conference: ' from titles in ical feed. 2026-09-09 11:53:53 +01:00
d124d0d2ea Reorder imports 2026-09-09 11:53:25 +01:00
645957288d Include UK bank holidays on international trips 2026-08-31 16:18:03 +01:00
82023e16b3 Validate generated conference fields 2026-08-24 07:04:58 +02:00
9958632242 Handle structured conference metadata 2026-08-24 06:59:15 +02:00
d1c2c51776 Improve conference list on mobile 2026-08-15 10:16:18 +01:00
8866b78202 Refine conference exploration day labels 2026-08-03 14:57:06 +01:00
6a601f5c14 Show inferred Bristol rail leg for Eurostar trips 2026-08-03 14:40:53 +01:00
ea80166229 Validate maximum trip length 2026-08-03 14:40:20 +01:00
3747e83ade Add timeline car import and CO2 trip stats 2026-08-03 13:52:45 +01:00
38dbb2b4e7 Add conference country filter 2026-07-09 10:14:14 +01:00
442ae98463 Various improvements 2026-07-09 10:12:57 +01:00
b7d95f26ec Add car journey route generator 2026-07-09 10:11:47 +01:00
1e9169b740 Show home marker for car journeys 2026-07-09 10:10:17 +01:00
086bc630c9 Proper handling for day train vs overnight train. 2026-07-08 09:12:12 +01:00
c6cb06b71e Add car journeys to trips 2026-07-08 09:09:48 +01:00
bc7a2e89d0 Various improvements 2026-06-30 12:31:51 +01:00
5f6cb57c2a Add travel booking and place import scripts 2026-06-24 13:22:51 +01:00
a87c9f993e Improve conference importer and series attendance 2026-06-22 13:08:32 +01:00
dbce9e5358 Improve conference importer date handling 2026-06-22 12:41:33 +01:00
56eea3f7a3 Support nested conference dates in trips 2026-06-22 10:33:56 +01:00
57b2db205d Add conference series pages 2026-06-22 10:25:55 +01:00
098c7e4447 Support inexact conference dates
Closes: #188
2026-06-22 09:25:51 +01:00
14f5baf77c Validate conference date ranges 2026-06-22 09:08:33 +01:00
7ec36a5e80 Document personal data YAML formats 2026-06-22 09:06:09 +01:00
fc82cf280a Switch FX rates to Frankfurter 2026-06-20 17:40:12 +01:00
a369c44ae9 Handle FX API usage limit fallback
Closes #211
2026-06-20 17:35:12 +01:00
d620ffd389 Suppress spurious authlib deprecation warning in cron output
authlib 1.7 calls simplefilter("always") for AuthlibDeprecationWarning at
import time, then its own _joserfc_helpers.py imports the deprecated
authlib.jose module, emitting a warning on every run and triggering a
cron mail. Fix by importing authlib.deprecate first so our filterwarnings
"ignore" lands at position 0, ahead of authlib's "always" filter.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 17:17:34 +01:00
54e898bc11 Show exploration days before/after each conference on trip page
For each conference, calculate the number of free days available
before and after, relative to the trip boundary or adjacent
conference. Multi-conference trips show the gap between conferences
as "after" the first and "before" the second.

Closes #189

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 14:29:29 +01:00
3ba18f9019 Hide map on trip page when there are no coordinates or routes
Closes #205

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 13:19:13 +01:00
76360c25f3 Refactor add-new-conference into agenda module 2026-03-20 10:36:08 +00:00
2cc25cd203 add-new-conference script 2026-03-19 10:52:41 +00:00
1fff1f136d Show day of week in conference date column
Add %a prefix: "Wed 25 Mar 2026", "Wed 25–28 Mar 2026", etc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 12:00:18 +00:00
1dfef38128 Merge conference sections into a single table so columns align
Replace three separate <table> elements with one shared table. The
conf_table macro becomes conf_rows which emits only <tr> elements;
Current/Future/Past section boundaries are dark header rows inside
the same <tbody>. With one colgroup the browser uses one shared
column-width calculation so all headings line up.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 11:22:43 +00:00
e36a326739 Fix Gantt tooltip for single-day events
Show "Geomob Edinburgh (6 May)" instead of "Geomob Edinburgh (6 May–6 May)".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 11:18:23 +00:00
57054bb1bd Remove auto-scroll on Gantt bar hover
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 11:07:02 +00:00
bca0cd2727 Minor cleanup in update.py
- Move datetime import to module level
- Replace assert on load_cached_launches with or {} fallback so the
  updater doesn't crash when the cache file is absent
- Condense upcoming-trips list comprehension to one line

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 11:05:32 +00:00
10716f9874 Add bidirectional hover highlight between Gantt chart and table
Each Gantt bar and table row gets a data-conf-key attribute
(ISO start date + conference name). A small JS lookup map connects
them so hovering either element highlights both simultaneously:
- Gantt bar: filter brightness + inset white box-shadow
- Table row: yellow tint via background-color

Hovering a Gantt bar also scrolls the matching table row into view
(scrollIntoView nearest) so future conferences are reachable without
manual scrolling. The key field is pre-computed in
build_conference_timeline() to keep the template simple.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-14 11:02:55 +00:00