🔖 Release v0.1.6 - #1315
Merged
Merged
🔖 Release v0.1.6#1315
Conversation
* (expo) Fix language key in epub reader menu * Update labels for menu items in ReadiumFooter
Bumps [@tailwindcss/typography](https://github.com/tailwindlabs/tailwindcss-typography) from 0.5.19 to 0.5.20. - [Release notes](https://github.com/tailwindlabs/tailwindcss-typography/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss-typography/blob/main/CHANGELOG.md) - [Commits](tailwindlabs/tailwindcss-typography@v0.5.19...v0.5.20) --- updated-dependencies: - dependency-name: "@tailwindcss/typography" dependency-version: 0.5.20 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [fumadocs-ui](https://github.com/fuma-nama/fumadocs) from 16.8.11 to 16.10.3. - [Release notes](https://github.com/fuma-nama/fumadocs/releases) - [Commits](https://github.com/fuma-nama/fumadocs/compare/fumadocs-ui@16.8.11...fumadocs-ui@16.10.3) --- updated-dependencies: - dependency-name: fumadocs-ui dependency-version: 16.10.3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@tanstack/react-query](https://github.com/TanStack/query/tree/HEAD/packages/react-query) from 5.90.12 to 5.101.0. - [Release notes](https://github.com/TanStack/query/releases) - [Changelog](https://github.com/TanStack/query/blob/main/packages/react-query/CHANGELOG.md) - [Commits](https://github.com/TanStack/query/commits/@tanstack/react-query@5.101.0/packages/react-query) --- updated-dependencies: - dependency-name: "@tanstack/react-query" dependency-version: 5.101.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* New translations en-us.json (German) [ci skip] * New translations en-us.json (Romanian) [ci skip] * New translations en-us.json (French) [ci skip] * New translations en-us.json (Spanish) [ci skip] * New translations en-us.json (Afrikaans) [ci skip] * New translations en-us.json (Arabic) [ci skip] * New translations en-us.json (Catalan) [ci skip] * New translations en-us.json (Czech) [ci skip] * New translations en-us.json (Danish) [ci skip] * New translations en-us.json (Greek) [ci skip] * New translations en-us.json (Finnish) [ci skip] * New translations en-us.json (Hebrew) [ci skip] * New translations en-us.json (Hungarian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Japanese) [ci skip] * New translations en-us.json (Korean) [ci skip] * New translations en-us.json (Dutch) [ci skip] * New translations en-us.json (Norwegian) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Portuguese) [ci skip] * New translations en-us.json (Russian) [ci skip] * New translations en-us.json (Serbian (Cyrillic)) [ci skip] * New translations en-us.json (Swedish) [ci skip] * New translations en-us.json (Turkish) [ci skip] * New translations en-us.json (Ukrainian) [ci skip] * New translations en-us.json (Chinese Simplified) [ci skip] * New translations en-us.json (Chinese Traditional) [ci skip] * New translations en-us.json (Vietnamese) [ci skip] * New translations en-us.json (Portuguese, Brazilian) [ci skip] * New translations en-us.json (Persian) [ci skip] * New translations en-us.json (English, United Kingdom) [ci skip] * New translations en-us.json (German) [ci skip] * New translations en-us.json (German) [ci skip]
* refactor auto progress like i did in sdk 56 feat branch should help prevent dupe ops on rerender * fix sync skipped locale key + dedupe * wip: collect instances once before sync ops its a little bit of an awkward dance where each sync type has its own hook to implement how sync works, then full sync uses them all in sequence. the problem is they each pulled instances and would report on skipped servers. the more ideal fix is outlined in a comment for future aaron problem * rm unused routes * use active model insert + document finding as todo * improve sort and display menu for android subtitle underneath label * wip address #1254 * better but still slightly out of sync * oopsies * idk full removal seems to work a bit better * jot thoughts down for later * endless toil * more thoughts!
* New translations en-us.json (German) [ci skip] * New translations en-us.json (Romanian) [ci skip] * New translations en-us.json (French) [ci skip] * New translations en-us.json (Spanish) [ci skip] * New translations en-us.json (Afrikaans) [ci skip] * New translations en-us.json (Arabic) [ci skip] * New translations en-us.json (Catalan) [ci skip] * New translations en-us.json (Czech) [ci skip] * New translations en-us.json (Danish) [ci skip] * New translations en-us.json (Greek) [ci skip] * New translations en-us.json (Finnish) [ci skip] * New translations en-us.json (Hebrew) [ci skip] * New translations en-us.json (Hungarian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Japanese) [ci skip] * New translations en-us.json (Korean) [ci skip] * New translations en-us.json (Dutch) [ci skip] * New translations en-us.json (Norwegian) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Portuguese) [ci skip] * New translations en-us.json (Russian) [ci skip] * New translations en-us.json (Serbian (Cyrillic)) [ci skip] * New translations en-us.json (Swedish) [ci skip] * New translations en-us.json (Turkish) [ci skip] * New translations en-us.json (Ukrainian) [ci skip] * New translations en-us.json (Chinese Simplified) [ci skip] * New translations en-us.json (Chinese Traditional) [ci skip] * New translations en-us.json (Vietnamese) [ci skip] * New translations en-us.json (Portuguese, Brazilian) [ci skip] * New translations en-us.json (Persian) [ci skip] * New translations en-us.json (English, United Kingdom) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (German) [ci skip] * New translations en-us.json (English, United Kingdom) [ci skip] * New translations en-us.json (Swedish) [ci skip] * New translations en-us.json (Swedish) [ci skip] * New translations en-us.json (Swedish) [ci skip]
Updates for LLM disclosures etc etc
Co-authored-by: 윤혁준 <hjyoon@hjyoon-MacBookPro.local>
…d rendering best practices (#1209) * Fix pdfium concurrent crashes and scale page dimensions using dpi * Remove unused pdf crate dependency * Fix pdf metadata date parsing and tag mapping * Refine PDF date parsing and optimize page caching performance * Extract date parsing logic into robust utility and update metadata handler * Use is_some_and for cleaner parsing and add comments to PDF cache file operations and pre-rendering logic * Run cargo fmt --all on the branch * safe acquire of pdfium lock and bubble error * don't fail the entire pdf conversion if one page fails * make pdf tests skip without pdfium, fix prerender flakiness, and add zip test * Run cargo fmt on the branch * rm redundant features bit * address feedback items my own feedback lol 💅 --------- Co-authored-by: Aaron Leopold <36278431+aaronleopold@users.noreply.github.com>
* move dep to root * shove err msgs in toast * simple regex for cron not going the browser-native route suggested in the ticket, rather lean into existing validation system * swap to croner * localize
* feat(metadata): manual per-book metadata search and apply
Metadata fetching was built around the fully automatic library-wide
scan job: it searches every enabled provider with the book's stored
name and may auto-apply matches above a confidence threshold. There
was no way to intervene for a single book, so a badly named file
("08 - Ascension.epub") could never be matched manually against the
correct title/author.
This adds a "Search metadata" action to the book management scene
(gated behind MetadataFetchRecordManage) with title/author/isbn/year
fields and a provider picker, feeding results into the existing
MatchReviewDialog accept/reject flow, and fixes several defects that
surfaced along the way.
API:
- Add MediaMetadataSearchInput as an optional 'search' argument on
fetchMediaMetadata. When present, caller fields take precedence
over stored metadata, the search is restricted to one provider if
given, and auto-apply is always skipped so nothing is written
without review. The mutation now returns the MetadataFetchRecord
(matching accept/reject) instead of a bare candidate list. The
bulk job in fetch_job.rs is untouched.
Applying matches:
- ExternalMediaMetadata.series_name/.number were fetched from
providers and threaded through GraphQL into the frontend fragment,
but dropped on both ends: MEDIA_FIELD_DEFS had no candidateKey for
Series/Number so the review table filtered the rows out, and
apply_media_fields/build_media_metadata_insert never wrote the
columns. Both are now handled like every other field, with
regression tests covering the apply and insert paths. This
populates the ComicInfo-style media_metadata.series text column,
not the relational media.series_id.
Partial results:
- Hardcover requires one search plus a separate per-hit detail fetch;
any single detail fetch failing (e.g. rate limited) silently
dropped that candidate with only a log line. search_media/
search_series now return SearchOutcome{candidates, requested}, the
shortfall is persisted as a new had_partial_results column on
metadata_fetch_records (additive migration, DEFAULT FALSE), and the
UI shows a toast suggesting a retry.
Review strategy:
- The review dialog defaults to FillGaps, which is right for the
unattended bulk scan but wrong for a manual search: a book with any
title at all would never be offered a correction. The store's
open() now accepts a strategy and only the manual entry point
passes PreferExternal; per-field exclusions and overrides still
apply, bulk behavior is unchanged.
Frontend enablement:
- Hoist the PendingMatchRecord fragment out of PendingMatchesTable
into a shared fragments.ts so the new dialog can reuse it.
- Extend useMatchActions' cache invalidation to also refresh the
book's own query keys after accepting/rejecting a match.
- Add Number/Volume as sort options for book listings; the
MediaMetadataModelOrdering GraphQL path existed but no UI emitted
it, so a populated series position can now actually order books.
- Expose METADATA_FETCH_RECORD_READ/MANAGE and
METADATA_PROVIDER_READ/MANAGE as a "Metadata management" group in
the user permissions table. The backend has enforced these since
the metadata foundations landed, but no checkbox ever rendered, so
non-owner admins could not be granted access.
All schema changes are additive and the migration runs on startup.
Assisted-by: claude:claude-sonnet-5
Assisted-by: claude:claude-fable-5
* fix(metadata): unify provider filters, track raw hits
Address aaronleopold's review comments on #1277:
- Merge the library-type and provider filters in fetch_media_metadata
into a single filter_providers() helper instead of two sequential
.filter() passes, and split the "no providers" error message so it
correctly distinguishes "no provider for this library type" from
"the specifically requested provider isn't enabled", logging both
the library type and provider filter in each case.
- Replace metadata_fetch_records.had_partial_results (bool) with
raw_hits (i32), the total raw hit count reported by provider
searches. This is strictly more informative for the same cost
(SearchOutcome already carries the count) and lets the frontend
derive "results were incomplete" as
rawHits > matchCandidates.length instead of trusting an opaque
flag, leaving room for a richer "3 of 5 fetched" message later.
- Localize the two hardcoded strings added to BookManagementScene's
new "Search metadata" section (heading/description/button) into
en-US.json instead of leaving them inline.
- Parse the year field in BookMetadataSearch with parseInt(year, 10)
and skip it when NaN, instead of trusting Number() on arbitrary
user input.
skip_auto_apply is intentionally left as-is: auto-apply being
opt-in is per-provider-config, not per-request, so without this flag
a manual search against a provider with auto-apply enabled could
still silently apply a match before the user gets to review it.
Assisted-by: claude:claude-sonnet-5
Fixes a regression from c759318
* separate internal api router from sync router the auth middleware was getting layered at the wrong spot thus returning those 401s * add tests to assert fix
* 🩹 Auto-append port for non-IP origins Relates to #1224 * update docs
* accent hue picker * replace accentColor * add chroma scale preference * update nativewind * add locale support * add interpolation * fix bottom ScrollToChapterIndicator * use colors.sheet.background on more sheets * make create and update annotations sheets look nicer * modify buttons * fix no config usePalette chroma * update background colour of annotation sheets * small adjustment to docs * remove continuous palette preview --------- Co-authored-by: Aaron Leopold <36278431+aaronleopold@users.noreply.github.com>
* New translations en-us.json (German) [ci skip] * New translations en-us.json (Romanian) [ci skip] * New translations en-us.json (French) [ci skip] * New translations en-us.json (Spanish) [ci skip] * New translations en-us.json (Afrikaans) [ci skip] * New translations en-us.json (Arabic) [ci skip] * New translations en-us.json (Catalan) [ci skip] * New translations en-us.json (Czech) [ci skip] * New translations en-us.json (Danish) [ci skip] * New translations en-us.json (Greek) [ci skip] * New translations en-us.json (Finnish) [ci skip] * New translations en-us.json (Hebrew) [ci skip] * New translations en-us.json (Hungarian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Japanese) [ci skip] * New translations en-us.json (Korean) [ci skip] * New translations en-us.json (Dutch) [ci skip] * New translations en-us.json (Norwegian) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Swedish) [ci skip] * New translations en-us.json (English, United Kingdom) [ci skip] * New translations en-us.json (Portuguese) [ci skip] * New translations en-us.json (Russian) [ci skip] * New translations en-us.json (Serbian (Cyrillic)) [ci skip] * New translations en-us.json (Turkish) [ci skip] * New translations en-us.json (Ukrainian) [ci skip] * New translations en-us.json (Chinese Simplified) [ci skip] * New translations en-us.json (Chinese Traditional) [ci skip] * New translations en-us.json (Vietnamese) [ci skip] * New translations en-us.json (Portuguese, Brazilian) [ci skip] * New translations en-us.json (Persian) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Spanish) [ci skip] * New translations en-us.json (German) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Swedish) [ci skip] * New translations en-us.json (English, United Kingdom) [ci skip] * New translations en-us.json (Romanian) [ci skip] * New translations en-us.json (French) [ci skip] * New translations en-us.json (Spanish) [ci skip] * New translations en-us.json (Afrikaans) [ci skip] * New translations en-us.json (Arabic) [ci skip] * New translations en-us.json (Catalan) [ci skip] * New translations en-us.json (Czech) [ci skip] * New translations en-us.json (Danish) [ci skip] * New translations en-us.json (Greek) [ci skip] * New translations en-us.json (Finnish) [ci skip] * New translations en-us.json (Hebrew) [ci skip] * New translations en-us.json (Hungarian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Japanese) [ci skip] * New translations en-us.json (Korean) [ci skip] * New translations en-us.json (Dutch) [ci skip] * New translations en-us.json (Norwegian) [ci skip] * New translations en-us.json (Portuguese) [ci skip] * New translations en-us.json (Russian) [ci skip] * New translations en-us.json (Serbian (Cyrillic)) [ci skip] * New translations en-us.json (Turkish) [ci skip] * New translations en-us.json (Ukrainian) [ci skip] * New translations en-us.json (Chinese Simplified) [ci skip] * New translations en-us.json (Chinese Traditional) [ci skip] * New translations en-us.json (English) [ci skip] * New translations en-us.json (Vietnamese) [ci skip] * New translations en-us.json (Portuguese, Brazilian) [ci skip] * New translations en-us.json (Persian) [ci skip] * New translations en-us.json (German) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Swedish) [ci skip] * New translations en-us.json (English, United Kingdom) [ci skip] * New translations en-us.json (Romanian) [ci skip] * New translations en-us.json (French) [ci skip] * New translations en-us.json (Spanish) [ci skip] * New translations en-us.json (Afrikaans) [ci skip] * New translations en-us.json (Arabic) [ci skip] * New translations en-us.json (Catalan) [ci skip] * New translations en-us.json (Czech) [ci skip] * New translations en-us.json (Danish) [ci skip] * New translations en-us.json (Greek) [ci skip] * New translations en-us.json (Finnish) [ci skip] * New translations en-us.json (Hebrew) [ci skip] * New translations en-us.json (Hungarian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Japanese) [ci skip] * New translations en-us.json (Korean) [ci skip] * New translations en-us.json (Dutch) [ci skip] * New translations en-us.json (Norwegian) [ci skip] * New translations en-us.json (Portuguese) [ci skip] * New translations en-us.json (Russian) [ci skip] * New translations en-us.json (Serbian (Cyrillic)) [ci skip] * New translations en-us.json (Turkish) [ci skip] * New translations en-us.json (Ukrainian) [ci skip] * New translations en-us.json (Chinese Simplified) [ci skip] * New translations en-us.json (Chinese Traditional) [ci skip] * New translations en-us.json (English) [ci skip] * New translations en-us.json (Vietnamese) [ci skip] * New translations en-us.json (Portuguese, Brazilian) [ci skip] * New translations en-us.json (Persian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (German) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Swedish) [ci skip] * New translations en-us.json (English, United Kingdom) [ci skip] * New translations en-us.json (Romanian) [ci skip] * New translations en-us.json (French) [ci skip] * New translations en-us.json (Spanish) [ci skip] * New translations en-us.json (Afrikaans) [ci skip] * New translations en-us.json (Arabic) [ci skip] * New translations en-us.json (Catalan) [ci skip] * New translations en-us.json (Czech) [ci skip] * New translations en-us.json (Danish) [ci skip] * New translations en-us.json (Greek) [ci skip] * New translations en-us.json (Finnish) [ci skip] * New translations en-us.json (Hebrew) [ci skip] * New translations en-us.json (Hungarian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Japanese) [ci skip] * New translations en-us.json (Korean) [ci skip] * New translations en-us.json (Dutch) [ci skip] * New translations en-us.json (Norwegian) [ci skip] * New translations en-us.json (Portuguese) [ci skip] * New translations en-us.json (Russian) [ci skip] * New translations en-us.json (Serbian (Cyrillic)) [ci skip] * New translations en-us.json (Turkish) [ci skip] * New translations en-us.json (Ukrainian) [ci skip] * New translations en-us.json (Chinese Simplified) [ci skip] * New translations en-us.json (Chinese Traditional) [ci skip] * New translations en-us.json (English) [ci skip] * New translations en-us.json (Vietnamese) [ci skip] * New translations en-us.json (Portuguese, Brazilian) [ci skip] * New translations en-us.json (Persian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Italian) [ci skip] * New translations en-us.json (Polish) [ci skip] * New translations en-us.json (Korean) [ci skip]
* 🐛 (expo): Fix missing size from downloads seems to have been some underlying issue with the legacy filesystem lib usage, cannot upgrade to non-legacy until sdk 56 so thats fun * bump sdk * expo doctor * yoink react-native-ios-utilities patch dominicstop/react-native-ios-utilities#44 * fix swift errors, fmt, update router patch * upgrade react, react-native-screens + rm patch * fix imports per migration guide * fix icon issues * 🐛 Fix missing `id` handling for media filter * wip update fs ops * update yarn.lock * fix safe area classes + locale for download btn * fix download progress
* version.workspace for all crates * refactor workflows, trim dead bits * cleanup scripts * rewrite version script as mjs * cargo lock updates after rebase * local gitmoji-changelog there were some issues running as binary with npx that i did not want to deal with
Merged
aaronleopold
marked this pull request as ready for review
August 2, 2026 17:12
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.
0.1.6 (2026-08-01)
Added
Changed
Fixed
Miscellaneous