Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .ai-team/agents/beast/history.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,3 +94,29 @@
- Structured for non-technical readers: bottom-line callout, business value lead, tables for data, minimal jargon
- Sections: What is BWFC, Migration Scope, Component Coverage, Three-Layer Pipeline, Time & Cost Impact, Layer 1 Results, Page Readiness, Risk Reduction, What's Next

- **Migration Toolkit (6 priority documents in `/migration-toolkit/`):**
1. **README.md** — Entry point. Prerequisites, three-layer pipeline overview, quick overview (scan→transform→guide→verify), file map, links to existing artifacts, honest "what BWFC doesn't cover" section. 100% net-new.
2. **QUICKSTART.md** — Linear 9-step walkthrough from "I have a Web Forms app" to running Blazor. ~30% extracted from migration skill, ~70% net-new.
3. **CONTROL-COVERAGE.md** — Full 52-component table with complexity ratings (Trivial/Easy/Medium/Complex), key changes, gotchas. Includes unsupported controls (DataSource, Wizard, Web Parts, AJAX Toolkit). ~70% extracted from migration skill, ~30% net-new.
4. **METHODOLOGY.md** — Three-layer pipeline deep-dive with ASCII diagram, layer boundaries, readiness categories, time estimates. ~60% from executive report, ~40% net-new.
5. **CHECKLIST.md** — Copy-paste per-page migration checklist organized by layer. Usage tips for GitHub issues and tracking. 100% net-new.
6. **copilot-instructions-template.md** — Drop-in `.github/copilot-instructions.md` template with condensed rules, expression tables, placeholder sections. ~60% from migration skill, ~40% net-new.
- **Key decisions:** No content duplication — all docs reference scripts/skill/agent by relative path. CONTROL-COVERAGE.md is single source for coverage table in toolkit. copilot-instructions-template.md is self-contained (copied out of repo). Practitioner tone throughout.
- **Sources:** MIGRATION-TOOLKIT-DESIGN.md (blueprint), SKILL.md (rules/tables), WINGTIPTOYS-MIGRATION-EXECUTIVE-REPORT.md (metrics), migration.agent.md (decision frameworks), bwfc-scan.ps1/bwfc-migrate.ps1 (parameter docs).


Team update (2026-03-03): ListView CRUD events ItemCreated now fires per-item, ItemCommand fires for ALL commands before specific handlers decided by Cyclops

Team update (2026-03-03): Migration toolkit pivoted from 9-doc folder to single SKILL.md in Copilot skill format decided by Jeffrey T. Fritz

