Mike Kell
eb8e2250d6
feat(stage-10d): SquareCatalogSyncService + SquareSyncResult + SyncError + InventorySyncAdapter
2026-07-25 15:17:22 -04:00
Mike Kell
f4949d8c9b
Cline Rules for consistent builds
Publish Docs / publish-docs (push) Successful in 44s
Details
2026-07-25 15:06:18 -04:00
Mike Kell
7e3cded043
Merge feat/square-catalog-sync-repositories into main (Stage 10C)
2026-07-25 15:04:35 -04:00
Mike Kell
7ccc119a62
feat(stage-10c): SquareCatalogRepository + SquareInventoryRepository
2026-07-25 15:04:26 -04:00
Mike Kell
079bf8c0f0
Updated Agentic Instructions
Publish Docs / publish-docs (push) Successful in 54s
Details
2026-07-25 11:03:51 -04:00
Mike Kell
7020433e5a
feat: Stage 10B — Square catalog/inventory mappers + ProductIdMapping domain (feat/square-catalog-sync)
2026-07-25 11:02:50 -04:00
Mike Kell
2a0bf6fa90
docs: finalize Stage 10B docs — tracker merged status, brief updated with validation state and next branch
2026-07-25 11:02:34 -04:00
Mike Kell
bb54dfcf59
docs: update build_execution_tracker for Stage 10B (feat/square-catalog-sync)
2026-07-25 08:00:29 -04:00
Mike Kell
a6f888c672
feat(stage-10b): Square catalog and inventory sync mappers + ProductIdMapping
2026-07-25 07:59:13 -04:00
Mike Kell
4b1168dbfa
chore: update tracker — feat/square-api-client merged to main
Publish Docs / publish-docs (push) Successful in 40s
Details
2026-07-19 19:48:44 -04:00
Mike Kell
3ea1d66477
Merge feat/square-api-client into main (Stage 10A complete)
2026-07-19 19:48:13 -04:00
Mike Kell
9b2dd15ee2
feat(integrations): Stage 10A — Square API client and authentication
Validate Docs / validate-docs (push) Successful in 1m14s
Details
Flutter Analyze / Dart Analyze (push) Has been cancelled
Details
Flutter Test / Flutter Tests (push) Has been cancelled
Details
2026-07-19 19:26:00 -04:00
Mike Kell
a95bc5f18a
chore(mobile): update .metadata to Flutter 3.44.4 stable
Publish Docs / publish-docs (push) Successful in 1m8s
Details
2026-07-11 16:49:57 -04:00
Mike Kell
51ae862394
fix(mobile): resolve 8 Android debug errors and Kotlin migration
...
- Migrate to Flutter built-in Kotlin: set builtInKotlin=true and
newDsl=true in gradle.properties; remove id(kotlin-android) from
app/build.gradle.kts. Eliminates the Kotlin Gradle Plugin WARNING
that caused 8 stderr lines in the VS Code Debug console.
- Fix DashboardController lifecycle in MobileShell: move controller
creation from _buildBody() (called on every rebuild) to
didChangeDependencies() so it is initialised once and reused.
Prevents repeated data loads on every tab switch and resolves the
203 skipped frames Choreographer warning.
- Fix KcSummaryCard RenderFlex overflow (8 cards, 19px each): reduce
icon size 28->22px, switch spacing to xs, wrap value Text in
FittedBox(scaleDown) with fontSize 28, use bodySmall + maxLines for
label. Cards now fit within the GridView childAspectRatio:1.6
constraint on all phone screen sizes.
All tests pass: 27 kell_mobile + 41 design_system.
2026-07-11 16:48:31 -04:00
Mike Kell
1023249592
Merge feat/wc-catalog-expansion-ui into main (Stage 9D complete)
Publish Docs / publish-docs (push) Successful in 1m1s
Details
2026-07-11 10:50:41 -04:00
Mike Kell
a127ddba3a
feat(stage-9d): product creation UI, category management page, mobile create-product page
2026-07-11 10:50:32 -04:00
Mike Kell
204bd3b118
chore: remove stray commit_msg.txt
Publish Docs / publish-docs (push) Successful in 1m20s
Details
2026-07-11 10:23:57 -04:00
Mike Kell
24e387e412
Merge feat/wc-catalog-expansion into main (Stage 9C complete)
2026-07-11 10:23:42 -04:00
Mike Kell
0a45ecb1c0
feat(wc-catalog-expansion): Stage 9C — WooCommerce catalog expansion
...
- Add ProductCategory domain model (id, name, slug, parentId, count) with copyWith, equality, toString
- Add ProductImage domain model (id, url, alt, position) with copyWith, equality
- Extend ProductPublishingRepository contract: createProduct, deleteProduct, updateProductImages, getProductImages, getCategories, createCategory, updateCategory, deleteCategory
- Implement all 8 new methods in FakeProductPublishingRepository with seed categories
- Implement all 8 new methods in WordPressProductPublishingRepository
- Add WooCommerceApiClient methods: createProduct, deleteProduct, getCategories (paginated), createCategory, updateCategory, deleteCategory, getProductImages, setProductImages
- Add use cases: CreateProduct, DeleteProduct, GetCategories, CreateCategory, UpdateProductImages
- Update feature_wordpress.dart barrel exports
- Update test stubs in dashboard_controller_test.dart and product_publishing_page_test.dart
- Add 69 new tests in wc_catalog_expansion_test.dart (388 total feature_wordpress, 24 kell_web — all passing)
- Update master_development_brief.md and build_execution_tracker.md
2026-07-11 10:23:31 -04:00
Mike Kell
9564329283
Merge feat/wc-inventory-sync into main (Stage 9B complete)
Publish Docs / publish-docs (push) Successful in 48s
Details
2026-07-11 10:01:07 -04:00
Mike Kell
5df3d8beac
feat(inventory): Stage 9B — WooCommerce stock/inventory sync
2026-07-11 10:00:55 -04:00
Mike Kell
bb51db7d35
Merge feat/wc-orders-integration into main (Stage 9A complete)
Publish Docs / publish-docs (push) Successful in 40s
Details
2026-07-11 09:45:47 -04:00
Mike Kell
e92788038a
feat(orders): Stage 9A - WooCommerce Orders API integration
...
- Extend OrderStatus with onHold, refunded, failed
- Extend OrderItem with productId, variationId, customizations
- Extend Order with paymentMethod, source, customFields
- Add OrderSource enum (online, market, manual)
- Add getOrder(id) to OrdersRepository contract and FakeOrdersRepository
- Add WooCommerceOrderMapper (WooCommerce JSON <-> Order domain)
- Add WooCommerceOrdersRepository implementing full OrdersRepository
- Add orders API methods to WooCommerceApiClient (getOrders, getOrder,
updateOrderStatus, createOrder, addOrderNote)
- Export WooCommerceApiClient/WooCommerceApiException from feature_wordpress
- Add feature_wordpress + http dev deps to feature_orders pubspec
- 83 new tests: mapper (25), repository+API client (23), FakeRepo.getOrder (3),
plus existing suite grows to 198/198 feature_orders
- All packages analyze clean; 847/847 total tests passing
- Update master_development_brief.md and build_execution_tracker.md
2026-07-11 09:45:36 -04:00
Mike Kell
003347c89c
merge: feat/auth-foundation into main (Stage 8C complete)
Publish Docs / publish-docs (push) Successful in 52s
Details
2026-07-11 08:48:28 -04:00
Mike Kell
bda93640e4
feat(auth): Stage 8C - authentication foundation
...
- Add KcUser/KcUserRole domain models with copyWith, equality, toString
- Add AuthState sealed hierarchy (unauthenticated, loading, authenticated, error)
- Add AuthService abstract contract (signIn, signOut, refreshSession, stream)
- Add AuthException with optional HTTP statusCode
- Add CredentialStore abstract contract with CredentialKeys constants
- Add InMemoryCredentialStore implementation
- Add FakeAuthService with role-based sign-in simulation
- Add KcAppEnvironment.square to core enum with SQ label
- Add KcBootstrap square case (falls back to fake until Stage 10A)
- Update kell_web and kell_mobile shell environment badges for square case
- Add integrations dependency to kell_web and kell_mobile pubspec.yaml
- Add auth to run_all_tests.sh TESTABLE and ANALYZABLE lists
- Add 42 auth tests (42/42 passing)
- Add 1 new core test for square bootstrap fallback (21/21 passing)
- Update master_development_brief.md: Stage 8C complete, Stage 8 complete
- Total: 764/764 tests passing, dart analyze clean
Stage 8 (infrastructure package activation) is now complete.
Next: feat/wc-orders-integration (Stage 9A)
2026-07-11 08:48:18 -04:00
Mike Kell
0ef6ecceb0
Merge feat/data-layer-contracts into main (Stage 8B complete)
Publish Docs / publish-docs (push) Successful in 36s
Details
2026-07-11 08:32:04 -04:00
Mike Kell
4a935e4989
feat(data): Stage 8B — shared data layer contracts activated
2026-07-11 08:31:46 -04:00
Mike Kell
7bd4db6a95
Merge feat/integrations-contracts into main (Stage 8A complete)
Publish Docs / publish-docs (push) Successful in 44s
Details
2026-07-11 08:21:14 -04:00
Mike Kell
ec66626074
feat(integrations): Stage 8A - integration abstractions contracts
...
- Add ApiException base class (statusCode, message, body)
- Add ApiClient abstract class (initialize, dispose, isReady, execute<T>)
- Add RetryPolicy abstraction (NoRetryPolicy, ExponentialBackoffRetryPolicy)
- Add RateLimiter abstraction (NoRateLimiter, TokenBucketRateLimiter)
- Add IntegrationHealthCheck contract (HealthCheckResult value object)
- Add WebhookHandler contract (WebhookEvent, WebhookResult, WebhookProcessingStatus)
- Add ChannelAdapter contract (ChannelProduct, ChannelOrder, ChannelOrderItem, ChannelInventoryCount)
- Replace Calculator placeholder with barrel exports for all 7 contract files
- Refactor WooCommerceApiClient to implement ApiClient contract
- Refactor WooCommerceApiException to extend ApiException
- Add integrations dependency to feature_wordpress pubspec
- Add packages/integrations to TESTABLE and ANALYZABLE in run_all_tests.sh
- Add 38 tests for all contracts and value objects
- dart analyze clean (no issues in integrations and feature_wordpress)
- Tests: 38/38 integrations, 319/319 feature_wordpress
2026-07-11 08:21:03 -04:00
Mike Kell
c67f92f844
Merge feat/bulk-operator-workflows into main (Stage 7B complete)
Publish Docs / publish-docs (push) Successful in 41s
Details
2026-07-11 08:08:14 -04:00
Mike Kell
6898d9b877
chore: mark feat/bulk-operator-workflows as merged to main in tracker
2026-07-11 08:04:15 -04:00
Mike Kell
a3c1214aff
Merge chore/dart-analyze-cleanup into main (analyze clean)
Publish Docs / publish-docs (push) Successful in 33s
Details
2026-07-10 20:18:56 -04:00
Mike Kell
fb3f6f43d4
chore(analyze): remove unnecessary_import directives in feature_orders tests
...
Remove 6 redundant direct src/ imports from feature_orders test files.
All symbols are already re-exported via the package barrel
(feature_orders/feature_orders.dart), making the src/ imports unnecessary.
Files cleaned:
- test/orders_controller_test.dart — removed orders_controller.dart import
- test/widgets/order_card_test.dart — removed order_card.dart import
- test/widgets/order_detail_panel_test.dart — removed order_detail_panel.dart import
- test/widgets/order_status_chip_test.dart — removed order_status_chip.dart import
- test/widgets/orders_page_test.dart — removed add_note_dialog.dart and
order_detail_panel.dart imports
All 115/115 feature_orders tests still passing.
dart analyze: no issues found across all packages.
2026-07-10 20:18:48 -04:00
Mike Kell
cef112872a
Merge feat/inventory-mobile-surface into main (Stage 6C complete)
Publish Docs / publish-docs (push) Successful in 1m10s
Details
2026-07-10 20:13:35 -04:00
Mike Kell
585dc14829
feat(mobile): Stage 6C — mobile inventory surface
...
- Add MobileInventoryPage with search bar, horizontal status filter chips
(All / In Stock / Low Stock / Out of Stock / Draft), item count display,
compact _MobileInventoryCard list at 120px height (name, SKU, status chip,
quantity-on-hand), pull-to-refresh, and _detailPageActive guard to suppress
behind-route SnackBars
- Add MobileInventoryDetailPage wrapping shared InventoryDetailPanel; local
controller listener for SnackBar feedback; showAdjustQuantityDialog on
Adjust Quantity tap; haptic feedback (mediumImpact on result, lightImpact
on successful adjust); SafeArea wrapper
- Update MobileShell Inventory tab (case 1) from shared InventoryPage to
MobileInventoryPage; remove unused feature_inventory direct import
- Add 6 Stage 6C widget tests: Inventory tab search bar, status filter chips,
item count, card navigation to detail, adjust quantity dialog, back
navigation returning to list (26/26 kell_mobile total)
All tests passing: 26/26 kell_mobile, 75/75 feature_inventory
dart analyze --fatal-infos: no issues found
Stage 6 complete — Products, Orders, and Inventory all have mobile surfaces
2026-07-10 20:13:27 -04:00
Mike Kell
427bb38381
Merge feat/orders-mobile-surface into main (Stage 6B complete)
Publish Docs / publish-docs (push) Successful in 1m3s
Details
2026-07-10 20:03:30 -04:00
Mike Kell
6697bb02dd
feat(mobile): Stage 6B — mobile orders surface
...
- Add MobileOrdersPage with search bar, horizontal status filter chips
(All/Pending/Processing/Shipped/Delivered/Cancelled), order count
display, OrderCard list at 160px height, pull-to-refresh, and
\_detailPageActive guard to suppress behind-route SnackBars
- Add MobileOrderDetailPage wrapping shared OrderDetailPanel as a
StatefulWidget with local controller listener for SnackBar feedback,
confirmation dialog before status changes, haptic feedback
(mediumImpact for status, lightImpact for note additions), and SafeArea
- Wire Orders tab (case 3) in MobileShell to MobileOrdersPage; remove
unused feature_orders direct import from shell
- Add 6 new Stage 6B widget tests: Orders tab search bar, status filter
chips, order count, order card navigation to detail, confirmation dialog
for status change, back navigation returning to orders list
- Update build_execution_tracker.md and master_development_brief.md
Tests: 20/20 kell_mobile, 115/115 feature_orders — all passing
Analyze: dart analyze --fatal-infos — no issues found
2026-07-10 20:03:22 -04:00
Mike Kell
6f839d24cd
Merge feat/orders-page-ui into main (Stage 5D complete)
Publish Docs / publish-docs (push) Successful in 41s
Details
2026-07-10 19:52:28 -04:00
Mike Kell
3662f4fcc5
feat(orders): Stage 5D - orders page UI hardening
...
- OrdersPage with search bar, status filter chips, order count, master-detail wide layout, push-navigation narrow layout
- OrderCard widget with order ID, customer name, date, status chip, item count, total
- OrderDetailPanel with customer info, shipping address, line items, total, notes, status dropdown, Add Note button, isUpdating indicator
- OrderStatusChip mapping OrderStatus to label and color
- AddNoteDialog with text field, empty-note validation, AddNoteDialogResult value object
- showOrderActionSnackBar helper for success/failure feedback
- Cross-feature onViewProduct/onViewInventory callbacks per line item
- initialFilter, initialQuery, initialSelectedId constructor params on OrdersPage
- Expanded feature_orders barrel exports (OrdersController, all presentation types)
- 25 new widget tests (OrderDetailPanel x14, AddNoteDialog x3, OrdersPage x6)
- 115/115 feature_orders tests passing, 24/24 kell_web tests passing
- Updated build_execution_tracker.md and master_development_brief.md
2026-07-10 19:52:19 -04:00
Mike Kell
9a66a8a2b0
Merge feat/orders-domain into main (Stage 5C complete)
Publish Docs / publish-docs (push) Successful in 50s
Details
2026-07-10 19:04:49 -04:00
Mike Kell
b2bec44fcb
feat/orders-domain: expand orders domain with write operations and 90 tests
2026-07-10 19:04:39 -04:00
Mike Kell
73fdcf99e7
chore(inventory): stage uncommitted presentation layer files from Stage 5B
Publish Docs / publish-docs (push) Successful in 42s
Details
2026-07-10 18:52:29 -04:00
Mike Kell
44689b5cdb
Merge feat/inventory-page-ui into main — Stage 5B complete
2026-07-10 18:51:19 -04:00
Mike Kell
f2b29d47a1
feat(inventory): Stage 5B — inventory page UI with search, filter chips, detail panel, quantity adjust dialog, and snack bar feedback
2026-07-10 18:51:09 -04:00
Mike Kell
b2df206123
Merge feat/inventory-domain-expansion into main (Stage 5A)
Publish Docs / publish-docs (push) Successful in 1m37s
Details
2026-07-10 18:33:14 -04:00
Mike Kell
d36c2d1e73
feat(inventory): Stage 5A — inventory domain expansion with write actions
2026-07-10 18:33:02 -04:00
Mike Kell
c4f76a90e5
feat: add bulk publish and bulk submit-for-review actions (Stage 7B)
...
Validate Docs / validate-docs (push) Successful in 59s
Details
Flutter Analyze / Dart Analyze (push) Has been cancelled
Details
Flutter Test / Flutter Tests (push) Has been cancelled
Details
- Enable pendingReview in WordPressProductMapper.toWooCommerceStatus()
(maps to WooCommerce 'pending'; only unpublished throws ArgumentError)
- Add Publish and Submit for Review buttons to _MultiSelectBar with
confirmation dialogs and proper plural/singular messaging
- Refactor multi-select bar layout from Row to Wrap for responsive overflow
- Add 3 controller tests: bulk publish, bulk pending review, mixed statuses
- Add 5 page widget tests: button visibility, confirmation dialogs, cancel
preserves selection, plural count
- Update repository test: remove pendingReview from unsupported-throws
- Update mapper test: pendingReview now returns 'pending'
- 319/319 feature_wordpress tests passing, dart analyze clean
- Update master_development_brief.md and build_execution_tracker.md
2026-05-30 11:17:13 -04:00
Mike Kell
b61c886c23
chore: remove 8 unnecessary_import directives and 1 unused variable
...
Validate Docs / validate-docs (push) Successful in 49s
Details
Publish Docs / publish-docs (push) Successful in 1m28s
Details
Flutter Analyze / Dart Analyze (push) Has been cancelled
Details
Flutter Test / Flutter Tests (push) Has been cancelled
Details
- feature_wordpress/test: removed 8 unnecessary_import directives across
5 test files (barrel exports already cover these symbols)
- kell_mobile/test: removed unused productCards local variable
- dart analyze --fatal-infos now passes clean across all packages
- All 410 tests still pass (311 feature_wordpress, 14 kell_mobile,
24 kell_web, 41 design_system, 20 core)
- Updated build_execution_tracker.md (Stage 7A → merged)
- Updated master_development_brief.md (next branch, validation state)
2026-05-30 10:53:00 -04:00
Mike Kell
2c3ed3b926
Merge feat/bulk-status-actions: Stage 7A bulk move-to-draft action
Publish Docs / publish-docs (push) Successful in 1m38s
Details
2026-05-30 10:36:13 -04:00
Mike Kell
ffc643739c
feat: add bulk move-to-draft action (Stage 7A)
...
Add bulk status-change capability to the product publishing workspace,
starting with 'Move to Draft' as the first controlled bulk action.
Controller:
- Add BulkActionResult value class (successCount, failureCount,
targetStatus, failedProductNames, totalCount, allSucceeded)
- Add bulkUpdateStatus() method: processes selected products
sequentially with per-row updating state, single reload after
completion, auto-clears multi-selection
- Add lastBulkActionResult / consumeBulkActionResult() pattern
Presentation:
- Add showBulkActionSnackBar() with three variants: all-success
(green), total-failure (red), partial-failure (amber with up to
3 failed product names)
- Update _MultiSelectBar with 'Move to Draft' OutlinedButton.icon
and onBulkMoveToDraft callback
- Add _confirmBulkMoveToDraft() confirmation dialog
- Wire bulk result listener into _onControllerChanged
Tests:
- 11 new bulkUpdateStatus tests: no-op on empty selection, moves
all to draft, sets result on all-success, clears multi-selection,
clears updatingIds, handles mixed statuses, consume clears result,
starts null, preserves preview selection, persists filter/sort,
disposal safety
- Total: 311/311 feature_wordpress, 24/24 kell_web
Tracking:
- Update master_development_brief.md: Stage 7A marked complete,
entry criteria marked as all met, test count updated to 311
- Update build_execution_tracker.md: new slice entry added
2026-05-30 10:36:00 -04:00