ACX
ffd2adb032
perf: strip unused fields from book list API response ( #2741 )
...
* perf: strip unused fields from book list API response
* fix: regenerate package-lock.json to sync with package.json
2026-02-13 22:09:01 -07:00
ACX
77b4deb942
feat: add button to fetch metadata from book file in metadata editor ( #2739 )
2026-02-13 21:04:00 -07:00
ACX
5076522f35
feat: add i18n translations for book components, services, and readers (en/es) ( #2738 )
2026-02-13 16:20:02 -07:00
ACX
3e44ee7d92
fix: update metadata viewer in real time after progress reset
2026-02-13 15:12:17 -07:00
ACX
81960f820e
feat: disable PDF printing for users without download permission ( #2735 ) ( #2737 )
2026-02-13 15:01:22 -07:00
ACX
54f633faad
feat: add annotation notebook with server-side pagination ( #2736 )
...
Co-authored-by: acx10 <acx10@users.noreply.github.com >
2026-02-13 14:43:31 -07:00
ACX
bf04a1f4db
fix: show provider icons in metadata viewer when only ID is present ( #2734 )
2026-02-13 10:24:35 -07:00
ACX
83edbf46d5
fix: replace Quill editor with native HTML rendering for book descriptions ( #2719 ) ( #2733 )
2026-02-13 09:13:01 -07:00
ACX
1098075ccb
chore: redesign README with cleaner layout and rewritten copy ( #2728 )
2026-02-13 00:07:51 -07:00
ACX
d4335f6125
feat(i18n): add Weblate integration and auth translations ( #2727 )
...
* feat(i18n): add Weblate integration and auth translations for all languages
* chore: cache-bust Weblate widget URL
2026-02-12 23:38:59 -07:00
ACX
51d9414aae
fix(i18n): correct sidecar file extension from .opf to .metadata.json
2026-02-12 22:38:39 -07:00
ACX
6b0cc27d1b
feat: add else clause and value modifiers to file naming patterns ( #2724 )
2026-02-12 22:17:55 -07:00
dependabot[bot]
facfc2843c
chore(deps): bump qs from 6.14.1 to 6.14.2 in /booklore-ui ( #2722 )
...
Bumps [qs](https://github.com/ljharb/qs ) from 6.14.1 to 6.14.2.
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/ljharb/qs/compare/v6.14.1...v6.14.2 )
---
updated-dependencies:
- dependency-name: qs
dependency-version: 6.14.2
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 20:50:22 -07:00
dependabot[bot]
f2723cd58c
chore(deps): bump the npm-dependencies group ( #2721 )
...
Bumps the npm-dependencies group in /booklore-ui with 13 updates:
| Package | From | To |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations ) | `21.1.3` | `21.1.4` |
| [@angular/cdk](https://github.com/angular/components ) | `21.1.3` | `21.1.4` |
| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common ) | `21.1.3` | `21.1.4` |
| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler ) | `21.1.3` | `21.1.4` |
| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core ) | `21.1.3` | `21.1.4` |
| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms ) | `21.1.3` | `21.1.4` |
| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser ) | `21.1.3` | `21.1.4` |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic ) | `21.1.3` | `21.1.4` |
| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router ) | `21.1.3` | `21.1.4` |
| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker ) | `21.1.3` | `21.1.4` |
| [@angular/build](https://github.com/angular/angular-cli ) | `21.1.3` | `21.1.4` |
| [@angular/cli](https://github.com/angular/angular-cli ) | `21.1.3` | `21.1.4` |
| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli ) | `21.1.3` | `21.1.4` |
Updates `@angular/animations` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/animations )
Updates `@angular/cdk` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/components/releases )
- [Changelog](https://github.com/angular/components/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/components/compare/v21.1.3...v21.1.4 )
Updates `@angular/common` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/common )
Updates `@angular/compiler` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/compiler )
Updates `@angular/core` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/core )
Updates `@angular/forms` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/forms )
Updates `@angular/platform-browser` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/platform-browser )
Updates `@angular/platform-browser-dynamic` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/platform-browser-dynamic )
Updates `@angular/router` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/router )
Updates `@angular/service-worker` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/service-worker )
Updates `@angular/build` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular-cli/compare/v21.1.3...v21.1.4 )
Updates `@angular/cli` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular-cli/compare/v21.1.3...v21.1.4 )
Updates `@angular/compiler-cli` from 21.1.3 to 21.1.4
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.4/packages/compiler-cli )
---
updated-dependencies:
- dependency-name: "@angular/animations"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/cdk"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/common"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/compiler"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/core"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/forms"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/platform-browser"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/platform-browser-dynamic"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/router"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/service-worker"
dependency-version: 21.1.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/build"
dependency-version: 21.1.4
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/cli"
dependency-version: 21.1.4
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/compiler-cli"
dependency-version: 21.1.4
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 20:49:07 -07:00
dependabot[bot]
9d3be9ec92
chore(deps): bump the gradle-dependencies group ( #2720 )
...
Bumps the gradle-dependencies group in /booklore-api with 2 updates: org.flywaydb:flyway-mysql and [jakarta.xml.bind:jakarta.xml.bind-api](https://github.com/jakartaee/jaxb-api ).
Updates `org.flywaydb:flyway-mysql` from 12.0.0 to 12.0.1
Updates `jakarta.xml.bind:jakarta.xml.bind-api` from 4.0.4 to 4.0.5
- [Release notes](https://github.com/jakartaee/jaxb-api/releases )
- [Commits](https://github.com/jakartaee/jaxb-api/compare/4.0.4...4.0.5 )
---
updated-dependencies:
- dependency-name: org.flywaydb:flyway-mysql
dependency-version: 12.0.1
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: gradle-dependencies
- dependency-name: jakarta.xml.bind:jakarta.xml.bind-api
dependency-version: 4.0.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: gradle-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-12 20:48:48 -07:00
acx10
5e0de4d3eb
fix(epub): suppress FileNotFoundException for optional EPUB files
2026-02-12 16:40:34 -07:00
ACX
414b6d8d9e
fix(ui): encode filter values in query params to handle commas in names ( #2117 ) ( #2717 )
2026-02-12 09:21:23 -07:00
Balázs Szücs
ae041f900f
feat(epub): enhance EPUB processing with optimized path validation and content type mapping ( #2598 )
...
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
2026-02-12 09:13:01 -07:00
ACX
dc238caff6
fix(ui): fix memory leaks and cascading API calls in metadata editor ( #2489 ) ( #2716 )
2026-02-12 09:07:47 -07:00
ACX
dc35ef443d
fix(ui): reload shelves when enabling Kobo sync ( #2528 ) ( #2715 )
2026-02-12 08:47:10 -07:00
ACX
c6503358d3
fix(ui): prevent footer submenu from rendering off screen ( #2531 ) ( #2714 )
2026-02-12 08:41:09 -07:00
ACX
df95f5806d
fix(ui): inline mobile charts submenu to prevent layout overflow ( #2549 ) ( #2713 )
2026-02-12 08:33:25 -07:00
ACX
910d26c530
feat(ui): add file name column to table view and include filename in search ( #2712 )
2026-02-12 08:28:57 -07:00
ACX
f8f448a19b
fix: reset audiobook progress and clear cached progress in UI ( #2641 ) ( #2711 )
2026-02-12 08:21:05 -07:00
ACX
120334eb28
fix(stats): fix inconsistent stat card styling and add median/session stats to completion race
2026-02-12 00:33:49 -07:00
ACX
8128269310
feat(stats): add 5 new user statistics charts ( #2703 )
...
* feat(stats): add 5 new user statistics charts
* fix(stats): use COALESCE for dateFinished in heartbeat and page turner queries
* refactor(stats): remove heartbeat, genre flow, reading seasons, and abandonment autopsy charts
* feat(stats): add 5 new user statistics charts
* feat(stats): add info tooltips to all 5 new charts
* perf(stats): limit completion race chart to 15 most recent books server-side
* fix(stats): limit completion race to 10 books and cap progress at 100%
* refactor(stats): replace streak bars with GitHub-style activity heatmap calendar
* fix(stats): widen chart info tooltips to prevent tall narrow box
* feat(stats): add info tooltip to Page Turner Score chart
* feat(stats): add info tooltips to 7 existing charts
* refactor(stats): deduplicate chart-info-icon style into global styles.scss
* refactor(stats): fix scoring bugs and improve Reading DNA and Reading Habits charts
* refactor(stats): rebalance Series Progress Tracker layout and unify heatmap footer pills
* feat(stats): add info tooltips to 4 remaining charts
* fix(stats): fix session duration and overlap bugs in Reading Session Timeline
2026-02-12 00:11:49 -07:00
ACX
7af21e079e
ci: move Angular/Gradle builds to native CI steps to eliminate QEMU emulation bottleneck ( #2705 )
2026-02-12 00:11:18 -07:00
ACX
c1e0c721f7
fix(reader): enable text copy in ebook reader ( #2700 ) ( #2702 )
2026-02-11 17:14:44 -07:00
ACX
9ed6a3fe72
feat(reader): add PDF annotations, Range streaming, and optimized chunk loading ( #2701 )
2026-02-11 16:51:59 -07:00
ACX
16de2d006f
feat(reader): add dark/light mode toggle and improved close button to PDF reader ( #2699 )
2026-02-11 15:06:35 -07:00
ACX
a9faf7d1ea
fix(reader): add overflow menu to ebook reader mobile header
2026-02-11 14:50:49 -07:00
ACX
672b7163f1
feat(reader): add fullscreen, keyboard shortcuts help, search cancel, and go-to-percentage to ebook reader ( #2698 )
2026-02-11 14:32:38 -07:00
Balázs Szücs
e8530fa0b7
fix(comicvine): add fallback to issue detail endpoint for missing creator credits ( #2694 )
...
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
2026-02-11 10:22:49 -07:00
WorldTeacher
7e6ad212b0
show session numbers in book ( #2696 )
2026-02-11 10:22:01 -07:00
ACX
aac8246bcf
feat(reader): improve cbx reader mobile header and slideshow indicator
2026-02-10 22:38:15 -07:00
ACX
574bfdbe7a
fix(reader): disable tap-to-turn-page on mobile devices
2026-02-10 21:54:58 -07:00
ACX
20e73bd108
feat(filter): add audiobook narrator filter and sort option
2026-02-10 21:41:46 -07:00
dependabot[bot]
165a36a574
chore(deps): bump the npm-dependencies group across 1 directory with 18 updates ( #2687 )
...
Bumps the npm-dependencies group with 18 updates in the /booklore-ui directory:
| Package | From | To |
| --- | --- | --- |
| [@angular/animations](https://github.com/angular/angular/tree/HEAD/packages/animations ) | `21.1.2` | `21.1.3` |
| [@angular/cdk](https://github.com/angular/components ) | `21.1.2` | `21.1.3` |
| [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common ) | `21.1.2` | `21.1.3` |
| [@angular/compiler](https://github.com/angular/angular/tree/HEAD/packages/compiler ) | `21.1.2` | `21.1.3` |
| [@angular/core](https://github.com/angular/angular/tree/HEAD/packages/core ) | `21.1.2` | `21.1.3` |
| [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms ) | `21.1.2` | `21.1.3` |
| [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser ) | `21.1.2` | `21.1.3` |
| [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic ) | `21.1.2` | `21.1.3` |
| [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router ) | `21.1.2` | `21.1.3` |
| [@angular/service-worker](https://github.com/angular/angular/tree/HEAD/packages/service-worker ) | `21.1.2` | `21.1.3` |
| [@iharbeck/ngx-virtual-scroller](https://github.com/iharbeck/ngx-virtual-scroller ) | `19.0.1` | `20.0.0` |
| [@stomp/stompjs](https://github.com/stomp-js/stompjs ) | `7.2.1` | `7.3.0` |
| [@angular/build](https://github.com/angular/angular-cli ) | `21.1.2` | `21.1.3` |
| [@angular/compiler-cli](https://github.com/angular/angular/tree/HEAD/packages/compiler-cli ) | `21.1.2` | `21.1.3` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) | `25.1.0` | `25.2.3` |
| [eslint](https://github.com/eslint/eslint ) | `9.39.2` | `10.0.0` |
| [jsdom](https://github.com/jsdom/jsdom ) | `27.4.0` | `28.0.0` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint ) | `8.54.0` | `8.55.0` |
Updates `@angular/animations` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/animations )
Updates `@angular/cdk` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/components/releases )
- [Changelog](https://github.com/angular/components/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/components/compare/v21.1.2...v21.1.3 )
Updates `@angular/common` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/common )
Updates `@angular/compiler` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/compiler )
Updates `@angular/core` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/core )
Updates `@angular/forms` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/forms )
Updates `@angular/platform-browser` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/platform-browser )
Updates `@angular/platform-browser-dynamic` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/platform-browser-dynamic )
Updates `@angular/router` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/router )
Updates `@angular/service-worker` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/service-worker )
Updates `@iharbeck/ngx-virtual-scroller` from 19.0.1 to 20.0.0
- [Changelog](https://github.com/iharbeck/ngx-virtual-scroller/blob/master/CHANGELOG.md )
- [Commits](https://github.com/iharbeck/ngx-virtual-scroller/commits )
Updates `@stomp/stompjs` from 7.2.1 to 7.3.0
- [Release notes](https://github.com/stomp-js/stompjs/releases )
- [Commits](https://github.com/stomp-js/stompjs/commits/v7.3.0 )
Updates `@angular/build` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular-cli/compare/v21.1.2...v21.1.3 )
Updates `@angular/compiler-cli` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular/releases )
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md )
- [Commits](https://github.com/angular/angular/commits/v21.1.3/packages/compiler-cli )
Updates `@types/node` from 25.1.0 to 25.2.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
Updates `eslint` from 9.39.2 to 10.0.0
- [Release notes](https://github.com/eslint/eslint/releases )
- [Commits](https://github.com/eslint/eslint/compare/v9.39.2...v10.0.0 )
Updates `jsdom` from 27.4.0 to 28.0.0
- [Release notes](https://github.com/jsdom/jsdom/releases )
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md )
- [Commits](https://github.com/jsdom/jsdom/compare/27.4.0...28.0.0 )
Updates `typescript-eslint` from 8.54.0 to 8.55.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases )
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md )
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.55.0/packages/typescript-eslint )
---
updated-dependencies:
- dependency-name: "@angular/animations"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/cdk"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/common"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/compiler"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/core"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/forms"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/platform-browser"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/platform-browser-dynamic"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/router"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/service-worker"
dependency-version: 21.1.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@iharbeck/ngx-virtual-scroller"
dependency-version: 20.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: npm-dependencies
- dependency-name: "@stomp/stompjs"
dependency-version: 7.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: npm-dependencies
- dependency-name: "@angular/build"
dependency-version: 21.1.3
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@angular/compiler-cli"
dependency-version: 21.1.3
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: npm-dependencies
- dependency-name: "@types/node"
dependency-version: 25.2.3
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-dependencies
- dependency-name: eslint
dependency-version: 10.0.0
dependency-type: direct:development
update-type: version-update:semver-major
dependency-group: npm-dependencies
- dependency-name: jsdom
dependency-version: 28.0.0
dependency-type: direct:development
update-type: version-update:semver-major
dependency-group: npm-dependencies
- dependency-name: typescript-eslint
dependency-version: 8.55.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: npm-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-10 21:16:15 -07:00
ACX
6da6e8e373
fix(metadata): improve cover errors, reduce metadata fetch count, and hide attach option ( #2690 )
...
* fix(metadata): improve cover regen errors and reduce detailed metadata fetch count
* fix(metadata): hide attach-to-book option in single-format libraries
---------
Co-authored-by: acx10 <acx10@users.noreply.github.com >
2026-02-10 21:14:46 -07:00
ACX
ff11ec57b8
feat(metadata): return full metadata from fetchMetadata instead of previews ( #2689 )
...
Amazon, Audible, and GoodReads parsers now fetch full detailed metadata
(4 results each) instead of returning lightweight previews. Adds randomized
500-1500ms delays between requests. GoodReads retries with title-only search
(2 results) when title+author yields no matches.
Co-authored-by: acx10 <acx10@users.noreply.github.com >
2026-02-10 15:49:11 -07:00
dependabot[bot]
fe950d97b1
chore(deps): bump tar from 7.5.6 to 7.5.7 in /booklore-ui ( #2534 )
...
Bumps [tar](https://github.com/isaacs/node-tar ) from 7.5.6 to 7.5.7.
- [Release notes](https://github.com/isaacs/node-tar/releases )
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md )
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.6...v7.5.7 )
---
updated-dependencies:
- dependency-name: tar
dependency-version: 7.5.7
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-10 14:32:38 -07:00
dependabot[bot]
bca12b6a35
chore(deps): bump @modelcontextprotocol/sdk and @angular/cli ( #2612 )
...
Bumps [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk ) to 1.26.0 and updates ancestor dependency [@angular/cli](https://github.com/angular/angular-cli ). These dependencies need to be updated together.
Updates `@modelcontextprotocol/sdk` from 1.25.2 to 1.26.0
- [Release notes](https://github.com/modelcontextprotocol/typescript-sdk/releases )
- [Commits](https://github.com/modelcontextprotocol/typescript-sdk/compare/v1.25.2...v1.26.0 )
Updates `@angular/cli` from 21.1.2 to 21.1.3
- [Release notes](https://github.com/angular/angular-cli/releases )
- [Changelog](https://github.com/angular/angular-cli/blob/v21.1.3/CHANGELOG.md )
- [Commits](https://github.com/angular/angular-cli/compare/v21.1.2...v21.1.3 )
---
updated-dependencies:
- dependency-name: "@modelcontextprotocol/sdk"
dependency-version: 1.26.0
dependency-type: indirect
- dependency-name: "@angular/cli"
dependency-version: 21.1.3
dependency-type: direct:development
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-10 14:29:06 -07:00
ACX
0fa84e3424
feat(sort): replace compound sort options with atomic fields and multi-sort support ( #2686 )
...
* fix(sidebar): replace routerLinkActive with getter-based route matching to prevent stale highlights
* feat(sort): replace compound sort options with atomic fields and add 6 new sort criteria
2026-02-10 14:27:07 -07:00
ACX
78a8bb4fea
fix(settings): use boxed Integer for ScrollerConfig.maxItems to allow null ( #2684 )
...
Co-authored-by: acx10 <acx10@users.noreply.github.com >
2026-02-10 10:40:07 -07:00
Balázs Szücs
9444a544f9
feat(cbx-reader): enhance ZIP archive handling with Unicode support and fallback mechanisms ( #2593 )
...
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
2026-02-10 09:30:31 -07:00
Balázs Szücs
697de9052f
feat(metadata): add custom metadata write to file support for moods, tags, ratings, and external IDs in PDF, and CBZ ( #2552 )
...
* feat(metadata): add BookLore custom metadata support for moods, tags, ratings, and external IDs in EPUB, PDF, and CBZ
- Introduce BookLoreSchema for XMP custom fields and BookLoreMetadata for namespace constants
- Write and extract moods, tags, ratings, and external IDs (Goodreads, Amazon, Hardcover, Lubimyczytac, RanobeDB, Google) in EPUB, PDF, and CBZ metadata
- Store BookLore custom fields in ComicInfo.xml notes and Web fields for CBZ
- Add BookLore fields to XMP metadata in PDF, including moods and tags as separate fields
- Update extractors and writers to handle BookLore fields and ensure separation of categories, moods, and tags
- Add comprehensive tests for BookLore metadata extraction and writing
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* refactor(metadata): standardize hardcoverBookId as String and improve identifier handling
- Change hardcoverBookId field and related methods to use String instead of Integer for consistency across extractors and writers
- Update metadata copy helpers and tests to reflect new hardcoverBookId type
- Improve identifier prefix handling in EPUB and PDF extractors to be case-insensitive and trim whitespace
- Allow PDF keywords to be split by comma or semicolon
- Rename TaskCreateRequest#getOptions to getOptionsAs for clarity and update usages
- Adjust series number writing in EPUB metadata to preserve decimals when needed
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* refactor(metadata): standardize usage of tags over categories and improve BookLore field extraction
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): add rating and ratingLocked fields to BookMetadata and improve PDF metadata extraction
- Add rating and ratingLocked fields to BookMetadata for enhanced rating support
- Refine PDF keyword extraction to handle both comma and semicolon delimiters
- Ensure ISBN fields are only set if cleaned values are non-blank
- Use temp file only stream cache when loading PDFs for metadata writing
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): implement ComicInfo.xml writing via JAXB, ensure XSD compliance and add tests for CBX metadata persistence
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): enhance metadata extraction with additional identifiers and improve parsing logic
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): improve metadata handling by ensuring descriptions are prioritized and enhancing keyword management for PDF compatibility
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* refactor(metadata): simplify Pages class structure in ComicInfo.java
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): refine PDF metadata writing by isolating categories for legacy compatibility and removing moods and tags from keywords
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): enhance PDF metadata extraction and writing with support for additional fields and improved handling of series information
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): enhance PDF metadata extraction and writing with support for additional fields and improved handling of series information
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): implement secure XML parsing utility and enhance metadata extraction with improved GTIN validation and debug logging
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* refactor(metadata): update package structure to align with new organization naming conventions
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* fix(epub-metadata): streamline cover image extraction logic and improve error handling
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): enhance PDF and comic metadata extraction with additional fields
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* feat(metadata): migrate to tools.jackson for JSON processing in sidecar metadata handling
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
* fix(epub-metadata): streamline cover image extraction and enhance XML parsing security
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
---------
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com >
2026-02-10 09:29:25 -07:00
ACX
53403c168d
fix(i18n): dynamic sidebar translations and UI font normalization ( #2683 )
...
* fix(i18n): make sidebar menu labels translate dynamically on language change
* fix: sync package-lock.json with missing hono dependency
* style: normalize small font sizes to 0.875rem across UI components
2026-02-10 09:27:00 -07:00
ACX
d133a8767e
feat(i18n): translate dashboard scroller titles dynamically (EN/ES)
2026-02-10 08:39:14 -07:00
ACX
92a86bf23a
fix(i18n): align translation keys in metadata viewer, searcher, sidecar, and tabs components (EN/ES)
2026-02-10 08:32:56 -07:00
ACX
0f60faa124
feat(i18n): add Transloco translation framework with EN/ES and 7 language scaffolds ( #2681 )
...
* feat(i18n): add Transloco translation framework and translate all settings tabs (EN/ES)
* feat(i18n): translate shared, layout, dashboard, library-creator, and app-root components (EN/ES) and scaffold 7 new languages
* feat(i18n): translate bookdrop and metadata components (EN/ES), remove i18n-audit from tracking
* fix(i18n): deep-merge English as fallback base for incomplete language translations
2026-02-10 07:49:01 -07:00