Repository navigation
Reader updates and reproducible dependency maintenance - #43
Merged
Merged
Conversation
The typed settings lived in src/config/preferences.rs but base.html redeclared all eighteen of them in JavaScript and the Svelte panel declared their labels a third time. One field table now produces both the browser validation rules and the grouped form fields, so a setting cannot be added in one place and missed in the others. Retire offline_items: it is still accepted so existing aggr.toml files keep parsing, but it no longer reaches the browser.
The dev server rewrote compiled asset references into Vite module entries and negotiated a soft-refresh event with the browser client. Neither survives a reader that has no build step, so the reload snippet is now just: unregister a stale worker, purge its caches, reload on the build event.
Three pieces of the reader body were assembled in the browser: a click handler that updated the fragment when a heading was clicked, a clone of each footnote into a margin aside, and the target/rel/aria hardening of links leaving the site. All three are now part of the rendered HTML, so they work with JavaScript disabled and the stylesheet alone decides whether the margin column or the footnote list is visible.
Bumps [bits-ui](https://github.com/huntabyte/bits-ui) from 2.19.0 to 2.19.3. - [Release notes](https://github.com/huntabyte/bits-ui/releases) - [Commits](https://github.com/huntabyte/bits-ui/compare/bits-ui@2.19.0...bits-ui@2.19.3) --- updated-dependencies: - dependency-name: bits-ui dependency-version: 2.19.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.9.3 to 7.0.2. - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](microsoft/TypeScript@v5.9.3...v7.0.2) --- updated-dependencies: - dependency-name: typescript dependency-version: 7.0.2 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [svelte](https://github.com/sveltejs/svelte/tree/HEAD/packages/svelte) from 5.57.0 to 5.57.1. - [Release notes](https://github.com/sveltejs/svelte/releases) - [Changelog](https://github.com/sveltejs/svelte/blob/main/packages/svelte/CHANGELOG.md) - [Commits](https://github.com/sveltejs/svelte/commits/svelte@5.57.1/packages/svelte) --- updated-dependencies: - dependency-name: svelte dependency-version: 5.57.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [sha2](https://github.com/RustCrypto/hashes) from 0.10.9 to 0.11.0. - [Commits](RustCrypto/hashes@sha2-v0.10.9...sha2-v0.11.0) --- updated-dependencies: - dependency-name: sha2 dependency-version: 0.11.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.13.3 to 26.6.2. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 26.6.2 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 6. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](actions/cache@v4...v6) --- updated-dependencies: - dependency-name: actions/cache dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7 to 8. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](actions/download-artifact@v7...v8) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.22.1 to 0.23.1. - [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md) - [Commits](marshallpierce/rust-base64@v0.22.1...v0.23.1) --- updated-dependencies: - dependency-name: base64 dependency-version: 0.23.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
A Bear Blog post opened with `27 Sep, 2026` and kept it: the leading-date rule already drops a line naming the item's day, but its parser knew seven layouts and none of them allowed a comma after the month. Dates are now read by their own module, in the forms publishers actually use (day or month first, any abbreviation, ordinals, a weekday, a trailing time of day, slashed and dotted numbers, RFC 3339 and 2822 stamps) and to the precision written. `September 2026` names a month and matches any day in it; `04/05/2026` keeps both readings until the item settles which. A line is a date only when all of it is one, so prose that mentions a date stays. An essay that closed with `Eric Gullichsen, September 2026` kept that too, because only the top of an article was cleaned. The last paragraph now goes on the same terms as a leading byline: a person's name and a date and nothing else, and the date must name the item's own day or month. A sign-off the item's date does not confirm, or that says anything more, stays with the author. Both run at build time as well as capture, so archived articles are fixed by the next build.
sha2 0.11 and base64 0.23 (#35, #32), resvg 0.48.1, and 22 lockfile updates. The sha1 and sha2 lines now share one `digest` generation, so importing its trait twice is gone, as is the deny.toml skip for the retired sha2 0.10. The workflows move to actions/cache 6 and actions/download-artifact 8 (#26, #30); cache changed only its runtime, and download-artifact now fails a checksum mismatch instead of warning, which the release artifacts it fetches pass. feed-rs stays on 2.x. Its 3.0.0 keeps an item's iTunes media object only when it has a title, description or content, so an episode whose only iTunes tag is its duration loses it: four duration tests and the Spotify reconciliation caught it, and nothing else would have. Dependabot now leaves the 3.x major alone, as it already does wreq and wreq-util, which stay pinned to their Apache-2.0 prereleases. The npm updates (#28, #31, #33, #34) target the `web/` package the hand-written reader removed and have nothing left to update.
A `<lite-youtube>` or `<lite-vimeo>` facade is empty without its script, so Readability dropped it and Simon Willison's talk lost its video. The facade now becomes the embed it stands for before extraction, and the Markdown links the video, which the reader plays inline. Favicon-service images and favicon files are page decoration: they are removed from bodies at build time and never chosen as an item preview. A leading label link that names its own target and precedes another link (`Comment` before `My comment on …`) is removed too.
Navigation inside the archive no longer loads a new document. app.js fetches a page as soon as its link is pressed or hovered, and once a page settles it also fetches the tabs, the neighbouring articles and rows that stay on screen (bounded). Following a link swaps <main>, the page's head metadata and window.AGGR (now read from #aggr-page) while the header and tab bar stay. Per-page setup runs under an AbortController the next swap ends. Scroll positions are kept per history entry and per list, and a momentum scroll still running is stopped on arrival. Tabs activate on touch release, so a tap lands even during a fling. Other sites, files, failed responses and pages from a newer release fall back to ordinary navigation. The speculation rules are gone. - Podcast player: shows the show and episode titles, the archived length before playback, jump buttons with the length inside a circling arrow, a finish time only while playing, and a stacked layout on phones. - Reading progress is 2px in the accent colour and keeps following the scroll under reduced motion; a fade below it keeps text off the bar. Without calc-size() (Safari) the folding header measures its title so no gap is left. - Touch views no longer underline links, and hover underlines no longer stick after a tap. Rows highlight as a whole when pressed. - The mobile tab bar sinks into the home-indicator area, 16px above the edge on Face ID iPhones instead of above the whole inset. - Browse entries skip off-screen layout, halving the swap time on iOS.
Its four commits (the vanilla client, the Rust-rendered heading anchors, the dev server without Vite, the Rust preference schema) reached main in #25 and are all present here; recorded as merged without changes.
Already applied on ab/dev by the dependency update; the merge records it.
Already applied on ab/dev by the dependency update; the merge records it.
Already applied on ab/dev by the dependency update; the merge records it.
Already applied on ab/dev by the dependency update; the merge records it.
The web/ frontend it updates was removed with the hand-written reader; the merge keeps it removed.
The web/ frontend it updates was removed with the hand-written reader; the merge keeps it removed.
The web/ frontend it updates was removed with the hand-written reader; the merge keeps it removed.
The web/ frontend it updates was removed with the hand-written reader; the merge keeps it removed.
ammonia 4.2 moved to html5ever 0.40 and cssparser 0.38 while scraper and dom_query stay a generation behind, and feed-rs 2 keeps quick-xml 0.41. cargo deny check is warning-free again.
feed-rs 3 keeps a media object only when it has content, a title or a description, so an item's `itunes:duration` or `itunes:image`, and a `media:group` or bare `media:*` without `media:content` (YouTube descriptions, Atom thumbnails), were lost. Parsing now reads those facts from the XML and restores them to the entries that lack them, without overriding what feed-rs kept. Author names lose the parentheses feed-rs now keeps from `mail@host (Name)`. Converting 18 live feeds (YouTube, Substack and Acast podcasts, HN, Lobsters, blogs, JSON Feed, GitHub releases) gives identical items, durations, thumbnails and content under feed-rs 2.4 and 3.0.
Enabling them only under (hover: hover) also turned them off for any browser that reports no hover at all, such as headless Chrome in CI. Touch screens (pointer: coarse) now drop the sticky underline instead, and article links keep theirs.
ammonia 4.2.3 and rustls 0.23.46 close the current RustSec reports. unsafe-libyaml stays ignored: serde_yaml_ng 0.10.0 still requires 0.2.11 and that advisory has no safe upgrade.
Arrival was taking the keyboard back to the page after a shortcut had already focused search. Seated provider frames also lost the loading cover, so the poster checks looked for an iframe that had left the card.
Arrival leaves a focused row in place, and the browser then scrolls that row back into view. Focus the page before scrolling so the saved place stays 300.
Owner
Author
|
@greptile review |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
This was referenced Oct 18, 2026
Owner
Author
|
@greptile review |
Owner
Author
|
@greptile review |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ab/devreader and ingestion changes together: lightweight feed defaults, typed Svelte page models, live list updates, offline behavior, source and media fixes, and article metadata layout.mise.tomlandmise.lock. Chrome for Testing and Windows x64 NASM now install through mise, with artifact checksums; CI and release builds use versioned runner images.TypeScript 6 remains for
svelte-check's peer range while the aliased TypeScript 7 checker handles the worker. The exact wreq prerelease pins preserve the Rust 1.96 minimum; the newer stable pair requires Rust 1.98.Verification
make setupmake check— 1,138 Rust tests and 364 client tests passedmake msrvmise exec -- npm --prefix web run verify— rebuilt assets unchangedmise exec -- cargo-deny --locked --all-features checkmise exec -- actionlint .github/workflows/ci.yml .github/workflows/release.yml