Commit Graph

26 Commits

Author SHA1 Message Date
Mike Kell fba7cba835 chore(feature_orders): add .gitignore, untrack .dart_tool and pubspec.lock
- Add standard Flutter library .gitignore to feature_orders package
  (was missing, unlike all other packages)
- Remove .dart_tool/ directory and pubspec.lock from git tracking
  to match project conventions
2026-05-30 10:09:40 -04:00
Mike Kell 871ae8c48b feat(Stage 6B): Android mobile workflow hardening
- Restore Material Design 48x48dp minimum touch targets on 12 IconButtons
  in ProductPreviewPanel by removing constraints/padding overrides
- Replace fixed-width SizedBox(width:80) on price edit TextField with
  Expanded for flexible layout on narrow mobile screens
- Add tooltip 'Edit price' for consistency with other edit buttons
- Wrap ProductPreviewPanel in SafeArea in MobileProductDetailPage to
  prevent content clipping under notches/gesture bars
- Add 6 new touch target rendered-size tests verifying >= 48x48dp
- Update master_development_brief.md and build_execution_tracker.md

Tests: 300/300 feature_wordpress, 14/14 kell_mobile, 24/24 kell_web,
       41/41 design_system — 379 total, all passing.
Stage 6 (Android operational maturity) complete.
2026-05-30 09:45:10 -04:00
Mike Kell 591de0c5c4 feat(mobile): add Android publishing surface (Stage 5B)
Validate Docs / validate-docs (push) Successful in 2m12s Details
Publish Docs / publish-docs (push) Successful in 59s Details
Flutter Analyze / Dart Analyze (push) Has been cancelled Details
Flutter Test / Flutter Tests (push) Has been cancelled Details
- Add MobilePublishingPage with search, filter chips, sort, product count,
  compact card list, pull-to-refresh, and push navigation to detail
- Add MobileProductDetailPage wrapping shared ProductPreviewPanel with
  all narrow edit callbacks (status, price, name, description, category)
- Switch Products tab in MobileShell from ProductPublishingPage to
  MobilePublishingPage
- Expand feature_wordpress barrel exports for mobile consumption
- Add 4 new widget tests (10 total kell_mobile tests passing)
- Zero business logic forked — all shared layers reused
- dart analyze clean, all tests passing

Stage 5 (Android application foundation) complete.
2026-05-29 02:32:28 -04:00
Mike Kell 65466ba513 feat(mobile): Stage 5A — Android app shell and bootstrap
Validate Docs / validate-docs (push) Successful in 3m31s Details
Flutter Analyze / Dart Analyze (push) Has been cancelled Details
Flutter Test / Flutter Tests (push) Has been cancelled Details
Replace default Flutter counter template in kell_mobile with a fully
integrated mobile operations platform shell reusing shared packages.

Mobile app shell:
- MobileAppServices extending KcAppServices with fake()/wp() factories
- KellMobileApp with KcAppScope<MobileAppServices>, KcTheme, env badge
- MobileShell with 5-tab NavigationBar (Dashboard, Inventory, Orders,
  Publishing, More) using IndexedStack for state preservation
- KcBootstrap entry point with --dart-define environment variables

Dashboard:
- DashboardSummary value object with fromData()/empty() constructors
- GetDashboardSummary use case aggregating inventory, orders, publishing
- DashboardController (ChangeNotifier) with loading/error/summary state
- MobileDashboardPage with GridView summary cards using design system
  widgets (KcSectionHeader, KcSummaryCard, KcEmptyState)

Placeholder pages:
- FinancePlaceholderPage, IntegrationsPlaceholderPage for More tab
- Feature tab pages delegate to shared feature presentation layers

Infrastructure:
- pubspec.yaml references all shared packages (core, design_system,
  feature_inventory, feature_orders, feature_policy, feature_wordpress)
- SDK constraint corrected from ^3.11.4 to ^3.11.0 across all 14
  pubspec.yaml files to match installed Dart SDK 3.11.3

Tests:
- 6 new kell_mobile widget tests: shell loading, summary cards,
  environment badge, navigation bar destinations, tab switching, More menu
- All existing tests remain passing (24/24 kell_web, 294/294
  feature_wordpress)

Documentation:
- master_development_brief.md: Stage 5A marked complete, next branch
  updated to feat/android-publishing-surface (Stage 5B), kell_mobile
  platform description updated
