You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .ai-team/agents/beast/history.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,3 +67,6 @@
67
67
-**M9 Planning-Docs Historical Headers (WI-10):** Added `> ⚠️ Historical Snapshot (Pre-Milestone 6)` header to all 54 per-control audit files and SUMMARY.md in `planning-docs/`. Excluded README.md and MILESTONE*-PLAN.md files (still current/active). This prevents future contributors from treating pre-M6 gap data as current.
68
68
-**ChangePassword/Login parity gap:** Login.md documents Orientation and TextLayout with full reference tables and migration examples, but ChangePassword.md has neither. Both controls should have identical coverage for these shared layout properties.
69
69
-**ToolTip universality documented (WI-04):** Added ToolTip to Features Supported in Label.md, TextBox.md, and GridView.md (Button.md already had it). Added "Common Properties on All Styled Controls" section to Migration/readme.md explaining that ToolTip (renders as `title` attribute) is universally available on all BaseStyledComponent-derived controls. Used `!!! tip` admonition and code examples. No dedicated Common Properties page created — kept it inline in the migration guide for minimal footprint.
70
+
71
+
Team update (2026-02-25): ToolTip moved to BaseStyledComponent (28+ controls), ValidationSummary comma-split fixed, SkinID boolstring fixed decided by Cyclops
72
+
Team update (2026-02-25): M9 plan ratified 12 WIs across P0/P1/P2, migration fidelity theme decided by Forge
Copy file name to clipboardExpand all lines: .ai-team/agents/colossus/history.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,3 +40,7 @@ Added 9 smoke tests and 9 interaction tests for M7 sample pages: GridView Select
40
40
## Summary: M9 Integration Test Coverage Audit (WI-11)
41
41
42
42
Audited all sample page `@page` routes against ControlSampleTests.cs and InteractiveComponentTests.cs. Found 105 sample routes total; 100 covered by smoke tests, 57 interaction tests exist. Identified **5 pages without any smoke test**: ListView/CrudOperations (M7 — highest priority), Label, Panel/BackImageUrl, LoginControls/Orientation, and DataGrid/Styles. All other M7 features (GridView Selection/DisplayProperties, TreeView Selection/ExpandCollapse, Menu Selection, FormView Events/Styles, DetailsView Styles/Caption) have full smoke + interaction test coverage. Report written to `.ai-team/decisions/inbox/colossus-m9-test-audit.md`.
43
+
44
+
Team update (2026-02-25): ToolTip moved to BaseStyledComponent (28+ controls), ValidationSummary comma-split fixed, SkinID boolstring fixed decided by Cyclops
45
+
Team update (2026-02-25): M9 plan ratified 12 WIs, migration fidelity decided by Forge
46
+
Team update (2026-02-25): Test coverage audit merged 5 gaps identified, P0: ListView CrudOperations decided by Colossus
Copy file name to clipboardExpand all lines: .ai-team/agents/cyclops/history.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,3 +81,7 @@ Audited 13 controls. Found: AccessKey/ToolTip missing from base class (universal
81
81
-**ValidationSummary comma-split bug fix (WI-05):**`AspNetValidationSummary.razor.cs` used `Split(',')[1]` to extract error messages, which truncated messages containing commas. Fixed to use `IndexOf(',')` + `Substring()` to take everything after the first comma. This is a data corruption bug — any validation message with a comma would silently lose content.
82
82
-**SkinID type fix (WI-07):** Changed `SkinID` property in `BaseWebFormsComponent.cs` from `bool` to `string`. Web Forms SkinID is the name of a skin to apply (a string), not a boolean flag. The `[Obsolete]` attribute was preserved since theming is not available in Blazor.
83
83
-**ToolTip rendering in templates (WI-03):** Audited all `.razor` files inheriting BaseStyledComponent (directly or via DataBoundComponent chain). Added `title="@ToolTip"` to outermost HTML elements on 32 components that were missing it. Components already rendering ToolTip (Button, Calendar, DataList, FileUpload, HyperLink, Image, ImageButton, ImageMap) were left alone. Skipped: ListView and Repeater (no wrapper element), all style sub-components (GridViewRowStyle, CalendarDayStyle, etc.), and GridViewRow/DataGridRow (row sub-components). For multi-layout components (CheckBoxList, RadioButtonList, Panel, CheckBox, RadioButton), added title to every branch's outermost element. For Login controls (Login, ChangePassword, CreateUserWizard), added title to inner `<table>` elements since outer `<EditForm>` is a Blazor component. TextBox uses `CalculatedAttributes` dictionary — added ToolTip there. All 1206 tests pass.
84
+
85
+
Team update (2026-02-25): Doc audit found DetailsView/DataGrid features needing implementation verification decided by Beast
86
+
Team update (2026-02-25): Test audit found 5 missing smoke tests (P0: ListView CrudOperations) decided by Colossus
87
+
Team update (2026-02-25): M9 plan ratified 12 WIs, migration fidelity decided by Forge
- Some pages are partially reachable via in-page `Nav.razor` components, but TreeView Selection/ExpandCollapse and DetailsView Styles/Caption have no nav links at all.
53
53
- DataList has a SubPage name mismatch: catalog says "Flow" but file is `SimpleFlow.razor`.
54
54
- Report written to `.ai-team/decisions/inbox/jubilee-m9-nav-audit.md`.
55
+
56
+
� Team update (2026-02-25): ToolTip moved to BaseStyledComponent (28+ controls) decided by Cyclops
57
+
Team update (2026-02-25): M9 plan ratified 12 WIs, migration fidelity decided by Forge
58
+
Team update (2026-02-25): Nav audit merged 4 missing components + 15 missing SubPages in ComponentCatalog.cs decided by Jubilee
Wrote 24 bUnit tests across 2 files for migration fidelity work:
98
+
99
+
**ToolTipTests.razor (WI-02, 20 tests):** Extended existing file with 20 new tests. 9 controls gained ToolTip from BaseStyledComponent: Label (span title), TextBox (input title via CalculatedAttributes), CheckBox (span title), RadioButton (span title), Panel (div title), Table (table title), DropDownList (select title), ListBox (select title), LinkButton (a title). Each tested with ToolTip present and absent. HyperLink regression test added. All 3 regression controls (Button, Image, HyperLink) confirmed working after base class move.
100
+
101
+
**CommaSplitTests.razor (WI-06, 4 tests):** Validation message format is `Text,ErrorMessage\x1F ValidationGroup`. The comma-split fix uses `IndexOf(',')` + `Substring()` instead of `Split(',')` so commas in ErrorMessage are preserved. Tests: single comma in message, multiple commas, no commas, empty ErrorMessage. All pass.
102
+
103
+
📌 Test pattern: Validation messages are stored as `Text + "," + ErrorMessage + "\x1F" + ValidationGroup` by BaseValidator. AspNetValidationSummary extracts ErrorMessage using first-comma split (IndexOf + Substring). ErrorMessage with commas is preserved correctly. — Rogue
104
+
105
+
📌 Test pattern: ToolTip renders as `title` attribute on the outermost element. TextBox adds it via CalculatedAttributes dictionary (not direct markup). CheckBox/RadioButton render title on the wrapping `<span>` when Text is present, on `<input>` when no Text. Panel renders on `<div>` (no GroupingText) or `<fieldset>` (with GroupingText). — Rogue
106
+
107
+
Team update (2026-02-25): ToolTip moved to BaseStyledComponent (28+ controls), ValidationSummary comma-split fixed, SkinID boolstring fixed decided by Cyclops
108
+
Team update (2026-02-25): M9 plan ratified 12 WIs, migration fidelity decided by Forge
Copy file name to clipboardExpand all lines: .ai-team/decisions.md
+58-7Lines changed: 58 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -449,12 +449,13 @@ Suggested timeline:
449
449
**What:** Going forward, use "milestones" instead of "sprints" for naming work batches. All future planning uses "milestone" terminology.
450
450
**Why:** User preference — captured for team memory. Applies retroactively to planning references where practical.
451
451
452
-
### 2026-02-23: AccessKey and ToolTip must be added to BaseStyledComponent (consolidated)
452
+
### 2026-02-23: AccessKey must be added to BaseStyledComponent
453
453
454
454
**By:** Beast, Cyclops
455
-
**What:**`AccessKey` (string) and `ToolTip` (string) are missing from all styled controls. Both are standard `WebControl`properties present on every control inheriting `WebControl` in Web Forms. Beast's audit of 15 editor controls (L–X) and Cyclops's audit of 13 editor controls (A–I) independently confirmed the gap. 7 of 13 A–I controls add ToolTip individually; the remaining 6 lack it entirely.
456
-
**Recommendation:** Add `[Parameter] public string AccessKey { get; set; }`and `[Parameter] public string ToolTip { get; set; }`to `BaseStyledComponent`. This fixes the gap for all 20+ styled controls in one change.
455
+
**What:**`AccessKey` (string) is missing from all styled controls. Standard `WebControl`property. Beast's audit of 15 editor controls (L–X) and Cyclops's audit of 13 editor controls (A–I) independently confirmed the gap.
456
+
**Recommendation:** Add `[Parameter] public string AccessKey { get; set; }` to `BaseStyledComponent`.
457
457
**Why:** Universal gap confirmed by two independent audits across 28 controls. Base-class fix is the highest-leverage single change available.
458
+
**Status:** AccessKey added in Milestone 6. ToolTip consolidated into 2026-02-25 entry below.
458
459
459
460
### 2026-02-23: Label should inherit BaseStyledComponent
460
461
@@ -539,12 +540,12 @@ Suggested timeline:
539
540
**Recommendation:** Add `Display` parameter to `BaseValidator<T>`.
540
541
**Why:** Migration-blocking for pages using `Display="Static"`.
541
542
542
-
### 2026-02-23: ValidationSummary functional gaps and comma-split bug
543
+
### 2026-02-23: ValidationSummary functional gaps
543
544
544
545
**By:** Rogue
545
-
**What:**`AspNetValidationSummary` is missing `HeaderText`, `ShowMessageBox`, `ShowSummary`, `ShowValidationErrors`, and `ValidationGroup`. Error message parsing uses `x.Split(',')[1]` which silently corrupts messages containing commas.
546
-
**Recommendation:**Fix comma-split bug immediately (data corruption risk). Prioritize `HeaderText` and `ValidationGroup` (common in multi-form pages).
547
-
**Why:** Comma-split is a latent data corruption bug. Missing properties affect multi-form page migration.
546
+
**What:**`AspNetValidationSummary` is missing `HeaderText`, `ShowMessageBox`, `ShowSummary`, `ShowValidationErrors`, and `ValidationGroup`. Prioritize `HeaderText` and `ValidationGroup` (common in multi-form pages).
@@ -1922,3 +1923,53 @@ Removed the `@rendermode InteractiveServer` directive. No other sample page in t
1922
1923
**By:** Forge
1923
1924
**What:** Established three CI/CD patterns: (1) Compute version with nbgv outside Docker build and inject via build-arg, since .dockerignore excludes .git. (2) Gate optional deployment steps on repository secrets with `if: ${{ secrets.SECRET_NAME != '' }}` so workflows don't fail when secrets aren't configured. (3) Dual NuGet publishing always push to GitHub Packages, conditionally push to nuget.org.
1924
1925
**Why:** The .dockerignore excluding .git is a structural constraint that won't change (it's correct for build performance). Secret-gating ensures the workflows work in forks and PRs where secrets aren't available. Dual NuGet publishing gives us private (GitHub) and public (nuget.org) distribution without duplicating the pack step. These patterns should be followed for any future workflow additions.
1926
+
1927
+
### 2026-02-25: Milestone 9 Plan Migration Fidelity & Hardening
**Why:** ToolTip base class fix has highest blast radius (~28 controls). ValidationSummary is data corruption risk. SkinID type mismatch breaks compiled migration code. Full plan at `planning-docs/MILESTONE9-PLAN.md`.
1932
+
1933
+
### 2026-02-25: ToolTip belongs on BaseStyledComponent (consolidated)
**What:**`[Parameter] public string ToolTip { get; set; }` added to `BaseStyledComponent`. Removed 8 duplicate declarations (Button, Calendar, DataList, FileUpload, HyperLink, Image, ImageButton, ImageMap). 32 templates updated with `title="@ToolTip"`. Sub-component types (ChartSeries, DataPoint, MenuItem, TreeNode) keep their own ToolTip (item-level semantics). All 28+ styled controls now inherit ToolTip automatically.
1937
+
**Why:** Web Forms `WebControl.ToolTip` is defined at base class level. Two independent audits (Beast LX, Cyclops AI) confirmed universal gap. Base-class fix is highest-leverage single change.
**What:**`AspNetValidationSummary.ValidationMessages` now uses `IndexOf(',')` + `Substring()` instead of `Split(',')[1]` to extract error messages. The field identifier is always before the first comma; everything after is the message.
1943
+
**Why:** Error messages containing commas were silently truncated data corruption bug. Original audit by Rogue identified the issue; Cyclops implemented the fix.
1944
+
1945
+
### 2026-02-25: SkinID is a string, not a bool
1946
+
1947
+
**By:** Cyclops
1948
+
**What:**`BaseWebFormsComponent.SkinID` type changed from `bool` to `string`. `[Obsolete]` attribute preserved.
1949
+
**Why:** Web Forms `Control.SkinID` is a string containing the skin name. Boolean type breaks any migration code setting `SkinID="MySkin"`.
1950
+
1951
+
### 2026-02-25: Documentation gap audit M6-M8 features (WI-09)
1952
+
1953
+
**By:** Beast
1954
+
**What:** Audited docs against M6-M8 features. Fully documented: GridView, TreeView, Menu, Validators, Login. Gaps found: FormView (ItemCommand, styles, PagerSettings not in Blazor sections), DetailsView (Caption missing, styles/PagerSettings possibly stale), DataGrid (paging status unclear), ChangePassword (Orientation/TextLayout undocumented), PagerSettings (no dedicated doc page).
1955
+
**Why:** Ensures documentation accuracy before 1.0. Gaps prioritized P1-P3.
1956
+
1957
+
### 2026-02-25: Planning-docs marked as historical snapshots (WI-10)
1958
+
1959
+
**By:** Beast
1960
+
**What:** Added historical snapshot headers to all 54 per-control audit files and SUMMARY.md in `planning-docs/`. Excluded README.md and MILESTONE*-PLAN.md (still current).
1961
+
**Why:** Prevents future contributors from treating pre-M6 gap data as current.
1962
+
1963
+
### 2026-02-25: Integration test coverage audit (WI-11)
1964
+
1965
+
**By:** Colossus
1966
+
**What:** 100 of 105 sample page routes covered by smoke tests. 5 gaps: ListView CrudOperations (M7, P0), Label, Panel/BackImageUrl, LoginControls/Orientation, DataGrid/Styles (all pre-M7, P1). 9 of 10 M7 features have full coverage (smoke + interaction). 57 interaction tests exist.
1967
+
**Why:** Read-only audit to identify test coverage gaps before 1.0.
1968
+
1969
+
### 2026-02-25: Sample site navigation audit (WI-12)
1970
+
1971
+
**By:** Jubilee
1972
+
**What:** 4 components missing entirely from ComponentCatalog.cs (Menu, DataBinder, PasswordRecovery, ViewState). 15 SubPages missing across GridView (5), TreeView (2), FormView (3), DetailsView (2), ListView (1), DataGrid (1), Panel (1). DataList "Flow" SubPage name mismatch. All 10 M7/M8 feature pages exist on disk but none linked in sidebar.
1973
+
**Why:** Users cannot discover sample pages that aren't in the sidebar navigation.
0 commit comments