summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-14 22:12:29 +0300
committerPaul Buetow <paul@buetow.org>2026-04-14 22:12:29 +0300
commitc070d447d6bdc6d9e002e6f3ea5aafe9e5d7fc38 (patch)
treec9fa288a885694a5bdff2823e935aa1798799cb9
parentf90a9e0063dbe4ca06c193aec7e7469a32e0b422 (diff)
Release 0.4.1: drop HTML report header links; document Docker deploy in AGENTS.
Remove Dashboard/foo.zone/Report API nav from HTML output; keep foo.zone CSS and layout. Refresh HTML fixtures. Made-with: Cursor
-rw-r--r--AGENTS.md18
-rw-r--r--fixtures/Host.Boots.HTML.expected3
-rw-r--r--fixtures/Host.Downtime.HTML.expected3
-rw-r--r--fixtures/Host.Lifespan.HTML.expected3
-rw-r--r--fixtures/Host.Score.HTML.expected3
-rw-r--r--fixtures/Host.Uptime.HTML.expected3
-rw-r--r--fixtures/Kernel.Boots.HTML.expected3
-rw-r--r--fixtures/Kernel.Score.HTML.expected3
-rw-r--r--fixtures/Kernel.Uptime.HTML.expected3
-rw-r--r--fixtures/KernelMajor.Boots.HTML.expected3
-rw-r--r--fixtures/KernelMajor.Score.HTML.expected3
-rw-r--r--fixtures/KernelMajor.Uptime.HTML.expected3
-rw-r--r--fixtures/KernelName.Boots.HTML.expected3
-rw-r--r--fixtures/KernelName.Score.HTML.expected3
-rw-r--r--fixtures/KernelName.Uptime.HTML.expected3
-rw-r--r--internal/goprecords/report_format.go7
-rw-r--r--internal/version/version.go2
17 files changed, 19 insertions, 50 deletions
diff --git a/AGENTS.md b/AGENTS.md
index 6558be1..ca4d513 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -23,6 +23,21 @@ go test ./...
mage install
```
+## Docker image & f3s deploy
+
+Image build and registry push live in the **`conf`** repo (`f3s/goprecords`), not in this tree. The Justfile there builds from **`docker-image/Justfile`**, which sets **`SRC`** to this **`goprecords`** checkout (default `/home/paul/git/goprecords`).
+
+**Release checklist**
+
+1. Bump **`internal/version/version.go`** (`Tag`, semver).
+2. In **`conf`**: set **`docker-image/Justfile`** `TAG` to the same version; set **`helm-chart/templates/deployment.yaml`** `image:` to `registry.lan.buetow.org:30001/goprecords:<Tag>`; update **`f3s/goprecords/README.md`** example tags if present.
+3. From **`conf/f3s/goprecords`**: run **`just build-push`** (tags and pushes **`r0.lan.buetow.org:30001/goprecords:<Tag>`**; the cluster pulls via **`registry.lan.buetow.org:30001`**).
+4. Commit and tag **`goprecords`**; push branch and tag to Codeberg.
+5. Commit **`conf`**; push **`master`** to Codeberg **and** to **`r0`** (`git push r0 master`) so the in-cluster git server Argo uses is updated.
+6. Sync the app: from **`conf/f3s/goprecords`**, **`just sync`** (or wait for Argo automated sync). Confirm with **`kubectl rollout status deployment/goprecords -n services`** and the deployment image tag.
+
+Utility targets in **`conf/f3s/goprecords/Justfile`**: **`status`**, **`logs`**, **`restart`**.
+
## Project Structure
```
@@ -31,6 +46,7 @@ goprecords/
├── internal/
│ ├── goprecords/ # Core logic (db, aggregate, report, parse, order, types)
│ └── version/version.go # Version constant
+├── Dockerfile # Multi-stage image (daemon binary)
├── Magefile.go # Build automation
├── fixtures/ # Test fixtures and expected outputs
└── go.mod # Go 1.21, modernc.org/sqlite
@@ -48,7 +64,7 @@ goprecords/
- Categories: `Host`, `Kernel`, `KernelMajor`, `KernelName`
- Metrics: `Boots`, `Uptime`, `Score`, `Downtime`, `Lifespan`
-- Output formats: `Plaintext`, `Markdown`, `Gemtext`
+- Output formats: `Plaintext`, `Markdown`, `Gemtext`, `HTML`
- `Downtime` and `Lifespan` metrics only apply to `Host` category
## Key Types
diff --git a/fixtures/Host.Boots.HTML.expected b/fixtures/Host.Boots.HTML.expected
index 225f751..07aa52d 100644
--- a/fixtures/Host.Boots.HTML.expected
+++ b/fixtures/Host.Boots.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Boots&#39;s by Host</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Boots&#39;s by Host</h1><br />
<br />
<span class="quote">Boots is the total number of host boots over the entire lifespan.</span><br />
diff --git a/fixtures/Host.Downtime.HTML.expected b/fixtures/Host.Downtime.HTML.expected
index fcb1569..ecbbe42 100644
--- a/fixtures/Host.Downtime.HTML.expected
+++ b/fixtures/Host.Downtime.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Downtime&#39;s by Host</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Downtime&#39;s by Host</h1><br />
<br />
<span class="quote">Downtime is the total downtime of a host over the entire lifespan.</span><br />
diff --git a/fixtures/Host.Lifespan.HTML.expected b/fixtures/Host.Lifespan.HTML.expected
index ea34115..7fa920b 100644
--- a/fixtures/Host.Lifespan.HTML.expected
+++ b/fixtures/Host.Lifespan.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Lifespan&#39;s by Host</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Lifespan&#39;s by Host</h1><br />
<br />
<span class="quote">Lifespan is the total uptime + the total downtime of a host.</span><br />
diff --git a/fixtures/Host.Score.HTML.expected b/fixtures/Host.Score.HTML.expected
index 61c77d8..bf48b2b 100644
--- a/fixtures/Host.Score.HTML.expected
+++ b/fixtures/Host.Score.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Score&#39;s by Host</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Score&#39;s by Host</h1><br />
<br />
<span class="quote">Score is calculated by combining all other metrics.</span><br />
diff --git a/fixtures/Host.Uptime.HTML.expected b/fixtures/Host.Uptime.HTML.expected
index 2c38c84..ca55e85 100644
--- a/fixtures/Host.Uptime.HTML.expected
+++ b/fixtures/Host.Uptime.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Uptime&#39;s by Host</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Uptime&#39;s by Host</h1><br />
<br />
<span class="quote">Uptime is the total uptime of a host over the entire lifespan.</span><br />
diff --git a/fixtures/Kernel.Boots.HTML.expected b/fixtures/Kernel.Boots.HTML.expected
index e748baf..273b982 100644
--- a/fixtures/Kernel.Boots.HTML.expected
+++ b/fixtures/Kernel.Boots.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Boots&#39;s by Kernel</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Boots&#39;s by Kernel</h1><br />
<br />
<span class="quote">Boots is the total number of host boots over the entire lifespan.</span><br />
diff --git a/fixtures/Kernel.Score.HTML.expected b/fixtures/Kernel.Score.HTML.expected
index 0aaa7ee..fcf8e3c 100644
--- a/fixtures/Kernel.Score.HTML.expected
+++ b/fixtures/Kernel.Score.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Score&#39;s by Kernel</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Score&#39;s by Kernel</h1><br />
<br />
<span class="quote">Score is calculated by combining all other metrics.</span><br />
diff --git a/fixtures/Kernel.Uptime.HTML.expected b/fixtures/Kernel.Uptime.HTML.expected
index 84b1691..a374352 100644
--- a/fixtures/Kernel.Uptime.HTML.expected
+++ b/fixtures/Kernel.Uptime.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Uptime&#39;s by Kernel</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Uptime&#39;s by Kernel</h1><br />
<br />
<span class="quote">Uptime is the total uptime of a host over the entire lifespan.</span><br />
diff --git a/fixtures/KernelMajor.Boots.HTML.expected b/fixtures/KernelMajor.Boots.HTML.expected
index d639641..55e626a 100644
--- a/fixtures/KernelMajor.Boots.HTML.expected
+++ b/fixtures/KernelMajor.Boots.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Boots&#39;s by KernelMajor</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Boots&#39;s by KernelMajor</h1><br />
<br />
<span class="quote">Boots is the total number of host boots over the entire lifespan.</span><br />
diff --git a/fixtures/KernelMajor.Score.HTML.expected b/fixtures/KernelMajor.Score.HTML.expected
index fc5362c..ab5b6a6 100644
--- a/fixtures/KernelMajor.Score.HTML.expected
+++ b/fixtures/KernelMajor.Score.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Score&#39;s by KernelMajor</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Score&#39;s by KernelMajor</h1><br />
<br />
<span class="quote">Score is calculated by combining all other metrics.</span><br />
diff --git a/fixtures/KernelMajor.Uptime.HTML.expected b/fixtures/KernelMajor.Uptime.HTML.expected
index 6608613..dd08ee3 100644
--- a/fixtures/KernelMajor.Uptime.HTML.expected
+++ b/fixtures/KernelMajor.Uptime.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Uptime&#39;s by KernelMajor</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Uptime&#39;s by KernelMajor</h1><br />
<br />
<span class="quote">Uptime is the total uptime of a host over the entire lifespan.</span><br />
diff --git a/fixtures/KernelName.Boots.HTML.expected b/fixtures/KernelName.Boots.HTML.expected
index 37c38a1..6685f18 100644
--- a/fixtures/KernelName.Boots.HTML.expected
+++ b/fixtures/KernelName.Boots.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Boots&#39;s by KernelName</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Boots&#39;s by KernelName</h1><br />
<br />
<span class="quote">Boots is the total number of host boots over the entire lifespan.</span><br />
diff --git a/fixtures/KernelName.Score.HTML.expected b/fixtures/KernelName.Score.HTML.expected
index eae7811..1f1a665 100644
--- a/fixtures/KernelName.Score.HTML.expected
+++ b/fixtures/KernelName.Score.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Score&#39;s by KernelName</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Score&#39;s by KernelName</h1><br />
<br />
<span class="quote">Score is calculated by combining all other metrics.</span><br />
diff --git a/fixtures/KernelName.Uptime.HTML.expected b/fixtures/KernelName.Uptime.HTML.expected
index 2c0bcf4..345b33f 100644
--- a/fixtures/KernelName.Uptime.HTML.expected
+++ b/fixtures/KernelName.Uptime.HTML.expected
@@ -7,9 +7,6 @@
<title>Top 3 Uptime&#39;s by KernelName</title>
</head>
<body>
-<p class="header">
-<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&amp;limit=3">Report API</a>
-</p>
<h1 style="display: inline">Top 3 Uptime&#39;s by KernelName</h1><br />
<br />
<span class="quote">Uptime is the total uptime of a host over the entire lifespan.</span><br />
diff --git a/internal/goprecords/report_format.go b/internal/goprecords/report_format.go
index eb2c49c..7630564 100644
--- a/internal/goprecords/report_format.go
+++ b/internal/goprecords/report_format.go
@@ -48,12 +48,7 @@ func (r reportBuilder) formatReportHTML(rows []tableRow, hasLastKernel bool) str
b.WriteString("<link rel=\"shortcut icon\" type=\"image/gif\" href=\"https://foo.zone/favicon.ico\" />\n")
b.WriteString("<link rel=\"stylesheet\" href=\"https://foo.zone/style.css\" />\n<title>")
b.WriteString(template.HTMLEscapeString(title))
- b.WriteString("</title>\n</head>\n<body>\n")
- b.WriteString("<p class=\"header\">\n")
- b.WriteString("<a href=\"/\">Dashboard</a> | <a href=\"https://foo.zone\">foo.zone</a> | ")
- b.WriteString("<a class=\"textlink\" href=\"/report?OutputFormat=HTML&amp;limit=")
- b.WriteString(strconv.FormatUint(uint64(r.limit), 10))
- b.WriteString("\">Report API</a>\n</p>\n<h")
+ b.WriteString("</title>\n</head>\n<body>\n<h")
b.WriteString(strconv.Itoa(hl))
b.WriteString(" style=\"display: inline\">")
b.WriteString(template.HTMLEscapeString(title))
diff --git a/internal/version/version.go b/internal/version/version.go
index 371f9d1..8102711 100644
--- a/internal/version/version.go
+++ b/internal/version/version.go
@@ -1,4 +1,4 @@
package version
// Tag is the application release version.
-const Tag = "0.4.0"
+const Tag = "0.4.1"