-
v1.8.0-Beta.17
Pre-releaseAll checks were successfulCI / Frontend Tests (push) Successful in 6sTests / Run Benchmarks (push) Successful in 1m30sCI / Go Build & Test (push) Successful in 1m49sDocker Release / build-and-push (push) Successful in 52sTests / Security Scan (push) Successful in 1m36sRelease / Build & Release (push) Successful in 1m21sRelease / Build & Release-1 (push) Successful in 1m18sTests / Run Tests (push) Successful in 4m44sRelease / release (push) Successful in 1m16sRelease / Trigger retention prune (push) Successful in 1sRelease / Rebuild the website (push) Successful in 1sreleased this
2026-09-15 22:30:44 +02:00 | 1 commits to main since this releaseThe updater says it worked, in your language
Fixed
- The updater's success line existed in no language at all
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.7.5
StableAll checks were successfulRebuild the website / Rebuild the website (push) Successful in 1sCI / Frontend Tests (push) Successful in 6sCI / Go Build & Test (push) Successful in 1m38sTests / Run Benchmarks (push) Successful in 1m32sDocker Release / build-and-push (push) Successful in 51sTests / Security Scan (push) Successful in 1m31sRelease / Build & Release-1 (push) Successful in 1m3sRelease / Build & Release (push) Successful in 4m26sTests / Run Tests (push) Successful in 7m14sRelease / release (push) Successful in 1m12sRelease / Trigger retention prune (push) Successful in 1sRelease / Rebuild the website (push) Successful in 2sreleased this
2026-09-14 17:30:41 +02:00 | 145 commits to main since this releaseA mark of its own, and a theme that follows yours
Added
- A mark of Lastboard's own, drawn as vectors
- Follow the device, for whoever asks it to
- Let people remove Lastboard without doing it by hand
- Tell a blip apart from an outage in the activity bar
Fixed
- Give the login and setup pages a theme colour of their own
- Label the latency axis for the span it covers
- Let the status bar follow the theme the user picked
- Make the activity bar follow the range you pick
- Open the device's own colour picker
- Paint the splash screen in the theme the app actually opens in
- Say "30 days" where the scale said "720h"
- Shrink the avatar the wizard sends, like the settings panel does
- Stop painting the Android status bar in the accent colour
- Stop the installer from taking down what it did not install
- Verify the signature, which the installer never did
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.7.4
StableAll checks were successfulCI / Frontend Tests (push) Successful in 7sTests / Run Benchmarks (push) Successful in 1m13sCI / Go Build & Test (push) Successful in 1m22sDocker Release / build-and-push (push) Successful in 46sTests / Security Scan (push) Successful in 1m18sRelease / Build & Release (push) Successful in 1m19sTests / Run Tests (push) Successful in 3m44sRelease / Build & Release-1 (push) Successful in 1m4sRelease / release (push) Successful in 1m0sRelease / Trigger retention prune (push) Successful in 1sRelease / Rebuild the website (push) Successful in 1sreleased this
2026-09-06 20:23:08 +02:00 | 177 commits to main since this releaseInstalls as an app, and speaks your language
Fixed
- Ship the icons and the manifest link that installing needs
- Tell the login and setup pages what language they are in
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
0 downloads
-
v1.7.3
StableAll checks were successfulCI / Frontend Tests (push) Successful in 32sCI / Go Build & Test (push) Successful in 1m39sTests / Run Benchmarks (push) Successful in 1m8sDocker Release / build-and-push (push) Successful in 1m1sTests / Security Scan (push) Successful in 1m28sRelease / Build & Release (push) Successful in 52sTests / Run Tests (push) Successful in 4m14sRelease / Build & Release-1 (push) Successful in 1m8sRelease / release (push) Successful in 1m4sRelease / Trigger retention prune (push) Successful in 1sRelease / Rebuild the website (push) Successful in 1sreleased this
2026-09-06 19:44:56 +02:00 | 183 commits to main since this releaseThe demo page renders again
Fixed
- Restore the demo page, blank since 1.7.1
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.7.2
StableAll checks were successfulCI / Frontend Tests (push) Successful in 5sTests / Run Benchmarks (push) Successful in 59sCI / Go Build & Test (push) Successful in 1m8sDocker Release / build-and-push (push) Successful in 52sTests / Security Scan (push) Successful in 1m42sRelease / Build & Release (push) Successful in 48sTests / Run Tests (push) Successful in 3m4sRelease / Build & Release-1 (push) Successful in 57sRelease / release (push) Successful in 51sRelease / Trigger retention prune (push) Successful in 1sRelease / Rebuild the website (push) Successful in 1sreleased this
2026-09-04 19:34:16 +02:00 | 187 commits to main since this releaseSettings reachable on tablets in landscape
Fixed
- Restore access to settings on tablets in landscape
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1.7.1
StableSome checks failedCI / Frontend Tests (push) Successful in 7sTests / Security Scan (push) Has been cancelledCI / Go Build & Test (push) Has been cancelledTests / Run Tests (push) Has been cancelledTests / Run Benchmarks (push) Has been cancelledDocker Release / build-and-push (push) Successful in 55sRelease / Build & Release-1 (push) Successful in 1m1sRelease / Build & Release (push) Successful in 1m3sRelease / release (push) Successful in 1m3sRelease / Trigger retention prune (push) Successful in 1sRelease / Rebuild the website (push) Successful in 1sreleased this
2026-09-04 14:36:06 +02:00 | 192 commits to main since this releaseSecurity and correctness fixes
A maintenance release. Everything below applies to an existing installation the
moment it updates — no configuration changes, no migration steps.Fixed
Security:
- The login lockout could be evaded behind a reverse proxy. A proxy appends
toX-Forwarded-Forrather than replacing it, so the leftmost entry is
written by whoever is calling. Lastboard read that one, which let an attacker
hand themselves a fresh address on every attempt and never trip the five-try
lockout. It now reads the entry your own proxy added. If requests reach
Lastboard through more than one proxy, setTRUST_PROXY_HOPS. - A request for a missing file under
/dist/or/styles/returned the
application shell without a session. Authentication no longer exempts
anything by path prefix. - The monitoring notification URL and token were readable by any account.
They are the administrator's credentials for their own alert channel; only an
administrator receives them now. - The instance metadata service is refused on every URL the server fetches
for you, including the background monitor. Pointing widgets and bookmarks at
your own network is unchanged — that is what Lastboard is for. - The API widget no longer forwards headers that impersonate the caller
(Cookie, theX-Forwarded-*family). API keys and every preset still work. - Logging in and first-run setup now refuse writes the browser reports as coming
from another site, and the WebSocket honours a forwarded host only when
TRUST_PROXYsays there is a proxy in front. - Request bodies are capped everywhere, the address table behind rate limiting
can no longer grow without bound, and the release key is now a list so it can
be rotated without stranding installations that are behind.
Reliability:
- Shutting down no longer cuts background work off mid-write. A restart could
previously interrupt the icon migration or the monitor while it was writing. - A handler that panics now answers with an error instead of dropping the
connection with no status. - Lastboard refuses to open a database written by a newer version, rather than
migrating it downwards. - Settings that cannot be read are reported at startup:
TRUST_PROXY=True, with
a capital letter, silently meant the opposite of what it looked like.
Languages:
- Right-to-left languages are laid out right to left. Arabic, Persian and
Urdu were translated but rendered left to right. - The page now declares the language it is actually in, which is what a screen
reader announces and what the browser hyphenates by. It always said English. - Dates and numbers are formatted in the language you chose, not the browser's,
and values inserted into a sentence keep their punctuation in place.
Changed
- Releases are reproducible. Two builds of the same source now produce
identical binaries, so anyone can rebuild a release and compare it against the
published checksums. The recipe is in the security documentation. - The Docker and monitoring widgets refresh their list instead of rebuilding
themselves on every tick, so an open popup stays open and a scrolled list stays
where you left it. - Bookmark health checks are probed in bounded batches rather than all at once.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The login lockout could be evaded behind a reverse proxy. A proxy appends
-
v1.7.0
StableSome checks failedCI / Frontend Tests (push) Successful in 5sCI / Go Build & Test (push) Successful in 1m2sTests / Run Benchmarks (push) Successful in 58sTests / Security Scan (push) Failing after 49sDocker Release / build-and-push (push) Successful in 1m1sRelease / Build & Release (push) Successful in 53sTests / Run Tests (push) Successful in 2m48sRelease / Build & Release-1 (push) Successful in 55sRelease / release (push) Successful in 52sRelease / Rebuild the website (push) Failing after 1sRelease / Trigger retention prune (push) Successful in 1sreleased this
2026-08-19 22:20:04 +02:00 | 229 commits to main since this releaseYour board stands on its own
Added
- Add a widget for the services you monitor
- Bring in the icons a board was already using
- Keep demo instances out of search results
- Keep picked icons on your own instance
- Move every setting into the widget's config screen
- One list of the containers you chose, from every host
- Open a container's service from its row
- Pick a host on the left, configure it on the right
- Read the address a container labels itself with
- Show the widgets the demo never had
- Store the icon when a bookmark or container is saved
- The brand orange is the default accent, everywhere it was blue
- The same status dot the monitor widget uses
Fixed
- A task list's boxes are meant to be untickable
- Accept the addresses Docker itself uses
- Build the split from the form's own primitives
- Dialogs opened from Preferences dim what is behind them
- Fill the telemetry cell while its reading is on the way
- Keep test and CI commits out of the release notes
- :latest is the stable release again, not a beta from August
- Let the Data panel read as three choices, not one wall
- Make clearing the history say what it clears
- Make the stable path answerable without a terminal
- Monitoring stops showing settings it hasn't read yet
- Name the widget, align its columns and use the house dropdown
- One name for the default dashboard, in English, on every install
- Quotes and horizontal rules come out of the widget again
- Restore the vertical spacing every settings screen had lost
- Saving a Notepad's settings no longer erases the note
- Say where the icons come from even when nothing is pending
- Show one host's containers at a time
- Start the picker clean every time it opens
- Stop cutting container addresses in the settings screen
- Stop the release titles from becoming features
- Stop the width rule from collapsing the toggle switches
- The port in the example address follows the connection type
- The ports column takes what it needs and the name keeps the rest
- The preferences panel uses the width it has
- The settings window slides in again
Changed
- Ask who you are without waiting for the locale file
- Fold Alerts into Monitoring and stop over-explaining
- Give every widget the same header
- One settings window, at one size
- Read a host's container stats in one request
- Read the token in one place
- Resolve picker results in one place
- Stop rebuilding every widget on each re-render
- Summarise the overview in the database
- Drop nine strings nothing asks for any more
- Translate the monitoring widget into every locale
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
3 downloads
-
v1.6.2
StableAll checks were successfulDocker Release / build-and-push (push) Successful in 54sRelease / Build & Release-1 (push) Successful in 1m27sRelease / Build & Release (push) Successful in 1m29sRelease / release (push) Successful in 1m9sRelease / Trigger retention prune (push) Successful in 1sRelease / Rebuild the website (push) Successful in 1sreleased this
2026-08-06 16:15:19 +02:00 | 353 commits to main since this releaseUpdate window, mobile scrolling and UI polish
Added
- Let the API widget's view be chosen explicitly
- Put the whole update behind one modal with a timeline
- Report the update progress step by step
Fixed
- Degrade gracefully on an unexpected weather payload
- Drop the ignored User-Agent on the geocoding request
- Fail the build when asset sync fails
- Flip the forecast tooltip when the top bar would cut it off
- Keep the clock working on an unusable time zone
- Let config modals scroll without clipping select dropdowns
- Let the dashboard scroll down to the last item on mobile
- Make the colour picker usable with touch and screen readers
- Name an expired session instead of blaming the update
- Prune history on startup and forget deleted monitors
- Refresh the starter dashboard for new installs
- Reject setup early and cap request bodies
- Restore the dark autofill colours in every text field
- Stop the scrollbar flashing when a dialog opens, and cover the rest
- Stop the scrollbar flashing when a widget dialog opens
- Tolerate a missing build stamp outside the bundler
Changed
- Define the shared style primitives in one place
- Drop the shared input rule that overrode the components
- Make locale files cacheable
- Stop embedding duplicate and unused assets
- Unify motion curves, dialogs and inputs
- Describe the update window
- Drop an unused component and its dead translations
- Lay the API widget's advanced form out in two columns
- Make the release script fail safely and preview itself
- Stop truncating long select labels and drop the native resizer
- Translate the update window into every locale
Downloads
-
Source code (ZIP)
6 downloads
-
Source code (TAR.GZ)
4 downloads
-
v1.6.1
StableAll checks were successfulDocker Release / build-and-push (push) Successful in 1m41sRelease / Build & Release-1 (push) Successful in 1m53sRelease / Build & Release (push) Successful in 1m55sRelease / release (push) Successful in 59sRelease / Trigger retention prune (push) Successful in 1sreleased this
2026-08-01 00:18:22 +02:00 | 398 commits to main since this releaseAdded
- Six more service presets for the API widget — Proxmox VE, Home Assistant, Uptime Kuma, Overseerr/Jellyseerr, Bazarr and Prowlarr. A preset can now ask for one extra detail on top of the base URL and credential — the node, entity or status page it should read — which is what these services need to point at something specific.
- A search box in the service picker — the list holds seventeen services now, so you can type the name instead of scrolling for it.
- Uptime monitoring in the live demo — the demo dashboard shows the status page, per-service latency history and the hover tooltip, with one service in an outage so the feature reads at a glance.
Changed
- The API widget documentation covers the extra preset field, and explains why an endpoint that answers with a top-level JSON array cannot be rendered as a list.
- The Go module path now points at this repository instead of the project's former home.
- The updater's download, checksum and archive-extraction steps are covered by tests, as are the colour picker's conversions.
Downloads
-
Source code (ZIP)
5 downloads
-
Source code (TAR.GZ)
4 downloads
-
v1.6.0
StableAll checks were successfulDocker Release / build-and-push (push) Successful in 49sRelease / Build & Release-1 (push) Successful in 1m30sRelease / Build & Release (push) Successful in 1m34sRelease / release (push) Successful in 1m12sRelease / Trigger retention prune (push) Successful in 2sreleased this
2026-07-31 00:26:47 +02:00 | 406 commits to main since this releaseAdded
- 1.6.0 beta cycle: cross-dashboard item moves, generic API widget with presets, uptime monitoring with history and alerts, Homepage/Dashy import and native export, and a card motion system
- Accept dashboard_id in UpdateItem to move items
- Add 8 more service presets
- Add a Move action to the reorder sheet
- Add an Open Collective donation link to About
- Add append-only monitor_checks history store
- Add block auto-place primitives
- Alerts via ntfy/Gotify/webhook
- Always-on backend scheduler
- Arrival highlight after moving between dashboards
- Auto-refresh the open history drawer
- Bucket the heartbeat across the whole range
- Built-in uptime monitoring, a generic API widget, cross-dashboard moves and Homepage/Dashy import
- Bulk-move items via a kebab menu and topbar selection
- Clear-data action, Exit button, wider list
- Coordinated ranges and Uptime-Kuma-style hover
- Dissolve cards on delete
- Exclusive topbar modes and a donation link in About
- Full-screen status page with shared detail
- Generic API widget (metric mode)
- Group the service picker by category
- Guided service presets (AdGuard, Paperless, Immich)
- Import UI + materializer + native export button
- Keep topbar, redesign list rows, red clear menu
- Latency chart, incidents and range selector
- Make edit, settings and the status page exclusive modes
- Materialize newly-created cards
- Move bookmarks and widgets between dashboards
- Move sections between dashboards with their subtree
- Native YAML export + competitor parsers
- On/off toggle and topbar status icon
- Per-item history and uptime endpoint
- Redesign toasts (bottom-center, actions, progress bar)
- Rich hover tooltip on status dots
- Server-side fetch endpoint for the generic API widget
- Settings endpoint for mode and interval
- Status-checks toggle in settings
- Status-history detail drawer
- Status-page overview of all monitors
- Support list mode via array path extraction
- Support non-selectable category headers
- Timed probe and monitored-item enumeration
- Uptime-Kuma-grade detail redesign
- Visible board entrance + stronger create/move/delete cues
Fixed
- Allow selecting an option with an empty value
- API config polish and config-on-add
- History drawer crashed on services with no outages
- Invalid Date in history timestamps
- Probe the URL stored in bookmark content
- Robust positioning, centered callout, click-to-toggle
- Stop run-together changelog headers
- Use the panel's own field styling for notify URL/token
Changed
- Dedicated Data section, disambiguate backup vs import
- Drawer footer and modal-style close button
- Recent-beats heartbeat like Uptime Kuma
- Split Monitoring and Notifications sections
- Chore(lint): modernize remaining b.N benchmarks to b.Loop()
- Chore(lint): satisfy sqlrowserr and modernize analyzers
- Clarify that new dashboards are created from the Add menu, not the switcher
- Docs(changelog): reflow historical entries to the correct formatting
- Docs(readme): cover the API widget, monitoring and import/export
- Document API widget, monitoring, dashboards, import/export and preferences
- I18n(dashboard): clarify move picker title as 'Move to… (Dashboard)'
- I18n(dashboard): translate the move-to picker into all locales
- Revert(mobile): drop move-to-dashboard from the reorder sheet
- Show the Add (+) menu when creating dashboards and bookmarks
- Style(monitoring): wider, column-aligned status-page list
- Use the new product mockup as the README hero
Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
4 downloads