Conversation
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>
feat: DateModified + delta API endpoints (#121)
- 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.
…0-maui-scaffold-keycloak
feat: MAUI scaffold + Keycloak auth (#120)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.