Skip to content

Lists: strict station names, ordered rows, a way out of empty lists - #71

Open
davd-gzl wants to merge 2 commits into
fix/crash-guardsfrom
fix/lists-links
Open

davd-gzl wants to merge 2 commits into
fix/crash-guardsfrom
fix/lists-links

Conversation

@davd-gzl

@davd-gzl davd-gzl commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

7/10, high

Four separate defects in how the app names places and orders what it lists. None changes a search result: each changes which page a link reaches, which station a typed name means, or what a list shows around its results.

This sits on the crash-guards branch, whose station resolver it extends into the one the form uses too. Every capture below is Chromium headless at 390px wide unless it names another width, main 5e514c5 on the left and this branch on the right.


generate-pages: every generated page links to a site that answers 404

All 155 sitemap URLs, every canonical and every route page's links point at davd-gzl.github.io, which stopped serving when the repository moved. generate-pages.mjs kept its own copy of the URL, which the move updated everywhere else. It now reads the site and repository URLs from src/config.ts, so the script runs under tsx.


queryFromUrl: a link resets a saved MAX SENIOR card

A link without card=, which every route page's "open in app" link is, defaults to MAX JEUNE, and the next search saves that back over the user's setting. A link with no card now keeps the saved one.

A Paris browse link without card=, opened with MAX SENIOR saved in Settings.

before: the header shows MAX JEUNE; after: MAX SENIOR


resolveStation: Search runs from a station nobody picked

Typing pierre des and pressing Search ran from Tours: the form took the first substring hit whatever the dropdown showed. A name now resolves when it spells a station's id, label or alias, or matches exactly one station; otherwise Search stops with the field in red and a line naming it. Hyphens, brackets and St or Saint read alike, so St-Pierre is no longer refused.

pierre des typed in the departure field, then Search.

before: the app runs Departing Tours; after: the field is red and reads Unknown station pierre des


runBrowse and runBestSearch: rows out of order, unnamed, or with nowhere to go

Past the first 18 destinations, via rows and the nearby section landed mid-list, because only the direct cards were chunked. They now render as one list, in that order. A nearby row now names the station its free leg starts from.

Paris browse on Oct 6 with a 60 km radius, from the 18th direct row, the results sheet fully raised at 390x1600.

before: via rows and the Stations within 60 km section sit before Lens and Dunkerque; after: the direct rows carry on

The same list's nearby section.

before: 16 km away; after: from Massy Palaiseau · 16 km

Ideas rows show the figure their sort ranks by, and a row opens on the first day it can be reached. Discovery titles name the origin, day and stay, and an empty list offers the next day with seats, one-way, or the shortest stay that works.

Ideas from Paris sorted by Most days.

before: rows show only the train count; after: each row adds its days count and travel time

Round trips from Paris on Oct 6 with a 2-night stay, 1280px wide.

before: Where can you get away to?; after: Round trips from Paris, Tue, Oct 6, 2 night(s) there

Browse from Cahors on Sun, Oct 4, a day with no seat.

before: only the no-seat line; after: a See Mon, Oct 5 (free seats) button

The same day as a 2-night round trip.

after: the next day with seats and See one-way destinations

Paris to Marseille as a day trip on Oct 6, which has none.

after: a Stay 1 night(s) instead button

Generated pages read the site and repository URLs from src/config.ts,
so the sitemap, canonicals and route pages point at offware-apps.

A link without card= keeps the saved card, the address bar correction
adds none, and every MAX SENIOR calendar greys its weekends.

One resolver serves the form and links: a bookable id as is, else the
station whose id, label or alias the name spells (its own name over
another's alias, the one with trains on a tie), else the only station
it matches. Otherwise Search stops with the field in red and a line
naming it. Hyphens, brackets and St/Saint read alike.

Browse lists direct cards, then via rows, then the nearby section,
and a nearby row names the station its free leg starts from.

Ideas drops the Recommended sort that repeated Fastest, shows the
figure it ranks by, and opens a row on its first reachable day.

Discovery titles name the origin, day and stay, a form day tap
reveals the list, and empty browse, discovery and same-day lists
offer the next day with seats, one-way, or the shortest stay.
Ideas keeps Recommended as its default sort and its description in
every locale; rows still show the duration, and the days or distance
under their sorts. MAX SENIOR calendars no longer grey weekends. A link
without card= still keeps the saved card.
davd-gzl added a commit to davd-gzl/agent-artifact that referenced this pull request Sep 29, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant