Skip to content

Releases: SandObserver/Stackyard

1.19.0

Choose a tag to compare

@stackyard-release stackyard-release released this 20 Oct 23:03
df8e07b

Added

  • Nine short Backup haikus that fit small cards.

  • Let a widget manifest list the query parameters its data function reads.

  • Settings offers to add the address you are signed in on to Allowed Addresses.

Changed

  • The Unsplash wallpaper changes once a day instead of on every load.

  • Log a failing widget once, with a reminder every 10 minutes and a line on
    recovery, instead of on every request.

  • Redraw the Weather widget artwork as frosted glass with gentle motion that
    pauses off screen.

  • Choose the icon colour style (Dark, White, Auto, Clear or Color) from a
    drop-down; colours and sliders show only under Color.

  • Badge and wallpaper colour swatches sit together at the end of their row, all
    one size.

Fixed

  • Name a widget without a manifest for re-entry when a port map change clears
    its settings.

  • Backup cards show a whole haiku or none, never part of one.

  • Show an error instead of zero DNS queries, "Nothing playing" or "Not secured"
    when a service sends an unreadable reply.

  • Stop a large non-JSON reply from a service from stalling the dashboard.

  • Show an error when a widget cannot draw the data it received, instead of
    leaving old data on screen.

  • Keep healthy Backup cards when another backup server stops answering.

  • Answer every widget request before the dashboard's proxy gives up, even when a
    service stalls on several calls.

  • Keep the dashboard and healthy widgets responsive while several services
    stall.

  • Keep every widget, badge and health check working while the DNS server is
    down, instead of stalling behind lookups that never finish.

  • Keep app health dots updating while the Docker socket proxy stops answering.

  • Treat a damaged settings block in the config file as damage instead of loading
    it as an open install.

  • Skip invalid entries in the config file's app list instead of failing health
    checks, badges and widgets.

  • Keep a config file edited by hand while the container runs instead of
    overwriting it on the next save.

  • Report no changes when importing an export that matches the current
    configuration.

  • Stop an icon upload from overwriting an existing icon when many share its
    name.

  • The Referrer policy picker shows and selects Default.

  • Now Playing no longer cuts off the second line of a long title.

  • Stop extra query values on widget data requests from filling server memory and
    multiplying upstream calls.

  • Stop app tiles with a refresh interval from filling the browser Back history.

  • Stop the Connections VPN view from stacking animation loops while its page is
    off screen.

  • Pause the Analog clock, Connections map and VPN animations on dashboard pages
    not shown.

  • Adding or removing a row in a widget's settings keeps the stored passwords and
    keys of the other rows.

  • Colour pickers in Settings fit on narrow phones without cutting off labels or
    swatches.

  • Colour sliders in Settings share one length.

  • Safari no longer logs a viewport warning when the dashboard loads.

Security

  • Keep a stored widget secret out of the browser when a save sends the widget
    under a legacy type.

  • Withhold stored secrets when a widget's type changes, the port map is removed,
    or certificate checking for widgets is turned on or off.

  • Stop trusting the first host name that opens Stackyard while no password is
    set. Add a domain name in Allowed Addresses from an IP address or a local
    name.

  • Refuse service names that resolve to loopback or link-local addresses, such as
    ip6-localhost, in admin URL tests.

  • Block 6to4, local-use NAT64 and site-local IPv6 addresses in admin URL tests.

  • Refuse a config save whose settings block is not an object, which could remove
    the password.

  • Refuse a config save or import nested too deeply, which could leave the config
    unreadable.

  • Saving the wallpaper no longer replaces the stored Unsplash key with the
    field's label.

  • Icons always load through the server, so the CDN does not learn which services
    a dashboard shows.

  • A page on another site can no longer lock the owner out of sign-in by pointing
    its host name at the server.

  • The wallpaper endpoint no longer returns Unsplash's error text.

  • A session cookie set by another host on the same parent domain no longer signs
    the owner out.

  • The Connections widget no longer names an address the guard blocked.

1.18.0

Choose a tag to compare

