Skip to content

It is time for version 1.1.4#132

Merged
fboucher merged 25 commits into
mainfrom
v-next
May 18, 2026
Merged

It is time for version 1.1.4#132
fboucher merged 25 commits into
mainfrom
v-next

Conversation

@fboucher
Copy link
Copy Markdown
Owner

No description provided.

fboucher and others added 25 commits April 3, 2026 10:56
Removes AI team config and enforces main branch policy
Cast from Star Wars universe per Frank's request:
- Wedge (Lead/Architect)
- Leia (Blazor/UI Dev)
- Han (Backend Dev)
- Luke (MAUI Dev)
- Biggs (Tester)
- Scribe + Ralph (existing, retained)

Seeded with NoteBookmark project context and app-label backlog.
Focus: Issue #119 (SharedUI RCL extraction) as first issue.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Created NoteBookmark.SharedUI RCL project with FrameworkReference to Microsoft.AspNetCore.App
- Moved PostNoteClient from NoteBookmark.BlazorApp to NoteBookmark.SharedUI
- Moved Post list (Posts.razor), Post detail (PostEditor.razor, PostEditorLight.razor)
- Moved Note dialog (NoteDialog.razor), Search form (Search.razor)
- Moved Settings form (Settings.razor), Summary list (Summaries.razor)
- Moved SummaryEditor.razor and SuggestionList.razor (dependencies of moved pages)
- Moved MinimalLayout.razor (required by PostEditorLight)
- BlazorApp now references SharedUI; Routes.razor uses AdditionalAssemblies
- Program.cs registers SharedUI assembly for Razor component discovery
- BlazorApp.Tests updated to reference SharedUI types after extraction
- No behaviour changes — structural refactor only

Closes #119

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add orchestration log for Leia's run (2026-04-03T15-07)
- Add session log for Issue #119 (extraction complete)
- Merge leia-sharedui-structure.md from decisions/inbox to decisions.md
- Update agent histories: Leia (run complete), Wedge (MAUI context), Biggs (testing focus)

[session log: .squad/log/2026-04-03-issue-119.md]
[orchestration log: .squad/orchestration-log/2026-04-03T15-07-leia.md]

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…#119)

- Fixed bUnit 2.x API (BunitContext, Render<T>, AddAuthorization/BunitAuthorizationContext)
- Fixed namespaces after extraction: SuggestionList/NoteDialog/MinimalLayout now
  in NoteBookmark.SharedUI, NavMenu/MainLayout/LoginDisplay remain in BlazorApp
- Fixed PostNoteClient namespace (moved to NoteBookmark.SharedUI by Leia)
- Fixed FluentUI service registration (AddFluentUI helper with JSInterop.Loose)
- Added StubHttpMessageHandler for PostNoteClient in tests
- NoteDialog 5 tests skipped: FluentDialog cascade not injectable in bUnit 2.x
- Results: 20 passed, 5 skipped, 0 failed
- Updated TESTING-GAPS.md with accurate bUnit version, auth setup notes, gaps

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- bUnit 2.x API notes (BunitContext, AddAuthorization pattern)
- NoteDialog gap documented (FluentDialog cascade, fix recommendation)
- PostNoteClient location change noted (moved to SharedUI by Leia)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Merged biggs-test-strategy-119.md from inbox into decisions.md (active decisions)
- Deleted inbox file after merge
- Updated biggs/history.md with test results (20 passed, 5 skipped, 0 failed)
- Updated leia/history.md with cross-agent notes on NoteDialog refactoring

Biggs' regression testing confirmed zero behavioral changes from Leia's SharedUI extraction.
Test suite created in NoteBookmark.BlazorApp.Tests using bUnit 2.7.2.

Identified future work: refactor NoteDialog to use EventCallback<NoteDialogResult>
instead of Dialog.CloseAsync() to eliminate cascade dependency.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…Dialog.CloseAsync

Makes NoteDialog testable with bUnit 2.x by removing FluentDialog cascade dependency.
Replaced FluentDialogHeader/Body/Footer with plain divs so the component renders
standalone without any FluentDialog cascade.