- build_execution_tracker.md: Stage 5A entry added with full file list
2026-05-28 19:10:14 -04:00
Mike Kell 9eafc68fec feat(core): extract shared composition pattern into core package (Stage 4B)
Validate Docs / validate-docs (push) Successful in 1m13s Details
Extract AppConfig/AppEnvironment, AppServices, Bootstrap, and AppScope into core package as KcAppConfig, KcAppServices, KcBootstrap, and KcAppScope generic abstractions.

New core composition types:

- KcAppConfig: runtime config from --dart-define (KC_ENV, WC credentials)

- KcAppEnvironment: enum for fake/wordpress environments

- KcAppServices: abstract base for app service containers

- KcServiceFactory<T>: generic factory for fake/wordpress service creation

- KcBootstrap: shared bootstrap with env switch and WP credential fallback

- KcAppScope<T>: InheritedWidget exposing typed services + config to tree

kell_web backward compatibility:

- AppConfig/AppEnvironment are now typedefs to Kc-prefixed types

- AppServices extends KcAppServices with concrete repositories

- AppScope extends KcAppScope<AppServices> with direct InheritedWidget lookup

- Bootstrap delegates to KcBootstrap.run with app-specific factory

Tests: 20 new core tests, all 379 tests passing (core 20, design_system 41, feature_wordpress 294, kell_web 24). dart analyze clean.
2026-05-22 09:57:51 -04:00
Mike Kell 8facefdff1 feat(design-system): Stage 4A — design system expansion and shared widget migration
- Migrate EmptyStatePanel, SectionHeader, SummaryCard from kell_web into design_system as KcEmptyState, KcSectionHeader, KcSummaryCard

- Add KcTypography shared typography scale with full Material 3 text style hierarchy

- Add KcBreakpoints responsive layout breakpoint utilities (compact/medium/expanded/large)

- Add KcLoadingState and KcErrorState shared state widgets

- Update kc_theme.dart to use KcTypography.applyKcTypography()

- Update kell_web dashboard_page.dart to use design_system widgets directly

- Replace kell_web shell widget files with backward-compatible typedef re-exports

- Expand design_system tests from 3 to 41 (all passing)

- All existing tests passing: design_system 41/41, feature_wordpress 294/294, kell_web 24/24

- dart analyze clean across design_system and kell_web
2026-05-22 09:42:31 -04:00
Mike Kell a0aea373c2 feat(wordpress): Stage 3B — list efficiency improvements
Add compact/standard view toggle (ListDensity enum) to controller and page, allowing users to switch between a dense single-row layout and the full metadata card view.

Add staleness detection: isStale() flags products not modified in 30+ days with a schedule icon; staleCount() returns the count of stale items in the current filtered view.

Add keyboard navigation: selectNextDraft/selectPreviousDraft with arrow-key wrapping support; page wires up Focus + onKeyEvent for arrow-down/arrow-up.

Update ProductDraftCard with compact layout variant (two-row dense metadata), stale indicator icon, and description snippet in standard mode. Wrap long text in Flexible widgets to prevent overflow.

Increase standard card height from 160px to 180px to accommodate the new description snippet row.

Export ListDensity and ProductSortField from barrel file.

Add 42 new focused tests covering listDensity toggle, staleness boundary conditions, staleCount with filters, keyboard navigation wrapping, and compact card rendering. All 294 tests pass, dart analyze clean.
2026-05-22 08:51:32 -04:00
Mike Kell dfe7ae1811 feat: add multi-select groundwork to product publishing (Stage 3A)
Add read-only multi-selection state to the product publishing workspace, preparing for future bulk actions without introducing any bulk writes.

Controller (ProductPublishingController):

- Add _multiSelectedIds Set<String> for tracking multi-selected product IDs

- Add toggleMultiSelect(id) to add/remove individual IDs

- Add clearMultiSelection() to deselect all

- Add selectAllVisible() to select all currently visible (filtered/searched) drafts

- Add isMultiSelected(id), multiSelectedIds, multiSelectedCount, isMultiSelectActive getters

- Multi-selection is independent of single-item preview selection

- Multi-selection persists across load cycles and write operations

UI (ProductDraftCard):

- Add optional isMultiSelected/onMultiSelectToggle props

- Show leading Checkbox when multi-select mode is active

- Tapping checkbox toggles multi-select; tapping card body still fires single-item preview

UI (ProductPublishingPage):

- Add _MultiSelectBar widget above product list when multi-select is active

- Shows selected count, Select All button, and Clear button

- Replace deprecated withOpacity() calls with withValues(alpha:)

