- scripts/release.sh: build from main, tag :latest + short SHA, push
both. Aborts if not on main or working tree is dirty; warns on
unpushed commits. Prevents dev states from becoming :latest.
- scripts/dev-build.sh: local dev image (tagged per branch), never
pushed -- keeps development builds off the registry.
- docs/deployment.md: document branch/PR workflow, replace manual
build/push steps with the scripts, SHA-based rollback now standard.
- .gitattributes: force LF on *.sh so the shebang works on Windows.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Update roadmap in plan.md: steps 1/3/6 done, deployment (step 6)
pulled ahead of the content pipeline to prove the build->registry->
Unraid chain early. Record the evening 2026-09-20 status and the
deliberate test-time deviations to unwind later (port mapping, latest
-only tag, plaintext token).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add a dedicated Unraid login step to deployment.md: terminal-based
login (plugin has no UI field), the PowerShell-vs-Unraid mix-up, the
stuck-wrong-username fix (logout first), and the plaintext token
warning. Note a credential helper as a later cleanup.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- docs/deployment.md: manual build/push/pull workflow via Gitea
registry, token handling (no secrets in repo), test vs. production
compose variants, rollback and later CI automation notes.
- compose.yaml: pull the prebuilt image from the Gitea registry instead
of building from source on Unraid (source is not checked out there).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Program.cs: remove UseHsts/UseHttpsRedirection (NPM terminates TLS,
would loop behind the proxy, plan.md AE-4), add UseForwardedHeaders
with emptied known networks/proxies. Uses KnownIPNetworks (net10).
- Dockerfile: SDK build stage, chiseled aspnet runtime on port 8080.
- .dockerignore: keep build output, git and docs out of the image.
- compose.yaml: temporary test setup (builds from source, exposes
5000:8080) for the first run on Unraid without NPM or registry.
- .gitignore: exclude .idea/ (Rider project files).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Architecture decisions with rationale (plan.md) and repo-specific
build/run commands plus style rules (CLAUDE.md).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Rider-generated Blazor Web App (net10.0, interactive render mode None,
no auth scaffold, no sample pages). Includes Rider auto-formatting.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>