- **Distributable BWFC Migration Skill (`.github/skills/bwfc-migration/SKILL.md`):**
- Created single distributable Copilot skill file consolidating all migration toolkit content into one self-contained document.
- **Key content decisions vs. internal webforms-migration skill:**
1. **Self-contained and NuGet-first:** No references to internal repo scripts (`bwfc-scan.ps1`, `bwfc-migrate.ps1`), agents, or `.ai-team/` paths. BWFC comes from NuGet, not repo clone. Designed to be dropped into any project's `.github/skills/` folder.
2. **Added three-layer methodology section:** Extracted from executive report — Layer 1 (mechanical, ~40%), Layer 2 (structural, ~45%), Layer 3 (architecture, ~15%) with expected page-readiness breakdown.
3. **Added 10 architecture decision templates (NEW content):** Master Page→Layout, Session→Scoped Services, Identity→Blazor Identity, EF6→EF Core, Global.asax→Program.cs, Web.config→appsettings.json, DataSource→Service Injection, RouteTable→@page, Handlers/Modules→Middleware, Third-Party→HttpClient. Each has before/after code.
4. **Added per-page migration checklist:** Layer-organized checkbox template from Forge's CHECKLIST design.
5. **Expanded component coverage summary:** Added category counts, component list per category, and "What BWFC Does NOT Cover" table (DataSource controls, Wizard, Web Parts, AJAX Toolkit extenders).
6. **Expanded common gotchas:** Added event handler signatures, TextMode casing, ScriptManager no-op guidance.
7. **Removed WingtipToys-specific section:** Not applicable for a distributable skill — that content is project-specific.
- Total: ~750 lines. Preserves ~90% of existing internal skill content, adds ~30% new content from design doc and executive report.
2 changes: 2 additions & 0 deletions .ai-team/agents/colossus/history.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,5 @@ Added 5 smoke tests (Timer, UpdatePanel, UpdateProgress, ScriptManager, Substitu
- The ModelErrorMessage component renders nothing when no errors exist (conditional `@if`), so error-gone assertions use `CountAsync() == 0` rather than visibility checks.
- For the Clear button test, used `WaitForSelectorAsync` with `State.Hidden` to reliably wait for Blazor re-render after clearing the EditContext.
- `PressSequentiallyAsync` + `Tab` pattern used for Blazor Server InputText fields, consistent with established team conventions.

Team update (2026-03-03): ListView CRUD events ItemCreated now fires per-item, ItemCommand fires for ALL commands before specific handlers decided by Cyclops
23 changes: 9 additions & 14 deletions .ai-team/agents/cyclops/history.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,20 +80,7 @@ Team update (2026-02-28): GetCssClassOrNull() uses IsNullOrEmpty not IsNullOrWhi
📌 Team update (2026-03-02): Skins & Themes roadmap — 3 waves, 15 WIs — decided by Forge
📌 Team updates (2026-03-02): M22 planned (Forge), project reframed as migration system (Jeff), FormView RenderOuterTable resolved (Cyclops), ModelErrorMessage 29/29 coverage (Forge), WingtipToys pipeline validated — 28/29 controls covered.
📌 Team update (2026-03-03): WingtipToys CSS fidelity — 7 visual differences identified requiring fixes (Cerulean theme, 4-column grid, BoundField bug, Trucks category, Site.css, category IDs) — decided by Forge
<!-- Summarized 2026-03-02 by Scribe -- covers M20 theming + release process -->

### M20 Theming & Release Process Summary (2026-03-01 through 2026-03-02)

**Issue #366 theme wiring:** Moved CascadingParameter ThemeConfiguration to BaseWebFormsComponent (named CascadedTheme to avoid Blazor duplicate-parameter error from _Imports.razor). ApplySkin renamed to ApplyThemeSkin (virtual override chain). ThemeProvider got @inherits ComponentBase to exclude from BaseWebFormsComponent inheritance. WebFormsPage cascades Theme ?? CascadedTheme. Lesson: _Imports.razor @inherits affects ALL .razor files including infrastructure components.

**FontInfo auto-sync:** Name and Names converted to backing-field properties with bidirectional sync (setting Name updates Names and vice versa). ApplyThemeSkin guard checks both Font.Name AND Font.Names before applying theme font. Root cause: ApplyThemeSkin set Font.Name but ToStyle() reads Font.Names. Lesson: paired/synced Web Forms properties must replicate sync behavior.

**Unified release.yml:** Single workflow on release:published coordinates NuGet + Docker + GHCR + docs + demos. Version from tag_name stripping v prefix. NuGet override: -p:PackageVersion + -p:Version. version.json changed to 3-segment SemVer (0.17.0). deploy-server-side.yml and nuget.yml refactored to workflow_dispatch-only. docs.yml fixed deprecated ::set-output. NBGV ignores git tags -- reads version.json only.

Team updates: Unified release process (PR #408), Skins & Themes roadmap (3 waves, 15 WIs).


Team update (2026-03-02): Full Skins & Themes roadmap defined 3 waves, 15 work items. Wave 1: Theme mode, sub-component styles (41 slots across 6 controls), EnableTheming propagation, runtime switching. See decisions.md for full roadmap and agent assignments decided by Forge
<!-- Note: M20 Theming & Release Process summary (2026-03-02) removed — superseded by M20 Theming, Release & WingtipToys Context above -->
### Issue #406 — ListView EditItemTemplate Not Rendering (2026-03-02)

- **Bug:** Clicking Edit in a ListView with EditItemTemplate fired the ItemEditing event and set EditIndex correctly, but the ListView did not visually swap from ItemTemplate to EditItemTemplate.
Expand Down Expand Up @@ -125,3 +112,11 @@ Team updates: Unified release process (PR #408), Skins & Themes roadmap (3 waves

Team update (2026-03-02): ModelErrorMessage component spec consolidated 29/29 WingtipToys coverage, BaseStyledComponent, EditContext pattern decided by Forge

### ListView CRUD Events — Correctness Fixes (2026-03-03)

- **Issue #356 audit:** All 16 CRUD events were already declared (EventCallback parameters + EventArgs classes + HandleCommand routing) from M7 and M21. The issue was open because the work was done incrementally across milestones.
- **Bug 1 — ItemCreated firing wrong:** Was `EventCallback` (no type param) firing once in `OnAfterRenderAsync(firstRender)`. Web Forms fires `ItemCreated` with `ListViewItemEventArgs` per-item during data binding, BEFORE `ItemDataBound`. Fixed: changed to `EventCallback<ListViewItemEventArgs>`, added `RaiseItemCreated()` helper, wired per-item in both non-grouped and grouped rendering paths in ListView.razor.
- **Bug 2 — ItemCommand not firing for known commands:** Was only firing for unknown commands (in `default` case of switch). Web Forms fires `ItemCommand` for ALL commands first, then routes to the specific handler (ItemEditing, ItemDeleting, etc.). Fixed: moved `ItemCommand.InvokeAsync()` before the switch statement.
- **Pattern:** Web Forms event order for commands is: ItemCommand → specific event (ItemEditing/ItemDeleting/etc.). ItemCreated fires per-item before ItemDataBound. These are documented Web Forms lifecycle behaviors that must be matched.
- **EventArgs completeness:** Web Forms EventArgs have IOrderedDictionary properties (Keys, Values, NewValues, OldValues) tied to the DataSource control paradigm. These are deliberately omitted since Blazor has no DataSource controls — consumers work directly with typed objects via templates.

26 changes: 26 additions & 0 deletions .ai-team/agents/forge/history.md
Original file line number Diff line number Diff line change
Expand Up @@ -230,3 +230,29 @@ Jeff's initial catalog listed RequiredFieldValidator, RegularExpressionValidator

� Team update (2026-03-02): ModelErrorMessage documentation shipped docs/ValidationControls/ModelErrorMessage.md, status.md updated to 52 components decided by Beast

### Summary: Migration Toolkit Package Design (2026-03-03)

**By:** Forge
**What:** Designed the structure and content inventory for a portable migration toolkit package at `/migration-toolkit/`. 9 documents total. Analyzed all existing skills, scripts, agents, and the executive report to determine what can be extracted vs. what's net-new.

**Key decisions:**
- Toolkit lives at `/migration-toolkit/` (top-level, not in docs/ or .github/) because migration is the primary product per Jeff's reframing
- Toolkit REFERENCES existing artifacts (scripts, skills, agent) by relative path — no duplication
- 5 documents are primarily extraction/adaptation from existing content; 4 are primarily net-new
- Highest-value deliverable is `copilot-instructions-template.md` — a drop-in template developers copy into their own project to give Copilot migration context
- `CHECKLIST.md` is fully net-new — no existing per-page migration checklist exists

**Existing content reusable:**
- `.github/skills/webforms-migration/SKILL.md` — the core Layer 2 skill, heavily referenced by QUICKSTART, CONTROL-COVERAGE, and copilot-instructions-template
- `.github/agents/migration.agent.md` — Layer 3 decision frameworks, extracted into ARCHITECTURE-GUIDE
- `planning-docs/WINGTIPTOYS-MIGRATION-EXECUTIVE-REPORT.md` — metrics, timelines, screenshots for METHODOLOGY and CASE-STUDY
- `scripts/bwfc-scan.ps1` and `scripts/bwfc-migrate.ps1` — referenced as-is, not modified
- Forge's own history entries on WingtipToys analysis, CSS fidelity audit, and ASPX tooling strategy — lessons learned for CASE-STUDY and FAQ

**Net-new content needed:**
- README.md (entry point), QUICKSTART.md (step-by-step), CHECKLIST.md (per-page template), copilot-instructions-template.md (Copilot handoff with project-specific placeholders)

**Design doc:** `planning-docs/MIGRATION-TOOLKIT-DESIGN.md`


Team update (2026-03-03): Migration toolkit pivoted from 9-doc folder to single SKILL.md in Copilot skill format decided by Jeffrey T. Fritz
11 changes: 11 additions & 0 deletions .ai-team/decisions.md
Original file line number Diff line number Diff line change
Expand Up @@ -5494,3 +5494,14 @@ Nothing is rendered (the component returns `null` / empty fragment). This matche
**Date:** 2026-03-02
**What:** Side-by-side comparison found 7 CSS/visual differences: (1) Wrong Bootstrap theme stock BS3 instead of Bootswatch Cerulean, (2) Single-column product grid instead of 4-column, (3) Missing Trucks category, (4) Site.css not referenced, (5) BoundField DataFormatString bug premature .ToString() loses numeric formatting, (6) bootstrap-theme.min.css adding unwanted gradients, (7) Cart prices missing dollar sign (symptom of #5). Fixes: replace CDN with local Cerulean CSS, add GroupItemCount/templates to ListView, add Trucks category, fix BoundField.razor.cs line 48.
**Why:** Migration showcase screenshots must visually match the original. The BoundField bug is a library-level defect affecting all DataFormatString consumers.

### 2026-03-03: ListView CRUD events — correctness fixes for ItemCreated and ItemCommand

**By:** Cyclops
**What:** Fixed two Web Forms lifecycle deviations in ListView: (1) `ItemCreated` changed from `EventCallback` firing once on first render to `EventCallback<ListViewItemEventArgs>` firing per-item before `ItemDataBound` in both grouped and non-grouped paths; (2) `ItemCommand` now fires for ALL commands before routing to specific handlers (Edit, Delete, Update, etc.), not just for unknown commands.
**Why:** Web Forms fires `ItemCommand` first for every command, then the specific event. `ItemCreated` fires per-item during data binding. These are documented lifecycle behaviors that migration code depends on. The IOrderedDictionary properties (Keys, Values, NewValues, OldValues) from Web Forms EventArgs are deliberately omitted — they're tied to the DataSource control paradigm that doesn't exist in Blazor.

### 2026-03-03: Migration toolkit delivery format (consolidated)
**By:** Forge, Jeffrey T. Fritz
**What:** Forge designed a migration toolkit package with 9 documents in \/migration-toolkit/\ (README, QUICKSTART, METHODOLOGY, ARCHITECTURE-GUIDE, CONTROL-COVERAGE, CASE-STUDY, FAQ, CHECKLIST, copilot-instructions-template) referencing existing scripts, Copilot skill, and migration agent. Full design: \planning-docs/MIGRATION-TOOLKIT-DESIGN.md\. Jeff then directed a pivot: instead of 9 separate docs, deliver a single SKILL.md in GitHub Copilot skill format containing migration instructions plus links to the BWFC NuGet package.
**Why:** The component library, scripts, skills, and agent exist but lack a unified entry point for developers. Forge's design addressed this with a comprehensive document set. Jeff refined the delivery format to a single portable skill file, which is directly consumable by Copilot instances simpler distribution, same content goals.
35 changes: 35 additions & 0 deletions .ai-team/decisions/inbox/beast-bwfc-migration-skill.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Decision: Distributable BWFC Migration Skill

**By:** Beast (Technical Writer)
**Date:** 2026-03-03
**Context:** Jeff pivoted from 9-doc migration toolkit to single Copilot skill file

## What

Created `.github/skills/bwfc-migration/SKILL.md` — a distributable GitHub Copilot skill file designed to be copied into any project's `.github/skills/` folder to teach Copilot how to migrate that project from Web Forms to Blazor using BWFC.

This is DIFFERENT from `.github/skills/webforms-migration/SKILL.md` (internal project skill). The new skill is external-facing and self-contained.

## Key Design Decisions

1. **Single file, not 9 documents.** Jeff explicitly changed direction: "I'd rather this deliver a skill then instructions for the AI agent." All toolkit content consolidated into one SKILL.md with GitHub Copilot skill frontmatter format.

2. **Self-contained / NuGet-first.** Zero references to internal repo paths (`scripts/bwfc-scan.ps1`, `.ai-team/`, `planning-docs/`). BWFC is installed from NuGet (`dotnet add package Fritz.BlazorWebFormsComponents`). The file works when dropped into any project.

3. **Copilot-optimized, not human-optimized.** Tables over prose. Exact code transforms. Literal before/after examples. Written for a Copilot instance that reads instructions literally.

4. **Preserves existing internal skill.** The `webforms-migration/SKILL.md` remains unchanged for internal project use (e.g., WingtipToys migration). The new `bwfc-migration/SKILL.md` is the external-facing version.

5. **Architecture decision templates are new content.** The 10 decision templates (Session→DI, Identity→Blazor Identity, EF6→EF Core, etc.) were synthesized from Forge's ARCHITECTURE-GUIDE design and the migration agent. This is the biggest content addition vs. the internal skill.

6. **Honest about limitations.** Explicitly lists what BWFC does NOT cover: DataSource controls, Wizard, Web Parts, AJAX Toolkit extenders. Provides recommended alternatives for each.

## Why

Jeff reframed the project deliverable: the final product is a migration acceleration system, and the Copilot skill is the primary user-facing interface. A single skill file is more portable, discoverable, and Copilot-native than a folder of markdown documents.

## Impact on Other Agents

- **Forge/Cyclops:** If BWFC components are added/removed or APIs change, the `bwfc-migration` skill needs updating (control translation table, component coverage summary).
- **All:** The `migration-toolkit/` folder documents (README, QUICKSTART, etc.) still exist but are now secondary artifacts. The skill is the primary deliverable.
- **Jubilee:** No sample page changes needed.
33 changes: 33 additions & 0 deletions .ai-team/decisions/inbox/beast-migration-toolkit-content.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Decision: Migration Toolkit Content Structure

**By:** Beast (Technical Writer)
**Date:** 2026-03-03
**Context:** Migration toolkit authoring per Forge's MIGRATION-TOOLKIT-DESIGN.md

## What

Created 6 priority documents in `/migration-toolkit/` following Forge's design:
1. README.md (entry point)
2. QUICKSTART.md (step-by-step)
3. CONTROL-COVERAGE.md (52-component table)
4. METHODOLOGY.md (three-layer pipeline)
5. CHECKLIST.md (per-page template)
6. copilot-instructions-template.md (drop-in Copilot config)

## Key Content Decisions

1. **copilot-instructions-template.md is self-contained** — unlike other toolkit docs that use relative links to scripts/skill/agent, this template includes condensed migration rules inline. Reason: developers copy this file into their own project where BWFC relative paths don't exist. It must work standalone.

2. **CONTROL-COVERAGE.md is the single coverage table** — other toolkit docs link to it rather than duplicating the 52-component table. This follows Forge's "no duplication" directive.

3. **Remaining 3 documents deferred** — ARCHITECTURE-GUIDE.md, FAQ.md, and CASE-STUDY.md from the design are not yet written. They are lower priority per Forge's priority ordering. Can be authored in a follow-up.

## Why

Jeff reframed the project as a "migration acceleration system." The toolkit is the user-facing product documentation for that system. These 6 docs cover the critical path from discovery to execution.

## Impact on Other Agents

- **Cyclops/Forge:** If scripts (`bwfc-scan.ps1`, `bwfc-migrate.ps1`) or skill (`SKILL.md`) change parameters or behavior, toolkit docs may need updates (especially QUICKSTART.md and copilot-instructions-template.md).
- **Jubilee:** The QUICKSTART references `samples/AfterWingtipToys/` as reference implementation.
- **All:** Three remaining docs (ARCHITECTURE-GUIDE.md, FAQ.md, CASE-STUDY.md) can be authored when prioritized.
19 changes: 19 additions & 0 deletions .ai-team/log/2026-03-03-listview-crud-and-toolkit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Session: 2026-03-03 — ListView CRUD & Migration Toolkit

**Requested by:** Jeffrey T. Fritz
**Branch:** squad/listview-crud-and-toolkit

## What happened

- **PR #414** (WingtipToys features) merged to dev.
- **Cyclops** fixed 2 ListView CRUD event bugs:
- `ItemCreated` changed from single-fire `EventCallback` to per-item `EventCallback<ListViewItemEventArgs>`, firing before `ItemDataBound` in both grouped and non-grouped paths.
- `ItemCommand` now fires for ALL commands before routing to specific handlers (Edit, Delete, Update, etc.), matching Web Forms lifecycle.
- 43 tests pass.
- **Forge** designed migration toolkit package structure (9 documents in `/migration-toolkit/`). Full design: `planning-docs/MIGRATION-TOOLKIT-DESIGN.md`.
- **Beast** writing toolkit content (6 priority documents).

## Decisions

- ListView CRUD event correctness fixes (Cyclops) — see decisions.md
- Migration toolkit package design (Forge) — see decisions.md
Loading
Loading