diff --git a/.gitignore b/.gitignore index 3e8f580..3935930 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # OS Thumbs.db .DS_Store +nul # Temp *.bak diff --git a/home-claude/settings.json b/home-claude/settings.json index 8b28f84..a60b1da 100644 --- a/home-claude/settings.json +++ b/home-claude/settings.json @@ -50,7 +50,6 @@ ], "defaultMode": "acceptEdits" }, - "model": "sonnet", "enabledPlugins": { "csharp-lsp@claude-plugins-official": true }, diff --git a/home-gemini/settings.json b/home-gemini/settings.json index 45ffa68..1d7b0a2 100644 --- a/home-gemini/settings.json +++ b/home-gemini/settings.json @@ -1,6 +1,16 @@ { - "model": { "name": "gemini-2.5-pro" }, + "model": { + "name": "gemini-2.5-pro" + }, "context": { - "includeDirectories": ["C:/work/claude-meta/memory"] + "includeDirectories": [ + "C:/work/claude-meta/memory" + ] + }, + "hasSeenIdeIntegrationNudge": true, + "security": { + "auth": { + "selectedType": "oauth-personal" + } } -} +} \ No newline at end of file diff --git a/memory/projects/GoodWood/.gitkeep b/memory/projects/GoodWood/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/memory/projects/GoodWoodApp/MEMORY.md b/memory/projects/GoodWoodApp/MEMORY.md new file mode 100644 index 0000000..ebe6456 --- /dev/null +++ b/memory/projects/GoodWoodApp/MEMORY.md @@ -0,0 +1,20 @@ +# GoodWood App Notes + +## Architecture +- Blazor Server (.NET 9), Clean Architecture: Domain → Application → Infrastructure → Web +- Fluxor (Redux): Store/{Feature}State/{Actions,Reducers,Effects,State}.cs pattern +- AutoMapper profiles in Application/Mapping/ +- EF migrations: `dotnet ef migrations add [Name] --project src/GoodWood.Infrastructure --startup-project src/GoodWood.Web --context AppDbContext --output-dir Data/Migrations` +- Dual DbContext: AppDbContext (app schema), AppIdentityDbContext (auth schema) + +## Code-behind pattern +- Partial classes: Component.razor + Component.razor.cs +- [Inject] needs `using Microsoft.AspNetCore.Components;` in .cs files (not auto-imported unlike .razor) + +## SEPA Export (added 2026-02-08) +- pain.008.003.02 XML generated by SepaXmlBuilder (System.Xml, no external lib) +- Download via JS: `window.downloadFile` in wwwroot/js/fileDownload.js +- SepaExport entity links CashBookEntries via nullable FK SepaExportId +- PaymentStatus enum on CashBookEntry: Open/DirectDebitCollected/Paid +- Person gets: Iban, Bic, SepaMandateReference, SepaMandateDate +- Club gets: BankIban, BankBic, SepaCreditorId diff --git a/memory/projects/ISMS-DB/MEMORY.md b/memory/projects/ISMS-DB/MEMORY.md new file mode 100644 index 0000000..d345637 --- /dev/null +++ b/memory/projects/ISMS-DB/MEMORY.md @@ -0,0 +1,29 @@ +# ISMS-DB Project Memory + +## Skill Triggers +- "aktualisiere unser ISMS", "ISMS aktualisieren", "ISMS updaten" → ALWAYS invoke Skill `isms-update` +- This skill runs: Fetch-Data.ps1 → edit JSON → Upload-Data.ps1 +- NEVER edit tenant data (Data/default/*.json) without running fetch first +- NEVER skip upload after editing + +## Auth Stack +- Microsoft.Identity.Web 3.x (resolved 3.14.1) +- Use `AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApp(...)` — NOT `services.AddMicrosoftIdentityWebApp(...)` (IServiceCollection overload removed in 3.x) +- `using Microsoft.Identity.Web.UI;` required in Program.cs for `AddMicrosoftIdentityUI()` +- Use `PostConfigure` to hook `OnTokenValidated` without clobbering MSIW's own handler + +## SecurePageModel Pattern +- Inherits `PageModel`, uses `override` on `OnPageHandlerSelectionAsync` / `OnPageHandlerExecutionAsync` +- Do NOT declare `IAsyncPageFilter` explicitly — `PageModel` already has virtual methods +- Resolves `IUserService` + `TenantService` via `ctx.HttpContext.RequestServices` + +## Audit Result Writing +- NEVER delegate JSON creation to a Task subagent — too slow (33 calls, 17 min) +- Build the JSON object in main context, then pipe to `append-audit-result.py`: + `python3 append-audit-result.py src/IsmsApp/Data/default/ <<'JSONEOF' ... JSONEOF` +- Script validates: .lock, control exists, Id unique, Iteration unique +- For the JSON heredoc: use python3 inline to generate UUIDs + timestamps, then echo + +## Razor Gotcha +- `RZ1031`: cannot put free-standing `@(expr)` in `