neon
4cb0149380
feat(settings): add series number badge to book cover card overlay ( #37 )
...
Series position badge (#N) rendered in the top-right corner of cover
cards, sharing a flex-column container with the existing lock-status
badge. Shown only when seriesIndex is non-null. Whole numbers strip the
decimal (3.0 -> #3 ); fractional values display as-is (1.5 -> #1.5).
Hovering the badge shows a tooltip with the full series name and position.
Enabled by default in Appearance -> Card Overlays.
Closes #32
2026-05-18 13:48:38 -06:00
neon
5524cd9d0d
fix(email): add skip-TLS-verification option and surface provider delete errors ( #35 )
...
Node.js inside Docker validates the full TLS certificate chain against its bundled
CA store. When the chain cannot be verified (e.g. outdated CA bundle, self-signed
cert, or Let's Encrypt chain not trusted), nodemailer reports a misleading error
like "certificate has expired". Add a per-provider tlsRejectUnauthorized flag
(default: true) that passes tls.rejectUnauthorized=false to nodemailer when
disabled, letting self-hosted SMTP servers opt out of cert verification. A visible
warning is shown in the provider form whenever the flag is turned off.
The delete provider API already returned a clear 400 message explaining that the
system designation must be removed first, but the frontend threw a hardcoded
"Failed to delete provider" string and never read the response body. Fix the
composable to parse and rethrow the actual API error message. Also disable the
delete button for system providers with a tooltip stating the constraint, so users
cannot trigger the error in the first place.
Adds tlsRejectUnauthorized boolean column (NOT NULL DEFAULT true) to
email_providers via Drizzle migration 0004.
Closes #26
2026-05-18 12:38:22 -06:00
neon
54fa317441
chore: remove legacy markdown issue templates
...
Keep only YAML issue forms so GitHub does not show duplicate Bug and Feature entries.
2026-05-18 00:17:54 -06:00
neon
2dea6915d4
chore(server): increase currently reading widget limit to 10
...
Adjust the currently reading cap to tune dashboard density without changing feature scope.
2026-05-18 04:26:39 +00:00
neon
69f69febb2
feat(book): add highlights tab with filters, export, and pagination
2026-05-18 03:52:17 +00:00
neon
e89f4ce0e4
ci: enforce PR issue references and branch conventions
...
Validate BO-<issue>-<slug> branch names and lint PR titles and commit headers in CI and release workflows.
Require GitHub closing-keyword issue references and verify referenced issues exist. Align contributing, release, commit, testing, and policy docs with the enforced behavior and tone.
2026-05-17 13:10:32 -06:00
neon
9f15d0955a
feat(reading-log): implement end-to-end reading log feature
2026-05-17 01:42:41 -06:00
neon
8d535c2617
fix(metadata): use Goodreads autocomplete before HTML search
2026-05-16 23:35:31 -06:00
neon
eb9b714ecb
feat: add full-stack achievements system
...
- add achievement schema, migrations, evaluators, APIs, and backfill support on the server
- add achievements UI, composables, toast utilities, and tests on the client
- add shared achievement/auth/notification type updates
2026-05-16 15:50:42 +00:00
neon
9fdb3f46bb
chore(book): unify rating star colors across views
2026-05-15 12:20:09 -06:00
neon
7d1435cbd3
fix(dashboard): include read status in scroller cards
2026-05-14 23:54:14 -06:00
neon
c4f9b289f6
fix(client): disable pwa service worker in dev
2026-05-14 23:48:20 -06:00
neon
9660f4bee4
fix(server): randomize dashboard discover scroller selection
...
Use ORDER BY random() for unread discover results so the scroller returns a true random sample instead of contiguous ID slices. Update repository tests to match the new single-query selection flow.
2026-05-14 22:59:00 -06:00
dependabot[bot]
2eb6ee4cee
chore(deps): bump the development-dependencies group with 19 updates ( #14 )
...
* chore(deps): bump the development-dependencies group with 19 updates
Bumps the development-dependencies group with 19 updates:
| Package | From | To |
| --- | --- | --- |
| [@semantic-release/release-notes-generator](https://github.com/semantic-release/release-notes-generator ) | `14.1.0` | `14.1.1` |
| [@types/jsdom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jsdom ) | `28.0.1` | `28.0.3` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node ) | `25.6.0` | `25.8.0` |
| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8 ) | `4.1.5` | `4.1.6` |
| [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest ) | `1.6.16` | `1.6.17` |
| [eslint](https://github.com/eslint/eslint ) | `10.2.1` | `10.3.0` |
| [eslint-plugin-oxlint](https://github.com/oxc-project/eslint-plugin-oxlint ) | `1.62.0` | `1.64.0` |
| [eslint-plugin-vue](https://github.com/vuejs/eslint-plugin-vue ) | `10.9.0` | `10.9.1` |
| [jiti](https://github.com/unjs/jiti ) | `2.6.1` | `2.7.0` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint ) | `1.62.0` | `1.64.0` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite ) | `8.0.10` | `8.0.13` |
| [vite-plugin-vue-devtools](https://github.com/vuejs/devtools/tree/HEAD/packages/vite ) | `8.1.1` | `8.1.2` |
| [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest ) | `4.1.5` | `4.1.6` |
| [vue-tsc](https://github.com/vuejs/language-tools/tree/HEAD/packages/tsc ) | `3.2.7` | `3.2.9` |
| [@nestjs/testing](https://github.com/nestjs/nest/tree/HEAD/packages/testing ) | `11.1.19` | `11.1.21` |
| [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core ) | `1.15.32` | `1.15.33` |
| [globals](https://github.com/sindresorhus/globals ) | `17.5.0` | `17.6.0` |
| [tsx](https://github.com/privatenumber/tsx ) | `4.21.0` | `4.22.0` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint ) | `8.59.1` | `8.59.3` |
Updates `@semantic-release/release-notes-generator` from 14.1.0 to 14.1.1
- [Release notes](https://github.com/semantic-release/release-notes-generator/releases )
- [Commits](https://github.com/semantic-release/release-notes-generator/compare/v14.1.0...v14.1.1 )
Updates `@types/jsdom` from 28.0.1 to 28.0.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jsdom )
Updates `@types/node` from 25.6.0 to 25.8.0
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node )
Updates `@vitest/coverage-v8` from 4.1.5 to 4.1.6
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.6/packages/coverage-v8 )
Updates `@vitest/eslint-plugin` from 1.6.16 to 1.6.17
- [Release notes](https://github.com/vitest-dev/eslint-plugin-vitest/releases )
- [Commits](https://github.com/vitest-dev/eslint-plugin-vitest/compare/v1.6.16...v1.6.17 )
Updates `eslint` from 10.2.1 to 10.3.0
- [Release notes](https://github.com/eslint/eslint/releases )
- [Commits](https://github.com/eslint/eslint/compare/v10.2.1...v10.3.0 )
Updates `eslint-plugin-oxlint` from 1.62.0 to 1.64.0
- [Release notes](https://github.com/oxc-project/eslint-plugin-oxlint/releases )
- [Commits](https://github.com/oxc-project/eslint-plugin-oxlint/compare/v1.62.0...v1.64.0 )
Updates `eslint-plugin-vue` from 10.9.0 to 10.9.1
- [Release notes](https://github.com/vuejs/eslint-plugin-vue/releases )
- [Changelog](https://github.com/vuejs/eslint-plugin-vue/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vuejs/eslint-plugin-vue/compare/v10.9.0...v10.9.1 )
Updates `jiti` from 2.6.1 to 2.7.0
- [Release notes](https://github.com/unjs/jiti/releases )
- [Changelog](https://github.com/unjs/jiti/blob/main/CHANGELOG.md )
- [Commits](https://github.com/unjs/jiti/compare/v2.6.1...v2.7.0 )
Updates `oxlint` from 1.62.0 to 1.64.0
- [Release notes](https://github.com/oxc-project/oxc/releases )
- [Changelog](https://github.com/oxc-project/oxc/blob/main/npm/oxlint/CHANGELOG.md )
- [Commits](https://github.com/oxc-project/oxc/commits/oxlint_v1.64.0/npm/oxlint )
Updates `vite` from 8.0.10 to 8.0.13
- [Release notes](https://github.com/vitejs/vite/releases )
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md )
- [Commits](https://github.com/vitejs/vite/commits/v8.0.13/packages/vite )
Updates `vite-plugin-vue-devtools` from 8.1.1 to 8.1.2
- [Release notes](https://github.com/vuejs/devtools/releases )
- [Commits](https://github.com/vuejs/devtools/commits/v8.1.2/packages/vite )
Updates `vitest` from 4.1.5 to 4.1.6
- [Release notes](https://github.com/vitest-dev/vitest/releases )
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.6/packages/vitest )
Updates `vue-tsc` from 3.2.7 to 3.2.9
- [Release notes](https://github.com/vuejs/language-tools/releases )
- [Changelog](https://github.com/vuejs/language-tools/blob/master/CHANGELOG.md )
- [Commits](https://github.com/vuejs/language-tools/commits/v3.2.9/packages/tsc )
Updates `@nestjs/testing` from 11.1.19 to 11.1.21
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.21/packages/testing )
Updates `@swc/core` from 1.15.32 to 1.15.33
- [Release notes](https://github.com/swc-project/swc/releases )
- [Changelog](https://github.com/swc-project/swc/blob/main/CHANGELOG.md )
- [Commits](https://github.com/swc-project/swc/commits/v1.15.33/packages/core )
Updates `globals` from 17.5.0 to 17.6.0
- [Release notes](https://github.com/sindresorhus/globals/releases )
- [Commits](https://github.com/sindresorhus/globals/compare/v17.5.0...v17.6.0 )
Updates `tsx` from 4.21.0 to 4.22.0
- [Release notes](https://github.com/privatenumber/tsx/releases )
- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs )
- [Commits](https://github.com/privatenumber/tsx/compare/v4.21.0...v4.22.0 )
Updates `typescript-eslint` from 8.59.1 to 8.59.3
- [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.59.3/packages/typescript-eslint )
---
updated-dependencies:
- dependency-name: "@semantic-release/release-notes-generator"
dependency-version: 14.1.1
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@types/jsdom"
dependency-version: 28.0.3
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@types/node"
dependency-version: 25.8.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: "@vitest/coverage-v8"
dependency-version: 4.1.6
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@vitest/eslint-plugin"
dependency-version: 1.6.17
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: eslint
dependency-version: 10.3.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: eslint-plugin-oxlint
dependency-version: 1.64.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: eslint-plugin-vue
dependency-version: 10.9.1
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: jiti
dependency-version: 2.7.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: oxlint
dependency-version: 1.64.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: vite
dependency-version: 8.0.13
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: vite-plugin-vue-devtools
dependency-version: 8.1.2
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: vitest
dependency-version: 4.1.6
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: vue-tsc
dependency-version: 3.2.9
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@nestjs/testing"
dependency-version: 11.1.21
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@swc/core"
dependency-version: 1.15.33
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: globals
dependency-version: 17.6.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: tsx
dependency-version: 4.22.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: typescript-eslint
dependency-version: 8.59.3
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
* fix(server): narrow fs stat type for strict typecheck
---------
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com >
2026-05-14 22:21:12 -06:00
dependabot[bot]
ee39ca9ec8
chore(deps): bump lint-staged from 16.4.0 to 17.0.4 ( #17 )
...
Bumps [lint-staged](https://github.com/lint-staged/lint-staged ) from 16.4.0 to 17.0.4.
- [Release notes](https://github.com/lint-staged/lint-staged/releases )
- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md )
- [Commits](https://github.com/lint-staged/lint-staged/compare/v16.4.0...v17.0.4 )
---
updated-dependencies:
- dependency-name: lint-staged
dependency-version: 17.0.4
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com >
2026-05-14 22:06:04 -06:00
dependabot[bot]
569932a3e0
chore(deps): bump @commitlint/config-conventional from 19.8.1 to 21.0.1 ( #16 )
...
Bumps [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/config-conventional ) from 19.8.1 to 21.0.1.
- [Release notes](https://github.com/conventional-changelog/commitlint/releases )
- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/config-conventional/CHANGELOG.md )
- [Commits](https://github.com/conventional-changelog/commitlint/commits/v21.0.1/@commitlint/config-conventional )
---
updated-dependencies:
- dependency-name: "@commitlint/config-conventional"
dependency-version: 21.0.1
dependency-type: direct:development
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com >
2026-05-14 21:58:43 -06:00
dependabot[bot]
7cf1679756
chore(deps): bump opentype.js from 1.3.5 to 2.0.0 ( #15 )
...
Bumps [opentype.js](https://github.com/opentypejs/opentype.js ) from 1.3.5 to 2.0.0.
- [Release notes](https://github.com/opentypejs/opentype.js/releases )
- [Commits](https://github.com/opentypejs/opentype.js/compare/1.3.5...2.0.0 )
---
updated-dependencies:
- dependency-name: opentype.js
dependency-version: 2.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com >
2026-05-14 21:54:18 -06:00
dependabot[bot]
4566a22512
chore(deps): bump the production-dependencies group with 15 updates ( #13 )
...
Bumps the production-dependencies group with 15 updates:
| Package | From | To |
| --- | --- | --- |
| [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite ) | `4.2.4` | `4.3.0` |
| [dompurify](https://github.com/cure53/DOMPurify ) | `3.4.2` | `3.4.3` |
| [reka-ui](https://github.com/unovue/reka-ui ) | `2.9.6` | `2.9.7` |
| [tailwind-merge](https://github.com/dcastil/tailwind-merge ) | `3.5.0` | `3.6.0` |
| [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss ) | `4.2.4` | `4.3.0` |
| [vue](https://github.com/vuejs/core ) | `3.5.33` | `3.5.34` |
| [vue-router](https://github.com/vuejs/router ) | `5.0.6` | `5.0.7` |
| [vue-virtual-scroller](https://github.com/Akryum/vue-virtual-scroller ) | `3.0.2` | `3.0.3` |
| [@nestjs/common](https://github.com/nestjs/nest/tree/HEAD/packages/common ) | `11.1.19` | `11.1.21` |
| [@nestjs/core](https://github.com/nestjs/nest/tree/HEAD/packages/core ) | `11.1.19` | `11.1.21` |
| [@nestjs/platform-fastify](https://github.com/nestjs/nest/tree/HEAD/packages/platform-fastify ) | `11.1.19` | `11.1.21` |
| [@nestjs/platform-socket.io](https://github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io ) | `11.1.19` | `11.1.21` |
| [@nestjs/websockets](https://github.com/nestjs/nest/tree/HEAD/packages/websockets ) | `11.1.19` | `11.1.21` |
| [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser ) | `5.7.2` | `5.8.0` |
| [zod](https://github.com/colinhacks/zod ) | `4.4.1` | `4.4.3` |
Updates `@tailwindcss/vite` from 4.2.4 to 4.3.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases )
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md )
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.0/packages/@tailwindcss-vite )
Updates `dompurify` from 3.4.2 to 3.4.3
- [Release notes](https://github.com/cure53/DOMPurify/releases )
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.2...3.4.3 )
Updates `reka-ui` from 2.9.6 to 2.9.7
- [Release notes](https://github.com/unovue/reka-ui/releases )
- [Commits](https://github.com/unovue/reka-ui/compare/v2.9.6...v2.9.7 )
Updates `tailwind-merge` from 3.5.0 to 3.6.0
- [Release notes](https://github.com/dcastil/tailwind-merge/releases )
- [Commits](https://github.com/dcastil/tailwind-merge/compare/v3.5.0...v3.6.0 )
Updates `tailwindcss` from 4.2.4 to 4.3.0
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases )
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md )
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.0/packages/tailwindcss )
Updates `vue` from 3.5.33 to 3.5.34
- [Release notes](https://github.com/vuejs/core/releases )
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md )
- [Commits](https://github.com/vuejs/core/compare/v3.5.33...v3.5.34 )
Updates `vue-router` from 5.0.6 to 5.0.7
- [Release notes](https://github.com/vuejs/router/releases )
- [Commits](https://github.com/vuejs/router/compare/v5.0.6...v5.0.7 )
Updates `vue-virtual-scroller` from 3.0.2 to 3.0.3
- [Release notes](https://github.com/Akryum/vue-virtual-scroller/releases )
- [Changelog](https://github.com/Akryum/vue-virtual-scroller/blob/master/CHANGELOG.md )
- [Commits](https://github.com/Akryum/vue-virtual-scroller/compare/v3.0.2...v3.0.3 )
Updates `@nestjs/common` from 11.1.19 to 11.1.21
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.21/packages/common )
Updates `@nestjs/core` from 11.1.19 to 11.1.21
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.21/packages/core )
Updates `@nestjs/platform-fastify` from 11.1.19 to 11.1.21
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.21/packages/platform-fastify )
Updates `@nestjs/platform-socket.io` from 11.1.19 to 11.1.21
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.21/packages/platform-socket.io )
Updates `@nestjs/websockets` from 11.1.19 to 11.1.21
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.21/packages/websockets )
Updates `fast-xml-parser` from 5.7.2 to 5.8.0
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases )
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md )
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.7.2...v5.8.0 )
Updates `zod` from 4.4.1 to 4.4.3
- [Release notes](https://github.com/colinhacks/zod/releases )
- [Commits](https://github.com/colinhacks/zod/compare/v4.4.1...v4.4.3 )
---
updated-dependencies:
- dependency-name: "@tailwindcss/vite"
dependency-version: 4.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-dependencies
- dependency-name: dompurify
dependency-version: 3.4.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: reka-ui
dependency-version: 2.9.7
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: tailwind-merge
dependency-version: 3.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-dependencies
- dependency-name: tailwindcss
dependency-version: 4.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-dependencies
- dependency-name: vue
dependency-version: 3.5.34
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: vue-router
dependency-version: 5.0.7
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: vue-virtual-scroller
dependency-version: 3.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/common"
dependency-version: 11.1.21
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/core"
dependency-version: 11.1.21
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/platform-fastify"
dependency-version: 11.1.21
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/platform-socket.io"
dependency-version: 11.1.21
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/websockets"
dependency-version: 11.1.21
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: fast-xml-parser
dependency-version: 5.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-dependencies
- dependency-name: zod
dependency-version: 4.4.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com >
2026-05-14 21:44:19 -06:00
dependabot[bot]
f7fb010fe0
chore(deps): bump the github-actions group with 3 updates ( #12 )
...
Bumps the github-actions group with 3 updates: [actions/labeler](https://github.com/actions/labeler ), [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action ) and [actions/stale](https://github.com/actions/stale ).
Updates `actions/labeler` from 5.0.0 to 6.1.0
- [Release notes](https://github.com/actions/labeler/releases )
- [Commits](https://github.com/actions/labeler/compare/8558fd74291d67161a8a78ce36a881fa63b766a9...f27b608878404679385c85cfa523b85ccb86e213 )
Updates `docker/setup-qemu-action` from 3.6.0 to 4.0.0
- [Release notes](https://github.com/docker/setup-qemu-action/releases )
- [Commits](https://github.com/docker/setup-qemu-action/compare/29109295f81e9208d7d86ff1c6c12d2833863392...ce360397dd3f832beb865e1373c09c0e9f86d70a )
Updates `actions/stale` from 9.1.0 to 10.2.0
- [Release notes](https://github.com/actions/stale/releases )
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/stale/compare/5bef64f19d7facfb25b37b414482c7164d639639...b5d41d4e1d5dceea10e7104786b73624c18a190f )
---
updated-dependencies:
- dependency-name: actions/labeler
dependency-version: 6.1.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
- dependency-name: docker/setup-qemu-action
dependency-version: 4.0.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
- dependency-name: actions/stale
dependency-version: 10.2.0
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: github-actions
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-14 21:39:28 -06:00
neon
040a43f341
chore(release): fix release changelog text formatting
2026-05-15 02:03:06 +00:00
neon
da5d6cb31f
fix(csp): allow Google Fonts, blob workers, and jsDelivr in CSP directives
2026-05-15 01:15:28 +00:00
neon
3138cf3a4d
fix(security): complete sanitizeLogValue sweep, DOMParser stripHtml, least-privilege CI permissions, pin Dockerfile image
2026-05-15 00:15:23 +00:00
neon
86147ead2c
fix(reader): apply theme bg unconditionally to fix iOS dark mode override
...
On iOS (Chrome/Safari) in system Dark Mode, the epub iframe's
prefers-color-scheme:dark media query always matched regardless of
the in-app light/dark toggle, forcing a dark background even when the
user selected Light mode.
Three changes in generateCSS():
- Set color-scheme to 'light' or 'dark' (not 'light dark') based on
isDark, so the browser and epub-internal light-dark() calls respect
the app setting rather than the OS preference.
- Remove the nested @media (prefers-color-scheme: dark) block that was
overriding mode.fg/link with OS-based dark values.
- Replace both @media screen and (prefers-color-scheme: light/dark)
background blocks with a single unconditional forceBg block driven
by isDark.value, so background colors are always app-controlled.
2026-05-14 22:51:16 +00:00
dependabot[bot]
7be9565567
chore(deps): bump devalue from 5.8.0 to 5.8.1 ( #11 )
...
Bumps [devalue](https://github.com/sveltejs/devalue ) from 5.8.0 to 5.8.1.
- [Release notes](https://github.com/sveltejs/devalue/releases )
- [Changelog](https://github.com/sveltejs/devalue/blob/main/CHANGELOG.md )
- [Commits](https://github.com/sveltejs/devalue/compare/v5.8.0...v5.8.1 )
---
updated-dependencies:
- dependency-name: devalue
dependency-version: 5.8.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com >
2026-05-14 16:39:16 -06:00
neon
a891eb3b16
fix(csp): allow same-origin frame-ancestors for blob URL iframe support on iOS
2026-05-14 22:33:51 +00:00
neon
ee1d98386d
feat(settings): improve migration source validation workflow
...
Improve migration setup feedback so operators can validate credentials and media paths with actionable status instead of ambiguous failures. Keep users on their current setup step while saving to avoid accidental context switches during preflight configuration.
2026-05-14 22:11:57 +00:00
neon
57960efecb
feat(reader): add in-reader text translation with Google/Azure fallback for EPUB
2026-05-14 10:41:33 -06:00
neon
db2b3f9696
ci: run E2E only on nightly schedule, skip E2E on PR/push/manual CI, keep manual e2e workflow for on-demand runs, and align matrix/docs accordingly
2026-05-14 16:37:18 +00:00
neon
102360116b
ci: pin stale action to valid v9 commit hash
...
Use the correct resolvable SHA for actions/stale v9 so the workflow can download the action successfully.
2026-05-14 08:17:34 -06:00
neon
d1d0b7b2c1
feat(reader): add dictionary lookup to epub reader selection popup
2026-05-14 05:46:43 +00:00
neon
35396ecfdd
chore(metadata): normalize filename fallback underscore spacing
2026-05-13 18:15:57 -06:00
neon
0699394f05
fix(authors): fix table viewMode hiding books, add grid/list toggle to author books section, add useAuthorBooks and findBooks tests
2026-05-13 18:15:25 -06:00
neon
ca4681b108
feat(table): add read/metadata columns and refine fixed-column UI
2026-05-13 17:57:29 -06:00
neon
f9c1e29911
feat: implement version UI and short-sha CI versioning
2026-05-13 22:24:46 +00:00
neon
4fb157cc3b
fix(release): add repositoryUrl and hide docs/chore from release notes, and linkReferences flag to ensure commit links are always generated
2026-05-13 20:48:49 +00:00
neon
455ee63b21
chore(release): v1.0.0 inaugural release
...
BREAKING CHANGE: Initial stable release of BookOrbit.
2026-05-13 20:06:38 +00:00
neon
c7a066e4eb
fix(client): bust stale covers after bulk refresh via pre-bump and consistent coverUrl usage
2026-05-13 19:51:52 +00:00
neon
7f9a4717a5
fix: prevent stale read status when navigating between similar books
2026-05-13 10:25:31 -06:00
neon
76ac9d3dc1
fix(book-cover): add white shadow to progress bar for contrast on dark placeholder backgrounds
...
In light mode --primary resolves to oklch(0.21), near-black. Square audiobook
covers without real cover art show the BookCoverPlaceholder whose gradient
bottom edge is also dark (oklch(0.25-0.55)), making the progress bar
invisible by blending in. Portrait ebook covers have real cover images whose
varied bottom edges provide natural contrast so the bar was already visible.
Add a 1px white box-shadow above the bar to create a visible boundary
against any dark background. The shadow is subtle enough to be unnoticeable
on lighter backgrounds where contrast already exists.
2026-05-13 16:11:54 +00:00
neon
4230f26dfb
fix(stats): include audiobook progress in continue scroller
...
Merge reading and audiobook progress when building continue scroller results and card progress so in-progress audio titles appear consistently across the dashboard.
2026-05-13 16:05:10 +00:00
neon
266b57c38a
chore: reorganize docs, improve README, and add FOSS project hygiene
2026-05-13 15:05:04 +00:00
neon
a64013a79d
fix(book-cover-card): fix unclickable kebab and quick-view buttons on desktop hover, add comprehensive tests
2026-05-12 23:28:41 +00:00
neon
a345180a8b
fix(cbx): make cbx file detection more robust
2026-05-12 23:21:01 +00:00
neon
e3d82b53e5
fix(security): resolve 100 CodeQL alerts - sanitizeLogValue helper, kobo-proxy SSRF guard, duckduckgo URL parsing, dismiss false positives
2026-05-12 21:46:55 +00:00
neon
7058ebc44c
chore(kobo): bundle all kepubify binaries, remove bookorbit-tools dependency
...
Rebuild all 6 kepubify binaries (linux-64bit, linux-arm64, linux-arm,
linux-32bit, darwin-64bit, darwin-arm64) from source using Go 1.26.3.
Remove the download fallback in KepubifyBinaryService - all platforms
are now bundled so there is no need to fetch from bookorbit/bookorbit-tools.
2026-05-12 21:46:12 +00:00
neon
22ac06ecd7
feat(client): add PWA support with installability and cover caching
...
Add vite-plugin-pwa with Workbox in generateSW mode. Includes a web app
manifest (standalone display, shortcuts for Dashboard/Libraries/Settings),
iOS meta tags, and a service worker that pre-caches the app shell and uses
CacheFirst for book cover and thumbnail endpoints (max 200 entries, 30-day TTL).
Add useInstallPrompt composable that captures the beforeinstallprompt event
and exposes isInstallable/installApp. Wire an install button into SidebarFooter
that appears only when the browser signals the app is installable.
Generate PWA icons (64, 192, 512, maskable-512, apple-touch-icon-180) from a
new pwa-icon-source.svg using @vite-pwa/assets-generator with minimal2023Preset.
Add dev-dist to .gitignore to exclude the dev-mode SW output.
2026-05-12 20:53:21 +00:00
neon
431053e510
feat(reader): replace pdf reader with embedpdf vue viewer
...
Replace the v1 canvas-based PDF reader (pdfjs-dist) with @embedpdf/vue-pdf-viewer
which renders correctly on iOS Chrome. Configure theme sync with app accent colors
via ACCENT_OPTIONS lookup instead of unreliable DOM oklch resolution, disable unused
toolbar categories, and persist per-book reader settings (scroll, spread, zoom).
2026-05-12 20:25:00 +00:00
neon
f79f810c8c
fix: mobile UI bugs - overlay touch, sticky header, keyboard sheet, viewport height, reader timeout
2026-05-12 19:30:18 +00:00
Neon
ff817e4c8a
Update issue templates
2026-05-12 01:15:26 -06:00
Neon
ff3f99e613
docs: overhaul README and update repo to bookorbit org ( #9 )
2026-05-12 00:54:43 -06:00