feat: presentation layer for v0.1.1 announce #141
@@ -53,6 +53,7 @@ jobs:
|
|||||||
GORELEASER_FORCE_TOKEN: gitea
|
GORELEASER_FORCE_TOKEN: gitea
|
||||||
GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
||||||
GITEA_API_URL: http://gitea:3000/api/v1
|
GITEA_API_URL: http://gitea:3000/api/v1
|
||||||
|
HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }}
|
||||||
|
|
||||||
# GitHub release relaying is handled by .github/workflows/mirror-release.yml,
|
# GitHub release relaying is handled by .github/workflows/mirror-release.yml,
|
||||||
# which runs on GitHub Actions when the push mirror delivers the tag and
|
# which runs on GitHub Actions when the push mirror delivers the tag and
|
||||||
|
|||||||
@@ -35,11 +35,16 @@ jobs:
|
|||||||
|
|
||||||
TAGS="lerkolabs/uptop:${TAG}"
|
TAGS="lerkolabs/uptop:${TAG}"
|
||||||
TAGS="${TAGS},lerkolabs/uptop:sha-${SHORT_SHA}"
|
TAGS="${TAGS},lerkolabs/uptop:sha-${SHORT_SHA}"
|
||||||
|
TAGS="${TAGS},ghcr.io/lerkolabs/uptop:${TAG}"
|
||||||
|
TAGS="${TAGS},ghcr.io/lerkolabs/uptop:sha-${SHORT_SHA}"
|
||||||
# :latest only for real releases — rc rehearsal tags must not move it
|
# :latest only for real releases — rc rehearsal tags must not move it
|
||||||
if [ "${{ github.ref_type }}" = "tag" ]; then
|
if [ "${{ github.ref_type }}" = "tag" ]; then
|
||||||
case "$TAG" in
|
case "$TAG" in
|
||||||
*-*) ;;
|
*-*) ;;
|
||||||
*) TAGS="${TAGS},lerkolabs/uptop:latest" ;;
|
*)
|
||||||
|
TAGS="${TAGS},lerkolabs/uptop:latest"
|
||||||
|
TAGS="${TAGS},ghcr.io/lerkolabs/uptop:latest"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
echo "tags=$TAGS" >> "$GITHUB_OUTPUT"
|
echo "tags=$TAGS" >> "$GITHUB_OUTPUT"
|
||||||
@@ -56,6 +61,13 @@ jobs:
|
|||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Log in to GHCR
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ secrets.GHCR_USERNAME }}
|
||||||
|
password: ${{ secrets.GHCR_TOKEN }}
|
||||||
|
|
||||||
# Scan must gate the push: build amd64 locally, scan it, and only then run
|
# Scan must gate the push: build amd64 locally, scan it, and only then run
|
||||||
# the multi-arch push (amd64 layers come from the builder cache, so the
|
# the multi-arch push (amd64 layers come from the builder cache, so the
|
||||||
# second build only adds the arm64 work).
|
# second build only adds the arm64 work).
|
||||||
|
|||||||
@@ -27,3 +27,4 @@ tmp
|
|||||||
*.local.md
|
*.local.md
|
||||||
data/
|
data/
|
||||||
.env
|
.env
|
||||||
|
vhs
|
||||||
|
|||||||
@@ -59,6 +59,24 @@ nfpms:
|
|||||||
dst: /usr/share/doc/uptop/LICENSE
|
dst: /usr/share/doc/uptop/LICENSE
|
||||||
type: doc
|
type: doc
|
||||||
|
|
||||||
|
brews:
|
||||||
|
- name: uptop
|
||||||
|
repository:
|
||||||
|
owner: lerkolabs
|
||||||
|
name: homebrew-tap
|
||||||
|
token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}"
|
||||||
|
url_template: "https://github.com/lerkolabs/uptop/releases/download/{{ .Tag }}/{{ .ArtifactName }}"
|
||||||
|
commit_author:
|
||||||
|
name: lerkolabs-bot
|
||||||
|
email: bot@lerkolabs.com
|
||||||
|
homepage: https://github.com/lerkolabs/uptop
|
||||||
|
description: Self-hosted uptime monitoring with a TUI over SSH
|
||||||
|
license: MIT
|
||||||
|
install: |
|
||||||
|
bin.install "uptop"
|
||||||
|
test: |
|
||||||
|
system bin/"uptop", "version"
|
||||||
|
|
||||||
# Changelog generation must stay enabled: the --release-notes flag is consumed
|
# Changelog generation must stay enabled: the --release-notes flag is consumed
|
||||||
# by the changelog pipe, so disabling it silently drops the git-cliff notes
|
# by the changelog pipe, so disabling it silently drops the git-cliff notes
|
||||||
# (empty release body on v0.1.0-rc.1). With --release-notes set, GoReleaser
|
# (empty release body on v0.1.0-rc.1). With --release-notes set, GoReleaser
|
||||||
|
|||||||
@@ -1,16 +1,18 @@
|
|||||||
<div align="center">
|
<div align="center">
|
||||||
<h1>uptop</h1>
|
<img src="assets/logo.svg" alt="uptop" width="320">
|
||||||
<p>Self-hosted uptime monitoring with a TUI over SSH.</p>
|
<p>Self-hosted uptime monitoring with a TUI over SSH.</p>
|
||||||
<p>No browser. No client install. Just <code>ssh -p 23234 your-server</code>.</p>
|
<p>No browser. No client install. Just <code>ssh -p 23234 your-server</code>.</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<a href="https://gitea.lerkolabs.com/lerkolabs/uptop/actions"><img src="https://gitea.lerkolabs.com/lerkolabs/uptop/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
<a href="https://gitea.lerkolabs.com/lerkolabs/uptop/actions"><img src="https://gitea.lerkolabs.com/lerkolabs/uptop/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
||||||
<img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License">
|
<a href="https://github.com/lerkolabs/uptop/releases/latest"><img src="https://img.shields.io/github/v/release/lerkolabs/uptop" alt="Latest Release"></a>
|
||||||
|
<a href="https://goreportcard.com/report/github.com/lerkolabs/uptop"><img src="https://goreportcard.com/badge/github.com/lerkolabs/uptop" alt="Go Report Card"></a>
|
||||||
<img src="https://img.shields.io/badge/go-1.26-00ADD8?logo=go&logoColor=white" alt="Go 1.26">
|
<img src="https://img.shields.io/badge/go-1.26-00ADD8?logo=go&logoColor=white" alt="Go 1.26">
|
||||||
<img src="https://img.shields.io/docker/pulls/lerkolabs/uptop" alt="Docker Pulls">
|
<img src="https://img.shields.io/docker/pulls/lerkolabs/uptop" alt="Docker Pulls">
|
||||||
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<img src="assets/monitors.png" alt="uptop monitors view" width="800">
|
<img src="assets/demo.gif" alt="uptop demo" width="800">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
## What is this
|
## What is this
|
||||||
@@ -38,18 +40,27 @@ Canonical repo: [gitea.lerkolabs.com/lerkolabs/uptop](https://gitea.lerkolabs.co
|
|||||||
|
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
<td><img src="assets/monitors.png" alt="monitors dashboard" width="400"></td>
|
||||||
<td><img src="assets/detail.png" alt="detail panel" width="400"></td>
|
<td><img src="assets/detail.png" alt="detail panel" width="400"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
<td><img src="assets/alerts.png" alt="alerts view" width="400"></td>
|
<td><img src="assets/alerts.png" alt="alerts view" width="400"></td>
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="assets/logs.png" alt="logs view" width="400"></td>
|
<td><img src="assets/logs.png" alt="logs view" width="400"></td>
|
||||||
<td><img src="assets/nodes.png" alt="cluster nodes" width="400"></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" align="center"><img src="assets/theme.png" alt="theme selection" width="600"></td>
|
<td><img src="assets/nodes.png" alt="cluster nodes" width="400"></td>
|
||||||
|
<td><img src="assets/theme.png" alt="theme selection" width="400"></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
### Themes
|
||||||
|
|
||||||
|
Five built-in themes: Flexoki Dark, Tokyo Night, Catppuccin Mocha, Nord, Gruvbox. Press `T` to cycle.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img src="assets/themes.png" alt="all five themes" width="800">
|
||||||
|
</p>
|
||||||
|
|
||||||
## Quick start
|
## Quick start
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 823 KiB |
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 83 KiB |
@@ -0,0 +1,10 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 80" fill="none">
|
||||||
|
<!-- Terminal-inspired text mark for uptop -->
|
||||||
|
<rect width="320" height="80" rx="8" fill="#1C1B1A"/>
|
||||||
|
<!-- Prompt caret -->
|
||||||
|
<text x="16" y="52" font-family="'JetBrains Mono','Fira Code','SF Mono',monospace" font-size="36" font-weight="700" fill="#3AA99F">▲</text>
|
||||||
|
<!-- "uptop" in monospace -->
|
||||||
|
<text x="52" y="52" font-family="'JetBrains Mono','Fira Code','SF Mono',monospace" font-size="36" font-weight="700" fill="#CECDC3">uptop</text>
|
||||||
|
<!-- Status dot -->
|
||||||
|
<circle cx="296" cy="40" r="6" fill="#879A39"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 604 B |
|
Before Width: | Height: | Size: 206 KiB After Width: | Height: | Size: 220 KiB |
|
Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 216 KiB |
|
After Width: | Height: | Size: 269 KiB |