@stackyard-release stackyard-release released this 17 Oct 21:33
35dff66

Added

  • The widget picker shows a one-line description of each widget type.

  • Widgets open their service when no Click URL is set, if the browser can reach
    its address.

  • Backup, Now Playing and System Summary open the job, item or system they show,
    under the Click URL when one is set.

  • System Summary and the Connections map have a Click URL setting.

  • Add an optional API token for Scrutiny in Disk Health, needed from Scrutiny
    2.0.

Changed

  • The small VPN view leaves more room between its text and the card edge.

  • The VPN view no longer shows the public IP address unless Show IP Address is
    turned on in its settings.

  • Widgets show soft placeholder shapes while they load, and Books and Now
    Playing no longer show a heading or "Nothing playing" before their data
    arrives.

  • Disk Health shows each drive's status light on its bay.

  • Disk Health bay tooltips use the full widget width, so drive names are cut
    less often.

  • Widget link fields are labelled Link URL.

  • Weather hover and screen-reader text include when the data was last updated.

  • The Persian analog clock no longer shows the year on the dial.

Fixed

  • Weather, Books and GitHub contributions now mark their data as out of date
    after one failed refresh, not two.

  • Disk Health names a failed drive in words instead of only turning its light
    red.

  • The DNS widget labels its chart, so allowed, cached and blocked queries no
    longer rely on colour alone.

  • Widget text is never smaller than 11 points, including book spines, disk bay
    labels, backup cards and the Now Playing band.

  • Book spine titles and disk bay labels no longer shift letter by letter on
    hover.

  • Large and extra large widgets on desktop now end level with the widgets beside
    them.

  • Counts in search, badges and widgets follow the plural rules of the selected
    language.

  • Backup, Now Playing, Books, Weather and Connections read their labels in the
    selected language's word order.

  • Backup shows run times in the selected language.

  • Lists use the selected language's separators.

  • The language picker marks each language name with its language for screen
    readers.

  • System Summary translates "All interfaces" and badges translate container
    states.

  • Persian text reads as everyday Persian and no longer misdescribes several
    settings.

  • German, Spanish, French and Chinese text reads naturally, uses one form of
    address, and follows each language's typography.

  • Weather no longer shows dark bands at the card's sides in daytime with the
    dark theme.

  • System Summary chart columns have equal gaps.

  • Backup job names and error lines no longer break inside a word.

  • The analog clock date is no longer drawn below 11px.

  • Connections map legend entries have larger tap areas.

  • Backup card text no longer runs past the card in Persian.

  • Large Books spines show more of each title.

  • Stackyard icon no longer shows blank on the Unraid Docker tab and Dashboard.

  • Stop logging an nginx warning on every settings save.

  • Show settings labels in full on a phone instead of cutting them off.

Security

1.17.0

Choose a tag to compare

@stackyard-release stackyard-release released this 12 Oct 04:02
6b932e5

Added

  • Add an Update Every setting to System Summary, from 5 seconds to 1 minute.

  • Point at a System Summary chart to see a past reading, or at a disk to see its
    used and total size.

  • The logo on the About page turns its arc once on hover or tap.

  • A sideways trackpad swipe or mouse wheel turns dashboard pages, one page per
    gesture.

Changed

  • Redesign System Summary with coloured figures in the small size and column
    charts in the medium size.

  • Show the System Summary network line in the medium size only.

  • Show System Summary temperatures in whole degrees.

  • Redesign the GitHub widget with a headline figure, a cleaner pull request list
    and a contribution grid that fills the card.

  • Point at a day on the GitHub contribution grid to see its date and count.

  • The GitHub widget now follows the light and dark theme.

  • Redesign the digital clock as large overlapping hour and minute figures in the
    analog clock's colours.

  • Name a config export downloaded straight from the API stackyard-config.json,
    matching the Export button.

  • The connections map places each country's dots on its most populated areas.

  • Widgets render sharp on 1x screens.

Removed

  • The GitHub widget no longer offers an extra large size. Existing extra large
    GitHub widgets become large.

