neon
8786a18f04
fix(scanner): clamp oversized MergerFS inodes before storage ( #30 )
...
* fix(scanner): clamp oversized MergerFS inodes before storage
MergerFS generates synthetic unsigned 64-bit inodes by hashing file paths.
Values above 2^63-1 overflow PostgreSQL's signed bigint column, crashing
the scanner with 'value out of range for type bigint'.
Switch all file stat() calls to stat(path, { bigint: true }) to read
inodes as precise BigInt values instead of lossy JS numbers. Introduce
clampIno(ino: bigint): number which returns 0 for any inode exceeding
PostgreSQL's bigint max - 0 is the existing sentinel meaning 'rename
detection disabled', so no other code needs to change.
The fix covers all four code paths that write ino to a FileStat:
statFilesIntoAcc and buildSingleBookCandidate in walk.ts, plus the two
targeted-scan paths in scanner.service.ts.
Fixes #19
* ci: add maintainer-gated PR GHCR image publish
---------
Signed-off-by: neon <18559658+neonsolstice@users.noreply.github.com >
2026-05-18 17:11:28 -06:00
neon
ab2af020a4
chore: set open-pull-requests-limit = 1
2026-05-18 16:49:18 -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
dependabot[bot]
df52eee23e
chore(deps): bump brace-expansion from 1.1.13 to 5.0.5 ( #38 )
...
* chore(deps): bump brace-expansion from 1.1.13 to 5.0.5
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion ) from 1.1.13 to 5.0.5.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases )
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.13...v5.0.5 )
---
updated-dependencies:
- dependency-name: brace-expansion
dependency-version: 5.0.5
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com >
* chore(deps): skip dependabot branch and issue checks
---------
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-18 15:13:19 -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
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
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
3138cf3a4d
fix(security): complete sanitizeLogValue sweep, DOMParser stripHtml, least-privilege CI permissions, pin Dockerfile image
2026-05-15 00:15:23 +00: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
f9c1e29911
feat: implement version UI and short-sha CI versioning
2026-05-13 22:24:46 +00:00
neon
266b57c38a
chore: reorganize docs, improve README, and add FOSS project hygiene
2026-05-13 15:05:04 +00:00
Neon
ff817e4c8a
Update issue templates
2026-05-12 01:15:26 -06:00
dependabot[bot]
e1cdc16245
chore(deps): bump actions/dependency-review-action ( #3 )
...
Bumps the github-actions group with 1 update: [actions/dependency-review-action](https://github.com/actions/dependency-review-action ).
Updates `actions/dependency-review-action` from 4.9.0 to 5.0.0
- [Release notes](https://github.com/actions/dependency-review-action/releases )
- [Commits](https://github.com/actions/dependency-review-action/compare/2031cfc080254a8a887f58cffee85186f0e49e48...a1d282b36b6f3519aa1f3fc636f609c47dddb294 )
---
updated-dependencies:
- dependency-name: actions/dependency-review-action
dependency-version: 5.0.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-12 00:46:52 -06:00
neon
838033717c
fix(ci,books): resolve GHCR/CVE issues and clean pin/unpin fallbacks
...
- regenerate lockfile after package version alignment
- remove useless fallback spreads in pin and unpin column
- resolve GHCR push auth and fast-uri CVE
- patch fast-xml-builder CVE in image scan
2026-05-08 19:10:03 -06:00
neon
de7a61888b
ci: consolidate release workflow and automate release notes
...
- Hardened multi-arch container release flow with build-once promotion and safer image gating.
- Reworked semantic-release execution, permissions, and action pinning for more reliable releases.
- Expanded release notes transformation with contributor and artifact metadata, plus cleaner formatting.
- Fixed edge cases in notes rendering by preserving commit metadata and guarding author formatting.
- Removed redundant release notes sections to keep generated output concise and consistent.
2026-04-27 08:21:15 -06:00
neon
812efcd1be
ci: fix PR token permissions and gate dependency review
2026-04-26 19:15:56 -06:00
neon
8ce315a7d0
ci: add semantic-release workflow and docs
2026-04-26 19:03:03 -06:00
neon
739d311e9e
chore: sync dependency branch with main
2026-04-25 21:35:27 -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
ef7f63cb1c
ci: allow dependency-review to fail without blocking CI
2026-04-14 04:38:10 -06:00
neon
19f81faf4d
ci: reorganize project scripts and E2E workflows by type
2026-04-12 17:12:36 -06:00
neon
b804abb043
chore: enhance ci pipeline
2026-04-10 11:06:25 -06:00
neon
e6186c09df
test: add comprehensive unit tests and increase coverage thresholds
2026-04-10 09:26:37 -06:00
neon
3c95efe25b
ci: add Trivy image scan gate before GHCR push
2026-04-07 05:51:02 -06:00
neon
9fd4e162aa
feat(server): harden booklore migration with adapters and E2E tests
2026-04-05 16:01:04 -06:00
neon
bab3813ff8
feat(metadata): add per-field locking to protect fields from overwrites
2026-04-03 21:31:02 -06:00
neon
0a58a87239
refactor(scanner): rename staging module to book bucket
2026-04-03 20:50:11 -06:00
neon
c3fd3f8f2e
ci: consolidate E2E into pipeline and gate image builds on test suite
2026-04-02 06:45:00 -06:00
neon
6e999ccaa8
ci: standardize E2E naming across workflows and scripts
2026-04-02 05:25:00 -06:00
neon
00ecdc34cd
test(users): add lifecycle E2E suite and harden admin contracts
2026-04-02 04:05:00 -06:00
neon
6115656153
test(email): add email lifecycle E2E suite and harden send behavior
2026-04-02 02:45:00 -06:00
neon
835bc91a09
test(reader): add state isolation E2E suite and fix isolation bugs
2026-04-02 01:25:00 -06:00
neon
64abfa8c41
test(opds): add auth catalog end-to-end tests
2026-04-02 00:05:00 -06:00
neon
157224be9f
test(metadata): expand end-to-end scenarios and assertions
2026-04-01 11:50:59 -06:00
neon
a6d84ae20c
test(metadata): add initial E2E coverage for metadata write flow
2026-04-01 08:05:00 -06:00
neon
0c195165e6
test(scanner): add staging ingest and finalize E2E test suite
2026-03-30 23:17:27 -06:00
neon
4d58418b93
test(auth): add end-to-end coverage for authentication flows
2026-03-30 03:58:27 -06:00
neon
b5cc1ef370
test(scanner): refactor E2E scaffolding and extract shared test harness
2026-03-30 02:11:51 -06:00
neon
db30a45782
test(scanner): bootstrap scanner E2E test infrastructure
2026-03-30 01:18:32 -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
9d61ded2ff
chore: add OSS readiness files and contributor docs
2026-03-20 00:34:07 -06:00
neon
d65a4815bc
feat(stats): add advanced analytics charts and defaults
2026-03-19 08:11:17 -06:00
neon
8abfb82214
chore: speed up Docker builds
...
- drop arm64/QEMU — build amd64 only
- add pnpm store cache mounts to client and server install steps
2026-03-11 14:07:42 -06:00
neon
4c4a5cbf25
chore: migrate server tests from Jest to Vitest
2026-03-11 13:30:04 -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