Repository navigation
Description
Current delivery and evidence — 2026-10-12
The status terms used below are: Not started (the scoped work has no verified implementation), Partially implemented (some code/tests/docs exist but development or acceptance still remains), Implemented — acceptance pending (the bounded implementation is merged; required acceptance evidence is outstanding), and Completed (this issue's own criteria are satisfied). GitHub Open/Closed remains the completion state.
- Source: main
538b70e; PRs #22, #30, and #37 are merged. - Automated:
pnpm checkpasses 143 tests in 15 files;pnpm buildpasses. main CI verifies current main; PR CI/native compilation also passed. - Browser: PR refactor: isolate receipt review and preserve money input #30 documents targeted Opera keyboard/layout/create-edit checks at 412×915 and 360×800, plus user feedback from a phone browser. Coverage is limited; jsdom interaction tests simulate a DOM rather than a real browser/Android runtime.
- APK: durable-signed APK run 38185223476 succeeded for the same commit; artifact
itemly-installable-update-38185223476includes both Preserve money-field input while typing #23 and Keep Android receipt data accessible when its image is missing or unreadable #32. It is a durable-signed development APK, not proof of installation, data retention, backup recovery, or device acceptance. - Physical Samsung: The user checked and confirmed every Preserve money-field input while typing #23 money-input acceptance task on 2026-10-12. Preserve money-field input while typing #23 is completed. The wider Design phone-only Android storage architecture #12/Store receipts and images persistently on Android #13 Android storage/recovery/update checks and Keep Android receipt data accessible when its image is missing or unreadable #32 image-failure acceptance remain outstanding; no full-device acceptance is inferred.
- Planning structure: Use these status descriptions in existing issue bodies and Open/Closed for completion. No new tickets or release dates are introduced; existing milestone assignments remain intact.
Release goal
Itemly v0.2.0 improves day-to-day management and operational safety of the existing self-hosted web app. Data and images still live on the Itemly computer or home server in this release.
Planned issues
- Edit saved receipts #1 - Edit saved receipts, including manual item addition during creation and editing
- Delete receipts safely or move them to trash #2 - Delete receipts safely or move them to trash
- Automatically recover unfinished receipt drafts #3 - Recover unfinished drafts
- Add filters and advanced search to the receipt overview #4 - Extend filtering and search
- Restore backups from the user interface #5 - Restore home-server backups through the UI
- Install the existing home-server app as a PWA #6 - Install the existing home-server web app as a PWA
- Safely clean up orphaned uploads and extractions #7 - Clean up orphaned temporary data
- Detect duplicate receipts using receipt attributes #9 - Detect additional duplicates from receipt attributes
- Manage categories and assign uncategorized items #10 - Manage categories and uncategorized items
- Protect the private Itemly server and backups from unauthorized access #11 - Protect the home server, images, and backups from unauthorized access
- Preserve money-field input while typing #23 - Preserve money-field input while typing
- Allow manual price overrides despite AI extraction differences #24 - Allow manual price overrides despite AI extraction differences
Current evidence and remaining acceptance
| Issue | Current status | Completed baseline and remaining work |
|---|---|---|
| #1 | Partially implemented | Edit/add-item flow and persistence exist; adjustment editing and full cancellation/import/restart/mobile acceptance remain |
| #2 | Partially implemented | Trash/restore and persistence tests exist; identifying confirmation and complete keyboard/mobile/failure acceptance remain |
| #3 | Not started (automatic recovery scope) | Explicit saved drafts exist; unfinished-form autosave/recovery still needs development |
| #4 | Partially implemented | Basic text search exists; combined filters and advanced fields remain |
| #5 | Partially implemented | Server backup/export and restore helpers/tests exist; web restore UI and its full criteria remain |
| #6 | Partially implemented | Manifest/service worker/safe areas exist; install/HTTPS guidance and Android-browser/server-unavailable acceptance remain |
| #7 | Partially implemented | Native orphan pruning exists; the scoped operator dry-run/retention cleanup workflow remains |
| #9 | Not started (receipt-attribute scope) | Existing image-hash duplicate baseline does not satisfy the additional receipt-attribute detection |
| #10 | Partially implemented | Free-text item category entry exists; managed categories and uncategorized workflows remain |
| #11 | Not started (server access-control scope) | Deployment cautions exist; implemented protection/acceptance is still required |
| #23 | Completed | PR #30, automated/browser evidence, signed APK, and full user-confirmed Samsung checklist on 2026-10-12 |
| #24 | Partially implemented | Draft PR #38 adds primary-save warning and explicit discrepancy draft persistence; 150 branch tests/build and isolated Opera smoke pass; merge/CI and Samsung acceptance remain |
#32's image-access fix is also merged in PR #37 and included in the current APK, with acceptance outstanding. It does not complete #1/#2 or change backup compatibility.
Suggested sequence and dependencies
- Preserve money-field input while typing #23 is completed after user-confirmed Samsung acceptance. Next investigate Allow manual price overrides despite AI extraction differences #24 and finish Edit saved receipts #1's adjustment/import/cancel/edit acceptance against their original criteria.
- Run the existing Android storage, backup/restore, signed-update and image-failure checklists in Design phone-only Android storage architecture #12/Store receipts and images persistently on Android #13/Keep Android receipt data accessible when its image is missing or unreadable #32 on disposable data. Restore into a separate empty test installation; keep the important source installation intact. This validates v0.3.0 work without changing v0.2.0 scope.
- Finish the known development gaps and acceptance in Delete receipts safely or move them to trash #2 and Install the existing home-server app as a PWA #6; extend Add real UI interaction tests for core receipt workflows #27's browser/workflow tests. Closing the scoped maintenance Extract the receipt review UI from App.tsx without behavior changes #28/Audit validation rules and API types for safe consolidation #29 does not satisfy these product criteria.
- Implement unfinished-form recovery Automatically recover unfinished receipt drafts #3, managed categories Manage categories and assign uncategorized items #10, and extended search Add filters and advanced search to the receipt overview #4; category analysis Analyze purchases and spending by category #15 remains in v0.3.0 and depends on Manage categories and assign uncategorized items #10.
- Complete home-server restore Restore backups from the user interface #5 and the scoped cleanup/attribute-duplicate work Safely clean up orphaned uploads and extractions #7/Detect duplicate receipts using receipt attributes #9. Android restore is not evidence for Restore backups from the user interface #5.
- Bring Protect the private Itemly server and backups from unauthorized access #11 forward before exposing the PC server over a network or to other people.
Maintenance status (no milestone additions)
- Reconcile documentation with implemented, tested, and released behavior #26 — Partially implemented: documentation corrections merged; remaining README/release-state/ADR/testing reconciliation is listed in the issue.
- Add real UI interaction tests for core receipt workflows #27 — Partially implemented: 24 rendered UI cases and CI infrastructure exist; full workflow, real-browser, keyboard/focus, and unavailable-server coverage remain.
- Extract the receipt review UI from App.tsx without behavior changes #28 — Completed: review/component extraction in PR refactor: isolate receipt review and preserve money input #30 meets its scoped acceptance; closure evidence includes characterization before/after extraction.
- Audit validation rules and API types for safe consolidation #29 — Completed: proven-equivalent validation and common UI-facing types consolidated in PR refactor: isolate receipt review and preserve money input #30; inventory/decisions and matching adapter tests are documented.
These statuses keep the original criteria. Remaining product/device acceptance stays with #1/#2/#6/#12/#13/#32. #23 has its own explicit user-confirmed Samsung acceptance; maintenance closure does not satisfy other product issues.
Shared definition of done
- Check the German, mobile-first, accessible UI.
- Keep Itemly usable without an AI API key.
- Treat receipt and OCR text as untrusted data.
- Never send images silently to external providers.
- Store money as integer minor units and exact quantities as decimal strings.
- Add an explicit SQLite migration for database changes.
- Ensure confirmed saves are atomic, idempotent, and arithmetically balanced.
- Add relevant tests; pass
pnpm checkandpnpm build. - Document changes to user workflows and operations, and record browser/device checks separately from automated tests.
After v0.2.0
-
Phone-only use in v0.3.0: Design phone-only Android storage architecture #12, Store receipts and images persistently on Android #13, Optionally exchange encrypted backups through Drive or Dropbox #14, Analyze purchases and spending by category #15, and Synchronize Android system Back with in-app navigation #31.
-
Later product backlog: optional API import with cost controls Plan optional AI import with cost controls #16, public-release review Review privacy, security, and product claims before public release #17, Android distribution Prepare Android distribution and a testing channel #18, pricing decision Validate the free offering and potential paid models #19, release automation Extend CI with versioned releases and controlled delivery #20, and payment-screenshot expense capture Capture expenses from payment screenshots without a receipt #25.
-
Later usability backlog: Select multiple receipts in the overview and move them to trash #39 — overview multi-selection and recoverable bulk trash, building on Delete receipts safely or move them to trash #2. No milestone or release commitment is assigned.
Google Tasks intake (2026-10-07)
The five open tasks from the Itemly Google Tasks list are mapped to #1 (manual item addition verification), #23 (money input bug), #24 (AI-price override review), #10 with dependent #15 (categories), and #25 (payment screenshots, later backlog). Each destination links back to its source task. The Google Tasks remain open and unchanged. No due dates were supplied; milestone placement is planning, not a delivery-date commitment.
Backup track coordination — 2026-10-12
#5 remains the v0.2.0 home-server restore issue. Android JSON recovery is implemented under #13 and still requires the safe Samsung acceptance checklist; see #21. Android's unencrypted, 100 MB, full-memory format and future status/archive work #33/#34 are not home-server restore delivery. Missing-image access is implemented by PR #37 and packaged, with separate browser/Samsung acceptance tracked in #32. Later investigations #35/#36 do not create v0.2.0 commitments or cloud synchronization.
Activity