Tests:

- 15 new multi-select controller tests covering toggle, clear, select-all,

  filter/search interaction, independence from preview selection, persistence

  across loads and writes, and listener notifications

- Total: 262 feature_wordpress tests passing

Validation:

- dart analyze: clean (0 issues)

- flutter test: 262/262 passed

Changed files:

- lib/src/application/product_publishing_controller.dart

- lib/src/presentation/widgets/product_draft_card.dart

- lib/src/presentation/product_publishing_page.dart

- test/product_publishing_controller_test.dart

- docs/development/master_development_brief.md
2026-05-22 08:33:24 -04:00
Mike Kell 02cc75c655 feat: publishing workflow UX hardening (Stage 2B)
Validate Docs / validate-docs (push) Successful in 1m9s Details
2026-04-11 16:40:10 -04:00
Mike Kell cf0889d4a9 feat: post-write consistency hardening (Stage 2A)
Validate Docs / validate-docs (push) Successful in 1m4s Details
Add _refreshSelection() to ProductPublishingController to preserve and refresh selectedDraft by id after all write-triggered reloads. Selection stays on the same product with latest data, or auto-selects first visible item if the original leaves the active filter.

- 11 new post-write consistency tests (234 total)

- dart analyze clean
2026-04-11 16:11:06 -04:00
Mike Kell b69edd3e4a feat(wordpress): add category-only product edit (Stage 1B)
Validate Docs / validate-docs (push) Successful in 1m3s Details
2026-04-11 15:54:51 -04:00
Mike Kell 8d1a01581a tage 1A — Description-only product edit implemented
Validate Docs / validate-docs (push) Successful in 56s Details
2026-04-11 11:07:36 -04:00
Mike Kell ae9c1dd90c feat(feature_wordpress): add name-only product update
Publish Docs / publish-docs (push) Successful in 57s Details
2026-04-11 10:36:00 -04:00
Mike Kell f8f373b018 fix(feature_wordpress): allow pending review products to move to draft
Publish Docs / publish-docs (push) Successful in 1m12s Details
2026-04-11 08:16:49 -04:00
Mike Kell ed2333d188 Implement WooCommerce publishDraft flow
Validate Docs / validate-docs (push) Successful in 1m24s Details
2026-04-05 20:15:00 -04:00
Mike Kell 039612cb6e Update main with product publishing
Publish Docs / publish-docs (push) Successful in 1m57s Details
2026-04-05 20:03:10 -04:00
Mike Kell 7ab526f083 feat(wordpress): add real WooCommerce read-only product repository
Validate Docs / validate-docs (push) Successful in 1m9s Details
2026-04-04 15:14:38 -04:00
Mike Kell 23ea1bebe1 feat(workflows): add shared filtering search and selection persistence
Validate Docs / validate-docs (push) Successful in 1m0s Details
2026-04-04 14:59:26 -04:00
Mike Kell 0f61badba6 feat(navigation): add cross-feature workflow handoffs
Validate Docs / validate-docs (push) Successful in 1m5s Details
2026-04-04 14:42:03 -04:00
Mike Kell c2049e2c46 feat(policy): add policy governance workspace vertical slice
Validate Docs / validate-docs (push) Successful in 1m17s Details
2026-04-04 14:21:49 -04:00
Mike Kell 3330ed23b3 feat(orders): add orders workspace vertical slice
Validate Docs / validate-docs (push) Successful in 52s Details
2026-04-04 13:57:27 -04:00
Mike Kell e06c2d8f94 refactor(kell-web): add app-level dependency composition
Validate Docs / validate-docs (push) Successful in 1m9s Details
2026-04-04 13:38:51 -04:00
Mike Kell 226b21d22d feat(products): add product publishing workspace vertical slice
Validate Docs / validate-docs (push) Successful in 50s Details
2026-04-04 13:13:26 -04:00
Mike Kell c7c12b3b0d feat(kell-web): add shell routing and inventory vertical slice
Validate Docs / validate-docs (push) Successful in 53s Details
2026-04-04 12:41:06 -04:00
Mike Kell 417430d996 feat(flutter): add Kell Creations design system and inventory first slice
Validate Docs / validate-docs (push) Successful in 41s Details
2026-04-04 12:08:51 -04:00
Mike Kell 59548cedbd Add Flutter app and package monorepo scaffold
Publish Docs / publish-docs (push) Successful in 59s Details
2026-04-04 09:19:46 -04:00