Commit Graph

2736 Commits

Author SHA1 Message Date
jubnl 37992de7ab refactor(memories, photos, packing, share): async DB-touching methods; transactions through UnitOfWork 2026-09-22 02:21:06 +02:00
jubnl 6b755314d8 refactor(collab, collections, maps): async DB-touching methods; transactions through UnitOfWork 2026-09-22 01:49:18 +02:00
jubnl fdb12aed1e test(files): upload filters fail closed on an excluded or unresolvable type 2026-09-22 01:21:57 +02:00
jubnl fc49c0c768 refactor(tokens): async DB-touching methods; the auth token handlers await them 2026-09-22 01:21:29 +02:00
jubnl 4700bb38a5 test(server): suites await the methods earlier sweep groups made async 2026-09-22 01:16:50 +02:00
jubnl 7940b7ff84 refactor(auth, files): async DB-touching methods; transactions through UnitOfWork 2026-09-22 01:08:22 +02:00
jubnl 4df2d83137 refactor(notifications, place-photos, backup): async DB-touching methods; transactions through UnitOfWork 2026-09-22 00:22:11 +02:00
jubnl fac181f45b chore(plugins): drop gate-only asyncs; observe the scheduler's rejection; async event-sink stub 2026-09-22 00:12:56 +02:00
jubnl 5d590ca5b1 chore(server): db-call-graph --sync stops its transitive walk at an async callee 2026-09-22 00:04:19 +02:00
jubnl e28dc6de28 refactor(plugins): async DB-touching methods; transactions through UnitOfWork 2026-09-22 00:00:53 +02:00
jubnl e413308227 refactor(llm-parse, mcp-shared, oauth, place-shadow, route-usage, storage, todo, trip-invite): async DB-touching methods; transactions through UnitOfWork 2026-09-21 23:27:01 +02:00
jubnl bb390a5407 chore(server): db-call-graph --unawaited lists calls to async methods whose result is used without await 2026-09-21 22:55:02 +02:00
jubnl 7daf98cf70 test(oauth): controller suite awaits the async service 2026-09-21 22:41:35 +02:00
jubnl aa587e2fb6 refactor(budget, common, day-notes, days): async DB-touching methods; transactions through UnitOfWork 2026-09-21 22:39:11 +02:00
jubnl 8bdc730b20 test(server): suites await the methods Task 1's forced edits made async 2026-09-21 21:54:19 +02:00
jubnl d73215f7f6 chore(server): lint rule refusing a Promise used as a plain value, and the misses it found 2026-09-21 21:39:39 +02:00
jubnl 953e2526bb refactor(atlas, school-holidays, settings): async DB-touching methods; transactions through UnitOfWork 2026-09-21 21:23:10 +02:00
jubnl f6c17938c3 test(doc-sync): unit suites await the methods the async sweep made async 2026-09-21 21:11:01 +02:00
jubnl 8de5171a8e fix(server): observe every promise the async sweep left unobserved (timer, handshake, plugin-runtime test) 2026-09-21 21:04:19 +02:00
jubnl 0cf99a9939 refactor(realtime, systemNotices, addons, airports, audit, categories, permissions, query-helpers, tags, transit, trip-membership): async DB-touching methods; transactions through UnitOfWork 2026-09-21 20:48:03 +02:00
jubnl 27d044f9e8 chore(server): promise safety net and sweep tooling for the async migration 2026-09-21 19:01:38 +02:00
jubnl ef184ec7c2 test(server): ORM suites open the schema snapshot; RESET_TABLES derived from the schema 2026-09-21 18:12:07 +02:00
jubnl f4fe27a3f8 fix(db): dialect helpers dispatch on the platform; lint gate for the repository layer 2026-09-21 18:12:07 +02:00
jubnl d7c7afea1b test(server): coverage's uncovered-file pass goes through the SWC transform 2026-09-21 11:06:42 +02:00
jubnl 2c7a5fcda6 test(server): websocket suites boot on the migrated schema snapshot 2026-09-21 11:03:16 +02:00
jubnl f0c6cd18b3 test(db): coverage ratchet entries for the ORM foundation 2026-09-21 11:01:44 +02:00
jubnl 418bd1c6b5 fix(test): route MikroORM's dynamic imports through vitest from the setup file, not the ORM config 2026-09-21 10:35:16 +02:00
jubnl 2bc9e927be test(server): snapshot harness keeps the legacy id semantics 2026-09-21 10:22:18 +02:00
jubnl e846c91a16 test(server): integration suites boot on the migrated schema snapshot 2026-09-21 10:13:40 +02:00
jubnl d7f39916d5 feat(db): request-context and unit-of-work helpers for the ORM, with concurrency tests 2026-09-21 10:01:36 +02:00
jubnl 443dc35c03 fix(db): repositories mirror the statement's column set and guard their row types 2026-09-21 09:54:15 +02:00
jubnl 229f4890df feat(db): snake_case entity shape and the first three repositories (Days, DayNotes, Trips) 2026-09-21 09:39:40 +02:00
jubnl 479e2cb0a5 test(db): dialect helper refuses malformed column references and day counts 2026-09-21 09:27:05 +02:00
jubnl 5691f966af feat(db): dialect helper is the one place SQL functions are spelled 2026-09-21 09:19:47 +02:00
jubnl 565f72740b test(db): createTestOrm binds an ORM to a suite's own SQLite handle 2026-09-21 09:17:17 +02:00
jubnl 9ca9ca9644 feat(db): discover entities from an explicit list instead of a glob 2026-09-21 08:50:56 +02:00
jubnl 4ba43d6cd5 feat(db): DbTimestampType keeps DATETIME columns as the CURRENT_TIMESTAMP text 2026-09-21 08:50:56 +02:00
jubnl 57decad494 Merge remote-tracking branch 'origin/dev' into feat/orm 2026-09-20 21:45:48 +02:00
jubnl 70e970453e migrations + seeders 2026-09-20 21:38:32 +02:00
Maurice bf0507ddb5 fix(planner): Google hours that share a half of the day convert whole to 24h
Google writes a range that stays in one half of the day with the meridiem on
the closing time only, "1:00 – 3:00 PM" for one to three in the afternoon.
The 24-hour conversion only saw times carrying their own AM/PM, so the
opener stayed "1:00" beside a converted "15:00". The closing meridiem is
handed back to an opener that has none before converting; a range spelled
on both sides, the 12h display and lines without a meridiem are untouched.

