Follow-up from PR #340 Aragorn gate. Copilot review surfaced minor UX/polish items that did not block merge but should be addressed:
UI semantics (Legolas)
src/Web/Features/BlogPosts/Create/Create.razor (~L46, L114) and src/Web/Features/BlogPosts/Edit/Edit.razor (~L74, L117): The Category field shows a required asterisk and the submit guard blocks any save (including draft) whenever categories exist, but the helper copy says categories are needed before publishing. Either:
- Make CategoryId required only when
IsPublished == true, or
- Update the copy + asterisk so the requirement is unconditional.
Create.razor / Edit.razor: If GetCategoriesQuery fails, _categories stays empty silently and posts can be saved with CategoryId = null despite the UI marking it required. Surface load failures via _error and/or block submit until categories load.
src/Web/Features/Categories/List/Index.razor (~L138): LoadAsync does not clear _error on success and does not reset _categories on failure; can leave stale UI state. Clear _error on success and set _categories = [] on failure.
Naming / docs (low priority)
tests/Web.Tests/Features/Categories/Commands/UpdateCategoryCommandValidatorTests.cs actually tests EditCategoryCommandValidator — rename file/class/namespace to Edit* for consistency.
src/AppHost/MongoDbResourceBuilderExtensions.cs (~L292): seed log says "inserted" but is now an upsert; change wording to "upserted" / "inserted/updated".
.squad/skills/gh-pr-comments-fallback/SKILL.md (~L15, L36): grammar — "due to" not "due".
.squad/agents/legolas/history.md (~L946): placeholder date 2025-07-XX; correct to actual date.
Source
PR #340 Copilot automated review — full thread on the PR.
Suggested routing
- UI items → Legolas
- Test rename → Gimli
- AppHost log wording → Sam
.squad/ doc/grammar fixes → Frodo
Follow-up from PR #340 Aragorn gate. Copilot review surfaced minor UX/polish items that did not block merge but should be addressed:
UI semantics (Legolas)
src/Web/Features/BlogPosts/Create/Create.razor(~L46, L114) andsrc/Web/Features/BlogPosts/Edit/Edit.razor(~L74, L117): The Category field shows a required asterisk and the submit guard blocks any save (including draft) whenever categories exist, but the helper copy says categories are needed before publishing. Either:IsPublished == true, orCreate.razor/Edit.razor: IfGetCategoriesQueryfails,_categoriesstays empty silently and posts can be saved withCategoryId = nulldespite the UI marking it required. Surface load failures via_errorand/or block submit until categories load.src/Web/Features/Categories/List/Index.razor(~L138):LoadAsyncdoes not clear_erroron success and does not reset_categorieson failure; can leave stale UI state. Clear_erroron success and set_categories = []on failure.Naming / docs (low priority)
tests/Web.Tests/Features/Categories/Commands/UpdateCategoryCommandValidatorTests.csactually testsEditCategoryCommandValidator— rename file/class/namespace toEdit*for consistency.src/AppHost/MongoDbResourceBuilderExtensions.cs(~L292): seed log says "inserted" but is now an upsert; change wording to "upserted" / "inserted/updated"..squad/skills/gh-pr-comments-fallback/SKILL.md(~L15, L36): grammar — "due to" not "due"..squad/agents/legolas/history.md(~L946): placeholder date2025-07-XX; correct to actual date.Source
PR #340 Copilot automated review — full thread on the PR.
Suggested routing
.squad/doc/grammar fixes → Frodo