Fleet 43%38/88 tasks · 13 in progress · 5/22 phases
the-stack43%mass-inventory-upload · phase 19 plans13 in progress2 in-flightupdated helm →
Mass Inventory Upload For Premium Users — 0/16 (0%)
Phase 1 · Batch storage — planned
- 1.1 Create upload_batches and upload_rows planned
- 1.2 Add the UploadBatchRepository planned
- 1.3 Publish the CSV template and document its columns planned
Phase 2 · Resolution — planned
- 2.1 Parse the CSV and both accepted formats into rows planned
- 2.2 Validate identifiers before batching planned
- 2.3 Resolve set-bearing rows through /cards/collection in batches of 75 planned
- 2.4 Resolve set-less rows by distinct name through /cards/search planned
- 2.5 Respect Scryfall rate-limit guidance planned
- 2.6 Enforce the premium gate and the 1,000-row limit planned
Phase 3 · Review surface — planned
- 3.1 Build the batch review page with resolved, held, and failed sections planned
- 3.2 Add the printing picker for held rows planned
- 3.3 Report failed rows with a reason per row planned
- 3.4 Stream batch progress while processing planned
Phase 4 · Publication — planned
- 4.1 Add publish-inventory-batch planned
- 4.2 Publish transactionally and mark the batch planned
- 4.3 Leave held and failed rows unpublished planned
Quantity On Listings — 8/15 (53%) · 7 in progress
Phase 1 · Schema and model — 1 in progress, 3 complete
- 1.1 Add quantity to listings with a default of 1 and backfill complete
- 1.2 Expose a remaining count to the client complete
- 1.3 Add quantity to the Listing model and regenerate complete
- 1.4 Add a quantity field to Sell listing creation and editing in-progress
Phase 2 · Purchase and offer flow — 2 in progress, 2 complete
- 2.1 Add a quantity selector to Buy Now, capped at remaining in-progress
- 2.2 Carry quantity on offers in-progress
- 2.3 Show the remaining count on listing detail and in the feed complete
- 2.4 Keep shipping flat across quantity complete
Phase 3 · Oversell safety — 2 in progress, 3 complete
- 3.1 Make the decrement atomic in Postgres in-progress
- 3.2 Re-check availability when accepting an offer in-progress
- 3.3 Mark a listing unavailable at zero remaining complete
- 3.4 Keep other offers live while copies remain complete
- 3.5 Complete a multi-copy listing only when sold out complete
Phase 4 · Several conditions per card — 2 in progress
- 4.1 Add further conditions, each with its own price and quantity, to Sell listing creation in-progress
- 4.2 Show the seller's other conditions of the same card on listing detail in-progress
Remove Stripe Secret Keys From The Client Bundle — 9/9 (100%)
Phase 1 · Audit and rotate — 5 complete
- 1.1 Review the Stripe API log for unauthorised use of the exposed live key complete
- 1.2 Rotate both Stripe secret keys complete
- 1.3 Rotate the USPS consumer key and secret complete
- 1.4 Set the rotated values as Supabase function secrets complete
- 1.5 Verify a test-mode payment end to end complete
Phase 2 · Untrack and verify — 4 complete
- 2.1 Untrack lib/env/.env and lib/env/env.g.dart complete
- 2.2 Gitignore both files complete
- 2.3 Scan a fresh web build for key patterns complete
- 2.4 Document how a developer supplies env values locally complete
Repair The Failing Test Suite — 4/5 (80%)
Phase 1 · Restore compilation — 4 complete
- 1.1 Split web_full_app_bootstrap into a conditional import with a VM stub complete
- 1.2 Point navigation_service at the abstraction complete
- 1.3 Drop webview_flutter_web from direct dependencies planned
- 1.4 Confirm the web build still works complete
- 1.5 Record the real pass and fail counts complete
Shopping Cart — 0/11 (0%)
Phase 1 · Cart storage — planned
- 1.1 Create cart_items with a unique constraint on buyer and listing planned
- 1.2 Restrict cart rows to their owner via RLS planned
- 1.3 Add CartRepository planned
Phase 2 · Cart surface — planned
- 2.1 Add to cart from listing detail, with a quantity planned
- 2.2 Build CartPage with per-seller groups and subtotals planned
- 2.3 Derive groups client-side from the item stream planned
- 2.4 Edit quantity and remove items planned
Phase 3 · Group checkout — planned
- 3.1 Accept a set of listings in BuyNowPage planned
- 3.2 Charge shipping once per group planned
- 3.3 Re-check availability at checkout and drop sold items planned
- 3.4 Remove purchased rows only after payment succeeds planned
Two Week Free Trial — 0/8 (0%)
Phase 1 · Trial eligibility and start — planned
- 1.1 Record trial state on the user planned
- 1.2 Configure the trial period on the Stripe monthly price planned
- 1.3 Collect a payment method when the trial starts planned
- 1.4 Refuse a second trial, server-side planned
- 1.5 Grant full premium during the trial planned
Phase 2 · Conversion and cancellation — planned
- 2.1 Convert at day fourteen by charging the monthly price planned
- 2.2 Cancel during trial without charging planned
- 2.3 Communicate the trial end date in the app planned
Working Subscriptions — 5/11 (45%) · 6 in progress
Phase 1 · Establish the exposure — 2 complete
- 1.1 Read the RLS policy on users and determine whether a client can set its own tier complete
- 1.2 Query live rows for tier values other than premium or free complete
Phase 2 · Fix the two defects — 2 in progress, 2 complete
- 2.1 Handle customer.subscription.deleted in stripe-webhook complete
- 2.2 Remove the RevenueCat purchases-js path from paywall_page in-progress
- 2.3 Correct any live rows holding a non-premium, non-free tier complete
- 2.4 Downgrade on a chargeback of a subscription payment in-progress
Phase 3 · Move the write server-side — 4 in progress, 1 complete
- 3.1 Restrict subscription_tier updates to the service role via RLS in-progress
- 3.2 Remove updateUserSubscriptionTier from client reach in-progress
- 3.3 Verify the three gates still read correctly in-progress
- 3.4 Compute the platform fee from the seller's tier server-side complete
- 3.5 Lock down users reads and self-writable fields in-progress
Zero Sum Offer Minimum — 7/7 (100%)
Phase 1 · Audit and constrain — 3 complete
- 1.1 Count existing rows that violate the rule complete
- 1.2 Decide and apply cleanup for any violating rows complete
- 1.3 Add the offers_minimum_value CHECK constraint complete
Phase 2 · Client validation — 4 complete
- 2.1 Remove the > 0 guard so $0 reaches the minimum check complete
- 2.2 Base canSubmit on the hasCash and selectedCards predicate complete
- 2.3 Assert Dart and SQL predicates agree complete
- 2.4 Stop Buy Now before checkout on a listing priced under $1.00 complete
Password Reset Busted — 5/6 (83%)
Phase 1 · Fix the reset link and page — 5 complete
- 1.1 Move the uncommitted reset changes onto their own branch off develop complete
- 1.2 Web: exchange the code once in AuthWrapper and route on redirectType complete
- 1.3 Mobile: open the reset page on the passwordRecovery event only complete
- 1.4 Reset page: update through SupabaseAuthService and navigate without a GoRouter complete
- 1.5 Run the gates complete
- 1.6 Check a real reset email on dev, web and mobile planned
In-flight branches
- 35-buy-it-now-feature-bug-v3 0% 0/74
- 5-unable-to-share-listing-or-profile 0% 0/74