- Separate "Has Errors" section for erroneous server documents (already
uploaded but have validation errors)
- "Ready to Upload" section now only shows truly local documents
- Erroneous server docs show only "Delete from server" button (no retry)
- Improved metadata display: show document ID for server docs, hide
unknown file size
- Clean up verbose debug logging
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add server sync to discover documents uploaded elsewhere (fixes missing
basket documents issue)
- Handle erroneous uploads: preserve binectDocumentId for delete button
- Add "Delete from server" button for erroneous and canceled documents
- Remove archive button for active documents (in_basket, in_production)
- Auto-restore archived documents that have active status
- Refactor to use @binect/js v0.1.0 features:
- DocumentStatus enum instead of magic numbers
- isErroneous(), getErrors() helper functions
- getStatusDescription() for status text
- Add binect-js improvement requirements document
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Extract error details from Binect API for documents with status 7
- Display error details in a highlighted box below the status
- Map status 7 (ERRONEOUS) to 'failed' status in refresh handler
- Add CSS styling for error details display
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename "Order" button to "Send" throughout UI
- Detect server-side document deletions (404) and auto-archive
- Remove manual refresh button (auto-refresh handles this)
- Fix password toggle button with preventDefault/stopPropagation
- Make auto-refresh silent (no status messages)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Extended PDFStatus with full lifecycle: pending → uploading → in_basket →
ordering → in_production → sent/canceled
- Added shipDocument() and getDocumentStatus() API methods
- Grouped UI sections: Ready to Upload, In Basket, In Production, Completed
- Order button for documents in basket to place production order
- Refresh button to check current status from Binect server
- Display price and recipient address for uploaded documents
- Status icons and color-coded indicators for each state
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The bufferToBase64 function from @binect/js expects Node.js Buffer
objects but was receiving browser ArrayBuffer, causing "[object ArrayBuffer]"
to be sent instead of valid base64. Use browser-native btoa() instead.
Also updates tests to work with @binect/js integration.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace token-based auth with HTTP Basic Authentication per Binect API v1 spec
- Improve PDF detection: check current tab first, then background service, fallback to recent downloads
- Add password visibility toggle in login form
- Add extensive debug logging throughout for troubleshooting
- Update manifest with alarms, activeTab permissions and <all_urls> host permission
- Add documentation files and development helper scripts
- Add Binect API specs for reference
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implements all requirements from ProductRequirementsDocument.md:
- PDF detection via Chrome Downloads API
- Secure credential storage with AES-GCM encryption
- Binect API integration for PDF uploads
- Popup UI with Binect branding
- Local transfer tracking (500 entry cap)
- Help page with tracking view and CSV export
- 60-day credential retention with auto-expiry
- Accessibility compliance (WCAG 2.1 AA)
Technical implementation:
- Chrome Extension Manifest V3
- TypeScript with strict mode
- Webpack build system
- Jest test suite (22/22 passing)
- ESLint configured (0 errors)
Build output: 13 KB total (production minified)
Test coverage: crypto, pdf-detector, tracker, binect-api
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>