Skip to content

v0.3.5

Choose a tag to compare

@github-actions github-actions released this 04 Oct 18:30
· 319 commits to main since this release

New

  • Tailscale: connect your tailnet in Integrations, Tailscale (Root admins) with an OAuth client. Add a server through Tailscale with one join command, no open SSH port or tunnel needed, and existing servers can move onto Tailscale from their page. The dashboard's own machine joins with one click, and Serve reaches others at their Tailscale address; servers both behind NAT now meet in the private network over Tailscale. Each server shows its Tailscale address and state, and a device removed in the Tailscale admin console shows at once, with Join again right where the error is.
  • Commit statuses: each deployment shows on its commit and pull request on GitHub, GitLab, Gitea/Forgejo and Bitbucket (building, deployed or failed, with a link to the deployment), toggled per service in Settings, Source.
  • Metrics export: GET /api/v1/metrics answers in the Prometheus format, and Integrations, Metrics makes a scrape token, a ready prometheus.yml and a Grafana dashboard to import.
  • Sign in with Cloudflare: connect a Cloudflare account by signing in, without an API token; access renews by itself.
  • Several Cloudflare accounts: a login that reaches several accounts gets one card per account, each with its own domains, tunnels and page (with one account, the Cloudflare page is that account).
  • Default server: each organization has one, used for new services and by the API and CLI when no server is given; set it from a server's page.
  • Removing a server with services on it: stop and delete them (optionally with their data), or keep them running with Serve's proxy and Cloudflare tunnel removed unless you keep them.

Fixed

  • A server holding a read replica of another server's database cannot be removed until the replica is.
  • The private network's Join button waits for the server's addresses.
  • The live update for a reconnected server tunnel works again.

Polished

  • Removing a server also removes Serve's proxy and log collector there; the log collector only runs on servers where a service a log drain picks runs.
  • A failed certificate renewal shows on the certificate; a renewal whose Cloudflare account was disconnected uses a connected account that manages the domains, and Renew now says at once when none does.
  • Logs say why they cannot stream instead of reconnecting without end; deployments show a thin check when they worked and a cross when they failed, with status unknown in yellow.
  • Projects show their health in words (All running, 1 failing, 2 stopped).
  • Dialogs scroll inside on small screens, with the title and buttons in view.
  • Tooltips on status dots open at once, and clicking a hidden IP never opens the card around it.
  • The Deployments tab is one full-width list, and the service overview has no Recent deployments card.
  • Private networks and database branches open in the view chosen last time, without a flash of the list.

Commits

  • f6480992 Certificates: a renewal whose Cloudflare account was disconnected takes a connected one that manages the domains, Renew now says at once when none does, and a failed renewal of a still valid certificate shows on its card
  • abcbf3d9 Cloudflare: one card per Cloudflare account, with logins (a sign-in or a token) shared by the accounts they reach; each card shows only its account's domains, renewal and Reconnect fix every card of a login, and a login goes once no card uses it
  • 4f5c1604 Cloudflare: a list of accounts, each with its own page for its domains and tunnels; instant tooltips on project status dots and the deployment check
  • 2d70293f Cloudflare: with one account the page is that account's page, with Connect another account; account pages of several have a link back to all accounts
  • 1104b5a7 Cloudflare page with one account: titled Cloudflare, with the account under the title, so it reads as the page itself and not a details page
  • 9adbfdfd Report each deployment's state on its commit (GitHub, GitLab, Gitea/Forgejo, Bitbucket)
  • f59d6bb5 Metrics export: GET /api/v1/metrics in the Prometheus text format, and Integrations > Metrics with a scrape token, prometheus.yml and a Grafana dashboard
  • ec92621c Projects: the health in words (All running, 1 failing, 2 stopped) instead of a bar per service
  • a9fb5f77 Tailscale: connect a tailnet in Integrations, add servers through it or move existing ones, reach them at their Tailscale address, and run the private network over it between servers behind NAT
  • cca59d7d Dialogs: at most the screen's height, the body scrolls inside while the title and buttons stay in view
  • f59a22f5 Tailscale: say when the OAuth client lacks the Auth Keys scope (Tailscale answers not found)
  • 038ba951 Hidden IP: showing or hiding it never opens the card around it, with a slightly larger target
  • c2a81a93 Tailscale: a server with its own address goes back to it when its device is removed from the tailnet
  • 7ac359bb Format
  • 799095db Tailscale: opening the page and Test check the tailnet at once, so removed devices show without waiting for the worker; the dashboard's machine says when it left the tailnet
  • 65d5e99e Tailscale: each tailnet card takes the full width
  • 05ef7eb9 Tailscale: the tailnet card shows one list of machines, each with its state and next step, and no repeated details
  • dad5171f Tailscale: a machine still logged in to the same tailnet, whose device was removed, joins again without the move warning
  • 2c31a900 Tailscale: a server whose device left the tailnet says so and to run its join command, instead of pointing at the firewall
  • e701d706 Tailscale card: a server whose device left the tailnet shows as not joined, with Join again and how to run it
  • a117d5d7 Servers: when a server left its tailnet, the error at the top offers Join again and shows the command right there
  • 1553a0d5 Servers: a Tailscale server that does not answer gets its tailnet checked at once, so a removed device shows Join again right away
  • 1b3b28e3 Private networks and database branches: the chosen view is a cookie the server reads, so the page opens in it without showing the list first
  • dafbba0e Default server: each organization has one (the first usable server until changed), new services start on it, Make default on a server's page and a Default badge; the Tailscale join command button hides while the server answers
  • 4a877943 Log drains: the collector runs only on servers where a service a drain picks runs (its own server, extra servers or database replicas)
  • 6c4faf08 Removing a server also removes Serve's proxy, its helpers and the log collector there
  • 4084d5a7 Private network: Join waits until the server's addresses are loaded, and says it is looking them up
  • a9814398 Remove server with services on it: stop and delete them (optionally with their data), or keep them running with the proxy and Cloudflare tunnel removed unless kept; the name is typed to confirm
  • 0c42cbe7 Bug check: a Cloudflare login with one card keeps every zone its token reaches (tokens connected before the split), and a server holding a read replica of another server's database cannot be removed until the replica is

Compare: v0.3.4 → v0.3.5