Commit Graph

96 Commits

Author SHA1 Message Date
Mike Kell f056d5f0b5 docs: sync master development brief with completed stages and resolved recommendations
Publish Docs / publish-docs (push) Successful in 1m2s Details
2026-05-22 11:03:00 -04:00
Mike Kell effaadc84b docs: full project analysis with recommendations and fixes
Publish Docs / publish-docs (push) Successful in 1m9s Details
2026-05-22 10:51:53 -04:00
Mike Kell 2af9a8b6cb docs: update tracker for merged feat/test-coverage-visibility (Stage 4D)
Publish Docs / publish-docs (push) Successful in 1m5s Details
- Update current status to Stage 4D complete (Stage 4 complete)

- Add feat/test-coverage-visibility slice entry with coverage baseline

- Set next branch to feat/android-app-shell (Stage 5A)
2026-05-22 10:22:59 -04:00
Mike Kell 4f72bdb486 Merge feat/test-coverage-visibility into main (Stage 4D complete) 2026-05-22 10:22:16 -04:00
Mike Kell f30ad24d8a feat(ci): add test coverage visibility to CI pipeline (Stage 4D)
Enhance flutter-test.yml to run tests with --coverage and parse lcov.info

files, producing aggregate summary table with per-package line coverage.

Changes:

- flutter-test.yml: add --coverage flag, lcov.info parsing, coverage %

- collect_coverage.sh: new local coverage helper with summary table

- tools/README.md: document collect_coverage.sh script

- .gitignore: add coverage/ directories

- master_development_brief.md: mark Stage 4D complete, document baseline

  coverage table, update next branch to Stage 5A, resolve improvement #5

Baseline coverage (2026-05-22):

- core: 85.7%% (42/49 lines, 20 tests)

- design_system: 100.0%% (88/88 lines, 41 tests)

- feature_wordpress: 84.7%% (857/1012 lines, 294 tests)

- kell_web: 54.1%% (191/353 lines, 24 tests)

- Overall: 78.4%% (1178/1502 lines, 379 tests)

No minimum thresholds enforced — visibility first.
2026-05-22 10:22:05 -04:00
Mike Kell 71abe9df7f docs: update briefs for merged feat/flutter-cicd (Stage 4C)
Publish Docs / publish-docs (push) Successful in 1m16s Details
- master_development_brief.md: mark Stage 4C complete, update baseline commit,

  next recommended branch (Stage 4D), tools/ description, resolve improvement #9

- build_execution_tracker.md: update current status to Stage 4C, add missing

  feat/shared-composition-pattern and feat/flutter-cicd slice entries
2026-05-22 10:11:51 -04:00
Mike Kell 6a6323ef57 Merge feat/flutter-cicd into main (Stage 4C complete) 2026-05-22 10:09:49 -04:00
Mike Kell b00072474b feat(ci): add Flutter CI/CD pipeline for Forgejo Actions (Stage 4C)
Add Forgejo Actions workflows for automated Flutter validation on PRs:

- flutter-analyze.yml: runs dart analyze --fatal-infos on all 8 packages/apps

- flutter-test.yml: runs flutter test per package with pass/fail reporting

- Aggregate test result summary table in workflow output

- Workflows trigger on PRs to main and all non-main branch pushes

- Uses ghcr.io/cirruslabs/flutter:stable container image

Populate tools/ directory with CI helper scripts:

- run_all_tests.sh: local test runner with optional --analyze flag

- README.md: documents scripts and CI workflow inventory

Validated locally:

- dart analyze: all 8 packages/apps clean (no issues)

- core: 20/20 tests passed

- design_system: 41/41 tests passed

- feature_wordpress: 294/294 tests passed

- kell_web: 24/24 tests passed

