Commit graph

14 commits

Author SHA1 Message Date
a74a5d7c38 feat: add intake session state machine 2026-07-13 10:47:47 -07:00
efe3f65cd5 fix: release camera capture handle on failed or repeated open
- Fix critical resource leak when cv2.VideoCapture.isOpened() returns False:
  create capture in local variable, verify it opened, call .release() before
  raising RuntimeError, only assign to self._capture after confirming success
- Fix potential leak on repeated open(): release any existing self._capture
  before creating a new one
- Add regression test: test_open_raises_when_capture_not_opened now verifies
  .release() is called on failed capture
- Add new test: test_open_twice_releases_first_capture verifies first capture's
  .release() is called before second is assigned

All 28 tests passing (5 camera + 23 existing).
2026-07-13 10:44:47 -07:00
ab7664cd51 feat: add OpenCV camera source wrapper 2026-07-13 10:41:10 -07:00
d5f5b47cef feat: add stable-centered auto-detect capture strategy 2026-07-13 10:36:54 -07:00
aaac91f03c feat: add motion-stop countdown capture strategy 2026-07-13 10:33:12 -07:00
b707aef137 feat: add capture strategy interface and manual button strategy 2026-07-13 10:28:10 -07:00
f93d51d500 feat: add book-region cropping from wide captures 2026-07-13 10:24:05 -07:00
b9ddbee81e feat: add deterministic marker-based size bucketing 2026-07-13 10:19:10 -07:00
9af936518d docs: add project README for early-stage stakeholder visibility 2026-07-13 10:17:31 -07:00
df63ffa846 chore: add MIT LICENSE and CONTRIBUTING.md, set SPDX license in pyproject
Bookmark is fully open source (donated to Books in Hand nonprofit, no
BSL tiering). Adds an MIT LICENSE file, a CONTRIBUTING.md scoped to an
early-stage volunteer project, and a PEP 639 license field in
pyproject.toml. Repo description and topics were also updated via the
Forgejo API for discoverability.
2026-07-13 10:17:05 -07:00
27c066de1c feat: add CSV catalogue data layer
Implement Catalogue class with BookRecord dataclass for managing the
CSV-based book inventory. Provides operations to append records, read all
rows, update specific books, and generate unique book IDs.

5 tests passing, all functionality working as specified.
2026-07-13 10:11:49 -07:00
4aee1e5181 chore: scaffold bookmark project structure 2026-07-13 10:08:41 -07:00
b16d6b4250 docs: add AGENTS.md project context (CLAUDE.md symlinked for compatibility) 2026-07-13 10:06:17 -07:00
827d0d2e2a chore: initial empty commit 2026-07-13 10:04:53 -07:00