Fixed

  • About link icons keep their colours after the pointer moves over the list.

  • System Summary reports a Beszel account that cannot read its systems as a
    sign-in problem instead of an empty hub.

  • The digital clock shows its digits in the right order on a Persian dashboard.

  • Remove the thin dark lines along the sides of the Now Playing widget.

  • Editing an app no longer drops a summed Live Activity badge's unit, colour and
    minimum.

  • Editing an app set up in an older version no longer drops its Live Activity
    headers, including a stored API key.

  • Every number listed by Fetch in Live Activity now shows on the badge,
    including Prometheus metrics with labels, names containing dots or dashes,
    nested lists and plain-number answers.

  • The Live Activity poll interval is now used: each service is read once per
    interval, however many dashboards are open.

  • A badge whose service answers with an error now keeps its last value, marked
    out of date, instead of showing 0 or a number from the error page.

  • A badge reading a response too large to read in full now reports it instead of
    showing a short count.

  • A folder badge is now marked out of date when an app inside it fails its poll.

  • TrueNAS disk health no longer names TrueNAS 26 in its unsupported-version
    message.

  • The time since the last update, shown on a failed widget, now meets text
    contrast in both themes.

  • A widget built from the template no longer shows its previous items under
    "Nothing here" when a refresh comes back empty.

  • Changing a widget's display settings, such as Weather units or city, a GitHub
    view or a slot colour, no longer asks for its API key or password again.

  • Widgets no longer stay blank when the widget list fails to load once while the
    dashboard starts.

  • System Summary no longer shows Unraid's own error text when Unraid reports a
    problem.

  • A widget manifest whose options are not value and label pairs is now refused
    at startup instead of showing "undefined" in its settings.

  • Keep the warning that a stored credential must be entered again on screen
    after a save.

  • Restore settings from a backup, not only apps, folders and widgets.

  • Upgrade a backup from an older release when it is restored.

  • Show a credential as missing after a restore when it was not kept.

  • Keep the current wallpaper when a restored backup names an uploaded wallpaper
    this install does not have.

  • Refuse a config whose folder contents are not a list of item ids, instead of
    saving it and breaking the dashboard.

  • Import a link written as host:port from Homepage or Dashy as a working
    http:// link.

  • Drop a health-check address from Homepage or Dashy that only the other
    dashboard can resolve, instead of importing a check that always fails.

  • Refuse a Homepage or Dashy file whose merge keys expand too far, instead of
    freezing the page.

  • Read a Homepage or Dashy file with very long lines without freezing the page.

  • The connections map draws users from small countries such as Belgium,
    Switzerland, Israel and Singapore.

  • A second service in the same country no longer covers the first one's dots on
    the connections map.

  • The connections map key no longer runs over the map with many services or long
    names.

  • The settings navigation no longer jumps when the version number loads.

  • The settings page no longer shifts sideways when its scrollbar appears.

Security

  • Changing the port map now asks for stored API keys again instead of sending
    them to the newly mapped host.

  • Turning on Allow self-signed certificate for an app now asks for its stored
    API key again before it is sent without certificate checking.

  • Secrets in a widget setting that is declared more than once, one per provider,
    are no longer sent to the browser or written to the config export.

  • System Summary no longer reuses one Beszel account's login for a widget
    configured with a different account or password.

1.16.0

Choose a tag to compare

@stackyard-release stackyard-release released this 04 Oct 21:11
e1e568e

Added

  • Add Allowed Addresses to Settings, General, to list extra host names
    Stackyard answers on while no password is set.

  • Add a Type to Search switch to Settings, so typing on the dashboard can stop
    opening search.

Changed

  • Keep widget pages in the browser cache between dashboard loads, and check
    translation files for changes instead of downloading them again in every
    widget.

  • Make typing in search faster when folders match, and show the dashboard sooner
    on slow connections by sending its start-up requests together.

  • Show the Clear app icon background as a checkerboard in the colour picker.

  • Show numbers in the digits of the language chosen in Settings, such as Persian
    digits for Persian, instead of the browser's region.

  • Show the Shahanshahi date with its year on the clock in Persian.

  • Draw the analog clock date at the same weight as the digital clock date.