- Total: 379/379 tests passed
2026-05-22 10:09:42 -04:00
Mike Kell 0a0abc2c3d Merge feat/shared-composition-pattern into main (Stage 4B complete)
Publish Docs / publish-docs (push) Successful in 58s Details
2026-05-22 09:57:59 -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 6f10efc88d Merge feat/design-system-shared-widgets into main — Stage 4A complete
Publish Docs / publish-docs (push) Successful in 57s Details
2026-05-22 09:42:39 -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 bee610ca2c docs: add Stage 4 — Platform foundations and cross-platform readiness
Publish Docs / publish-docs (push) Successful in 1m9s Details
2026-05-22 09:26:39 -04:00
Mike Kell 02090cde6a docs: add suggested improvements to master development brief
Publish Docs / publish-docs (push) Successful in 1m3s Details
2026-05-22 09:17:08 -04:00
Mike Kell eaf3e70d30 docs: update master development brief — Stage 3B complete, Stage 3 done
Publish Docs / publish-docs (push) Successful in 1m10s Details
Mark Stage 3B (list efficiency improvements) as complete with 294 tests passing. Update baseline commit reference, test count, and next recommended branch to Stage 4A (Android app shell).
2026-05-22 08:53:10 -04:00
Mike Kell 738336d953 Merge feat/list-efficiency-improvements into main — Stage 3B complete 2026-05-22 08:51:57 -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 f3fbbca06d Merge feat/multi-select-groundwork into main (Stage 3A complete)
Publish Docs / publish-docs (push) Successful in 1m26s Details
2026-05-22 08:33: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 49a3702cec Updated build status
Publish Docs / publish-docs (push) Successful in 1m34s Details
2026-04-11 16:49:51 -04:00
mtkell b81016df28 Merge pull request 'feat/publishing-ux-hardening' (#6) from feat/publishing-ux-hardening into main
Publish Docs / publish-docs (push) Successful in 59s Details
Reviewed-on: #6
2026-04-11 20:42:21 +00: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 73b4a49939 docs: update briefs for merged feat/post-write-consistency (Stage 2A)
- Mark Stage 2A complete in master brief and build tracker

- Refresh main baseline to 7acff83

- Next slice: feat/publishing-ux-hardening (Stage 2B)
2026-04-11 16:18:00 -04:00
mtkell 7acff83bf4 Merge pull request 'feat: post-write consistency hardening (Stage 2A)' (#5) from feat/post-write-consistency into main
Publish Docs / publish-docs (push) Successful in 1m16s Details
Reviewed-on: #5
2026-04-11 20:13:30 +00: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
mtkell 8e7e4cbc69 Merge pull request 'feat/category-only-edit' (#4) from feat/category-only-edit into main
Publish Docs / publish-docs (push) Successful in 54s Details
Reviewed-on: #4
2026-04-11 19:56:47 +00: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 24671f5f59 feat(wordpress): add category-only product edit (Stage 1B) 2026-04-11 15:54:40 -04:00
Mike Kell 3e233b0df6 Master Development Brief updated after Stage 1A merge
Publish Docs / publish-docs (push) Successful in 1m3s Details
2026-04-11 11:15:37 -04:00
mtkell cebac4c32f Merge pull request 'tage 1A — Description-only product edit implemented' (#3) from feat/description-only-edit into main
Publish Docs / publish-docs (push) Successful in 1m1s Details
Reviewed-on: #3
2026-04-11 15:09:31 +00: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 de44b02d76 added master development brief
Publish Docs / publish-docs (push) Successful in 1m3s Details
2026-04-11 10:48:49 -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
mtkell f9c5ef36da Merge pull request 'Implement WooCommerce publishDraft flow' (#2) from feature/wp-publish-draft into main
Publish Docs / publish-docs (push) Successful in 1m5s Details
Reviewed-on: #2
## publishDraft Implementation Review

### 1. Cleanup Suggestions

**None.** After thorough review:

- **Production code** (39 lines total): Clean, minimal, correct. The `publish_status.dart` import is used by `updateProductStatus`. No dead code, no unused imports. `flutter analyze` reports zero issues.
- **Test code**: The `publishDraft` and `updateProductStatus` groups each have their own local JSON builder helper. The slight duplication is intentional — each is scoped to its group with the right defaults. No cleanup needed.
- **Static analysis**: Both `feature_wordpress` and `kell_web` pass `flutter analyze` with zero issues.
- **Dashboard test stub** (`_StubProductPublishingRepository.publishDraft` still throws `UnimplementedError`): Correct — the dashboard never calls `publishDraft`, so the stub is never exercised. No change needed.

### 2. Test Gaps Worth Adding (optional, not blocking)

| Gap | Priority | Rationale |
|-----|----------|-----------|
| `publishDraft` with 404 (product not found) | Low | Already covered implicitly by `WooCommerceApiClient.updateProduct` error handling, but an explicit 404 test would document the "missing product" scenario |
| `publishDraft` verifies auth header is present | Low | Auth is tested at the `WooCommerceApiClient` level already; adding it here would be redundant |
| `publishDraft` on already-published product (idempotency) | Low | Tests WooCommerce behavior, not our code |

None of these are blocking.

### 3. PR Readiness

** Ready for merge.**

Evidence:
- `flutter analyze` — 0 issues on both packages
- `flutter test` — 99 pass (feature_wordpress), 24 pass (kell_web)
- 2 files changed, ~15 lines of net production code
- No architectural changes, no composition changes, no credential exposure
- Strict package boundaries preserved
- Runtime config via `--dart-define` unchanged
2026-04-06 00:20:50 +00: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
mtkell d8f8fb6797 Merge pull request 'Add Kell Creations operations app foundation with feature slices and WooCommerce read-only integration' (#1) from feat/inventory-first-slice into main
Publish Docs / publish-docs (push) Successful in 51s Details
Reviewed-on: #1
2026-04-04 19:46:27 +00:00
Mike Kell 129a66f0cf feat(kell-web): add runtime environment bootstrap for wordpress mode
Validate Docs / validate-docs (push) Successful in 1m5s Details
2026-04-04 15:23:38 -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 00a667d19e feat(dashboard): compose live summary data across features
Validate Docs / validate-docs (push) Successful in 59s Details
2026-04-04 14:07:21 -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 6b0e16dec6 feat(kell-web): add dashboard page and reusable shell widgets
Validate Docs / validate-docs (push) Successful in 45s Details
2026-04-04 12:51:08 -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