diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-14 22:05:08 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-14 22:05:08 +0300 |
| commit | f90a9e0063dbe4ca06c193aec7e7469a32e0b422 (patch) | |
| tree | 72124595231432f26aef9916ba0b8006d5dd8518 | |
| parent | 91a42298f46ee659a951211d4c47f9096fe97b29 (diff) | |
Release 0.4.0: foo.zone HTML styling, uptime-stats section order, dashboard without full Kernel tables.HEADv0.4.0master
- Link foo.zone stylesheet and mirror header/heading/quote layout for HTML reports.
- Default -all stats order matches foo.zone (Host Uptime through Score, then KernelMajor and KernelName; full Kernel last when include-kernel).
- Daemon root HTML uses include-kernel=false like the public stats page.
- Refresh HTML integration fixtures.
Made-with: Cursor
| -rw-r--r-- | fixtures/Host.Boots.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/Host.Downtime.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/Host.Lifespan.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/Host.Score.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/Host.Uptime.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/Kernel.Boots.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/Kernel.Score.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/Kernel.Uptime.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/KernelMajor.Boots.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/KernelMajor.Score.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/KernelMajor.Uptime.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/KernelName.Boots.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/KernelName.Score.HTML.expected | 11 | ||||
| -rw-r--r-- | fixtures/KernelName.Uptime.HTML.expected | 11 | ||||
| -rw-r--r-- | internal/daemon/daemon.go | 2 | ||||
| -rw-r--r-- | internal/goprecords/order.go | 21 | ||||
| -rw-r--r-- | internal/goprecords/order_test.go | 30 | ||||
| -rw-r--r-- | internal/goprecords/report_format.go | 19 | ||||
| -rw-r--r-- | internal/version/version.go | 2 |
19 files changed, 182 insertions, 46 deletions
diff --git a/fixtures/Host.Boots.HTML.expected b/fixtures/Host.Boots.HTML.expected index e0b78a3..225f751 100644 --- a/fixtures/Host.Boots.HTML.expected +++ b/fixtures/Host.Boots.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Boots's by Host</title> </head> <body> -<h1>Top 3 Boots's by Host</h1> -<p>Boots is the total number of host boots over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Boots's by Host</h1><br /> +<br /> +<span class="quote">Boots is the total number of host boots over the entire lifespan.</span><br /> +<br /> <pre>+-----+----------------+-------+-----------------------------+ | Pos | Host | Boots | Last Kernel | +-----+----------------+-------+-----------------------------+ diff --git a/fixtures/Host.Downtime.HTML.expected b/fixtures/Host.Downtime.HTML.expected index 72bdd43..fcb1569 100644 --- a/fixtures/Host.Downtime.HTML.expected +++ b/fixtures/Host.Downtime.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Downtime's by Host</title> </head> <body> -<h1>Top 3 Downtime's by Host</h1> -<p>Downtime is the total downtime of a host over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Downtime's by Host</h1><br /> +<br /> +<span class="quote">Downtime is the total downtime of a host over the entire lifespan.</span><br /> +<br /> <pre>+-----+----------------+-----------------------------+--------------------------+ | Pos | Host | Downtime | Last Kernel | +-----+----------------+-----------------------------+--------------------------+ diff --git a/fixtures/Host.Lifespan.HTML.expected b/fixtures/Host.Lifespan.HTML.expected index 12bfe4d..ea34115 100644 --- a/fixtures/Host.Lifespan.HTML.expected +++ b/fixtures/Host.Lifespan.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Lifespan's by Host</title> </head> <body> -<h1>Top 3 Lifespan's by Host</h1> -<p>Lifespan is the total uptime + the total downtime of a host.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Lifespan's by Host</h1><br /> +<br /> +<span class="quote">Lifespan is the total uptime + the total downtime of a host.</span><br /> +<br /> <pre>+-----+----------------+----------------------------+--------------------------+ | Pos | Host | Lifespan | Last Kernel | +-----+----------------+----------------------------+--------------------------+ diff --git a/fixtures/Host.Score.HTML.expected b/fixtures/Host.Score.HTML.expected index e42adf9..61c77d8 100644 --- a/fixtures/Host.Score.HTML.expected +++ b/fixtures/Host.Score.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Score's by Host</title> </head> <body> -<h1>Top 3 Score's by Host</h1> -<p>Score is calculated by combining all other metrics.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Score's by Host</h1><br /> +<br /> +<span class="quote">Score is calculated by combining all other metrics.</span><br /> +<br /> <pre>+-----+---------+-------+-----------------------------------+ | Pos | Host | Score | Last Kernel | +-----+---------+-------+-----------------------------------+ diff --git a/fixtures/Host.Uptime.HTML.expected b/fixtures/Host.Uptime.HTML.expected index 484aef6..2c38c84 100644 --- a/fixtures/Host.Uptime.HTML.expected +++ b/fixtures/Host.Uptime.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Uptime's by Host</title> </head> <body> -<h1>Top 3 Uptime's by Host</h1> -<p>Uptime is the total uptime of a host over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Uptime's by Host</h1><br /> +<br /> +<span class="quote">Uptime is the total uptime of a host over the entire lifespan.</span><br /> +<br /> <pre>+-----+---------+-----------------------------+-----------------------------------+ | Pos | Host | Uptime | Last Kernel | +-----+---------+-----------------------------+-----------------------------------+ diff --git a/fixtures/Kernel.Boots.HTML.expected b/fixtures/Kernel.Boots.HTML.expected index d4e7435..e748baf 100644 --- a/fixtures/Kernel.Boots.HTML.expected +++ b/fixtures/Kernel.Boots.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Boots's by Kernel</title> </head> <body> -<h1>Top 3 Boots's by Kernel</h1> -<p>Boots is the total number of host boots over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Boots's by Kernel</h1><br /> +<br /> +<span class="quote">Boots is the total number of host boots over the entire lifespan.</span><br /> +<br /> <pre>+-----+------------------------------+-------+ | Pos | Kernel | Boots | +-----+------------------------------+-------+ diff --git a/fixtures/Kernel.Score.HTML.expected b/fixtures/Kernel.Score.HTML.expected index 2446cfe..0aaa7ee 100644 --- a/fixtures/Kernel.Score.HTML.expected +++ b/fixtures/Kernel.Score.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Score's by Kernel</title> </head> <body> -<h1>Top 3 Score's by Kernel</h1> -<p>Score is calculated by combining all other metrics.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Score's by Kernel</h1><br /> +<br /> +<span class="quote">Score is calculated by combining all other metrics.</span><br /> +<br /> <pre>+-----+------------------------------------+-------+ | Pos | Kernel | Score | +-----+------------------------------------+-------+ diff --git a/fixtures/Kernel.Uptime.HTML.expected b/fixtures/Kernel.Uptime.HTML.expected index d57421a..84b1691 100644 --- a/fixtures/Kernel.Uptime.HTML.expected +++ b/fixtures/Kernel.Uptime.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Uptime's by Kernel</title> </head> <body> -<h1>Top 3 Uptime's by Kernel</h1> -<p>Uptime is the total uptime of a host over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Uptime's by Kernel</h1><br /> +<br /> +<span class="quote">Uptime is the total uptime of a host over the entire lifespan.</span><br /> +<br /> <pre>+-----+------------------------------------+-----------------------------+ | Pos | Kernel | Uptime | +-----+------------------------------------+-----------------------------+ diff --git a/fixtures/KernelMajor.Boots.HTML.expected b/fixtures/KernelMajor.Boots.HTML.expected index 298f5d0..d639641 100644 --- a/fixtures/KernelMajor.Boots.HTML.expected +++ b/fixtures/KernelMajor.Boots.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Boots's by KernelMajor</title> </head> <body> -<h1>Top 3 Boots's by KernelMajor</h1> -<p>Boots is the total number of host boots over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Boots's by KernelMajor</h1><br /> +<br /> +<span class="quote">Boots is the total number of host boots over the entire lifespan.</span><br /> +<br /> <pre>+-----+----------------+-------+ | Pos | KernelMajor | Boots | +-----+----------------+-------+ diff --git a/fixtures/KernelMajor.Score.HTML.expected b/fixtures/KernelMajor.Score.HTML.expected index 9aa35d0..fc5362c 100644 --- a/fixtures/KernelMajor.Score.HTML.expected +++ b/fixtures/KernelMajor.Score.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Score's by KernelMajor</title> </head> <body> -<h1>Top 3 Score's by KernelMajor</h1> -<p>Score is calculated by combining all other metrics.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Score's by KernelMajor</h1><br /> +<br /> +<span class="quote">Score is calculated by combining all other metrics.</span><br /> +<br /> <pre>+-----+----------------+-------+ | Pos | KernelMajor | Score | +-----+----------------+-------+ diff --git a/fixtures/KernelMajor.Uptime.HTML.expected b/fixtures/KernelMajor.Uptime.HTML.expected index c77248e..6608613 100644 --- a/fixtures/KernelMajor.Uptime.HTML.expected +++ b/fixtures/KernelMajor.Uptime.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Uptime's by KernelMajor</title> </head> <body> -<h1>Top 3 Uptime's by KernelMajor</h1> -<p>Uptime is the total uptime of a host over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Uptime's by KernelMajor</h1><br /> +<br /> +<span class="quote">Uptime is the total uptime of a host over the entire lifespan.</span><br /> +<br /> <pre>+-----+----------------+-----------------------------+ | Pos | KernelMajor | Uptime | +-----+----------------+-----------------------------+ diff --git a/fixtures/KernelName.Boots.HTML.expected b/fixtures/KernelName.Boots.HTML.expected index 298d9b7..37c38a1 100644 --- a/fixtures/KernelName.Boots.HTML.expected +++ b/fixtures/KernelName.Boots.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Boots's by KernelName</title> </head> <body> -<h1>Top 3 Boots's by KernelName</h1> -<p>Boots is the total number of host boots over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Boots's by KernelName</h1><br /> +<br /> +<span class="quote">Boots is the total number of host boots over the entire lifespan.</span><br /> +<br /> <pre>+-----+------------+-------+ | Pos | KernelName | Boots | +-----+------------+-------+ diff --git a/fixtures/KernelName.Score.HTML.expected b/fixtures/KernelName.Score.HTML.expected index 483414a..eae7811 100644 --- a/fixtures/KernelName.Score.HTML.expected +++ b/fixtures/KernelName.Score.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Score's by KernelName</title> </head> <body> -<h1>Top 3 Score's by KernelName</h1> -<p>Score is calculated by combining all other metrics.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Score's by KernelName</h1><br /> +<br /> +<span class="quote">Score is calculated by combining all other metrics.</span><br /> +<br /> <pre>+-----+------------+-------+ | Pos | KernelName | Score | +-----+------------+-------+ diff --git a/fixtures/KernelName.Uptime.HTML.expected b/fixtures/KernelName.Uptime.HTML.expected index 862be60..2c0bcf4 100644 --- a/fixtures/KernelName.Uptime.HTML.expected +++ b/fixtures/KernelName.Uptime.HTML.expected @@ -2,11 +2,18 @@ <html lang="en"> <head> <meta charset="utf-8"> +<link rel="shortcut icon" type="image/gif" href="https://foo.zone/favicon.ico" /> +<link rel="stylesheet" href="https://foo.zone/style.css" /> <title>Top 3 Uptime's by KernelName</title> </head> <body> -<h1>Top 3 Uptime's by KernelName</h1> -<p>Uptime is the total uptime of a host over the entire lifespan.</p> +<p class="header"> +<a href="/">Dashboard</a> | <a href="https://foo.zone">foo.zone</a> | <a class="textlink" href="/report?OutputFormat=HTML&limit=3">Report API</a> +</p> +<h1 style="display: inline">Top 3 Uptime's by KernelName</h1><br /> +<br /> +<span class="quote">Uptime is the total uptime of a host over the entire lifespan.</span><br /> +<br /> <pre>+-----+------------+-----------------------------+ | Pos | KernelName | Uptime | +-----+------------+-----------------------------+ diff --git a/internal/daemon/daemon.go b/internal/daemon/daemon.go index 63d80d4..e4f07f6 100644 --- a/internal/daemon/daemon.go +++ b/internal/daemon/daemon.go @@ -201,7 +201,7 @@ func root(statsDir string) http.HandlerFunc { Limit: 20, OutputFormat: goprecords.FormatHTML, All: true, - IncludeKernel: true, + IncludeKernel: false, } var buf bytes.Buffer if err := goprecords.WriteReports(&buf, aggregates, cfg); err != nil { diff --git a/internal/goprecords/order.go b/internal/goprecords/order.go index a20e5f9..6397e06 100644 --- a/internal/goprecords/order.go +++ b/internal/goprecords/order.go @@ -83,11 +83,20 @@ func StatsOrderList(statsOrder string) ([]CategoryMetric, error) { } func defaultStatsOrder() []CategoryMetric { - var out []CategoryMetric - for _, c := range []Category{CategoryHost, CategoryKernel, CategoryKernelMajor, CategoryKernelName} { - for _, m := range []Metric{MetricBoots, MetricUptime, MetricScore, MetricDowntime, MetricLifespan} { - out = append(out, CategoryMetric{c, m}) - } + return []CategoryMetric{ + {CategoryHost, MetricUptime}, + {CategoryHost, MetricLifespan}, + {CategoryHost, MetricDowntime}, + {CategoryHost, MetricBoots}, + {CategoryHost, MetricScore}, + {CategoryKernelMajor, MetricBoots}, + {CategoryKernelMajor, MetricUptime}, + {CategoryKernelMajor, MetricScore}, + {CategoryKernelName, MetricBoots}, + {CategoryKernelName, MetricUptime}, + {CategoryKernelName, MetricScore}, + {CategoryKernel, MetricBoots}, + {CategoryKernel, MetricUptime}, + {CategoryKernel, MetricScore}, } - return out } diff --git a/internal/goprecords/order_test.go b/internal/goprecords/order_test.go index c085723..0a7d5cb 100644 --- a/internal/goprecords/order_test.go +++ b/internal/goprecords/order_test.go @@ -50,15 +50,34 @@ func TestParseStatsOrder(t *testing.T) { } func TestStatsOrderList(t *testing.T) { - // Empty string returns default order (all category×metric pairs). + wantDefaultPrefix := []CategoryMetric{ + {CategoryHost, MetricUptime}, + {CategoryHost, MetricLifespan}, + {CategoryHost, MetricDowntime}, + {CategoryHost, MetricBoots}, + {CategoryHost, MetricScore}, + {CategoryKernelMajor, MetricBoots}, + {CategoryKernelMajor, MetricUptime}, + {CategoryKernelMajor, MetricScore}, + {CategoryKernelName, MetricBoots}, + {CategoryKernelName, MetricUptime}, + {CategoryKernelName, MetricScore}, + {CategoryKernel, MetricBoots}, + {CategoryKernel, MetricUptime}, + {CategoryKernel, MetricScore}, + } got, err := StatsOrderList("") if err != nil { t.Fatalf("StatsOrderList(\"\"): %v", err) } - if len(got) == 0 { - t.Error("StatsOrderList(\"\"): got empty order") + if len(got) != len(wantDefaultPrefix) { + t.Fatalf("StatsOrderList(\"\"): len=%d want %d", len(got), len(wantDefaultPrefix)) + } + for i := range wantDefaultPrefix { + if got[i] != wantDefaultPrefix[i] { + t.Errorf("StatsOrderList(\"\")[%d] = %v; want %v", i, got[i], wantDefaultPrefix[i]) + } } - // Custom order: Host:Uptime first, then rest of default. got, err = StatsOrderList("Host:Uptime") if err != nil { t.Fatalf("StatsOrderList(\"Host:Uptime\"): %v", err) @@ -69,4 +88,7 @@ func TestStatsOrderList(t *testing.T) { if got[0].Category != CategoryHost || got[0].Metric != MetricUptime { t.Errorf("StatsOrderList(\"Host:Uptime\")[0] = %v; want Host:Uptime", got[0]) } + if got[1] != (CategoryMetric{CategoryHost, MetricLifespan}) { + t.Errorf("StatsOrderList(\"Host:Uptime\")[1] = %v; want Host:Lifespan", got[1]) + } } diff --git a/internal/goprecords/report_format.go b/internal/goprecords/report_format.go index 0d5e4dd..eb2c49c 100644 --- a/internal/goprecords/report_format.go +++ b/internal/goprecords/report_format.go @@ -44,19 +44,26 @@ func (r reportBuilder) formatReportHTML(rows []tableRow, hasLastKernel bool) str desc := MetricDescription(r.metric) var b strings.Builder - b.WriteString("<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<title>") + b.WriteString("<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n") + 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<h") + 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&limit=") + b.WriteString(strconv.FormatUint(uint64(r.limit), 10)) + b.WriteString("\">Report API</a>\n</p>\n<h") b.WriteString(strconv.Itoa(hl)) - b.WriteString(">") + b.WriteString(" style=\"display: inline\">") b.WriteString(template.HTMLEscapeString(title)) b.WriteString("</h") b.WriteString(strconv.Itoa(hl)) - b.WriteString(">\n") + b.WriteString("><br />\n<br />\n") if desc != "" { - b.WriteString("<p>") + b.WriteString("<span class=\"quote\">") b.WriteString(template.HTMLEscapeString(desc)) - b.WriteString("</p>\n") + b.WriteString("</span><br />\n<br />\n") } b.WriteString("<pre>") b.WriteString(template.HTMLEscapeString(ascii)) diff --git a/internal/version/version.go b/internal/version/version.go index 83b3aa0..371f9d1 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.3.1" +const Tag = "0.4.0" |