Fixed

  • Translate the remaining English labels and hints in Settings, the colour
    picker and the sign-in screen, and show failure reasons in the selected
    language.

  • Show counts, totals, badge values and other numbers on the dashboard, in
    widgets and in Settings in the reader's digits.

  • Mirror folder rows, the phone folder title and widget swipes in right-to-left
    languages, and keep brackets around names in place.

  • Read Prometheus series whose label values contain spaces.

  • Say why an address check got no answer, such as a refused connection, an
    unknown host or an invalid address, instead of a certificate warning.

  • Report a service that hangs up mid-reply at once, instead of as a timeout.

  • Answer an oversized icon upload or wallpaper link with an error instead of
    dropping the connection.

  • Refuse a Settings save that would overwrite dashboard changes made in another
    tab or on another device.

  • Keep both changes when two dashboard edits or two Appearance switches are
    saved in quick succession.

  • Keep the last saved wallpaper when a wallpaper link fails, or when another
    setting is saved before a new upload.

  • Stop a failed Unsplash key save from taking effect until the next config read.

  • Use a saved widget's or app's stored key, headers and parameters when its
    Fetch button is pressed, and show the specific reason a Fetch failed.

  • Show the Settings load-failure message and Retry button when the config cannot
    be read, readable in both themes.

  • Raise the contrast of text, badges, fields and icons in the light theme across
    the dashboard, Settings, the sign-in screens and the DNS and Weather widgets.

  • Show Settings controls, selected items, keyboard-selected results and text
    field edges in Windows high contrast mode.

  • Show focus rings on the search, header, poll interval and icon search fields,
    the Cancel and Import buttons and the Settings sliders.

  • Keep keyboard focus in place when Settings redraws or edits an item, inside
    the sign-in screen, and off switched-off sections of the item editor.

  • Name and announce Settings controls, Fetch and Test results, the current
    section, group headings and folder app badges for screen readers.

  • Open widget links from the keyboard in the DNS, Weather, GitHub, VPN and
    Backup widgets, and fix Enter on the Now Playing arrows and Books spines.

  • Fit Settings and the empty dashboard on narrow and short screens, at 400% zoom
    and around the iPhone notch, and keep the Settings sidebar on screen.

  • Make folder page dots and badges that open a value list easier to tap.

  • Blur the background behind the Settings sign-in and set-password screens on
    Safari 17.

  • Style the text field in the current password and New Folder dialogs like other
    Settings fields.

  • Stop extra dashboard and widget refreshes after the tab is hidden, the
    dashboard page is swiped or a phone rotates.

  • Mark badges and health as out of date when the dashboard is signed out,
    instead of showing frozen values as current.

  • Stop the Connections map from adding another animation loop on every refresh
    and resize.

  • Release the Pi-hole session when a DNS widget refresh fails, so repeated
    failures no longer lock the widget out.

  • Show an error instead of stale or empty data when the GitHub, Books, Weather,
    Backup or System Stats source fails, or a Backup job is deleted.

  • Make the widget template report failures as errors, so widgets copied from it
    do not show them as empty data.

  • Show a disk that failed its SMART check as failed on Disk Health, instead of
    as a warning.

  • Colour each System Stats value with its own slot colour, whatever the slot
    order.

  • Show "Unknown timezone" on the clock when its timezone name is not recognised,
    instead of a blank or stopped clock.

  • Show Persian and other joined-script dates correctly on the analog clock in
    Safari.

  • Show an emoji initial on an app with no icon.

  • Open Settings when the browser blocks site storage.

  • Stop the container cleanly on docker stop instead of killing the dashboard
    mid-shutdown.

