Skip to content

Commit 0ea3507

Browse files
csharpfritzCopilot
andcommitted
docs: fix component count and internal references in toolkit
- Updated component count from 52 to 58 across 6 categories (not 7) - Added Chart, ImageMap, and Substitution to Editor Controls coverage table - Replaced all internal repo references (../.github/skills/, ../.github/agents/) with distributed toolkit paths (skills/bwfc-migration/, skills/bwfc-data-migration/) - Fixed wrong org name (AzimoLabs -> FritzAndFriends) in URLs - Toolkit docs now accurate for external distribution Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 2c57ec1 commit 0ea3507

7 files changed

Lines changed: 32 additions & 29 deletions

File tree

migration-toolkit/CONTROL-COVERAGE.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# Control Coverage Reference
22

3-
**Can I migrate this control?** This is the complete reference for all 52 BWFC components and the Web Forms controls that are *not* covered.
3+
**Can I migrate this control?** This is the complete reference for all 58 BWFC components and the Web Forms controls that are *not* covered.
44

5-
For the full control translation rules (attribute mappings, code examples, before/after), see the [Copilot migration skill](../.github/skills/webforms-migration/SKILL.md).
5+
For the full control translation rules (attribute mappings, code examples, before/after), see the [Copilot migration skill](skills/bwfc-migration/SKILL.md).
66

77
---
88

99
## Coverage Summary
1010

