Releases: lissy93/dashy
Release list
Release 4.5.0
Dashy 4.5.0 is out!
For full details, see discussion #2277 - any questions or feedback, drop them there :)
✨ New features
- Drag and drop editing. Grab any section, item or widget and drag it around to reorder or move it.
- A new Live Tennis widget. Live scores from the ATP and WTA tours, updating as you watch.
- The GitHub stats widget is rebuilt. It now uses GitHub's own API, so it's more reliable, and you can add a token to raise the rate limit.
- Nicer numbers in the custom-api widget. New formats for bytes, bitrate and duration, plus scaling, prefixes, suffixes and swapping raw values for your own labels.
- Long item titles look better. They scroll when you hover and show the full text in a tooltip, instead of getting cut off.
- A logout redirect option. Send people to a page of your choice after they log out, handy when you're behind an auth proxy.
- You can turn off the proxy endpoints. Set the
DISABLE_PROXY_ENDPOINTSenv var if you don't need Dashy's built-in CORS proxy. - Client-side only OIDC. A new option to skip the server-side token checks, for setups that want OIDC purely in the browser.
🐛 Bug fixes
- Edits save to the right place. Fixed section and widget edits sometimes being saved to the wrong section.
- The left-click menu is back. The left-click context menu on items works again.
- The config editor opens reliably. Fixed the Edit App Config menu occasionally failing to open.
- Expired sessions now log you out. No more looking logged in when your session has actually expired.
- Netlify status checks work again. Fixed the serverless functions that had broken on newer Node versions.
- Steadier status checks. Fixed a rounding glitch on short check intervals, plus some general reliability tweaks.
- Saved config shows up straight away. Changes saved on the server now apply right away, without needing a refresh.
- Friendlier OIDC handling. Dashy warns instead of breaking if your login provider fails to hand back a token.
💥 Changes which might impact you (but probably won't)
Node version updated to 24
We've upgraded to the lates Node version. So Dashy now expects Node 24 LTS or newer (24.11.0+). Node 22 LTS versions above 22.18.0 are still supported. If you get an "" error, I've explained the solution here (TL;DR: Switch node version with nvm, or just pass the --ignore-engines flag to ignore).
Dropped arm/v7 support
Our main/official Docker image no longer builds nativity for 32-bit ARM/v7 architectures. This will only affect you if you're on a 32-bit Raspberry Pi 2 or similar board. We did this because the latest Alpine images have dropped arm/v7 support, and also, emulating arm/v7 with QEMU in our docker build workflow was slow, heavy and flaky. Without it, a full docker build is now down to ~2 mins, reliable and with minimal resource usage.
Browser support
Dashy now officially only supports Chrome 111+, Firefox 114+, Safari 16.4+. So basically any browser released in 2023 or later. That limitation came from upgrading to Vite 8, which was necessary for performance and security.
Updated key names for show/hide sections and items for OIDC users/groups
I've simplified the config to controlling which users or groups can see which sections and items. Under section and item there's a displayData object. This now has options for: showForGroups, showForRoles, hideForGroups and hideForRoles. Each of these accept an array. For an update example, see here. The docs and schema have been updated accordingly. Note that the old way of doing this will continue to work, but will be dropped in the next major version.
Section names must be present and unique
Previously we relied upon generated IDs for tracking each section. This was clumsy and error prone. Now we use a slug generated from the section name. This means that each section must have a name present, and it must be unique to that page. The schema has been updated to enforce this, as well as the UI editor. If you don't want to see section name, use CSS to hide it: .section-header { display: none !important; }
Some server files moved
I found that the ./services/ directory was a bit of a mess, as the files there were a mix of endpoints, scripts and helpers. I've re-organised this so there's now a sub-directory for all the endpoints, and everything else goes in ./services/utils. This shouldn't have an impact on anything, unless you're doing something funny with linking to server utils directly.
Dependencies
As always, there's been some changes/updates to dependencies, to keep everything up-to-date and secure.
We've added the sortablejs dependency (used for the drag-and-drop editing). And done some major upgrades to express, jose, js-yaml, vue-i18n and vue-router. I've made all required code updates and migrations to keep things working smoothly with the new and changed functionality of these.
If you're running Dashy on bare metal, you should already be doing a yarn install when updating Dashy, so you've got all the right dependencies and versions. Actually, I care about you guys having safe dependencies so much, that I've made some upstream fixes too: GHSA-pm4m-ph32-ghv5 bug for js-yaml and key size mismatch jose#883
Files starting with dot be accessible
Any file beginning with a . placed in user-data will no longer be served up. You'll need to rename it (and references to it) to continue using. This was because of some upstream Express changes, but also it's general good security so makes sense to keep.
Expired OIDC sessions sign-out if cannot refresh
If your OIDC token on the frontend is expired, Dashy will attempt to renew it in the background if enableSilentRenew is enabled (and your provided has the offline_access scope added). If this fails, then you'll be signed out and need to re-login. If it's annoying, setup silent renewal, or increase session timeout, or set disableServerSideCheck. I've also pushed a lot of debuging/error catching for OIDC too, which will make fixing any configuration issues easier.
YAML features
conf.yml parsing moved to strict YAML 1.2 core. However I've patched in support for merge keys, timestamps and binary labels so keep things working. But the rarely-used !!set / !!omap / !!pairs tags and some loose YAML 1.1 scalar forms are no longer supported.
Dropped support for legacy auth algos
This shouldn't affect you unless you're using a very old OIDC provider with some niche key algothirm. We've dropped support for ES256K/secp256k1 and Ed448 algos, since they were insecure.
🏅 Credits
Thanks @bensynapse for your contribution of the new tennis widget!
Dashy is free and always will be. It's made possible thanks to our wonderful sponsors.
Drop them a follow and show them some love 💖
PRs
- Catch and warn if OIDC provider fails to issue token by @lissy93 in #2234
- Custom number formats for the custom-api widget by @lissy93 in #2235
- Adds auth.logoutRedirectUrl config option by @lissy93 in #2236
- Small option to disable proxy endpoint, oidc server, extend prevent write by @lissy93 in #2237
- Update security and privacy docs by @lissy93 in #2238
- Bump actions/checkout from 6 to 7 by @dependabot[bot] in #2221
- Bump zizmorcore/zizmor-action from 0.5.6 to 0.5.7 by @dependabot[bot] in #2220
- Bump trufflesecurity/trufflehog from 3.95.5 to 3.95.7 by @dependabot[bot] in #2219
- Updates GitHub stats widget by @lissy93 in #2242
- Bump vitest from 4.1.9 to 4.1.10 in the vitest group by @dependabot[bot] in #2246
- Bump the minor-and-patch group across 1 directory with 12 updates by @dependabot[bot] in #2249
- Updates dependabot config by @lissy93 in #2250
- Bump the github-actions group with 4 updates by @dependabot[bot] in #2251
- Fixes for Mario by @lissy93 in #2258
- Adds Live Tennis widget by @bensynapse in #2263
- Bump fast-uri from 3.1.2 to 3.1.4 by @dependabot[bot] in #2265
- Big dependency bumps throughout by @lissy93 in #2266
- Upgrade Docker to node 24, drop armv7 by @lissy93 in #2269
- Drag and drop to move/reorder sections, items and widgets by @lissy93 in #2239
- Small fixes, refactors and updates by @lissy93 in #2273
- Bump the minor-and-patch group across 1 directory with 7 updates by @dependabot[bot] in #2274
- Bump immutable from 5.1.5 to 5.1.9 by @dependabot[bot] in #2259
- Bump svgo from 3.3.3 to 3.3.4 by @dependabot[bot] in #2264
Full Changelog: https://github.com/lissy93/dash...
Release 4.4.0
What's Changed
- Custom API widget by @lissy93 in #2197
- Bump the minor-and-patch group with 11 updates by @dependabot[bot] in #2200
- Fixes OIDC admin permissions for GitLab by @lissy93 in #2203
- Support for automatic background OIDC token renewal by @lissy93 in #2204
- Clearer authentication docs by @lissy93 in #2206
- Local item URL fallbacks by @Troublesis in #2207
- Fixes XSS in workspace url param by @lissy93 in #2208
- First version of REST API by @lissy93 in #2209
- Option for overriding allowed issuers by @lissy93 in #2211
- Bump dompurify from 3.4.9 to 3.4.11 by @dependabot[bot] in #2215
- Bump @babel/core from 7.29.0 to 7.29.7 by @dependabot[bot] in #2213
- Bump form-data from 4.0.5 to 4.0.6 by @dependabot[bot] in #2212
- Bump lissy93/repo-mirror-action from 1.5.0 to 1.6.0 by @dependabot[bot] in #2218
- Improved OIDC error handling by @lissy93 in #2222
- Bump vitest from 4.1.8 to 4.1.9 in the vitest group by @dependabot[bot] in #2224
- Typo in README.md by @silicattinho in #2223
- Bump the minor-and-patch group across 1 directory with 19 updates by @dependabot[bot] in #2225
- Improved deployment docs by @lissy93 in #2214
- Adds widget for GPU monitoring glances by @lissy93 in #2227
New Contributors
- @silicattinho made their first contribution in #2223
- @Troublesis made their first contribution in #2205 (merged in #2207)
Full Changelog: 4.3.0...4.4.0
Release 4.3.0
What's Changed
- fix: correct zh-CN translation accuracy and consistency by @zcq100 in #2176
- Update Danish translations in da.json by @olenoerby in #2179
- ⬆️(deps): Bump zizmorcore/zizmor-action from 0.5.4 to 0.5.6 by @dependabot[bot] in #2178
- ⬆️(deps): Bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #2177
- Server protects yaml as well as yml by @lissy93 in #2182
- Fixes col count logic happening pre-config loaded by @lissy93 in #2183
- Add enableAuthProxyCompat to recover SW from auth proxy expiry by @lissy93 in #2190
- ⬆️(deps): Bump the minor-and-patch group across 1 directory with 16 updates by @dependabot[bot] in #2188
- feat: add ICMP ping check support to item by @bgillet in #2180
- Re-check host blocklist on redirects and in status-check by @lissy93 in #2193
- Adds apk upgrade to Dockerfile by @lissy93 in #2194
- Workflow upgrades and clearer outputs by @lissy93 in #2195
New Contributors
- @olenoerby made their first contribution in #2179
Full Changelog: 4.2.0...4.3.0
Release 4.2.0
What's Changed
- Reviewed and completed french translations by @bgillet in #2142
- Bump @sentry/vue from 9.47.1 to 10.53.1 by @dependabot[bot] in #2138
- update: German translation by @CrazyWolf13 in #2144
- Added the ntfy stream widget by @alayham in #2143
- Adds missing newwindow target for nav links by @lissy93 in #2149
- Fix safafi large item layout by @lissy93 in #2150
- Fixes image widget update cache by @lissy93 in #2152
- Improved OIDC support + docs by @lissy93 in #2153
- OIDC server-side token refresh by @lissy93 in #2160
- Section collapse/expand on text click by @lissy93 in #2158
- Search performance and reliability by @lissy93 in #2165
- Re-authenticate on expired sub-pages by @lissy93 in #2167
- Bump js-cookie from 3.0.5 to 3.0.7 by @dependabot[bot] in #2161
- Bump vitest from 4.1.6 to 4.1.7 in the vitest group by @dependabot[bot] in #2162
- Bump the minor-and-patch group across 1 directory with 5 updates by @dependabot[bot] in #2163
- Fixes healthcheck widget by @lissy93 in #2170
- Documentation updates by @lissy93 in #2171
New Contributors
Full Changelog: 4.1.0...4.2.0
Release 4.1.0
What's Changed
- Bring back old layout by @lissy93 in #2095
- ⬆️(deps): Bump the minor-and-patch group across 1 directory with 8 updates by @dependabot[bot] in #2092
- ⬆️(deps): Bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #2082
- Clearer error messaging for save config issues by @lissy93 in #2098
- Fixes Vuln-feed widget and other widget improvments by @lissy93 in #2112
- Update Arabic language contribution details by @kayedspace in #2103
- 🇷🇴 Complete Romanian (ro) translations to 100% coverage by @synack1337 in #2114
- Small fixes and implementing user requests by @lissy93 in #2113
- ⬆️(deps): Bump simple-icons from 16.18.0 to 16.18.1 in the minor-and-patch group across 1 directory by @dependabot[bot] in #2115
- Fixes OIDC/KC auth guard, cb skip login page by @lissy93 in #2127
- i18n: drop orphaned keys from locale files by @synack1337 in #2131
- Reduces some irrelevant dependabot noise by @lissy93 in #2132
- ⬆️(deps): Bump the minor-and-patch group across 1 directory with 9 updates by @dependabot[bot] in #2133
- ⬆️(deps): Bump the minor-and-patch group with 5 updates by @dependabot[bot] in #2137
- ⬆️(deps): Bump fast-uri from 3.1.0 to 3.1.2 by @dependabot[bot] in #2129
- Improved CI/CD workflows by @lissy93 in #2139
- Small fixes and improvments by @lissy93 in #2140
New Contributors
- @synack1337 made their first contribution in #2114
Full Changelog: 4.0.0...4.1.0
Release 4.0.1
Release 4.0.0
This is a big one! I'm sorry this one has taken so long to get released. It turned out to be a much bigger task than I first expected.
Changes
For the full list of changes, see: #2002
Many of the biggest changes have been under the hood, rather than user-facing features. A large portion of Dashy has been pretty much re-written from scratch, in order to be compatible with the newer Vue version and modern web standards, and clean and maintainable going forwards. While doing this, we've also included loads of improvements in terms of performance, robustness, security, responsiveness, accessibility and UX, as well as a ton of bug fixes.
Highlights:
- Compiled app 25% smaller, and Docker image 80% smaller
- Rebuilding no longer required after making changes
- Sections now follow a responsive masonry layout
- Full, built-in multi-page YAML editor with inline completion and validation
- Simplified settings menu, added simple widget editing
- Canonical
/<view>/<page>/<section>URLs across views/configs/sections, with proper deep-linking and auth controls - Per-page config: theme, language, layout, icon size, favicon and address-bar colour
- No unexpected crashes, reboot loops or excess mem/resource usage
- Lazy-loaded everything that doesn't need to ship up front: translations, icons, schemas, editor forms
- Fully upgraded and migrated to Vue 3 and Node 24. Plus Vuex 4, Vue Router 4 and vue-i18n 9 and all other deps
Is it backwards compatible with older versions of Dashy?
I hope so, yes!
There's a few small things, as documents in the PR. Mostly around client-side env vars no longer being needed, and the Dockerfile now being non-root and without rebuild.
I've tested everything for backward compatibility as much as I can, but so much has been re-written that it's hard to give guarantees.
What's next?
Going forwards, I'll work hard to continue to keep Dashy well maintained and running smoothly. But please do be patient, I have other projects which also need attention, and I also need to pay my rent this month 😬
Here's the biggest things which are upcoming:
- Widgets
- Many widgets are out-dated, and no longer working well (due to upstream API changes)
- I need to also build a UI widget editor, so you can add/move/edit widgets more easily
- And a new widget SDK, to make building your own custom widgets possible
- Code improvements
- Typescript end full type safety
- More complete test E2E suite
- API
- For accessing Dashy programmatically
Thanks :)
This has been a massive task, pretty much a month of solid work. So I am really hoping you guys like it! If you have any feedback/comments, this would really help me, so pop them in the comments below :)
I don't like asking this, but if you are enjoying Dashy, and want to help me out, a sponsoring me on GitHub is the biggest way you can support. Everything I do is funded by my sponsors, and I am super grateful for their contributions 💕
Release 3.3.0
What's Changed
- Update/remove axios by @lissy93 in #2027
- Complete Turkish (tr) translations to 100% coverage by @onwp in #2029
- Feat/workflow improvments by @lissy93 in #2033
- Fixes openening methods dropdown by @lissy93 in #2030
- Fix/external style loading by @lissy93 in #2042
- Implements auth check for local endpoints by @lissy93 in #2052
- fix: allow guest access when OIDC or Keycloak authentication is enabled by @ZedeN1 in #2054
- Ref/auth cleanup by @lissy93 in #2055
- fix: prevent render loop by @vinceh121 in #1898
- Adjusting SSL Portion of HealthCheck by @dintho in #1827
- Fix apikey for Weather Forecast by @dintho in #1829
- Change: Tactical RMM Now Uses Monitoring V2 by @conlan0 in #1830
- Improvments to Public IP Widget by @lissy93 in #2059
- Frontend Bug Fixes by @lissy93 in #2060
- Server reliability, performance and security improvments by @lissy93 in #2061
- Switches default public ip provider to ipinfo by @lissy93 in #2062
- Fix DomainMonitor status type mismatch (number vs string) by @rsb-developer in #2063
- add: action for prebuild by @CrazyWolf13 in #2066
Full Changelog: 3.2.0...3.3.0
Release 3.2.0
What's Changed
- Update Github trending widget by @alhazmy13 in #1562
- Bump simple-icons to 12.2.0 by @michaelfeinbier in #1619
- [Fix] Scolling on mobile brings up menu #1261 by @ddenev in #1623
- Bump ws from 6.2.2 to 6.2.3 by @dependabot[bot] in #1622
- Update deployment.md by @danfein in #1636
- New theme: NightBat by @lissy93 in #1660
- Fixed a typo by @ThibautSnoeijs in #1658
- updated dead tama theme bkgUrl by @kt-alt in #1659
- Added support for IP2Location.io API by @ip2location-com in #1656
- Update authentication.md by @dasunsrule32 in #1667
- Tactical RMM Widget by @conlan0 in #1649
- Update AnonAddy to new addy.io branding by @willbrowningme in #1637
- add OIDC scope option by @nOw-Ay in #1641
- [REVERT] param change in cors-proxy.js by @lissy93 in #1674
- [FIX] Add missing 16x16 favicon and fix 32x32 and 64x64 favicon resolution by @m42cel in #1678
- 🐛 On branch BUG/1608_glances-network-error by @hockwill in #1646
- Update issue auto-assign by @CrazyWolf13 in #1686
- Fix small doc typo by @johnhorton2010 in #1703
- Fix typo in docs by @lucolvin in #1709
- Fix docs typo by @lucolvin in #1710
- Add support for minecraft server status widget by @TJonesy in #1713
- Update README.md, fix a typo by @NicholasWilsonDEV in #1727
- Memory usage improvements by @webysther in #1836
- Update widgets.md by @lucolvin in #1840
- Fixed one error in quick-start.md by @sxravan in #1852
- Update quick-start.md by @The127 in #1858
- Update docs conf pages by @kit494way in #1864
- Fixed typo in icons.md by @RoubenRehman in #1732
- Updated Norwegian language file. by @Kf637 in #1745
- Revised and updated ru.json by @sasetz in #1751
- Fix compilation warning on comment by @RobLoach in #1752
- Update Swedish translation by @ThrustVector in #1766
- Add auto dark/light theme switch based on OS preference by @vishwamartur in #1770
- Update simple-icons to bring it the latest icons by @pho3nixf1re in #1794
- Uptime-Kuma fixes by @armageddon421 in #1790
- Add selfh.st/icons support by @LinuxSBC in #1786
- Fix a bug in RssFeed widget that crashes on small feeds. by @SharpCoder in #1817
- Added the custom list widget by @alayham in #1871
- Fix typo in Public Ip Widget endpoint definition for ip-api provider by @s-weigand in #1869
- Fix pwa conflicting/missing entries in cache list by @he0119 in #1868
- Corrected Ukrainian translation by @click0 in #1729
- Update Workspace.vue by @yeralin in #1866
- glow-dark theme by @domportera in #1883
- Fix incorrect translation by @aypt in #1878
- Send json response for status check by @alayham in #1877
- Fix OIDC getUser and added admin role and group by @Alexis-BX in #1894
- Fixed spelling in da.json by @AndreasdeReus in #1890
- Ref/admin by @lissy93 in #1897
- fix(pwa): should always fetch conf.yml first by @he0119 in #1902
- Add v6 versions of Pi-Hole widgets and fix minor bug in Uptime Kuma widget by @casmbu in #1892
- Add Widget for Chuck Norris quotes by @dkadioglu in #1909
- fix: Load userInfo in OidcAuth by @pedorich-n in #1914
- Bump axios from 1.7.2 to 1.12.0 by @dependabot[bot] in #1917
- Fix Flights.vue widget to work with the current aerodatabox API by @rnowotniak in #1940
- i18n(hu): add Hungarian translation by @apgyorfi in #1944
- Add opening method option for custom search widget. by @pwhelan in #1947
- Add Uptime Kuma Status Page Widget by @ga-lep in #1932
- Adds Quantum file browser widget (#1966) by @lissy93 in #1967
- Fix Hindi language display name by @onurege3467 in #1979
- Update GlancesMixin.js - wrong default version in comment by @MatesMotionless in #1971
- Update docker-compose example in deployment docs by @larsreinhardt in #1990
- Fixes RSS parsing and hardens security against XSS by @lissy93 in #1993
- Ref/robustness improvments by @lissy93 in #2001
- Small fix in CI build for tags, and updates the release docs by @lissy93 in #2003
- Add forwarded port display in GluetunStatus component by @TheZachAttack01 in #1991
- Add Kyrgyz language contribution to README by @noblepower1337 in #1988
- fixes #1391 - replacing old datasource to nist by @ricardodemauro in #1986
- Update the documentation to add a cloud deployment method. by @BLUE-YBZ in #1948
- Search box url detection and open link feature #1881 by @aspenyang in #1915
- Updated GlAlerts to use latest Glances Alerts API by @sypticus in #1954
- Small fix to schema, and deletes obsolete files by @lissy93 in #2007
- Add Glances multi-system monitoring widget by @JasperX777 in #1931
- fixed the described bug in #1927 by @shumittaher in #1928
- New Feature: hideFromWorkspace configuration option for Workspace View #1968 by @JDB321Sailor in #1969
- add full Kyrgyz (ky) localization by @noblepower1337 in #1977
- Update simple-icons by @jonas-schulze in #1985
- Jasper/feature 1821 glances uptime by @JasperX777 in #1922
- Bump flatted from 3.4.0 to 3.4.2 by @dependabot[bot] in #2010
- Fixed Pi Hole key not read from env var by @lissy93 in #2012
- Bump picomatch from 2.3.1 to 2.3.2 by @dependabot[bot] in #2013
- Bump node-forge from 1.3.3 to 1.4.0 by @dependabot[bot] in #2016
- Bump happy-dom from 17.6.3 to 20.8.9 by @dependabot[bot] in #2017
- Bump path-to-regexp from 0.1.12 to 0.1.13 by @dependabot[bot] in #2018
- Removes Clearbit for icons, as depricated by @lissy93 in #2019
- Deep copy auth.users to prevent infinite loop by @lissy93 in #2020
- Fix/small issues by @lissy93 in #2021
Full Changelog: 3.1.1...3.2.0