Lanes
One lane at a time — the goal, the critical path, and the current wave of blockers.
Approve: iOS Settings, Analytics & toolsTo do · blockerPro-gate Deep Dive, Compare, Map, and Overview to match backend's plus-tier requirementDone · blockerDecide fate of ProfilePhotoCropReviewView (ship or delete)To doDecide fate of Analytics Overview tab (ship or delete)To doDecide fate of legacy Dashboards widget system (~15 files)To doDecide Goals v2 scope (recurrence, prefill, streak history, sort, status, taxonomy)To doAdd re-edit support for saved ConnectCards and Social Hub destinationsDoneBuild proposed-data mapping layer for native AI proposal cardsDoneDecide routing for 'Program NFC Tag' hub tileTo doBuild iOS NFC tap-to-write re-encode, password-protect, and mode persistenceTo doVerify analytics numbers against ground truth (not just rendering)To doDefine real scope of the destination-analytics pipeline before it's built blindTo doVerify no analytics events are recorded for free accountsTo doFix unregistered tactile:// URL scheme breaking every AI card "Open in editor" handoffDoneAgent sessions: add the PATCH-title and hard-DELETE routes (route layer only — the DB is ready)DoneMoney display: no currency column on payments, forced 2-decimal formatting, and silent "$" fallback on bad currency codesTo doinsights.ts calls callAnthropicMessages directly instead of createModelProvider, violating ADR-0001's amendmentDoneFix stale 'coming soon' copy on Company Info cardDoneProduce real Quick Tutorial product walkthrough videoTo doHost and wire real Quick Tutorial videoTo doDelete dead stub properties in SettingsHostViewModelDoneAnalytics dead-code sweep — Deep Dive legacy + stale commentsTo doFix 'Set goal' button closure-binding bug in Deep DiveTo doWire custom date-range Apply in Dashboards device distribution widgetDoneDecide fate of Map breadcrumb drill-down featureTo doFix deprecated GeoTableWidget rendering during loading windowDoneAdd filter-aware empty state copy to Goals listTo doFix scoped-goal display name resolution in Goal SheetDoneDecide fate of multi-entity Compare dashboard widget conceptTo doDecide fate of Sources dashboard tile (needs new API endpoint)To doAdd rename/delete UI for dashboardsDoneDecide whether dashboard share/export is in scopeTo doDecide Pro-lock widget scope for Dashboards paletteTo doFix duplicate widget title bug in Dashboard tilesDoneSurface tier-verification error in AnalyticsProGateDoneWire Mute Destination to real persisted stateDoneWire menu destination edit submission (currently a no-op stub)DoneDelete dead ConnectCard editor files (FieldEditorView, CardPreviewView, CardStyleSheet)DoneAI surface dead-code and stale-comment sweepDoneFix GalleryCard empty state at zero proposed itemsDoneDecide real scope for QRLaunchpad Share & ExportTo doSign off: Settings surfaces not flagged in this auditTo doSign off: Analytics files/widgets confirmed clean in this auditTo doSign off: ConnectCard field editors and models confirmed cleanTo doSign off: AI stubbed-banner behavior confirmed working as intendedTo doSign off: QR generator and NFC stamp-test harness confirmed clean outside tracked gapsTo doWire in or remove orphaned AnalyticsKitRealtimeScreen per decisionDoneBuild real AI Q&A dashboard widget or remove per decisionTo doBuild multi-entity Compare dashboard widget or remove per decisionTo doBuild Sources dashboard tile backend + wiring or remove per decisionTo doBuild dashboard share/export or confirm out of scope per decisionTo doMark specific widgets Pro-exclusive or remove lock machinery per decisionTo doWire Map breadcrumb drill-down or remove per decisionTo doDecide: delete the preview-only Analytics widget island (7 files, 8 uncalled client methods)To doAndroid: two more places show a plan refusal (403) as a generic failure - Assets Families tab, Home insight cardDoneA/B variant assignment hashes the daily visitor_hash, so one visitor can change variant from one day to the nextTo doAndroid: add a ViewModel test that generateInsight() maps a tier refusal to the Pro upsellDoneiOS: pin the Deep Dive fetch set with a stubbed-client test (6 requests for account/trigger/destination, 7 for campaign/group)To doiOS Deep Dive trigger hero shows a change percentage without checking the Worker honoured the compare windowDonepreviousYearWindow gives a zero-length or reversed prior window when the window ends on Feb 29DoneAndroid Activity chart overlays a "last year" line even when the Worker answered the previous periodTo doWire ProfilePhotoCropReviewView Save + Change Photo buttonsTo doFix Contact Support photo-library attachment (picker bound to nil)DoneBuild Segment + Zapier analytics connectorsBlockedNotify user when custom domain provisioning completesBlockedWire in or remove Analytics Overview tab per decisionTo doBuild real custom-range comparison in Deep Dive (Compare sheet + Activity widget)To doWire 'Continue conversation' CTA to real Insights screenTo doShow real errors instead of fake seed data in Deep Dive asset pickerDoneWire real Avg-time-to-arrive / Next-action KPIs or remove tilesDoneFix Live Activity Feed entity scoping and add loading/error stateBlockedDecide whether Compare tab should be Pro-gatedDoneSurface real errors instead of fake totals in Compare tabDoneFix Real-time tab mock-data fallbacks and missing connection/error UIDoneDecide fate of orphaned AnalyticsKitRealtimeScreen.swiftDoneFix Map tab hardcoded mock country data and missing error stateDoneWire Dashboards Geo widget tile actions (view full map, granularity chips)To doDelete confirmed-dead legacy Dashboards widget codeTo doAdd loading state and surface errors in Goals listDoneFix Goal Sheet stale error state and build asset-picker retry chipDoneBuild approved Goals v2 scope itemsTo doWire Dashboards 'Pick a goal' pill and remove hardcoded fallback progressDoneDecide fate of AI Q&A dashboard widget stubTo doDecide fate of ConnectCard photo field typeTo doFix Preview Destination to show real saved card, not fake demo dataDonePersist Destination Name/Description edits on Save and CloseDoneReplace AgentConnectCard's hardcoded fake account name with real OAuth dataBlockedComplete AgentDraftStore seeding for remaining proposal card typesDoneWire real 'Send test event' for WebhookCardDoneDecide when to build the real Webhook destination connectorTo doWire agent pending-approvals badge to real pending countTo doDecide whether Approvals Inbox needs Tweak supportDoneAdd Tweak support to Approvals InboxTo doBuild real rename/delete endpoints for agent sessionsDoneAuto-refresh QR image after white-label domain reprogramBlockedBuild real Static Program flow in NFCStampTestViewTo doBuild real Bulk Program flow in NFCStampTestViewTo doFix NFC Lock Tag toggle (silent no-op, no persistence)DoneBuild real QR export per decided scopeTo doDecide the account-timezone plan for analytics day-boundariesTo doWire the account-timezone decision into rollups and AnalyticsRangeTo doQA: brand-new zero-scan account across every Analytics tabBlockedLoad-test analytics queries against a high-volume partitioned accountBlockedVerify AI proposal card "Open in editor" handoffs are dead on iPhoneDoneCards whose tweak feedback sends a placeholder instead of the user's edit (iOS #240 defect b, remaining)DoneSource-attribution RPC pivot labels don't match the API's by_campaign/by_group keysDoneiOS Dashboards "Top performers" tile 400s for a family/campaign-scoped assetTo dois_first_seen only detects "first scan today", not "first scan ever"Donevisitor_year_hash keys on browser major version, so browser auto-updates and shared IPs silently reshuffle unique-visitor countsTo doUA parser misclassifies iPad Safari as desktop macOS and Android tablets as mobileDone"hybrid" trigger medium renders as "unknown" on iOS and AndroidTo doAndroid 24h analytics chart always requests day granularity, never hourlyDoneAndroid goal editor has no "daily" recurrence optionDoneAndroid shows generic 403 error cards instead of an upsell on Free-tier Deep Dive/Compare/Goals/MapDoneAndroid AI Insights 403 (Free/Plus) shows as a generic "couldn't generate" failure, not an upsellDoneAndroid Deep Dive geo region/city drill-down hard-caps at 8 rows with no way to see moreDoneAndroid analytics map has no centroid for Iceland, Luxembourg, Croatia, Costa Rica or EstoniaDoneiOS Trigger Mix / Compare NFC% gauge silently excludes link and direct opensDoneiOS Deep Dive fetches trigger/destination/campaign/group-scoped data that no live screen ever rendersTo doweb-mobile production deploy is 3 months and 89 commits behind origin/main's analytics featureDonedestinations.total_opens is read by two endpoints but never incremented anywhereBlockedanalytics_rollups_daily and analytics_alerts have no readers anywhere in the appTo dodocument/notes/video/audio destinations never fire the funnel beacon — Deep Dive funnel widget is permanently all-zero for themDoneDecide: Families Leaderboard on iOS (Deep Dive + Dashboards tile) - the roster request can only 400To doPin the first-seen call site in events.ts: swapping visitor_year_hash for visitor_hash leaves every test greenDonePlus promises "AI analytics (Basic)" but AI Insights is Pro-only: align server or plan listsTo doiOS Activity widget Custom range shows page-level priors under a Custom labelTo doAPI answers compare=previous_year with the previous period, so iOS "Same period last year" shows the wrong comparisonDoneCheck the funnel beacon is accepted from a browser: sendBeacon sends credentials and utils/cors.ts sets no Access-Control-Allow-CredentialsDoneRun the fixed funnel beacon in WebKit and Firefox: the t_e9f24402 browser run was Chromium 143 onlyBlockedAndroid Activity "Same period last year" totals row compares with the previous period until the API deploys; no meta.compare checkDoneGeo tile: Region and City chips leave the Analytics tile on an endless skeleton (tile VM loads countries only)To doQA: opening a document, note, video or audio link now counts as a view in Analytics (desktop web)Blocked
Wave
iOS — Settings, Analytics & tools build
Remaining build work across Settings, Analytics, ConnectCard, the AI panel, and QR/NFC programming. Everything marked 'coming soon' here is intended to ship.
TacTile › Launch TacTile › iOS › iOS — Settings, Analytics & tools build
60/133 done73 open1 open blocker
Selected taskclear
Sign off: QR generator and NFC stamp-test harness confirmed clean outside tracked gaps
To doOwner · met_1d2d3090
Show the prompt
To doIn progressDoneBlockedPick a wave on the left · tap a task to expand it