1111
| Metric | Value |
1212
|---|---|
13-
| BWFC components available | **52** |
14-
| Web Forms control categories covered | **7** (Editor, Data, Validation, Navigation, Login, AJAX, Migration Helper) |
13+
| BWFC components available | **58** |
14+
| Web Forms control categories covered | **6** (Editor, Data, Validation, Navigation, Login, AJAX) |
1515
| WingtipToys PoC coverage | **96.6%** (28 of 29 control types used) |
1616
| Controls with no BWFC equivalent | See [Not Supported](#controls-not-supported-by-bwfc) |
1717

@@ -28,14 +28,15 @@ For the full control translation rules (attribute mappings, code examples, befor
2828

2929
---
3030

31-
## Editor Controls (25 components)
31+
## Editor Controls (28 components)
3232

3333
| Control | BWFC? | Complexity | Key Changes | Gotchas |
3434
|---|---|---|---|---|
3535
| **AdRotator** || Easy | Remove `asp:`, `runat` | Configure ad data via component properties |
3636
| **BulletedList** || Easy | Remove `asp:`, `runat`; bind `Items` | `DisplayMode` and `BulletStyle` preserved |
3737
| **Button** || Trivial | Remove `asp:`, `runat` | `OnClick` is now `EventCallback` — no `(sender, e)` signature |
3838
| **Calendar** || Easy | Remove `asp:`, `runat` | `SelectionMode` is an enum — use `CalendarSelectionMode.Day` |
39+
| **Chart** || Complex | Remove `asp:`, `runat` | JS interop for rendering; use `<ChartSeries>`, `<ChartArea>`, `<ChartLegend>` children |
3940
| **CheckBox** || Easy | Remove `asp:`, `runat`; add `@bind-Checked` | Two-way binding requires `@bind-Checked` |
4041
| **CheckBoxList** || Easy | Remove `asp:`, `runat`; bind `Items` | Same list binding pattern as DropDownList |
4142
| **DropDownList** || Easy | Remove `asp:`, `runat`; bind `Items` + `@bind-SelectedValue` | Bind both the items collection and selected value |
@@ -44,6 +45,7 @@ For the full control translation rules (attribute mappings, code examples, befor
4445
| **HyperLink** || Trivial | Remove `asp:`, `runat`; `~/``/` | URL prefix conversion is Layer 1 automated |
4546
| **Image** || Trivial | Remove `asp:`, `runat`; `~/``/` | `ImageUrl` preserved |
4647
| **ImageButton** || Trivial | Remove `asp:`, `runat`; `~/``/` | `OnClick` is `EventCallback` |
48+
| **ImageMap** || Easy | Remove `asp:`, `runat` | Define hotspot regions via component properties |
4749
| **Label** || Trivial | Remove `asp:`, `runat` | `Text`, `CssClass`, `AssociatedControlID` preserved |
4850
| **LinkButton** || Trivial | Remove `asp:`, `runat` | `CommandName`/`CommandArgument` preserved |
4951
| **ListBox** || Easy | Remove `asp:`, `runat`; bind `Items` | Same binding pattern as DropDownList |
@@ -54,6 +56,7 @@ For the full control translation rules (attribute mappings, code examples, befor
5456
| **PlaceHolder** || Trivial | Remove `asp:`, `runat` | Renders no HTML — structural container only |
5557
| **RadioButton** || Easy | Remove `asp:`, `runat` | `GroupName` preserved |
5658
| **RadioButtonList** || Easy | Remove `asp:`, `runat`; bind `Items` | Same list binding pattern |
59+
| **Substitution** || Easy | Remove `asp:`, `runat` | Uses `Func<HttpContext, string>` callback; renders output directly |
5760
| **Table** || Easy | Remove `asp:`, `runat` | Use with `<TableRow>` and `<TableCell>` children |
5861
| **TextBox** || Easy | Remove `asp:`, `runat`; add `@bind-Text` | `TextMode` preserved — note `Multiline` (not `MultiLine`) |
5962
| **View** || Trivial | Remove `asp:`, `runat` | Used inside `MultiView` |
@@ -203,7 +206,7 @@ These Web Forms controls have **no BWFC equivalent**. Each requires a different
203206
## Coverage by Category — Visual Summary
204207

205208
```
206-
Editor Controls (25) ████████████████████████████████████████ 100% covered
209+
Editor Controls (28) ████████████████████████████████████████ 100% covered
207210
Data Controls (8) ████████████████████████████████████████ 100% covered
208211
Validation Controls (7) ████████████████████████████████████████ 100% covered
209212
Navigation Controls (3) ████████████████████████████████████████ 100% covered
@@ -221,4 +224,4 @@ DataSource controls are deliberately not covered. They represent a Web Forms-spe
221224
- [QUICKSTART.md](QUICKSTART.md) — step-by-step migration guide
222225
- [METHODOLOGY.md](METHODOLOGY.md) — why these complexity ratings matter
223226
- [copilot-instructions-template.md](copilot-instructions-template.md) — condensed rules for Copilot
224-
- [Full migration skill](../.github/skills/webforms-migration/SKILL.md) — complete attribute mappings and code examples
227+
- [Full migration skill](skills/bwfc-migration/SKILL.md) — complete attribute mappings and code examples

migration-toolkit/METHODOLOGY.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
│ Layer 1 │ │ Layer 2 │ │ Layer 3 │
1212
│ AUTOMATED │───▶│ COPILOT-ASSISTED │───▶│ ARCHITECTURE │
1313
│ │ │ │ │ │
14-
│ bwfc-migrate.ps1 │ │ Copilot + Skill │ │ Human + Agent
14+
│ bwfc-migrate.ps1 │ │ Copilot + Skill │ │ Human + Copilot
1515
│ ~40% of work │ │ ~45% of work │ │ ~15% of work │
1616
│ ~30 seconds │ │ ~2–4 hours │ │ ~8–12 hours │
1717
│ 100% accuracy │ │ High accuracy │ │ Requires judgment │
@@ -27,7 +27,7 @@ Each layer handles a different *kind* of work, not just a different *amount*. Th
2727
|---|---|---|---|
2828
| Layer 1 | None — pure regex/pattern matching | PowerShell script | ~0% (deterministic) |
2929
| Layer 2 | Pattern recognition — knows BWFC control mappings | Copilot with migration skill | Low (guided by rules) |
30-
| Layer 3 | Judgment — understands your app's architecture | Human + migration agent | Varies (depends on decisions) |
30+
| Layer 3 | Judgment — understands your app's architecture | Human + Copilot with data migration skill | Varies (depends on decisions) |
3131

3232
---
3333

@@ -98,7 +98,7 @@ After Layer 1, pages fall into three readiness categories:
9898

9999
## Layer 2: Copilot-Assisted Structural Transforms
100100

101-
**Tool:** [Copilot migration skill](../.github/skills/webforms-migration/SKILL.md)
101+
**Tool:** [Copilot migration skill](skills/bwfc-migration/SKILL.md)
102102

103103
Layer 2 handles transforms that follow consistent patterns but require understanding control semantics. A human *could* do these mechanically, but it's tedious and error-prone. Copilot with the BWFC migration skill handles them reliably.
104104

@@ -126,7 +126,7 @@ Layer 2 handles transforms that follow consistent patterns but require understan
126126
Or, if using Copilot Chat directly, reference the skill file:
127127

128128
```
129-
@workspace Use the rules in .github/skills/webforms-migration/SKILL.md to complete
129+
@workspace Use the rules in .github/skills/bwfc-migration/SKILL.md to complete
130130
the migration of this file. Look for TODO comments and unresolved patterns.
131131
```
132132

@@ -143,9 +143,9 @@ Always review Copilot's changes before committing.
143143

144144
## Layer 3: Architecture Decisions
145145

146-
**Tool:** [Migration agent](../.github/agents/migration.agent.md) + your own judgment
146+
**Tool:** [Data migration skill](skills/bwfc-data-migration/SKILL.md) + your own judgment
147147

148-
Layer 3 is the ~15% of migration work that requires understanding your application's architecture. No script or AI can make these decisions for you — but the migration agent can guide you through the options and trade-offs.
148+
Layer 3 is the ~15% of migration work that requires understanding your application's architecture. No script or AI can make these decisions for you — but the data migration skill and Copilot can guide you through the options and trade-offs.
149149

150150
### Common Layer 3 Decisions
151151

@@ -159,16 +159,16 @@ Layer 3 is the ~15% of migration work that requires understanding your applicati
159159
| **HTTP handlers** | `IHttpHandler`, `IHttpModule` | ASP.NET Core middleware |
160160
| **Third-party APIs** | Direct `WebRequest`/`WebClient` calls | `HttpClient` via DI with `IHttpClientFactory` |
161161

162-
### Using the Migration Agent
162+
### Using the Data Migration Skill
163163

164-
The migration agent is designed for interactive sessions. Point it at your scan report and your partially-migrated files:
164+
The data migration skill is designed for interactive Copilot sessions. Point Copilot at your scan report and your partially-migrated files:
165165

166166
1. Share the `bwfc-scan.ps1` output
167167
2. Share the `bwfc-migrate.ps1` output directory
168-
3. The agent identifies remaining `TODO` markers and decision points
168+
3. Copilot identifies remaining `TODO` markers and decision points
169169
4. Walk through each decision interactively
170170

171-
The agent provides decision frameworks for common patterns — see its [full documentation](../.github/agents/migration.agent.md).
171+
The skill provides decision frameworks for common architecture patterns — see the [full skill reference](skills/bwfc-data-migration/SKILL.md).
172172

173173
---
174174

migration-toolkit/QUICKSTART.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ Then open `.github/copilot-instructions.md` and fill in the `<!-- FILL IN -->` s
114114

115115
Alternatively, point Copilot at the BWFC migration skill directly:
116116

117-
> 📄 Skill file: [`.github/skills/webforms-migration/SKILL.md`](../.github/skills/webforms-migration/SKILL.md)
117+
> 📄 Skill file: [`skills/bwfc-migration/SKILL.md`](skills/bwfc-migration/SKILL.md)
118118
119119
---
120120

@@ -148,7 +148,7 @@ These are the decisions that need a human (or a human + the migration agent):
148148
- **Global.asax → Program.cs:** Convert lifecycle hooks to middleware
149149
- **Third-party integrations:** Port to `HttpClient` pattern
150150

151-
> 📄 For interactive guidance, use the [Migration Agent](../.github/agents/migration.agent.md)
151+
> 📄 For interactive guidance, use the [Data Migration Skill](skills/bwfc-data-migration/SKILL.md)
152152
153153
---
154154

migration-toolkit/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ Migration isn't one step — it's three layers that handle different kinds of wo
8989
|---|---|
9090
| [**README.md**](README.md) | You are here — overview and entry point |
9191
| [**QUICKSTART.md**](QUICKSTART.md) | Step-by-step: scan → migrate → verify |
92-
| [**CONTROL-COVERAGE.md**](CONTROL-COVERAGE.md) | Full 52-component coverage table with complexity ratings |
92+
| [**CONTROL-COVERAGE.md**](CONTROL-COVERAGE.md) | Full 58-component coverage table with complexity ratings |
9393
| [**METHODOLOGY.md**](METHODOLOGY.md) | Three-layer pipeline deep-dive |
9494
| [**CHECKLIST.md**](CHECKLIST.md) | Per-page migration checklist template |
9595
| [**copilot-instructions-template.md**](copilot-instructions-template.md) | Drop-in `.github/copilot-instructions.md` for your project |
@@ -98,7 +98,7 @@ Migration isn't one step — it's three layers that handle different kinds of wo
9898

9999
## What BWFC Doesn't Cover
100100

101-
Be honest with yourself about scope. BWFC provides 52 drop-in components, but it does **not** cover:
101+
Be honest with yourself about scope. BWFC provides 58 drop-in components, but it does **not** cover:
102102

103103
- **DataSource controls**`SqlDataSource`, `ObjectDataSource`, `EntityDataSource` have no Blazor equivalents. Replace with injected services.
104104
- **Wizard control** — No BWFC equivalent. Implement as a multi-step Blazor component.

migration-toolkit/copilot-instructions-template.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
the correct transformation rules automatically.
1414
1515
Source: BlazorWebFormsComponents migration toolkit
16-
Full skill reference: https://github.com/AzimoLabs/BlazorWebFormsComponents/blob/dev/.github/skills/webforms-migration/SKILL.md
16+
Full skill reference: https://github.com/FritzAndFriends/BlazorWebFormsComponents/blob/dev/migration-toolkit/skills/bwfc-migration/SKILL.md
1717
-->
1818

1919
## Your Application Context
@@ -208,6 +208,6 @@ When Copilot encounters these attributes during migration, remove them without c
208208

209209
## References
210210

211-
- [BWFC Migration Skill (full rules)](https://github.com/AzimoLabs/BlazorWebFormsComponents/blob/dev/.github/skills/webforms-migration/SKILL.md)
212-
- [BWFC Control Coverage](https://github.com/AzimoLabs/BlazorWebFormsComponents/blob/dev/migration-toolkit/CONTROL-COVERAGE.md)
213-
- [BWFC Migration Toolkit](https://github.com/AzimoLabs/BlazorWebFormsComponents/blob/dev/migration-toolkit/README.md)
211+
- [BWFC Migration Skill (full rules)](https://github.com/FritzAndFriends/BlazorWebFormsComponents/blob/dev/migration-toolkit/skills/bwfc-migration/SKILL.md)
212+
- [BWFC Control Coverage](https://github.com/FritzAndFriends/BlazorWebFormsComponents/blob/dev/migration-toolkit/CONTROL-COVERAGE.md)
213+
- [BWFC Migration Toolkit](https://github.com/FritzAndFriends/BlazorWebFormsComponents/blob/dev/migration-toolkit/README.md)

migration-toolkit/scripts/bwfc-scan.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
3737
.NOTES
3838
Part of the BlazorWebFormsComponents project.
39-
https://github.com/AzimoLabs/BlazorWebFormsComponents
39+
https://github.com/FritzAndFriends/BlazorWebFormsComponents
4040
#>
4141

4242
[CmdletBinding()]

migration-toolkit/skills/bwfc-migration/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ BlazorWebFormsComponents is an open-source library that provides **drop-in Blazo
1717

1818
- **NuGet Package:** <https://www.nuget.org/packages/Fritz.BlazorWebFormsComponents>
1919
- **GitHub Repository:** <https://github.com/FritzAndFriends/BlazorWebFormsComponents>
20-
- **52 components** across 7 categories
20+
- **58 components** across 6 categories
2121
- **Same HTML output** — existing CSS and JavaScript continue to work
2222

2323
> **Core Principle:** Strip `asp:` and `runat="server"`, keep everything else, and it just works.
@@ -539,11 +539,11 @@ Include during migration to prevent errors, remove when stable.
539539

540540
## Component Coverage Summary
541541

542-
**52 components** across 7 categories:
542+
**58 components** across 6 categories:
543543

544544
| Category | Count | Components |
545545
|----------|-------|-----------|
546-
| **Editor Controls** | 25 | AdRotator, BulletedList, Button, Calendar, CheckBox, CheckBoxList, DropDownList, FileUpload, HiddenField, HyperLink, Image, ImageButton, Label, LinkButton, ListBox, Literal, Localize, MultiView, Panel, PlaceHolder, RadioButton, RadioButtonList, Table, TextBox, View |
546+
| **Editor Controls** | 28 | AdRotator, BulletedList, Button, Calendar, Chart, CheckBox, CheckBoxList, DropDownList, FileUpload, HiddenField, HyperLink, Image, ImageButton, ImageMap, Label, LinkButton, ListBox, Literal, Localize, MultiView, Panel, PlaceHolder, RadioButton, RadioButtonList, Substitution, Table, TextBox, View |
547547
| **Data Controls** | 8 | DataGrid, DataList, DataPager, DetailsView, FormView, GridView, ListView, Repeater |
548548
| **Validation** | 7 | CompareValidator, CustomValidator, ModelErrorMessage, RangeValidator, RegularExpressionValidator, RequiredFieldValidator, ValidationSummary |
549549
| **Navigation** | 3 | Menu, SiteMapPath, TreeView |

0 commit comments

Comments
 (0)