Commit Graph

4172 Commits

Author SHA1 Message Date
Maurice fa29ee9ea4 feat(journey): a designed day sets the story of every one of its entries and says which words find no room
A chapter of several entries used to set the story of its first entry only.
Its words now flow in reading order from the opener or the panorama onto the
pages after it: the first entry's story, its pros and cons, then every
further entry's story under a small heading of its title, else its place or
date. A quiet page without a photo runs its column on across both pages, and
the planner gives a chapter as many pages for words as its stories need. A
chapter that tells a story opens on a hero or a panorama only when a page
for its words follows. Pros and cons with no room where they fall wait for a
later page that takes words.

What the pages cannot hold is said once for the whole book, named by entry,
ahead of the notes on stories cut to fit, and an entry two chapters share is
told once.
2026-10-23 04:21:01 +00:00
Maurice 317c1ee5ad fix(journey): the day mark reads as its language writes it, and a country mark names its country by one rule
The day word of every language now says where the number goes ("DAY {day}",
"{day}日目", "第{day}天", "{day}. GÜN"), and one helper builds the mark for the
engine, the auto layout, a template and the Travel panel, so Japanese,
Korean and Chinese no longer read "日目 3". A word stored without the
placeholder is followed by the number as before. The panel's own day word is
gone with its only reader.

