neon
78b99d0b78
fix(settings): accept socket postgres urls in DATABASE_URL validation
...
Validate DATABASE_URL with pg's connection-string parser so unix-socket DSNs with empty authority hosts pass while malformed/non-postgres values are rejected.
Closes #106
2026-05-26 01:48:24 +00:00
dependabot[bot]
81a1691939
chore(deps): bump the production-dependencies group with 12 updates ( #80 )
...
Bumps the production-dependencies group with 12 updates:
| Package | From | To |
| --- | --- | --- |
| [@embedpdf/vue-pdf-viewer](https://github.com/embedpdf/embed-pdf-viewer/tree/HEAD/viewers/vue ) | `2.14.2` | `2.14.3` |
| [@tanstack/vue-virtual](https://github.com/TanStack/virtual/tree/HEAD/packages/vue-virtual ) | `3.13.24` | `3.13.25` |
| [@types/howler](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/howler ) | `2.2.12` | `2.2.13` |
| [dompurify](https://github.com/cure53/DOMPurify ) | `3.4.3` | `3.4.5` |
| [echarts](https://github.com/apache/echarts ) | `6.0.0` | `6.1.0` |
| [vue-virtual-scroller](https://github.com/Akryum/vue-virtual-scroller ) | `3.0.3` | `3.0.4` |
| [@nestjs/common](https://github.com/nestjs/nest/tree/HEAD/packages/common ) | `11.1.21` | `11.1.23` |
| [@nestjs/core](https://github.com/nestjs/nest/tree/HEAD/packages/core ) | `11.1.21` | `11.1.23` |
| [@nestjs/platform-fastify](https://github.com/nestjs/nest/tree/HEAD/packages/platform-fastify ) | `11.1.21` | `11.1.23` |
| [@nestjs/platform-socket.io](https://github.com/nestjs/nest/tree/HEAD/packages/platform-socket.io ) | `11.1.21` | `11.1.23` |
| [@nestjs/websockets](https://github.com/nestjs/nest/tree/HEAD/packages/websockets ) | `11.1.21` | `11.1.23` |
| [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg ) | `8.20.0` | `8.21.0` |
Updates `@embedpdf/vue-pdf-viewer` from 2.14.2 to 2.14.3
- [Release notes](https://github.com/embedpdf/embed-pdf-viewer/releases )
- [Changelog](https://github.com/embedpdf/embed-pdf-viewer/blob/main/viewers/vue/CHANGELOG.md )
- [Commits](https://github.com/embedpdf/embed-pdf-viewer/commits/v2.14.3/viewers/vue )
Updates `@tanstack/vue-virtual` from 3.13.24 to 3.13.25
- [Release notes](https://github.com/TanStack/virtual/releases )
- [Changelog](https://github.com/TanStack/virtual/blob/main/packages/vue-virtual/CHANGELOG.md )
- [Commits](https://github.com/TanStack/virtual/commits/@tanstack/vue-virtual@3.13.25/packages/vue-virtual )
Updates `@types/howler` from 2.2.12 to 2.2.13
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases )
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/howler )
Updates `dompurify` from 3.4.3 to 3.4.5
- [Release notes](https://github.com/cure53/DOMPurify/releases )
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.3...3.4.5 )
Updates `echarts` from 6.0.0 to 6.1.0
- [Release notes](https://github.com/apache/echarts/releases )
- [Commits](https://github.com/apache/echarts/compare/6.0.0...6.1.0 )
Updates `vue-virtual-scroller` from 3.0.3 to 3.0.4
- [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.3...v3.0.4 )
Updates `@nestjs/common` from 11.1.21 to 11.1.23
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.23/packages/common )
Updates `@nestjs/core` from 11.1.21 to 11.1.23
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.23/packages/core )
Updates `@nestjs/platform-fastify` from 11.1.21 to 11.1.23
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.23/packages/platform-fastify )
Updates `@nestjs/platform-socket.io` from 11.1.21 to 11.1.23
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.23/packages/platform-socket.io )
Updates `@nestjs/websockets` from 11.1.21 to 11.1.23
- [Release notes](https://github.com/nestjs/nest/releases )
- [Commits](https://github.com/nestjs/nest/commits/v11.1.23/packages/websockets )
Updates `pg` from 8.20.0 to 8.21.0
- [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md )
- [Commits](https://github.com/brianc/node-postgres/commits/pg@8.21.0/packages/pg )
---
updated-dependencies:
- dependency-name: "@embedpdf/vue-pdf-viewer"
dependency-version: 2.14.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@tanstack/vue-virtual"
dependency-version: 3.13.25
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@types/howler"
dependency-version: 2.2.13
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: dompurify
dependency-version: 3.4.5
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: echarts
dependency-version: 6.1.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-dependencies
- dependency-name: vue-virtual-scroller
dependency-version: 3.0.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/common"
dependency-version: 11.1.23
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/core"
dependency-version: 11.1.23
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/platform-fastify"
dependency-version: 11.1.23
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/platform-socket.io"
dependency-version: 11.1.23
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: "@nestjs/websockets"
dependency-version: 11.1.23
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: pg
dependency-version: 8.21.0
dependency-type: direct:production
update-type: version-update:semver-minor
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-21 22:41:37 -06:00
neon
1fc04f8af6
fix(books): downgrade archiver to v7 to restore zip export ( #41 )
...
archiver v8 switched to pure ESM with no default export and a
completely different API, breaking every zip export request with
TypeError: (0 , _archiver.default) is not a function. The NestJS
SWC build produces CJS output, which cannot import the new ESM-only
package at runtime.
Downgrade to ~7.0.1 (the last CJS release) and add a Dependabot
ignore rule for archiver major bumps so this cannot recur silently.
Fixes #31
2026-05-18 15:48:46 -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
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]
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
neon
266b57c38a
chore: reorganize docs, improve README, and add FOSS project hygiene
2026-05-13 15:05:04 +00:00
dependabot[bot]
c30522d0e3
chore(deps): bump archiver from 7.0.1 to 8.0.0 ( #6 )
...
Bumps [archiver](https://github.com/archiverjs/node-archiver ) from 7.0.1 to 8.0.0.
- [Release notes](https://github.com/archiverjs/node-archiver/releases )
- [Changelog](https://github.com/archiverjs/node-archiver/blob/master/CHANGELOG.md )
- [Commits](https://github.com/archiverjs/node-archiver/compare/7.0.1...8.0.0 )
---
updated-dependencies:
- dependency-name: archiver
dependency-version: 8.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>
2026-05-12 00:51:03 -06:00
neon
4a53a9250e
fix(audio): replace npm ffprobe/ffmpeg installers with system binaries to fix Alpine/musl incompatibility in Docker
2026-05-11 00:43:44 +00:00
neon
57d91ebea1
feat(cover,metadata): ffprobe extraction, cover placeholders, grid refresh, and audiobook search
...
- Replace music-metadata and mediainfo with @ffprobe-installer for all audio metadata extraction; remove mediainfo dependency
- Show BookCoverPlaceholder in all missing-cover locations: Similar/Series/Author Books carousel, cover editor panel, metadata search result cards, and metadata diff panel
- Extend BookRecommendation and SeriesBookRecommendation shared types with hasCover and authors; update recommendation and book repositories to supply them via parallel queries
- Fix cover refresh not updating in grid: BookCoverCard now merges refreshed BookDetail into the local BookCard and emits update:book; VirtualBookGrid forwards the event; Home, Series, Author, and Collection views wire the handler so covers update without a page reload
- Add audiobook covers checkbox to the Online Search drawer so users can toggle between square and portrait cover searches; result thumbnails and loading skeletons adapt their aspect ratio to match the selection
2026-05-11 00:06:05 +00:00
neon
e6a18c0b50
feat(settings): add custom font upload with family grouping
2026-04-28 12:21:54 -06:00
neon
2b99684d7e
chore(deps): bump production dependencies across 10 packages
...
Bumps the production-dependencies group with 10 updates in the / directory:
| Package | From | To |
| --- | --- | --- |
| [@vueuse/core](https://github.com/vueuse/vueuse/tree/HEAD/packages/core) | `14.2.1` | `14.3.0` |
| [dompurify](https://github.com/cure53/DOMPurify) | `3.4.1` | `3.4.2` |
| [pdfjs-dist](https://github.com/mozilla/pdf.js) | `5.6.205` | `5.7.284` |
| [vue](https://github.com/vuejs/core) | `3.5.32` | `3.5.33` |
| [vue-router](https://github.com/vuejs/router) | `5.0.4` | `5.0.6` |
| [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) | `5.7.1` | `5.7.2` |
| [jose](https://github.com/panva/jose) | `6.2.2` | `6.2.3` |
| [mysql2](https://github.com/sidorares/node-mysql2) | `3.22.2` | `3.22.3` |
| [nodemailer](https://github.com/nodemailer/nodemailer) | `8.0.5` | `8.0.7` |
| [zod](https://github.com/colinhacks/zod) | `4.3.6` | `4.4.1` |
Updates `@vueuse/core` from 14.2.1 to 14.3.0
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v14.3.0/packages/core)
Updates `dompurify` from 3.4.1 to 3.4.2
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.4.1...3.4.2)
Updates `pdfjs-dist` from 5.6.205 to 5.7.284
- [Release notes](https://github.com/mozilla/pdf.js/releases)
- [Commits](https://github.com/mozilla/pdf.js/compare/v5.6.205...v5.7.284)
Updates `vue` from 3.5.32 to 3.5.33
- [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.32...v3.5.33)
Updates `vue-router` from 5.0.4 to 5.0.6
- [Release notes](https://github.com/vuejs/router/releases)
- [Commits](https://github.com/vuejs/router/compare/v5.0.4...v5.0.6)
Updates `fast-xml-parser` from 5.7.1 to 5.7.2
- [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.1...v5.7.2)
Updates `jose` from 6.2.2 to 6.2.3
- [Release notes](https://github.com/panva/jose/releases)
- [Changelog](https://github.com/panva/jose/blob/main/CHANGELOG.md)
- [Commits](https://github.com/panva/jose/compare/v6.2.2...v6.2.3)
Updates `mysql2` from 3.22.2 to 3.22.3
- [Release notes](https://github.com/sidorares/node-mysql2/releases)
- [Changelog](https://github.com/sidorares/node-mysql2/blob/master/Changelog.md)
- [Commits](https://github.com/sidorares/node-mysql2/compare/v3.22.2...v3.22.3)
Updates `nodemailer` from 8.0.5 to 8.0.7
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v8.0.5...v8.0.7)
Updates `zod` from 4.3.6 to 4.4.1
- [Release notes](https://github.com/colinhacks/zod/releases)
- [Commits](https://github.com/colinhacks/zod/compare/v4.3.6...v4.4.1)
---
updated-dependencies:
- dependency-name: "@vueuse/core"
dependency-version: 14.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-dependencies
- dependency-name: dompurify
dependency-version: 3.4.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: fast-xml-parser
dependency-version: 5.7.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: jose
dependency-version: 6.2.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: mysql2
dependency-version: 3.22.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: nodemailer
dependency-version: 8.0.7
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: pdfjs-dist
dependency-version: 5.7.284
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-dependencies
- dependency-name: vue
dependency-version: 3.5.33
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: vue-router
dependency-version: 5.0.6
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: production-dependencies
- dependency-name: zod
dependency-version: 4.4.1
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: production-dependencies
...
2026-04-25 21:30:37 -06:00
neon
eec2b30b95
chore(deps): bump the development-dependencies group with 7 updates
...
Bumps the development-dependencies group with 7 updates:
| Package | From | To |
| --- | --- | --- |
| [@vue/test-utils](https://github.com/vuejs/test-utils) | `2.4.6` | `2.4.10` |
| [eslint-plugin-oxlint](https://github.com/oxc-project/eslint-plugin-oxlint) | `1.61.0` | `1.62.0` |
| [jsdom](https://github.com/jsdom/jsdom) | `29.0.2` | `29.1.1` |
| [oxlint](https://github.com/oxc-project/oxc/tree/HEAD/npm/oxlint) | `1.61.0` | `1.62.0` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.9` | `8.0.10` |
| [@swc/core](https://github.com/swc-project/swc/tree/HEAD/packages/core) | `1.15.30` | `1.15.32` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.0` | `8.59.1` |
Updates `@vue/test-utils` from 2.4.6 to 2.4.10
- [Release notes](https://github.com/vuejs/test-utils/releases)
- [Commits](https://github.com/vuejs/test-utils/compare/v2.4.6...v2.4.10)
Updates `eslint-plugin-oxlint` from 1.61.0 to 1.62.0
- [Release notes](https://github.com/oxc-project/eslint-plugin-oxlint/releases)
- [Commits](https://github.com/oxc-project/eslint-plugin-oxlint/compare/v1.61.0...v1.62.0)
Updates `jsdom` from 29.0.2 to 29.1.1
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Commits](https://github.com/jsdom/jsdom/compare/v29.0.2...v29.1.1)
Updates `oxlint` from 1.61.0 to 1.62.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.62.0/npm/oxlint)
Updates `vite` from 8.0.9 to 8.0.10
- [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.10/packages/vite)
Updates `@swc/core` from 1.15.30 to 1.15.32
- [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.32/packages/core)
Updates `typescript-eslint` from 8.59.0 to 8.59.1
- [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.1/packages/typescript-eslint)
---
updated-dependencies:
- dependency-name: "@vue/test-utils"
dependency-version: 2.4.10
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: eslint-plugin-oxlint
dependency-version: 1.62.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: jsdom
dependency-version: 29.1.1
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: oxlint
dependency-version: 1.62.0
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: development-dependencies
- dependency-name: vite
dependency-version: 8.0.10
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: "@swc/core"
dependency-version: 1.15.32
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
- dependency-name: typescript-eslint
dependency-version: 8.59.1
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: development-dependencies
...
2026-04-25 18:40:08 -06:00
neon
cfc3672a6c
refactor: rename book-bucket to book-dock and lens to smart-scope
2026-04-20 22:57:27 -06:00
neon
dd9fd205d6
feat: add bulk tag update and improve selection action bar
2026-04-15 00:58:50 -06:00
neon
67ec10f703
feat: implement security audit fixes SEC-001 through SEC-031
2026-04-12 16:15:03 -06:00
neon
c4a2cbc4d8
chore: update dependencies to latest minor and patch versions
2026-04-10 11:53:58 -06:00
neon
a8b203ef4a
chore: optimize docker image and scanner performance
2026-04-08 20:31:38 -06:00
neon
ef82cb5d00
fix: patch Trivy CRITICAL/HIGH findings in container image
...
- apk upgrade in runtime stage to fix OpenSSL CVEs (CVE-2025-15467 CRITICAL, CVE-2025-69419 HIGH)
- remove npm from runtime image to eliminate npm-bundled CVEs
- update fastify to 5.8.5 and force via pnpm override (CVE-2026-33806 HIGH)
- switch vitest pool to threads to fix flaky audio extractor tests
- simplify unit test setup with direct instantiation
2026-04-07 07:30:07 -06:00
neon
70e76600e0
feat(server): add Booklore migration with source adapter and executor
2026-04-03 20:48:11 -06:00
neon
6e999ccaa8
ci: standardize E2E naming across workflows and scripts
2026-04-02 05:25:00 -06:00
neon
4d58418b93
test(auth): add end-to-end coverage for authentication flows
2026-03-30 03:58:27 -06:00
neon
db30a45782
test(scanner): bootstrap scanner E2E test infrastructure
2026-03-30 01:18:32 -06:00
neon
af9424f04a
feat: add audiobook progress and refactor metadata extraction
2026-03-28 07:39:23 -06:00
neon
1418957b6f
chore: cleanup project structure and resolve client type errors
...
- resolve all 69 client type-checking errors for stricter TS compliance
- remove obsolete type-check baseline scripts and files
- overhaul project root with updated README.md and new DEVELOPMENT.md
- migrate to unified baseline migration strategy and cleanup docker configs
- remove redundant production and dev-specific shell scripts
2026-03-25 07:14:51 -06:00
neon
f847cc1d22
fix(metadata): use per-provider keys and extract relevance scoring
...
- replace shared 'providerId' key in pickedSources with provider-specific
field names (googleBooksId, goodreadsId, etc.) so each provider's ID
pick is independent and not overwritten when switching tabs
- extract candidate relevance scoring into candidate-relevance.ts with
Levenshtein-based title/author scoring, ISBN exact match, and junk
title filtering; remove duplicate inline scoring from goodreads provider
2026-03-24 09:23:01 -06:00
neon
391fa46b27
chore(deps): upgrade major server dependencies
2026-03-23 02:23:17 -06:00
neon
473459b854
chore(deps): update workspace dependencies
2026-03-23 01:58:44 -06:00
neon
2117b729d5
feat(reader): add audiobook reader with narrator and Audible metadata
...
- add audiobook reader with playback queue, progress tracking, and audio settings
- add narrator support with DB schema, module, and metadata extraction
- add Audible and Audnexus metadata providers with mappers and tests
- improve scanner with file classification, walk utilities, and file-event processing
- extend upload validator and processor for audio formats
2026-03-21 16:14:55 -06:00
neon
9d61ded2ff
chore: add OSS readiness files and contributor docs
2026-03-20 00:34:07 -06:00
neon
a7df587c1e
feat: implement reading session tracking for epub, pdf, and cbz readers
2026-03-19 20:18:09 -06:00
neon
069fa1488c
feat: add user-level statistics pipeline and dashboard charts
2026-03-19 18:05:22 -06:00
neon
9ef641e650
feat: add audit logging system
...
- audit_log table with action, resource, resourceId, description, ip, countryCode, meta
- AuditEventsService (EventEmitter), AuditRepository, AuditService, AuditInterceptor
- @Auditable decorator wired on all mutating endpoints across every controller
- auth events (login, logout, register, password change, failed login) emitted directly in AuthService with IP capture
- geoip-lite for offline IP-to-country resolution
- nightly retention cleanup via cron with configurable audit_retention_days setting
- superuser-only GET /audit-log endpoint with userId, action, resource, date range filters
- AuditLogPage.vue with table, filters, pagination, and failed-auth row highlighting
- regenerated baseline migration to include audit_log in 0000_baseline.sql
2026-03-18 11:34:13 -06:00
neon
aa2456fbf8
feat(authors): add auto-enrichment queue, worker safety, and live status
2026-03-13 08:14:45 -06:00
neon
b64aa519ef
chore: migrate server tests from Jest to Vitest
2026-03-11 13:07:31 -06:00
neon
a3579ac57f
ci: overhaul CI workflows for reliability and maintainability
...
- add CODEOWNERS assigning .github/ to @neonsolstice
- configure automated updates for npm, docker, and github-actions ecosystems
- replace custom change-detection bash script with dorny/paths-filter@v4
- consolidate lint, typecheck, and test into a single checks matrix job
- gate per-package change detection via has-changes step (matrix unavailable in job-level if)
- fix duplicate actions/setup-node call in setup-node-pnpm composite action
- scope pnpm store cache key by pnpm version to prevent stale cross-version cache hits
- pin all action references to commit SHAs
- fix container-image concurrency group to use commit SHA across all trigger types
- add timeout-minutes to all jobs
- document fail-fast: false rationale and checks: write trade-off
2026-03-07 18:14:36 -06:00
neon
91dddc6740
test: add backend coverage and related service updates
2026-03-06 12:08:22 -06:00
neon
891cd19f46
chore: implement local quality foundation
2026-03-06 09:08:15 -06:00
neon
f60584cf16
feat(books): add icon tooltips, book export, and bulk book actions
...
- add tooltips to all header icons (search, upload, appearance, settings, theme toggle, sidebar trigger)
- fix appearance popover by moving Tooltip outside Popover
- add POST /api/books/export endpoint to zip and download books
- add POST /api/books/bulk-refresh-metadata and bulk-re-extract-cover endpoints
- add BulkBookIdsDto and ExportBooksDto
- add archiver dependency for zip streaming
- update theme CSS variables and component styles across client
2026-03-01 10:55:31 -06:00
neon
51dd3d30f3
chore: backend infrastructure improvements
...
- add URI versioning: global prefix changed to api/v1, all frontend call sites updated
- add AbortSignal.timeout to all outbound fetch calls (10s API, 15s scrapers)
- add X-Request-Id response header and requestId field in error payloads
- add response compression via @fastify/compress (gzip + brotli)
- add security headers via @fastify/helmet with CSP for the Vite SPA
- tune pg pool: max 20, idle/connection/statement timeouts on app and migration pools
- add GET /api/v1/health endpoint via @nestjs/terminus with DB connectivity check
2026-02-28 16:02:15 -06:00
neon
f66bb0358f
feat: add staging area for file ingestion and metadata management
...
- add staging DB schema, migrations, and repository
- add staging module with ingest, metadata, finalize, and watcher services
- add staging WebSocket gateway for real-time file status updates
- add staging REST controller with file list, detail, bulk edit, and finalize endpoints
- add StagingView with file list, toolbar, file sheet, bulk edit, and finalize dialogs
- add StagingSettings panel for auto-fetch and auto-finalize configuration
- add staging widget for dashboard and sidebar integration
- update metadata-fetch pipeline to support staging context
- add shared staging types package
2026-02-28 01:31:51 -06:00
neon
ed3c36e35d
fix(metadata): fix Amazon and Goodreads scraper bugs
2026-02-19 02:17:50 -06:00
neon
c7f488e88f
feat(books): separate edit metadata and files into dedicated pages
2026-02-17 11:07:04 -06:00
neon
5b84fc9e19
chore: bump dependencies
2026-02-14 04:37:08 -06:00
neon
325d0f6f0f
fix: preserve book file rows on delete so restored files keep their IDs
2026-01-28 12:47:51 -06:00
neon
426bc5fc82
feat(scanner): detect missing books via watcher and propagate to UI
2026-01-28 07:58:26 -06:00
neon
bc1ee837bf
feat(books): add lens with query engine, filter builder, and icon picker
2026-01-21 18:07:07 -06:00
neon
73d66b75e3
feat(scanner): add live scan progress via WebSocket and auto-scan
2026-01-19 16:48:11 -06:00
neon
8dea90d966
feat(docker): add monorepo Docker build with auto-migrate and pdf-lib
2026-01-13 14:28:36 -06:00