From 7935dd8e15f5afa210705b685b15db944d804cb3 Mon Sep 17 00:00:00 2001 From: Claudio Schaad Date: Sun, 19 Apr 2026 17:03:27 +0200 Subject: [PATCH] feat: configurable icons from Docker share (#61) * docs: add design spec for configurable icons from Docker share Co-Authored-By: Claude Sonnet 4.6 * docs: add implementation plan for configurable icons from Docker share Co-Authored-By: Claude Sonnet 4.6 * Remove icons * feat: serve icons from config/icons/ Docker share via static file middleware Co-Authored-By: Claude Sonnet 4.6 * update readme --------- Co-authored-by: Claude Sonnet 4.6 --- Client/ShiftScheduler.Client.csproj | 36 --- Client/wwwroot/icons/BB.png | Bin 11863 -> 0 bytes Client/wwwroot/icons/Bg.png | Bin 2834 -> 0 bytes Client/wwwroot/icons/F1.png | Bin 2866 -> 0 bytes Client/wwwroot/icons/F1_PF.png | Bin 3420 -> 0 bytes Client/wwwroot/icons/G1.png | Bin 2868 -> 0 bytes Client/wwwroot/icons/G1TS.png | Bin 13511 -> 0 bytes Client/wwwroot/icons/G2.png | Bin 15097 -> 0 bytes Client/wwwroot/icons/G2TS.png | Bin 23693 -> 0 bytes Client/wwwroot/icons/Kompensation.png | Bin 3066 -> 0 bytes Client/wwwroot/icons/S1.png | Bin 13499 -> 0 bytes Client/wwwroot/icons/break-icon.png | Bin 186 -> 0 bytes README.md | 207 +++++------------- Server/Program.cs | 8 + .../plans/2026-04-14-configurable-icons.md | 174 +++++++++++++++ .../2026-04-14-configurable-icons-design.md | 59 +++++ 16 files changed, 299 insertions(+), 185 deletions(-) delete mode 100644 Client/wwwroot/icons/BB.png delete mode 100644 Client/wwwroot/icons/Bg.png delete mode 100644 Client/wwwroot/icons/F1.png delete mode 100644 Client/wwwroot/icons/F1_PF.png delete mode 100644 Client/wwwroot/icons/G1.png delete mode 100644 Client/wwwroot/icons/G1TS.png delete mode 100644 Client/wwwroot/icons/G2.png delete mode 100644 Client/wwwroot/icons/G2TS.png delete mode 100644 Client/wwwroot/icons/Kompensation.png delete mode 100644 Client/wwwroot/icons/S1.png delete mode 100644 Client/wwwroot/icons/break-icon.png create mode 100644 docs/superpowers/plans/2026-04-14-configurable-icons.md create mode 100644 docs/superpowers/specs/2026-04-14-configurable-icons-design.md diff --git a/Client/ShiftScheduler.Client.csproj b/Client/ShiftScheduler.Client.csproj index ccd019e..852ce95 100644 --- a/Client/ShiftScheduler.Client.csproj +++ b/Client/ShiftScheduler.Client.csproj @@ -11,40 +11,4 @@ - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - diff --git a/Client/wwwroot/icons/BB.png b/Client/wwwroot/icons/BB.png deleted file mode 100644 index 8df1888fdd74c840e180dc58ca85d3a96d3a50a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11863 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 diff --git a/Client/wwwroot/icons/F1.png b/Client/wwwroot/icons/F1.png deleted file mode 100644 index ced01304bef098b931dab3acf66a4a611cc067f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2866 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 S8f!gxA0QD{rgbK+H~$OQg)OcC diff --git a/Client/wwwroot/icons/G1.png b/Client/wwwroot/icons/G1.png deleted file mode 100644 index 2dbc8c109d56c5868a1825c6c2cc7e2a5d87addd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2868 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 Z*u6D~-2TaRfw$=bpt04-Qnd5U{{c;OYwZ94 diff --git a/Client/wwwroot/icons/G1TS.png b/Client/wwwroot/icons/G1TS.png deleted file mode 100644 index 478a2bab99aad7e5afb3ceb9adcda6cabab5b298..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13511 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 OBP*pOSuJi7^8Wy5VQmZm diff --git a/Client/wwwroot/icons/G2.png b/Client/wwwroot/icons/G2.png deleted file mode 100644 index df0a6f79efc526c016a89c6d0790b76c10d81072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15097 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 diff --git a/Client/wwwroot/icons/S1.png b/Client/wwwroot/icons/S1.png deleted file mode 100644 index 3fa5d21647e888492ef81f38a4b8777d0bc9c9a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13499 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 z zECDcq89CMqNE}GG{M`_jh6x|p-cngVt@d0*01jq^Ft=@Cra3bN>8)}S3?7){prDRa zJ6|q|l2n7)#c16VRvA@3vFY))I1gm{1}N0EfjI$ZFfRgOUGDdQ$eM_jv_b6Y%Dy*3 zqOZ%Q)9*$8$*dpYA=v5=T?JIcdm923N2$BHx*}*RapiwqFM_8Gzke4|z<+~*bxD7O zCIK?bLuwb>>5c zinN(>k0Y}gj?Zcs_M=}l_Y_#)ueNmG4rP}&F5#OgWV2Pby*i^pDDjN-2`_#ax#waM zn`N>Uu#*8qyE`%)jD^v7Aspkga#Rin;`!|%);??N(g1S)&q}uP+b+C8SvvR~Vs4mK z!=z;Hh^JqZav~S{4EGN5c42z~VtoYI=MUJr&AvB>dwKrfTRU8Ua8-5qJ!jd_fSkK2 zKQXDMrj8Q#bJhMGJAp04Vt)8pVREv>^)Kx0T39_ewOJRexa4QTM~?8;mS>;o?OcY_ ztbZehqnN1Or~ZPySKp{#PrZiCKT_be{)$XzL@%Uggs(H^s^4O00Z`H6N1P4J^d6>> zvebm;XEnP)H8KY`{L;F1atbD=D&yhJyl@+9Q1P6AqcS;(uz@(yLp6cq2du>GwP7XA zsS>{nsN5KXS4(E?zlAY`D0IRQ*n=dBA?=N@XFM@P=*}3Cr;#F`?uL}O zvd>U0vMv#Lpe5a^!~PRrt7-VfWMcHgVA#DG%@318K(1aUxsK^xbbh@0NxX z<9_xKhguNmfCUy03VpMlie3!T6o`Y8Mx;XeJK}?oo>WD@$%6#YQ*-nE6gCsND4Z`B z%>nTW7mF!tte&H}VG5CI6`zPyDRV6v;)i5G=-0iI zVIZ4Qwk-~so9ytDLyuRc&5!^AWNml68*MPGA%@6uh}gt{_E69M2DpT&XBRVy#u&g* z{uQ>TzkV449isA8D8ld0_f3G1qX~n=0d **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Serve shift icons from `config/icons/` on the Docker share instead of bundling them in the repository. + +**Architecture:** Add a second `UseStaticFiles` middleware in `Server/Program.cs` with a `PhysicalFileProvider` pointing to `config/icons/`, served at the `/icons` URL path. Remove all PNG icon files and their `.csproj` entries from the repo. No frontend changes needed β€” `` continues to work unchanged. + +**Tech Stack:** ASP.NET Core static files middleware, `Microsoft.Extensions.FileProviders.PhysicalFileProvider` (already in the ASP.NET Core SDK, no new package required) + +--- + +## Files Changed + +| Action | File | What changes | +|--------|------|--------------| +| Modify | `Server/Program.cs` | Add second `UseStaticFiles` for `config/icons/` | +| Modify | `Client/ShiftScheduler.Client.csproj` | Remove all `` and `` entries | +| Delete | `Client/wwwroot/icons/` | Remove entire directory and all PNGs | +| Delete | `Client/wwwroot/break-icon.png` (if present) | Remove stray root-level copy | + +--- + +### Task 1: Add static file middleware for `config/icons/` + +**Files:** +- Modify: `Server/Program.cs:125` (after `app.UseStaticFiles();`) + +- [ ] **Step 1: Add the icons static file middleware** + +In `Server/Program.cs`, replace: + +```csharp +app.UseBlazorFrameworkFiles(); +app.UseStaticFiles(); +``` + +with: + +```csharp +app.UseBlazorFrameworkFiles(); +app.UseStaticFiles(); + +var iconsPath = Path.Combine(Directory.GetCurrentDirectory(), "config", "icons"); +Directory.CreateDirectory(iconsPath); +app.UseStaticFiles(new StaticFileOptions +{ + FileProvider = new Microsoft.Extensions.FileProviders.PhysicalFileProvider(iconsPath), + RequestPath = "/icons" +}); +``` + +- [ ] **Step 2: Verify the app builds** + +```bash +dotnet build +``` + +Expected: Build succeeded with 0 errors (pre-existing warnings about QuestPDF and null reference are OK). + +- [ ] **Step 3: Commit** + +```bash +git checkout -b feature/configurable-icons +git add Server/Program.cs +git commit -m "feat: serve icons from config/icons/ Docker share via static file middleware" +``` + +--- + +### Task 2: Remove icon files and clean up the .csproj + +**Files:** +- Modify: `Client/ShiftScheduler.Client.csproj` β€” remove `` with icon `` entries +- Delete: `Client/wwwroot/icons/` directory +- Delete: `Client/wwwroot/break-icon.png` (stray root-level copy listed in .csproj) + +- [ ] **Step 1: Remove the entire icons ItemGroup from the .csproj** + +In `Client/ShiftScheduler.Client.csproj`, remove the entire `` block that contains the icon entries (lines 14–48 in the current file), so the file becomes: + +```xml + + + + + + + + + + + + + + +``` + +- [ ] **Step 2: Delete the icon files from the repo** + +```bash +rm -rf Client/wwwroot/icons +rm -f Client/wwwroot/break-icon.png +``` + +- [ ] **Step 3: Verify the app still builds** + +```bash +dotnet build +``` + +Expected: Build succeeded with 0 errors. + +- [ ] **Step 4: Commit** + +```bash +git add Client/ShiftScheduler.Client.csproj +git add -u Client/wwwroot/ +git commit -m "chore: remove bundled icon files from repo β€” icons now served from Docker share" +``` + +--- + +### Task 3: Smoke test the icons endpoint + +This task verifies the middleware works end-to-end before the branch is merged. + +- [ ] **Step 1: Copy a test icon to the config/icons directory** + +```bash +mkdir -p config/icons +# Copy any PNG you have on hand, e.g. the app favicon +cp Client/wwwroot/favicon.png config/icons/test.png +``` + +- [ ] **Step 2: Start the server** + +```bash +cd Server && dotnet run +``` + +Expected: App starts at `http://localhost:5000`. + +- [ ] **Step 3: Verify the icon is served** + +```bash +curl -o /dev/null -w "%{http_code}" http://localhost:5000/icons/test.png +``` + +Expected output: `200` + +- [ ] **Step 4: Verify a missing icon returns 404** + +```bash +curl -o /dev/null -w "%{http_code}" http://localhost:5000/icons/nonexistent.png +``` + +Expected output: `404` + +- [ ] **Step 5: Stop the server and clean up the test file** + +```bash +rm config/icons/test.png +``` + +- [ ] **Step 6: Merge to main** + +```bash +cd .. +git checkout main +git merge --squash feature/configurable-icons +git commit -m "feat: serve icons from config/icons/ Docker share" +git branch -d feature/configurable-icons +``` diff --git a/docs/superpowers/specs/2026-04-14-configurable-icons-design.md b/docs/superpowers/specs/2026-04-14-configurable-icons-design.md new file mode 100644 index 0000000..4379678 --- /dev/null +++ b/docs/superpowers/specs/2026-04-14-configurable-icons-design.md @@ -0,0 +1,59 @@ +# Configurable Icons from Docker Share + +**Date:** 2026-04-14 +**Status:** Approved + +## Problem + +Icons for shifts are currently PNG files bundled in the repository under `Client/wwwroot/icons/`. This means adding or changing an icon requires a code change and a redeployment. The user wants icons to be configurable at runtime, placed on the same Docker-mounted volume as monthly schedule files and other configuration. + +## Solution + +Serve icon files from `config/icons/` (a subfolder of the existing Docker share) using ASP.NET Core's static file middleware with a `PhysicalFileProvider`. No frontend changes are required β€” the URL path `/icons/filename.png` stays identical. + +## Architecture + +### Server change (`Server/Program.cs`) + +Add a second `UseStaticFiles` call after the existing one: + +```csharp +var iconsPath = Path.Combine(Directory.GetCurrentDirectory(), "config", "icons"); +Directory.CreateDirectory(iconsPath); +app.UseStaticFiles(new StaticFileOptions +{ + FileProvider = new PhysicalFileProvider(iconsPath), + RequestPath = "/icons" +}); +``` + +- `config/icons/` is created automatically on first run if absent. +- Files placed there are served at `/icons/{filename}` immediately, no restart needed. +- Built-in ASP.NET Core static file serving provides ETags, cache headers, and range request support. + +### Cleanup + +- Delete `Client/wwwroot/icons/` and all PNG files within it. +- Remove all `` entries from `Client/ShiftScheduler.Client.csproj`. + +### No changes needed + +- `Shift.IsPngIcon` computed property +- `Shift.Icon` field +- `` in `Index.razor` +- `ConfigurationDialog.razor` +- Any other frontend or shared model code + +## Data Flow + +1. User places `myicon.png` in `config/icons/` on the Docker share. +2. In `appsettings.json` (or `config/shifts.json`), the shift's `Icon` field is set to `myicon.png`. +3. The Blazor client fetches shift config from `GET /api/shift/shifts`. +4. `Shift.IsPngIcon` returns `true`, and the UI renders ``. +5. The browser GETs `/icons/myicon.png` β€” served by the `PhysicalFileProvider` from `config/icons/myicon.png`. + +## Out of Scope + +- Emoji icons are unaffected. +- No upload UI for icons β€” files are placed on the share directly (consistent with how schedule files work). +- No fallback to repo-bundled icons (repo icons are removed entirely).