Added [Parameter] EventCallback<NoteDialogResult> OnClose — invoked on save, cancel,
and delete before (optionally) calling Dialog?.CloseAsync()/CancelAsync(), keeping
backward compatibility with ShowDialogAsync callers in Posts.razor.

Added [Parameter] string? Title for standalone/test usage.
Added [Parameter] FluentDialog? Dialog (nullable) for production dialog usage.

Activated 5 previously-skipped bUnit regression tests: 25/25 now passing.
Unblocks Issue #119 acceptance criteria for full test coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ecord

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
feat: extract NoteBookmark.SharedUI Razor Class Library
8 integration tests documenting the expected modifiedAfter filter contract
for Issue #121 (DateModified on Post/Note + delta query param).

Posts (GET /api/posts/?modifiedAfter=):
- ReturnsOnlyRecentPosts
- FutureTimestamp_ReturnsEmpty
- WithoutModifiedAfter_ReturnsAllPosts (non-breaking baseline)
- MultipleResults (3 posts, threshold filters to 2)

Notes (GET /api/notes/?modifiedAfter=):
- Same 4 patterns

Tests are intentionally RED until Han's implementation lands.
Timing-based seeding: Task.Delay(150ms) + DateTime.UtcNow threshold
ensures the server clock reliably separates old vs new entities.
Assertions use RowKey presence/absence for test isolation.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add DateModified (DateTime UTC) to Post, Note, PostL domain models
- Post.DateModified defaults to DateTime.UtcNow to ensure valid UTC for Azure SDK
- Note constructor sets DateModified = DateTime.UtcNow
- DataStorageService.SavePost and CreateNote set DateModified = DateTime.UtcNow on every write
- GET /api/posts/?modifiedAfter={ISO8601} filters unread posts by DateModified (non-breaking)
- GET /api/posts/read?modifiedAfter={ISO8601} filters read posts by DateModified (non-breaking)
- GET /api/notes/?modifiedAfter={ISO8601} filters notes by DateModified (non-breaking)
- PATCH /api/posts/{id} endpoint added — updates post and refreshes DateModified
- PATCH /api/notes/note/{rowKey} endpoint added — updates note and refreshes DateModified
- 12 new integration tests in DeltaApiTests covering modifiedAfter filtering and PATCH semantics
- All 20 delta tests pass (8 Biggs proactive + 12 new endpoint tests)

Closes #121

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add NoteBookmark.MauiApp project targeting net10.0-android
- Implement IAuthService with OIDC login via WebAuthenticator + PKCE
- KeycloakAuthService: token exchange, SecureStorage persistence,
  silent refresh, offline/expired detection
- Login.razor page with session-expired-offline message
- Home.razor post-login page: Hello {username} + Sign out button
- Routes.razor wires in NoteBookmark.SharedUI.PostNoteClient assembly
- Android intent filter for notebookmark://auth/callback redirect
- MSBuild target strips Microsoft.AspNetCore.App transitive
  FrameworkReference on Android (NETSDK1082 workaround)
- Placeholder Keycloak config in wwwroot/appsettings.json
- Added to NoteBookmark.sln and Directory.Packages.props

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…or Keycloak

Co-authored-by: Copilot <copilot@github.com>
- Introduces a new development skill to guide documentation and design decisions using ADR and CONTEXT formats.
- Stabilizes MAUI Android Keycloak authentication by correcting the `WebAuthenticatorCallbackActivity` in `AndroidManifest.xml` and setting `LaunchMode.SingleTask` in `MainActivity.cs`.
- Updates `maui-android-run.md` with relevant troubleshooting steps for MAUI Android sign-in and emulator keyboard input.
@github-actions
Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Health
NoteBookmark.AIServices 97% 64%
NoteBookmark.Api 91% 80%
NoteBookmark.BlazorApp 4% 8%
NoteBookmark.Domain 86% 75%
NoteBookmark.ServiceDefaults 96% 75%
NoteBookmark.SharedUI 7% 8%
Summary 53% (865 / 1621) 43% (205 / 481)

@fboucher fboucher merged commit 82aeb21 into main May 18, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant