7 Commits

Author SHA1 Message Date
Renovate Bot 343e82b7e8 fix(deps): update docker/setup-qemu-action action to v4
Build and publish container / build (pull_request) Successful in 7m22s
2026-06-12 10:58:45 +00:00
lyrathorpe 9412c20248 Merge pull request 'Fix/renovate semantic fix' (#14) from fix/renovate-semantic-fix into main
Build and publish container / build (push) Has been cancelled
Reviewed-on: #14
2026-06-12 11:49:53 +01:00
lyrathorpe 65f97d2707 Merge pull request 'feat: present theme switch as a segmented control' (#15) from feat/segmented-theme-switch into main
Build and publish container / build (push) Successful in 6m7s
Reviewed-on: #15
2026-06-12 11:45:08 +01:00
Emma Thorpe 564070b270 ci: auto-merge patch and minor renovate updates
Build and publish container / build (pull_request) Successful in 4m55s
Add a packageRule that automerges patch and minor updates, with
platformAutomerge enabled so Gitea merges them once required checks pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 11:39:02 +01:00
Emma Thorpe ad90451846 feat: present theme switch as a segmented control
Build and publish container / build (pull_request) Successful in 4m49s
Join the two theme options into a single rounded container with the active
segment filled and a divider between them, replacing the two separate pills.
Markup and aria-pressed behaviour are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 11:34:32 +01:00
Emma Thorpe 22c2ef1b26 fix: force fix(deps) commit type so renovate PRs trigger releases
Build and publish container / build (pull_request) Successful in 6m16s
config:recommended pulls in :semanticPrefixFixDepsChoreOthers, whose catch-all
packageRule forces non-npm updates (Docker base image, Gitea Actions) to the
chore type, overriding the top-level semanticCommitType. chore produces no
release, so Renovate updates were never auto-tagged.

Append a packageRule matching all packages that sets semanticCommitType to fix,
so every merged Renovate PR registers as a patch and is released and tagged.
Also migrate the deprecated fileMatch keys to managerFilePatterns.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 11:31:07 +01:00
Emma Thorpe 301120c174 fix: recolour original theme to a red field with white text
Switch the original theme to a red background with white message text, with
navy buttons, evoking the red B07/B99 stock. Red/white/blue are all retained.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 11:24:30 +01:00
3 changed files with 34 additions and 38 deletions
+1 -22
View File
@@ -1,31 +1,10 @@
name: Build and publish container
# Only run when files that affect the built image change. Updates to CI
# config, Renovate config, or docs (e.g. a Renovate bump of the checkout
# action) do not change the image and so do not trigger a build or release.
# Use workflow_dispatch to run manually after a pipeline change.
on:
push:
branches: [main]
paths:
- 'Dockerfile'
- 'default.conf'
- 'index.html'
- 'styles.css'
- 'script.js'
- 'messages.js'
- '.dockerignore'
pull_request:
branches: [main]
paths:
- 'Dockerfile'
- 'default.conf'
- 'index.html'
- 'styles.css'
- 'script.js'
- 'messages.js'
- '.dockerignore'
workflow_dispatch:
defaults:
run:
@@ -115,7 +94,7 @@ jobs:
echo "Computed bump=${bump}, release=${release}, base=${base}"
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4
- name: Set up Buildx
uses: docker/setup-buildx-action@v3
+14 -3
View File
@@ -10,20 +10,31 @@
"semanticCommitType": "fix",
"semanticCommitScope": "deps",
"github-actions": {
"fileMatch": ["^\\.gitea/workflows/[^/]+\\.ya?ml$"]
"managerFilePatterns": ["/^\\.gitea/workflows/[^/]+\\.ya?ml$/"]
},
"packageRules": [
{
"description": "Group nginx base image updates",
"matchManagers": ["dockerfile"],
"groupName": "docker base image"
},
{
"description": "Commit every update as fix(deps) so each merged Renovate PR triggers a patch release. config:recommended pulls in :semanticPrefixFixDepsChoreOthers, which forces non-npm updates (Docker, Actions) to chore and would otherwise produce no release.",
"matchPackageNames": ["*"],
"semanticCommitType": "fix"
},
{
"description": "Auto-merge patch and minor updates once checks pass.",
"matchUpdateTypes": ["patch", "minor"],
"automerge": true
}
],
"platformAutomerge": true,
"customManagers": [
{
"customType": "regex",
"description": "Update HTML dependencies annotated with a renovate comment, e.g. <!-- renovate: datasource=npm depName=bootstrap --> before the versioned URL",
"fileMatch": ["\\.html$"],
"managerFilePatterns": ["/\\.html$/"],
"matchStrings": [
"datasource=(?<datasource>\\S+) depName=(?<depName>\\S+)( versioning=(?<versioning>\\S+))?[\\s\\S]*?(?<currentValue>v?\\d+\\.\\d+\\.\\d+[\\w.-]*)"
]
@@ -31,7 +42,7 @@
{
"customType": "regex",
"description": "Auto-detect versioned jsDelivr / unpkg npm assets in HTML",
"fileMatch": ["\\.html$"],
"managerFilePatterns": ["/\\.html$/"],
"matchStrings": [
"https://cdn\\.jsdelivr\\.net/npm/(?<depName>@?[^@/]+(?:/[^@/]+)?)@(?<currentValue>\\d[^/\"']+)",
"https://unpkg\\.com/(?<depName>@?[^@/]+(?:/[^@/]+)?)@(?<currentValue>\\d[^/\"']+)"
+19 -13
View File
@@ -21,14 +21,14 @@
/* Original DLR — 1987 red, white and blue */
[data-theme="original"] {
--bg: #f5f0e1;
--bg: #c8102e;
--surface: #002b5c;
--text: #002b5c;
--message: #002b5c;
--button-bg: #c8102e;
--text: #f5f0e1;
--message: #f5f0e1;
--button-bg: #002b5c;
--button-text: #f5f0e1;
--button-active-bg: #002b5c;
--button-active-text: #f5f0e1;
--button-active-bg: #f5f0e1;
--button-active-text: #002b5c;
}
* {
@@ -63,10 +63,13 @@ body {
padding: 1.5rem;
}
/* Segmented control: both options joined in one rounded container,
with the active segment filled. */
.theme-toggle {
display: flex;
gap: 0.5rem;
border: none;
display: inline-flex;
border: 2px solid var(--button-bg);
border-radius: 999px;
overflow: hidden;
margin: 0;
padding: 0;
}
@@ -75,19 +78,22 @@ body {
font-family: inherit;
font-size: 0.9rem;
font-weight: 600;
padding: 0.5rem 1rem;
border: 2px solid var(--button-bg);
border-radius: 999px;
padding: 0.5rem 1.1rem;
border: none;
background: transparent;
color: var(--text);
cursor: pointer;
transition: background 0.2s ease, color 0.2s ease;
}
/* Divider between the two segments. */
.theme-button + .theme-button {
border-left: 2px solid var(--button-bg);
}
.theme-button[aria-pressed="true"] {
background: var(--button-active-bg);
color: var(--button-active-text);
border-color: var(--button-active-bg);
}
.stage {