Security

  • Stop a widget provider set to an inherited object name from returning saved
    API keys.

  • Require the current password to change the password or turn off password
    protection.

  • Keep sign-in on and refuse saves when the config file is damaged or cannot be
    read, and show how to fix it.

  • Answer only IP addresses, local names and allowed addresses while no password
    is set. Add each extra domain name in Settings, General, Allowed Addresses.

  • End the session on the server at sign-out, so a copied session cookie stops
    working.

  • End every session 30 days after sign-in, even while it is in use.

  • Stop a crafted XML or Prometheus reply from a configured service from freezing
    the API.

  • Close health checks and refused redirects against a service that streams
    without end, so they no longer pile up connections.

  • Count the DNS lookup toward the time limit for addresses tested in Settings.

  • Keep malformed request bodies, such as a mistyped password, out of the server
    log.

  • Stop requests for unknown widget ids from growing the API's memory.

  • Refuse a Dashy or Homepage import file that expands to more than 5,000
    entries, instead of freezing the page.

  • Send a restrictive Content-Security-Policy on API responses.

  • Apply the Compose file's capability, privilege and resource limits to the
    Unraid template.

1.15.0

Choose a tag to compare

@stackyard-release stackyard-release released this 29 Sep 00:03
c9a44e3

Added

  • Add swatches and hue, saturation and brightness sliders to the Solid color
    background.

Changed

  • Restyle Settings to match iOS and iPadOS 27.

  • Restyle the home screen and app icons to match iOS and iPadOS 27.

  • Give widget cards the iOS 27 edge light and drop the uppercase widget
    headings.

  • Redraw the logo as exact geometry in the favicon, the app icons and Settings.

Fixed

  • Admin error messages for badge tests and widget option fetches are translated
    instead of always English.

  • A failed badge test reports why the request failed instead of always blaming a
    missing API path.

  • Status and error messages in Settings use the full width of their row instead
    of wrapping in a narrow strip.

  • A malformed background colour falls back to the default instead of painting an
    unintended colour.

  • Show a message in Settings when the Unsplash wallpaper cannot be loaded.

  • Hide the empty page indicator on the connection error screen.

  • Opening an app from search opens one tab, not two.

  • Dashboard switch names are readable in the light theme.

  • Show the whole logo on the empty dashboard in the light theme.

  • Fill the Android home screen icon to its edges instead of leaving transparent
    corners.

  • Turning off Allow Fullscreen on an iframe widget now stops the framed page
    going fullscreen.

  • Open folders no longer wash out the wallpaper in the light theme.

1.14.0

Choose a tag to compare

@stackyard-release stackyard-release released this 20 Sep 23:47
cb0e4ad

Added

  • Display Mode now applies to the dashboard and every widget, not only Settings.

  • App icon colours Auto, which follows the display mode, and Clear, a frosted
    glass plate.

  • Badge colours Accent, Success, Warning, Danger and Info.

  • Umami services can authenticate with an API key instead of a username and
    password.

Changed

  • A new password is limited to 1024 characters.

  • Restyle app icon tiles with a top-lit edge and vertical shading.

  • App and dock tiles press in on click instead of lifting on hover.

  • Redraw the Settings icons, widget glyphs and Settings tile as one icon set.

  • Preset icon and badge colours adapt to the display mode; a custom colour stays
    exact.

  • Widget cards are opaque, white in light mode and near-black in dark mode.

  • The clock follows the display mode; its own Dark and Light option is removed.

  • The VPN and Connections maps are larger and easier to see.

Fixed

  • A settings change is no longer held in memory when writing it to disk fails.

  • Space on a focused tile or folder activates it instead of opening search.

  • Search keeps every letter typed to open it, including in Safari on a narrow
    window.

  • Disk Health no longer shows dark strips at its sides.

  • Settings keeps a choice made while the page is still loading, instead of
    leaving Save greyed out.

  • App labels stay readable over a dark wallpaper with increased contrast in
    light mode.

  • Settings sections start at the top on a phone instead of keeping the previous
    section's scroll position.

  • Renaming or recolouring a service no longer clears its stored credential.

  • Settings no longer reports a credential as stored after the one it described
    was dropped.

1.13.1

Choose a tag to compare

@stackyard-release stackyard-release released this 16 Sep 00:04
4154893

Changed

  • Restyle the dock and folders as thin glass with smooth corners.

  • Restyle Settings as grouped lists with a tab bar, dropdown menus and type and
    size pickers.