Closes #2412
2026-09-20 20:28:23 +02:00
Maurice 9bd9ff4a80 style(collab): a link chip's title takes its width first, the host gets the rest 2026-09-20 20:11:10 +02:00
Maurice 8845f73eb9 style(collab): the host gives way before the title does, all of it 2026-09-20 20:09:22 +02:00
Maurice 6b09a8bc11 style(collab): the title of a link chip gives way last
Two to a row, the title and the host were shrinking together into two
ellipses. The host shrinks first now, the open glyph takes the favicon's
place on hover instead of room of its own, and the actions are a touch
smaller.
2026-09-20 20:07:39 +02:00
jubnl 55ad55e90b rename entities 2026-09-20 20:05:18 +02:00
Maurice 67dff455da style(collab): link chips two to a row across the panel
A chip takes half the panel now, one to a row where the panel is narrower
than a container query's 420px; the title and the host give way inside it
instead of capping their width.
2026-09-20 20:04:39 +02:00
jubnl 7cd9ba3dcb fix date as string 2026-09-20 19:55:13 +02:00
Maurice 97a2ea1748 style(collab): the chip actions keep their width
Unfolding them reflowed the row under the pointer, and a chip that grows as
you reach for it is a chip you cannot catch. They sit faint and come forward
on hover instead.
2026-09-20 19:52:40 +02:00
Maurice 8d70d875b3 style(collab): shared links as chips
One chip per link, flowing like tags, instead of a column of rows with four
grey glyphs each. The chip is the link, with the favicon and the host beside
the title; edit, pin and delete are folded into its tail and unfold on hover
or keyboard focus, and stay unfolded where there is no hover. A pinned chip
carries the accent.
2026-09-20 19:50:06 +02:00
Maurice 3dfdc92b2a fix(collab): a shared link can be edited, and its glyph opens it
A link in the Collab tab could only be deleted and added again once its
title or address needed a correction; the update route has taken both all
along. The add dialog edits a link handed to it now, behind a pencil on
each row. The external-link glyph next to a row that was already a link
read as a button doing nothing; it is a link to the address itself now.

Closes #2414
2026-09-20 19:43:52 +02:00
Maurice 84b73d1a83 fix(planner): the last day scrolls into view beside the road trip switch
With the road trip addon on, the desktop panel puts the Days / Road trip
switch above the day list. The list was sized by height alone, so it ran the
switch's height past the panel's clipped edge and the last day could never
be scrolled into view. It is a flex child of the panel now and yields that
height; where nothing sits above it, the height still fills the panel.
2026-09-20 19:34:47 +02:00