Skip to content

Match a favourite by the page it is, not by the string it was written as - #83

Merged
PatrickSt1991 merged 1 commit into
mainfrom
fix/favourite-matching
Sep 6, 2026
Merged

PatrickSt1991 merged 1 commit into
mainfrom
fix/favourite-matching

Conversation

@PatrickSt1991

Copy link
Copy Markdown
Contributor

Issue 80's reporter, on build-afa4ce8, within the hour:

pressing 8 again mostly doesn't show anything on favourited site. even when app shows unkept this page sometimes the page still shows in favourites.

Both halves are real, neither is new, and keeping an address by typing it is simply the first thing that made them easy to hit.

Favourites were matched by exact string

He kept instagram.com/reel by typing it. Instagram's own address for that page ends in a slash. Two strings — so pressing 8 on the page did not find his favourite, it added a second one, and both tiles are named after the same site. What he saw was a page he had just been told was removed, still sitting in his favourites, because it was a different entry that looked identical.

Store.SameKey folds a trailing slash on the path and only that:

  • a query and a fragment stay significant — two addresses that differ there are two pages as often as they are one, and a favourite is an explicit act nobody should have quietly widened for them;
  • the fold has a floor at the scheme's own //, or https:// becomes https:/ and every site on earth is one favourite.

Init heals a file that already holds both spellings, the way #53's generated pages and waypoints are healed. His set has one now, and a fix that only stopped new ones appearing would leave him deleting the old by hand from a page that cannot tell them apart.

Key 8 was reading a cache

_cachedUrl is refreshed by UpdateStatus, which runs when a load finishes. A site that moves between reels without finishing another load leaves it several pages behind what is on the screen, so 8 kept — or removed — a page the user was not looking at. It reads the engine now, as everything per-site already did.

The bar's ★ reads the same cache, so it is refreshed on the tick while the bar is up: a few seconds at a time, and UpdateStatus already leaves a flash alone.

And the likeliest reading of "doesn't show anything"

Pressing 8 on the start screen did nothing, silently. There is no page there to keep — a fine reason to decline and no reason at all to say nothing. And the start screen, where the tiles are, is exactly where somebody goes to get rid of one. It now says so, and points at Keep an address….

Checks

  • tools/startpage/run.sh — his case exactly (typed without the slash, pressed 8 on the page with one), the fold's limits (query, fragment, path), the scheme floor, and the heal with its log line. Green; the first three fail against the previous Store.cs.
  • tools/siterules/run.sh, tools/cdpharness/run.sh — green.
  • ./build.sh all — five packages, 0 warnings.

Issue 80's reporter, on build-afa4ce8, within the hour: "pressing 8 again mostly
doesn't show anything on favourited site. even when app shows unkept this page
sometimes the page still shows in favourites." Both halves are real, neither is
new, and keeping an address by typing it is simply the first thing that made them
easy to hit.

Favourites were matched by exact string. He kept instagram.com/reel by typing it,
and Instagram's own address for that page ends in a slash — two strings, so
pressing 8 on the page did not find his favourite, it added a second one. Both
tiles are named after the same site, so what he saw was a page he had just been
told was removed, still sitting in his favourites, because it was a different
entry that looked identical.

Store.SameKey folds a trailing slash on the path and only that. A query and a
fragment stay significant: two addresses that differ there are two pages as often
as they are one, and a favourite is an explicit act nobody should have quietly
widened for them. The fold has a floor at the scheme's own //, or every site on
earth would be one favourite. Init heals a file that already holds both
spellings, the way #53's generated pages and waypoints are healed — his set has
one now, and a fix that only stopped new ones would leave him deleting the old by
hand from a page that cannot tell them apart.

Key 8 was also reading a cache. _cachedUrl is refreshed by UpdateStatus, which
runs when a load finishes, and a site that moves between reels without finishing
another load leaves it several pages behind the screen — so 8 kept, or removed, a
page the user was not looking at. It reads the engine now, as everything per-site
already did. The bar's star reads the same cache, so it is refreshed on the tick
while the bar is up: a few seconds at a time, and it leaves a flash alone.

And the likeliest reading of "doesn't show anything": pressing 8 on the start
screen did nothing, silently. There is no page there to keep, which is a reason
to decline and no reason to say nothing — and the start screen, where the tiles
are, is where somebody goes to get rid of one. It says so now, and points at
"Keep an address...".

tools/startpage/run.sh covers his case exactly, the fold's limits, the scheme
floor, and the heal.
@PatrickSt1991
PatrickSt1991 merged commit 42ed14f into main Sep 6, 2026
7 checks passed
@PatrickSt1991
PatrickSt1991 deleted the fix/favourite-matching branch September 6, 2026 13:20
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