Removed

  • Remove the Title and Description rows from General, which never saved.

Fixed

  • Fix the Add New type chooser closing after choosing Widget or a size.

  • Fix desktop tiles landing below the page when a wide widget leaves a gap.

  • Fix multi-select pickers closing after each choice.

  • Fix the loading spinner and the editor back button sitting off-side in
    Persian.

  • Announce the selected widget size to screen readers.

1.13.0

Choose a tag to compare

@stackyard-release stackyard-release released this 14 Sep 20:27
4aa9577

Added

  • Add OpenWeather as a Weather widget provider.

Changed

  • Redesign the Books widget shelf and name the book in progress under it.

Fixed

  • Keep Save on screen in phone Settings headers with long names.
  • Fix typing into widget settings text, number and API key fields.

1.12.0

Choose a tag to compare

@stackyard-release stackyard-release released this 13 Sep 02:23
5ee971b

Changed

  • The DNS widget flow chart spreads its outcomes apart and shows each count in
    the headline when you point at or drag across the chart.

  • Now Playing moves the player name and previous and next controls into a
    coloured band on the label, and switches items without sliding the whole
    cassette.

  • Settings sections now expand and collapse instead of appearing at full height.

  • Settings Save buttons stay disabled until something changes, and leaving with
    unsaved changes asks first.

Fixed

  • Fix settings dropdowns being clipped, covered by the tab bar, or running off
    screen on a phone.

  • Fix the Authentication rows staying hidden when a badge fetch reports that
    credentials are needed.

  • Fix folder, search and clock details: phone folders close on a click outside,
    the Search pill is a button, folders show their icon grid in search, the
    analog clock date shows through the hands, and the item editor names the item.

  • Fix the page dots and dock covering the last row of apps on short desktop
    windows.

  • Dropdowns can be operated by keyboard: arrow keys, Home, End, type-ahead,
    Enter and Escape.

  • Fix missing gaps between cards in the app and widget editor.

  • Fix the phone layout not refitting a narrowed window, and the phone dock and
    Search pill staying after widening to desktop.

  • Fix tiles shrinking on a narrow desktop window, which now shows fewer columns,
    and open folders growing past phone size on a wide phone-layout window.

1.11.0

Choose a tag to compare

@stackyard-release stackyard-release released this 12 Sep 03:13
d83ffde

Added

  • The System widget's Speedtest Tracker provider accepts an API token, and uses
    the documented v1 API when one is set.

  • The icon picker now searches dashboardicons, selfh.st, simple-icons and
    lobehub together, matches a service by its alias or by any spelling of its
    name, and offers an icon's light and dark file as a choice.

  • The web app manifest declares the icon sizes, screenshots, identity and
    Settings shortcut browsers use to offer an install.

Changed

  • The demo dashboard now shows the apps, icons, tile colours and widgets of the
    dashboard pictured on the project site.

  • The System widget draws its charts immediately on the demo, instead of
    filling them one reading at a time.

  • Lists and menus now carry a single highlight that glides between rows instead
    of redrawing on each one.

  • The settings navigation pill now travels between sections instead of fading in
    place.

Fixed

  • The Disk Health widget now reads Scrutiny disks from builds that identify a
    device by scrutiny_uuid or wwn, not only device_id.

  • Clients that ask for /favicon.ico now get the app mark instead of a 404.

  • The demo's dashboard switcher shows its keychain names instead of the
    addresses behind them.

  • The demo's network row shows a fabricated speed instead of the demo
    container's own traffic.

  • The dashboard and Settings now keep clear of a display's left and right safe
    areas, which a device reserves for a hinge or for system controls.

  • The hover highlight now follows the keyboard when you arrow through a list the
    pointer is resting in.

  • The dashboard grid no longer loses its outer columns on a device whose side
    inset is wider than the page gutter.

  • Correct Persian orthography and translation wording, and localise the
    connections map label in every language.

  • Icon suggestions work again. The catalogue index had moved, so typing a name
    suggested nothing.