Add deal-finding handoff for hat with browser extension and iOS flips #26

Merged
kubus merged 7 commits from feat/listing-extension into main 2026-10-01 18:57:50 +00:00
Owner

Summary

  • Add Firefox/Chrome browser extension for listing fill-in and photo capture at sourcing time
  • Add iOS FlipsView to track and manage flipping opportunities with drafts, photos, and deal scoring
  • Extend server flips API with listing_drafts table and endpoints for draft management and photos
  • Add comprehensive integration specification (HAT_DEALS_HANDOFF.md) documenting deal-finding workflow for hat agent, search correctness fixes, compact MCP output format, concurrency/deadline controls, and price reference tool
  • Rename ui.tsx exports to listingActions.ts for clarity on listing editing operations
  • Add profit.ts module to centralize flip profit calculations
  • Update migrations to 032 for flip listings schema

Testing

  • Extension: Load unpacked in Chrome/Firefox; test popup search, photo capture, and settings persistence
  • iOS: Verify FlipsView renders deals with photos, drafts save and restore, profit calculations match server
  • Server: Verify flips endpoints accept and persist listing drafts with photos; check migration applies cleanly
  • Web: Verify search page, analytics, and settings pages render correctly with refactored imports
  • All: npm run typecheck && npm test && npm run build && npm audit --omit=dev
## Summary - Add Firefox/Chrome browser extension for listing fill-in and photo capture at sourcing time - Add iOS FlipsView to track and manage flipping opportunities with drafts, photos, and deal scoring - Extend server flips API with `listing_drafts` table and endpoints for draft management and photos - Add comprehensive integration specification (HAT_DEALS_HANDOFF.md) documenting deal-finding workflow for hat agent, search correctness fixes, compact MCP output format, concurrency/deadline controls, and price reference tool - Rename `ui.tsx` exports to `listingActions.ts` for clarity on listing editing operations - Add `profit.ts` module to centralize flip profit calculations - Update migrations to 032 for flip listings schema ## Testing - Extension: Load unpacked in Chrome/Firefox; test popup search, photo capture, and settings persistence - iOS: Verify FlipsView renders deals with photos, drafts save and restore, profit calculations match server - Server: Verify flips endpoints accept and persist listing drafts with photos; check migration applies cleanly - Web: Verify search page, analytics, and settings pages render correctly with refactored imports - All: `npm run typecheck && npm test && npm run build && npm audit --omit=dev`
ScoutKit:
- Listing posted/refreshed/promoted/seller fields; watch OLX category,
  seller type and skip-promoted settings (sent as null so edits clear them);
  research-watch category as criteria, compared by id like the server.
- Client calls for OLX category counts and the flips ledger, plus a Swift
  port of src/profit.ts (fees, net, estimates, quarterly limit, DAC7,
  sales record and CSV) and a FlipsSummary matching the web page.
- Demo routes for categories and flips, demo listing signals, and 12 new
  tests (62 total, run on Linux with Swift 6.2).

App:
- OLX category picker (loads OLX's counts for the query) in the watch,
  research-watch and search filters; Seller and "Skip promoted listings"
  in the watch editor; settings shown on detail screens.
- "Posted 14 mo ago · bumped 2 h ago", Promoted and Business on listing
  rows and search results; Posted and Seller in listing details.
- Listing details: resale estimate after the chosen platform's fee and
  "I bought this".
- Market → Flips: summary with the quarterly limit bar, unsold and sold
  lists with swipe actions, add/edit, mark sold with the delist checklist,
  DAC7 counts, the sales record shared as CSV, and fee presets. New
  "flips" screenshot screen.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merge branch 'feat/flip-ledger' into feat/ios-reseller
Some checks failed
ci / verify (pull_request) Has been cancelled
52ca3f95a1
Add listing drafts, flip photos and a Firefox listing helper
Some checks failed
ci / verify (pull_request) Has been cancelled
128bd24400
Each unsold flip can hold what to post: title, description, condition, an
asking price per platform (suggested from the fee presets so every platform
leaves the same amount) and up to 20 photos. The new Scout listing helper
extension for Firefox opens the OLX, Allegro Lokalnie or Vinted listing
form, fills it from the flip, attaches the photos, and marks the platform
as listed once the operator has published. It never submits a form.

- Server: listing_json on flips and a flip_photos table (migration 032).
  Photos are checked by their bytes (JPEG, PNG, WebP; 10 MB; 20 per flip),
  served only to authenticated clients with a sandboxing CSP, never pruned,
  and hidden from the Debug API like the ledger.
- Web: a listing dialog per flip with price suggestions and photo upload,
  reorder and delete; photos are resized in the browser to 2000 px.
- Extension (extension/): Manifest V2 for Firefox 115+. The token stays in
  the background page; content scripts find fields by their visible Polish
  labels, set values so React forms register them, attach photos to the
  site's file input, and offer "Report form fields" for tuning after a
  redesign. Lints clean with web-ext.
- iOS: add listing photos to a flip from the phone (HEIC becomes a 2000 px
  JPEG), long-press to delete; ScoutKit client calls, demo routes and tests.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merge feat/flip-ledger (with main) into feat/ios-reseller
Some checks failed
ci / verify (pull_request) Has been cancelled
36d88d1463
Main replaced the iOS refresh-on-any-event set with LiveInvalidation scopes,
so 'flips' gets its own scope and AppModel.flipsToken, which FlipsView keys
its load on. The Market switch keeps Flips next to the store-backed
Research and Analytics views.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Merge feat/ios-reseller (with main) into feat/listing-extension
Some checks failed
ci / verify (pull_request) Has been cancelled
1d1da61a00
Keeps the photo and listing imports alongside main's dashboardTopParam and
the event-stream subscription FlipsPage now uses, and orders 032_flip_listings
after main's 030_perf_indexes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Add deal-finding handoff for hat
Some checks failed
ci / verify (pull_request) Has been cancelled
9faec0ef43
Merge main into feat/listing-extension
Some checks failed
ci / verify (pull_request) Has been cancelled
a02411cb85
Resolve conflicts with the UI audit (#25): keep its condensed iOS rows,
folded search settings and row menu on Flips, and carry over this
branch's listing signals, OLX category, seller filters and listing-ready
flips.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
kubus merged commit 281a6f974f into main 2026-10-01 18:57:50 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kubus/scout!26
No description provided.