A country mark carries the name as its words beside the outline and a flag
mark sets it small beside the flag, the same for the engine's value, the
panel's tile, the assistant's add and a template's country mark; a flag in a
template keeps the place its name was drawn in. A flag or country mark asked
for by its own code is named after that country without the journey having
to name one.
2026-10-23 04:21:01 +00:00
Maurice 49dd591f8f refactor(assistant): the empty call and the unknown origin a helper falls back to are named once 2026-10-23 04:21:01 +00:00
Maurice 6d841f98e0 fix(assistant): a book page card draws the page after as the server's trial made it
The Studio drew the page after a held edit or cover change by running the
card's operations on its own book, which knows nothing of the journey's
photos, words and figures, so a caption from a photo, a text from an entry
or a map from the route came out differently or not at all. The card now
carries the page the server's trial made with the full context, read with
the book's schema and within the card's size, and the Studio draws it while
its book stands at the version the trial ran on. A book that moved on, a
card from before and a page too heavy to carry still run the operations on
the book on screen, the book the change will run on. The receipt leaves the
page out, since an applied change is drawn from the book itself.
2026-10-23 02:29:04 +00:00
Maurice 7e28b8ce6d test(i18n): the first load of a language's strings gets more than a second on a busy runner 2026-10-23 02:18:39 +00:00
Maurice de15c32119 fix(assistant): the German title over proposed changes no longer speaks of a trip, it also heads the book's 2026-10-23 02:07:24 +00:00
Maurice b651144537 fix(studio): the assistant column keeps the chat's own buttons, and the bar fits with its toggle
The dashboard's button reset outranked the utility classes the chat is drawn
with, so inside Studio the apply and discard buttons, the follow up chips and
the page checkboxes of a design card lost their look, the checkboxes so far
that nobody could see them. The column is now left out of that reset. The
assistant toggle shows only its icon below 1520 pixels and the journey's name
gives way before the bar runs past the window, and the inspector floating
over the page has a solid ground, so it stays legible in the dark scheme.
2026-10-23 02:07:24 +00:00
Maurice 6b4d71ab03 test(studio): the assistant column's tests give the thread's viewport the scrolling jsdom lacks 2026-10-23 02:07:24 +00:00
Maurice a11c8bfaa7 fix(studio): the travel panel builds its tiles with the book engine's factories
Figures, countries, maps and marks placed from the panel are the elements the
assistant adds, built by the shared factories; the panel keeps only their
placement. A trip map no longer carries the whole journey's trail, switching a
map's scope re-cuts it the way the engine does and clears the roads of the old
legs, and switching back to the whole journey restores the trail.
2026-10-23 01:45:16 +00:00
Maurice 0095f2105a fix(assistant): design and page cards keep the newest choice and draw every page they touch
An answer or a refusal no longer overwrites a newer page choice, and Apply
waits for every page selection the chat has sent, also after the card was
closed. A delete of several pages draws each page it takes, the receipt opens
the first page the design wrote through the same rule the strip uses, and the
vacay group's choices wait while a change runs.
2026-10-23 01:45:16 +00:00
Maurice 9e40092507 fix(studio): the assistant column draws the page the server applied, and reads the user's role
A page preview draws the spread the server applied with the journey's photos,
texts and figures instead of applying the operations again without them. The
Studio's welcome, privacy banner and header fit a journey chat: a viewer is
told they can only look, the banner speaks of the book, and the trip notes
button stays in the trip chat. Escape closes the header menu before it stops a
reply, a single page renders at the full long edge, the status says a model
reads pages only while its provider has not refused an image, and pointing at
a page in a design card outlines it in the Studio.
2026-10-23 01:45:16 +00:00
Maurice 72c61f242e fix(assistant): book changes undo per page, and the Studio prompt fits the user's rights
Changes held in one step are applied in the order the chat shows them, so
"undo all" walks them back newest first. A page put back is checked against
the digest of the page as the change left it, so a save to another page no
longer blocks the undo; restore_book_page takes these digests as an option and
keeps the whole book check without them. The book card counts the user's own
photos, the preview tool describes itself per role, a copy into another trip
names no places, a held vacay toggle says up front whether it can be taken
back, and a viewer's Studio prompt names none of the design's tools.
2026-10-23 01:45:16 +00:00
Maurice cee82bd147 fix(journey): applying a design checks the rights first, and the colour signals lose dead fallbacks
A viewer applying a design gets 403 and an outsider 404 before the draft is
read. The design tools' rights are pinned for outsiders and viewers, the apply
of a new book's pages is covered branch by branch, and a viewer's journey
session no longer offers the design's reads. The colour signals and the grey
statistics drop fallbacks that could never run, and the palette keeps one
fixed order for equal shares.
2026-10-23 01:45:16 +00:00
Maurice 2becbd17bc fix(book): the designed book paces its bursts, lists and maps the way the design asks
A burst of four or more photos within a quarter of an hour becomes one grid,
no beat runs three times in a row, and an entry's pros and cons go into the
room under its words on the opener, the panorama or the quiet page, with a
note when they find none. A chapter map is the map of the chapter's trip, and
entries on no trip are named in the notes. The sorts compare by code unit, the
summary metrics and the page lookups exist once, and a flag or country mark
asked for by its own code is labelled with that country.
2026-10-23 01:45:16 +00:00
Maurice 7d736e1a34 test(assistant): the new end to end tests create their book inside a request context 2026-10-22 22:59:32 +00:00
Maurice 3eded5f5be fix(assistant): taking a proposal needs place rights, and a card's choices wait while a change runs
Plan this checks place_edit like the tour routes, the include choices of a
run or group stay disabled while the chat applies a change, and a follow-up
can say when it applies, so Confirm the pending bookings shows only when the
card holds a pending booking of this trip.
2026-10-22 22:46:35 +00:00
Maurice cf8cf9058d refactor(assistant): the booking package describes its own writes, and the prompt reads as one
The reservation and booking import describers move from the core preview
helpers to the booking card package, the collab domain names the whole
area, an unused vacay label is gone, and the trip, Studio and design prompt
lines no longer contradict each other or name tools a scope is not offered.
2026-10-22 22:46:35 +00:00
Maurice 7b15135ebf test(assistant): the page image per provider and a whole book design through the chat, end to end
The page image test uploads through the real renders route after the real
privacy acknowledgement, for Anthropic, OpenAI, Gemini and the ChatGPT plan,
and keeps OpenRouter and an unacknowledged model to words. The book design
test drives design_book and a held apply_book_design through approval and
undo, with outsiders, editors of another thread and viewers refused.
2026-10-22 22:46:35 +00:00
Maurice 6c4d743259 test(assistant): book card tests run in a request context and match a journey without a book
The book card e2e calls the book services inside a request context, the
preview expects the design id beside the operations, a trial without a book
has no version, the JPEG fixture keeps its signature, and the upload test
checks the file name where the client sets it.
2026-10-22 22:43:48 +00:00
Maurice 3b9edc3a90 fix(journey): the design's rhythm counts the pages it built, and a card body keeps its state through the apply
A quiet page the opener took the whole story from was dropped but still
counted, so the next hero came one page early. The change card's body now
sits beside its row, so the book design strip keeps the chosen pages while
the apply runs, and a card part that failed is drawn again on the next state.
2026-10-22 22:43:48 +00:00
Maurice 51bfebdfb6 fix(ci): narrow the page edit result for the non-strict compile, the invite signature within its line, one journey key used 2026-10-22 22:03:35 +00:00
Maurice 6c43304205 fix(ci): book frames typed for every compile mode, promise checks and the store's length
The shared book engine takes the schema's own frame type, so the client's
non-strict compile accepts a zod frame; promise lookups compare against
undefined, the render wait keeps its timer const, the notification store
moves its read and unread update into one helper, and the registry test
counts the two book packages.
2026-10-22 21:51:44 +00:00
Maurice ab02794ff2 fix(notifications): notifications sent from the services name their actor by name
The routes on dev now name the actor of a notification by username instead
of the address. The chat, note, invite and packing notifications the
services send for both surfaces read the name too, so they no longer go out
with an empty actor.
2026-10-22 21:51:44 +00:00
Maurice f5197159f7 chore(ci): baselines follow the Studio code that moved to shared 2026-10-22 21:34:16 +00:00
Maurice 3516c0b6b2 feat(assistant): the book design card shows each page before and after
The proposal lists its pages in pairs, lets the user leave pages out before
applying, and shows what the apply skipped on the receipt.
2026-10-22 21:34:16 +00:00
Maurice bda07d6a3e feat(journey): the assistant designs the whole book as one proposal
design_book, revise_book_design and apply_book_design work on a draft, the
apply keeps the old book as a revision for undo, skips pages changed since,
and broadcasts once after the commit. Book level tools set the page setup,
duplicate pages and save layouts.
2026-10-22 21:34:15 +00:00
Maurice 09ffc7d946 feat(studio): the assistant sits beside the book and draws the page it looks at
A chat column in the Studio with its own privacy notice, a live page snapshot
through modern-screenshot that leaves out photos of other people and foreign
map tiles, and flushes before every turn and apply.
2026-10-22 21:34:15 +00:00
Maurice 8b93898b73 feat(assistant): models that read images see the live page
The Studio draws the page on request and uploads it once, each provider gets
the image where it expects it, and a refusal falls back to the text
description. No image is stored.
2026-10-22 21:34:15 +00:00
Maurice 499458f8b2 feat(assistant): book page changes show as cards with the page before and after
A held book write is described with its findings, drawn as a thumbnail pair,
bounced once when a severe finding is left, and undone in one step.
2026-10-22 21:34:15 +00:00
Maurice 51ed038374 feat(assistant): a chat can be about a journey and its book
Threads carry a journey scope next to the trip scope, with journey rights
(outsider 404, viewers without write tools, addon off), its own routes and a
book context, and the client keys chats by trip or journey.
2026-10-22 21:34:15 +00:00
Maurice 2c98ae8e4a feat(photos): a photo knows its colours and its calm areas
Photo signals move to version 3: a deterministic palette, a busy grid and
the point of most detail, stored as measured values, never as image bytes.
2026-10-22 21:34:15 +00:00
Maurice 4570ace78c feat(journey): the shared book engine lays out, edits and designs whole books
Every element kind and Studio tool gets an op, the auto layout and its
templates move from the client to shared with a parity fixture, and a pure
design engine turns directives into a finished book with design findings.
2026-10-22 21:34:15 +00:00
Maurice cdb473d427 fix(ci): keep the Studio files on the format baseline until the wave that moves them lands 2026-10-22 21:34:15 +00:00
Maurice 4a782c6d07 chore(client): the charging info is formatted now, off the format baseline 2026-10-22 21:34:15 +00:00
Maurice c8ce36e9af fix(sonar): locale-aware sorts, linear share and redaction patterns, focus only on controls 2026-10-22 21:34:15 +00:00
Maurice e291735c95 fix(ci): the tour card's open label keys stay readable to the key check, and the road trip unused-key count lowered 2026-10-22 21:34:15 +00:00
Maurice de4f72020e fix(ci): the status badge reads its look from a shared module, not the Collections page 2026-10-22 21:34:15 +00:00
Maurice 84ce492e2a style(client): imports ordered the way the shared Prettier config sorts them 2026-10-22 21:34:15 +00:00
Maurice 9383ac63a8 fix(ci): a line break in the format check, and two test type errors 2026-10-22 21:34:15 +00:00
Maurice 9b08da8e0b fix(ci): collection lookups typed as partial, card formatting, two unused exports, and the format check says when Prettier gave up 2026-10-22 21:34:15 +00:00
Maurice 6099615337 fix(ci): strict-mode types in three cards, photo measurements marked independent, and the strict ratchet names its errors 2026-10-22 21:34:15 +00:00
Maurice f669c1f322 fix(ci): card points re-typed for the non-strict builds, formatting, strict ratchet and two assistant e2e checks 2026-10-22 21:34:15 +00:00
Maurice d8bd6ab9e2 fix(ci): typed card points, the managed take route, and the failing card tests and ratchets 2026-10-22 21:34:15 +00:00
Maurice fd01a090fc test(assistant): shared card tests, wiki rows and ratchets after the card packages 2026-10-22 21:34:15 +00:00
Maurice 0f5ecb70a2 feat(assistant): packing list and to-do cards 2026-10-22 21:34:15 +00:00
Maurice 984ee67517 feat(assistant): journal entry cards, and markdown stripped in shared 2026-10-22 21:34:15 +00:00
Maurice a8ff98b660 feat(assistant): vacation calendar cards with the days left 2026-10-22 21:34:15 +00:00
Maurice c31b2162ad feat(assistant): passport, country and bucket list cards 2026-10-22 21:34:15 +00:00
Maurice a440aefd43 feat(assistant): collection list and saved place cards 2026-10-22 21:34:15 +00:00
Maurice 6e92c2777c feat(assistant): chat, note and poll cards drawn like the Collab tab 2026-10-22 21:34:15 +00:00