Skip to content

Releases

TasmoFleet 0.36.0 "Fisgard"

Choose a tag to compare

@github-actions github-actions released this 13 Nov 14:12
Immutable release. Only release title and notes can be modified.
v0.36.0
3f3d7ce

Upgrade notes

  • Migration 0048 adds the columns start_at and not_started to ota_jobs, so an update job can wait for a start time; every existing job keeps starting at once. Nothing to do (#603).

Added

  • You can plan an update for later. The update preview has a "5 · When" card: start now (the default) or at a chosen time, with the quick picks Tonight 03:00, Tomorrow night 03:00 and "Like last time", or any other date and time. The time is read in your browser's time zone (in the server's without JavaScript), a time that is not in the future is refused and the button reads "Schedule update"; the audit log records the planned start. The help of the "Send when" notification setting now says that "problems" also sends a scheduled update that was not started (#604)
  • Update jobs can wait for a start time. At the start TasmoFleet checks every device again (the safety guard, the device lock, a firmware update still running, OTA exclusion). If TasmoFleet was down at the start time, the update starts as soon as it is back, but only within 60 minutes; later it is not started at all and a "Scheduled update not started" notification is sent (also with "only problems"). A planned update can be cancelled until it starts (#603)
  • Planned updates show up in Transactions. A "Scheduled" section above the history lists them soonest first with their start, the time left and who planned them, and a Cancel that says nothing on the devices changes. The page of a plan shows its start, what happens if TasmoFleet is down then and its devices as "Planned"; an update that started says how close to its time it started. A plan that TasmoFleet was down for shows "Not started" with the reason and the notification text, a cancelled plan "Cancelled before start", and both offer "Plan again…" (the update preview with the same devices and release) instead of Retry. Until it starts a plan is never shown as queued or running (not in the status bar, the Dashboard or About), the device stays usable, and the device picker, Make compliant and deleting the device name the plan that holds it; a delete is refused before "Delete the backups too" runs. A device that was busy for the whole late-start window, or excluded from updates after planning, now reads "Device was busy" or "Excluded from updates since the plan" instead of "Guard refused" (#604, #326)

Changed

  • The built-in SQLite is now 3.54.1 (was 3.53.4); System, About shows the version.

Fixed

  • Every control a person starts now shows that it runs, and a failed request says what failed: a file chosen for the import, a field and the live rule preview show a ring while they wait (they are never disabled, so the newest value is still sent), a request that got no answer shows a toast naming the control ("Refresh identity was not sent: no connection", "… timed out"), the "Still working" note closes as soon as its request ends, and the links and buttons into the restore, drift and replace pages, which read a device before they answer, show a ring until the page arrives (#634)
  • The Devices list after a live reload: the table is fitted in the same step that the reload swaps it in (the Power column used to lie on the row menu in every row until the page had settled), and resizing a column with the arrow keys while the list refreshed no longer resets the whole table to equal-width columns, because the width is saved from the table that is on the page (#727)
  • The Firmware page no longer shows tooltips of several hundred characters that list every device name, over the device count of a file and over a cached file that many devices use: they name as many devices as fit in 160 characters and say how many more there are (#727)
  • Pages no longer scroll about 120 px past their content: the leftover bottom padding of the page container is gone, so a long page such as Devices ends one normal gap above the status bar, and the device list's selection bar rests one gap above the status bar at the end of the scroll as it does while scrolling (#773)

Removed

  • The old container package ghcr.io/nofuturekid/tasmofleet is deleted. It stopped at 0.34.1; pull ghcr.io/hellwand/tasmofleet instead. The Docker Hub image nofuturekid/tasmofleet is not affected (#738)

TasmoFleet 0.35.0 "Bishop Rock"

Choose a tag to compare

@github-actions github-actions released this 13 Nov 04:41
Immutable release. Only release title and notes can be modified.
v0.35.0
802cdaf

Upgrade notes

  • Migration 0047 adds the table id_high_water, seeded with the highest device and transaction id that the database or the audit log knows, so the ids of devices and transactions deleted before the upgrade are not taken again either. Nothing to do. Ids that were already reused before the upgrade cannot be repaired: such a device or transaction keeps showing the older audit rows of its predecessor (#498).
  • The old container package ghcr.io/nofuturekid/tasmofleet will be deleted with 0.36.0. It stopped at 0.34.1; pull ghcr.io/hellwand/tasmofleet instead. The Docker Hub image nofuturekid/tasmofleet is not affected (#738)

Changed

  • The rule editor's hint for Latitude and Longitude now says that the value is compared to 4 decimals (so 48.2082 and 48.208200 are the same), gives the range, and that a whole number such as 48 means 48.0000, not a prefix (#382, thanks @Noschvie)
  • The tooltip table holds only the words a badge can show; unreachable entries, including the retired Warn wording, are gone (#516)
  • GPIO templates: the reference device of a group is always its first row, with its own Reference chip and a tinted row, whether it was chosen or is the most common layout; the other devices keep their id order (#547)
  • System, Snapshots now says that the times in the snapshot file names are UTC (the trailing Z), with an example, and the configuration and backup docs explain the same; the names themselves are unchanged (#683, thanks @Noschvie)
  • The message about a failed scheduled backup now lists each failed device with its hostname, address and the reason it failed, so you can tell from the message whether you need to act, and its link opens the failed devices on the Backups page (#685, thanks @Noschvie)
  • A failed Settings read of a device now writes one warning to the log with the device id, the query that failed and the reason as a short class (timeout, unreachable, auth and so on); the page text is unchanged and the line never holds a setting value or a credential (#712)
  • Start warning when a sign-in variable (AUTH_MODE, PUBLIC_URL, OIDC_*, ADMIN_GROUPS, OPERATOR_GROUPS, OIDC_CLIENT_SECRET_FILE) is set in the environment without the TASMOFLEET_ prefix: such a variable was ignored without a word; the warning names the key that works, the value is still ignored and never logged (#721)

Fixed

  • A deleted device or a transaction removed by the retention (AUDIT_RETENTION) no longer frees its id for the next new one: a new device took the id of the newest deleted device and showed its console history and audit rows, and old links and notifications opened it; a new transaction could show another one's audit rows the same way. Ids only grow now (#498)
  • The style guide's Severity sample is built from the app's own severity control, so it no longer shows the stronger level (warn) as Advisory (#514)
  • The style guide page has one h1, one Breadcrumb landmark and unique ids: the samples of the page header, crumbs, error page and sign-in card draw their title and trail without the page-level identity (#515)
  • The backup age metric of a device no longer counts the safety backup of replacement hardware that "Replace device" files under it: it shows the device's own last backup, and a device with only such runs has no backup age sample (#545)
  • The one-time backup layout migration now treats a file system without directory fsync (vboxsf, some 9p and SMB mounts) like the backups themselves do: it updates the row in the same run instead of leaving the entry for the next start, and logs the limitation once per directory; real I/O errors still leave the entry (#548)
  • GPIO templates: the group cards no longer jump around when the devices are read again; the groups stay in the order of chip family and template name, and each card keeps its column, whatever a device answered, on a desktop, a tablet and a phone. The summary line and the row chips still show what differs (#549)
  • Health: a device on your broker that sends no telemetry no longer flips to Stale and back between its polls when POLL_INTERVAL is longer than about 9 minutes (at 15 minutes that wrote about 190 history rows a day, at 2 hours the device showed Stale most of the day), and a start no longer writes two history rows for each such device about 11 minutes later. A poll's answer, or its refused HTTP API, now counts until the next poll is due; a device the poll no longer reaches is Stale from that poll on (#669)
  • The Devices list on a phone shows every filter chip and picker without sideways scrolling: the chips wrap onto further lines, the filter field fills its whole line below 720 px, and the separator in front of the Chip and Tag pickers is hidden below 1120 px, where the row can wrap (#678)
  • The 24 h Wi-Fi sparkline of a device's Stability card fills the whole width of its column at every screen width instead of stopping at 240 px (#679)
  • The info icons of the Identity card's "Reported by the device" fields sit on their label's line instead of below it, and a tap on one opens its explanation (a tap elsewhere or on another icon closes it); on a phone the text could not be read before (#680)
  • CI: superseded Go caches no longer pile up on main and push the repository over the 10 GB cache limit. A job after main.yml, the nightly and the weekly run keeps the newest cache of each series (Go version and go.sum hash do not count) and deletes the rest (#692).
  • Policy reads of OtaUrl, PowerRetain, LogHost and SwitchMode1 to SwitchMode28 go over MQTT first like every other read, so a device that is online on the broker but whose HTTP does not answer can be checked against these rules; who may send them in the console is unchanged (#711, reported in #702, thanks @Noschvie)
  • Add devices: "Show ignored" now counts and lists a dismissed address change or conflict too, in its own section (Address changed or Conflicts) with an Ignored badge and Restore as its only action, and Restore puts it back there. Before, such a dismissal could not be undone: the count skipped it, and the device keeps announcing the same data, so the 30-day expiry never removed it (#714)
  • Discovery: a device whose tasmota/discovery/<MAC>/config message cannot be used (not JSON, no valid MAC or IP address, a MAC that differs from the topic) is now named in the log at the default level, once, with its MAC and the reason, never the message text; before, the debug line named neither. A broker reconnect that replays the same message does not write it again. MQTT messages that find the discovery queue full (discovery configs, LWT, STATE, INFO, Status 5 replies) are counted in tasmofleet_discovery_proposals_dropped_total{kind="queue_full"} (#715)
  • Audit log: the entries for ignoring and restoring a discovered device now say which device it was. The target shows its name and the number, the summary its kind and address, and the details its MAC; before, they only read "Discovered device #12". Older entries keep their text (#716)
  • A button that updates only part of a page (such as Test connection or a relay switch), pressed after the session expired (a tab left open past the idle limit), now leads to the sign-in page instead of putting the text "missing or invalid CSRF token" into the page in place of the row or card (#717)
  • Add devices: Ignore, Ignore selected and Restore now carry the version of the device the page showed and are refused with "The form is out of date. Reload the page and try again." when the number has since been given to another device. Before, a page left open could hide (or restore) a device that appeared after it was loaded and that nobody had seen, because the numbers of deleted rows are reused (#745)

Security

  • The hostname a device reports is now cleaned like the rest of its text before it is stored (control and invisible characters removed, at most 100 characters). Before, a device, or anything answering at its address, could store a hostname with line breaks, invisible or direction-changing characters, or of any length, which then showed on its pages. The hostname listed in the message about a failed scheduled backup is cleaned as well, also for hostnames stored by older versions (#747)
  • The Unicode line and paragraph separators (U+2028, U+2029) are now removed from device names and hostnames like the other control and invisible characters. Before, a name or hostname containing one was kept and could show as a second line in the message about a failed scheduled backup; discovered devices were affected in the same way (#755)

TasmoFleet 0.34.3 "Split Rock"

Choose a tag to compare

@github-actions github-actions released this 12 Nov 23:10
Immutable release. Only release title and notes can be modified.
v0.34.3
06f8fc9

Fixed

  • The Devices list keeps up with its live updates on larger fleets: a cell is only swapped when its content changed, and the select-all sync no longer runs for every single cell (#726)
  • The :edge image on ghcr no longer disappears after a re-run of the same commit: replacing the previous edge keeps every manifest that a tagged image still uses (#728)
  • CI: the weekly mutation run opens its failure issue when a shard hits the job timeout too, and it deals its files over five shards by fresh weights, so no shard runs into the limit (#729)

TasmoFleet 0.34.2 "Split Rock"

Choose a tag to compare

@github-actions github-actions released this 12 Nov 20:56
Immutable release. Only release title and notes can be modified.
v0.34.2
b1b99f9

Added

  • docs/pitfalls.md: one rule per mistake that already happened, with where it is enforced (#525)

Changed

  • CLAUDE.md is a short router with the enforcing command per rule; the details moved to docs/dev, and make agent-refs fails when they name something that does (#526)
  • Changelog lines are added as fragment files in changes/unreleased/ instead of edits to CHANGELOG.md, so parallel pull requests no longer conflict there; the release commit assembles them with make changelog-assemble (#527)
  • A second ruleset on main, "main: CI must be green (no bypass)", holds the status check required without an admin bypass, so nothing reaches main before required is green on that commit (#709)

Fixed

  • Settings: the tab could not be read on a device that is online on TasmoFleet's broker but does not answer over HTTP ("The device did not answer in time."); the MQTT user was asked over HTTP first, and that timeout discarded the whole read. A bare MqttUser is now read like every other value, MQTT first; in the console it stays admin-only and its reply masked (#702, thanks @Noschvie)
  • Settings, Sign-in: "Test discovery" showed the whole settings page inside the Identity provider card; it now answers with its own result line only, like the other test buttons (#705, thanks @Noschvie)
  • The Authentik guide printed the sign-in variables without the TASMOFLEET_ prefix for the container configuration, where a name without the prefix is ignored without a message (the short names are valid only in /data/tasmofleet.env); it now uses the prefixed names, says that issuer and client secret must be set in the same place and that a setting comes from the page or from the container configuration, names the "Sign-in" tab, and marks the application icon as an optional Authentik-side step that tasmofleet neither sends nor reads (#706, thanks @Noschvie)
  • Settings, Sign-in: the help under Issuer URL no longer says the issuer needs a trailing slash (that is Authentik's form); it must be exactly the issuer the identity provider publishes (#718)
  • Settings: every hint that names a container variable now shows the TASMOFLEET_ name, which is the only form the container environment reads (a short name there is ignored without a message): the help of locked fields, "Needs TASMOFLEET_PUBLIC_URL", the save error, the confirmation banner and the "Set by the container" card (#719, thanks @Noschvie)
  • Sign-in: with only the client secret in the environment, the start log now has one warning that TASMOFLEET_OIDC_ISSUER is missing because the secret locked it, and the Sign-in tab says so instead of "set by the environment"; the same for an issuer from the environment, which locks the client secret. docs/configuration.md states that both are set as variables or neither (#720, thanks @Noschvie)

Security

  • Docker Hub credentials are read only through the dockerhub deployment environment (policy: main and v* tags); pull requests and other branches never receive them, and missing credentials on main or a release tag now fail the job instead of silently skipping Docker Hub (#693)

TasmoFleet 0.34.1 "Split Rock"

Choose a tag to compare

@github-actions github-actions released this 06 Nov 19:57
v0.34.1
27868c2

Upgrade notes

  • The repository moved to github.com/hellwand/tasmofleet. Docker Hub users (Unraid included) change nothing. ghcr.io users: switch the image to ghcr.io/hellwand/tasmofleet; this release is also published once more under the old name ghcr.io/nofuturekid/tasmofleet so you see this note, later releases are not. No database migration.

Added

  • Website: a project page in site/ (static HTML and CSS, light and dark, with the real UI screenshots, the features, install per platform and links), for GitHub Pages at the root with the demo next to it (#566)

Changed

  • The GitHub Pages site now serves the website at https://hellwand.github.io/tasmofleet/ and the static demo moved to https://hellwand.github.io/tasmofleet/demo/. Links to the old demo address land on the website, whose demo link leads on (Fixes #566).
  • The README is a landing page (pitch, features, install in a few lines, links to the website and demo). Installation details, backing up, what TasmoFleet changes on devices and development moved to docs/ (#565)
  • The repository moved to the hellwand organization. The ghcr image is now ghcr.io/hellwand/tasmofleet; the old ghcr.io/nofuturekid/tasmofleet keeps its existing tags but gets no new ones, so change the image name if you pull from ghcr. The Docker Hub image nofuturekid/tasmofleet is unchanged, so Unraid users change nothing (#690)

TasmoFleet 0.34.0 "Split Rock"

Choose a tag to compare

@github-actions github-actions released this 06 Nov 06:20
v0.34.0
20d731f

Upgrade notes

  • Migration 0046 (adds the table snapshot_runs; data otherwise): a stored snapshot interval that is not zero becomes every day at 03:00 (SNAPSHOT_DAYS all seven days, SNAPSHOT_TIME 03:00) and the interval row is deleted; a stored 0 (off) and no stored interval stay off. Nothing to do: look at System, Snapshots, Schedule, and choose other days or another time if 03:00 does not suit you. The migration also stores a marker so that the first start after the upgrade does not take a snapshot (#602, #601).
  • TASMOFLEET_SNAPSHOT_INTERVAL no longer exists. It is not in the Unraid Community Applications template, so a template install has nothing to change. Where you still set it (Compose, docker run, an env file) it is ignored and TasmoFleet logs a warning at start; delete it (#602).

Changed

  • Scheduled database snapshots are taken on chosen weekdays at a time of day, set on System, Snapshots under Schedule (weekday chips and a time, on the server's clock, TZ), instead of every so many hours. No day ticked is off. The time stays the same on the wall clock when the clocks change (#602).
  • TasmoFleet does not take a scheduled snapshot when it starts, and saving the schedule does not take one either. Until now every start and every change of the interval took one at once, even minutes after the last (#602).
  • A scheduled snapshot that TasmoFleet missed because it was not running is taken late when it is back within 60 minutes of the scheduled time. After that it is skipped and a notification is sent (the existing "Database snapshot failed" setting, linking to System, Snapshots), and the Schedule card says so until a newer snapshot exists (#602).

Fixed

  • Reachability: the leftovers of a device whose HTTP API is off (SetOption128 0) and which MQTT cannot serve. Upgrade <url> and WebGetConfig <url> typed in the console or sent in bulk are refused up front for such a device, by the router's own rule that jobs never go over MQTT, instead of failing with the refusal. Refresh identity is disabled when the refusal is found while the page is open, and enabled again when it ends, without a reload. The GPIO templates refresh, the policy check and the group-topic reader leave such a device alone like an offline one, without an error. One wording everywhere: restore, Replace, the update retry, the import report, the backup history, job notes and logs say "HTTP API off (SetOption128 0)" with the fix. A "no path" for an update no longer advises an upload over MQTT, which no page offers. Cosmetic: Restart's disabled state no longer points at the "Back up:" note, its refusal page is titled "Restart not sent", a refused relay switch shows the reason once, and the text no longer breaks inside "(SetOption128 0)" on a phone (#659)
  • A console command, switch, settings save, Make compliant, bulk command or backup, update, restore or Replace device that meets TasmoFleet's own background read of the device waits up to five seconds for it instead of being refused with "Another operation on this device is running (broker read)" (since 0.29.1; since 0.32.0 the read also probes the identity and holds a device about two seconds: after the device restarts, for every device of a fresh installation or after a power cut, and one device every 30 seconds after TasmoFleet starts). Any other busy device still refuses at once (#670).
  • UI: the values of the stat tiles on the device overview and in the Policy header are drawn in the tone's text colour instead of its fill, so amber and grey values meet WCAG AA (4.5:1) on the light surface and the dark one; the design system now states the contrast target (#513)
  • Import from TasmoAdmin: the plan counts lines and shows a problem that keeps its row (an unusable port, an encrypted password without the key file) as a note on that row. Before, a devices.csv with 1000 such rows showed "0 reject" next to a red row "Reject · 1950 more lines with errors", because it counted problems and called warnings rejections. A blank line after exactly 1000 rows is no longer refused as "more than 1000 rows". tasmofleet import prints the notes with their line and says how many rejected lines it does not list one by one (#661)
  • Last known values: a console command that changes a setting and Make compliant now count as writes, so a read that started before them is no longer shown as the current values on the Settings tab. The background read of a device's values stops when TasmoFleet stops (it kept sending to the device for up to a minute), and values another device answered (a MAC other than the stored one, at the stored address or on the device's MQTT topic) are no longer remembered for the Settings tab or the policy check; the read fails instead The Settings tab of a device on minimal firmware (an update in progress), which cannot show its MAC, says so instead of "could not be read" (#662)

Breaking

  • The setting and variable SNAPSHOT_INTERVAL is removed without an alias; use SNAPSHOT_DAYS and SNAPSHOT_TIME (System, Snapshots). See the upgrade notes above for what happens to an existing interval (#602).
  • A settings file written by tasmofleet settings export before this version holds SNAPSHOT_INTERVAL, and tasmofleet settings import refuses the whole file for it (setting is not editable here). Delete that line before you import the file, then choose the days on System, Snapshots (#602).

TasmoFleet 0.33.0 "Dondra Head"

Choose a tag to compare

@github-actions github-actions released this 06 Nov 03:15
v0.33.0
e93434a

Upgrade notes

  • Migration 0045 (data only): a stored backup interval that is not zero becomes every day at 03:00 (BACKUP_DAYS all seven days, BACKUP_TIME 03:00) and the interval row is deleted; a stored 0 (manual only) and no stored interval stay manual only. Nothing to do: look at Devices, Backups, Schedule, and choose other days or another time if 03:00 does not suit you. The migration also stores a marker so that the first start after the upgrade does not run a backup (#601, #612).
  • TASMOFLEET_BACKUP_INTERVAL no longer exists. It is not in the Unraid Community Applications template, so a template install has nothing to change. Where you still set it (Compose, docker run, an env file) it is ignored and TasmoFleet logs a warning at start; delete it. It had only been read once, on the first start that saw it, and the migration has already carried the stored value over (#601).

Added

  • Notifications: browser notifications while a TasmoFleet tab is open. The events of the webhook and e-mail channels (a finished update, a failed scheduled backup or snapshot, as far as Settings, Notifications selects them) also show to admins as desktop notifications. Each browser opts in itself, with "Enable browser notifications" on that tab (the permission is asked for only after the click; the choice stays in the browser, nothing is stored on the server), and with several tabs open one notification comes per event. The card says so when the browser blocks notifications or the page is not HTTPS or localhost, where browsers do not offer them. No service worker: nothing shows while no tab is open (#540)

Changed

  • Spec: the operator role reads the redacted values in config diffs (backup comparison and Drift tab); only free-text settings (rules, scripts, Berry code, mems, rf_code) show just that they changed. The code and the restore security notes already worked this way; a handler test now pins it (#501)
  • Scheduled device backups run on chosen weekdays at a time of day, set on Devices, Backups under Schedule (weekday chips and a time, on the server's clock, TZ), instead of every so many hours. No day ticked is manual only. The time stays the same on the wall clock when the clocks change (#601).
  • TasmoFleet does not run a fleet-wide backup when it starts, and saving the schedule does not run one either. Until now every start (a container restart, an update, a Home Assistant app restart) and every change of the interval backed up all devices at once, even minutes after the last run (#612, #601).
  • A scheduled run that TasmoFleet missed because it was not running starts late when it is back within 60 minutes of the scheduled time. After that it is skipped and a notification is sent (the existing "Scheduled device backup failed" setting), and Devices, Backups says so under Last run (#601).

Fixed

  • Policy: "Show all" under the devices of a rule draft works on the first click right after typing, instead of the form's own preview putting the short list back (#660)
  • Health: devices whose retained last will says Offline are no longer all polled on the first tick after a start (the polls are spread over one poll interval), a will that arrives live (a reboot, an OTA) is polled one interval later instead of while the device restarts, and the first poll after a replayed will no longer writes an "Online" history row per device. A device on MQTT whose telemetry is quiet is polled every POLL_INTERVAL like a device without MQTT, so it stays Online instead of going Stale and back every 11 minutes (HTTP API on) or 30 minutes (HTTP API off) while POLL_INTERVAL stays below the stale threshold (as with the defaults), and the back-off cap no longer undercuts a POLL_INTERVAL longer than 30 minutes (#652)

Breaking

  • The setting and variable BACKUP_INTERVAL is removed without an alias; use BACKUP_DAYS and BACKUP_TIME (Devices, Backups). See the upgrade notes above for what happens to an existing interval (#601).
  • A settings file written by tasmofleet settings export before this version holds BACKUP_INTERVAL, and tasmofleet settings import refuses the whole file for it (setting is not editable here). Delete that line before you import the file, then choose the days on Devices, Backups (#601).

TasmoFleet 0.32.0 "Fastnet"

Choose a tag to compare

@github-actions github-actions released this 06 Nov 01:43
v0.32.0
2eed97a

Added

  • Device data stays current on its own: once a day per online device (spread over the fleet, one device at a time) and after a restart (once, 20 seconds after it settled; a device in a boot loop about once an hour), TasmoFleet reads the Settings values, the values the policy rules check and the GPIO template reading, so the Settings tab and Policy → GPIO templates show them without a click, and it probes the identity again over HTTP after a restart and every 24 hours (without renaming anything: names and topics change only on Refresh identity). Offline and busy devices are skipped, the policy values are not read while the live check is paused, and Status 0 is never sent (#600)

Fixed

  • Import from TasmoAdmin: a row with a problem that does not reject it (an encrypted password without the key file, a bad port) counts once against the 1000-row limit instead of once per problem, so a devices.csv with 501 to 1000 encrypted rows is no longer refused with a false "more than 1000 rows" (#500)
  • A device whose HTTP API is off (SetOption128 0) and which MQTT cannot serve is now refused up front, with the same reason and fix, by everything that used to try and fail: its relay switches and Restart (disabled on the device page with the reason), Refresh identity, direct posts to Console and Settings, retrying a backup, command or Make compliant transaction, Make compliant on cached values, applying a GPIO template, the Drift tab's live read, and the silent policy read every ten minutes (skipped without an error). One wording everywhere ("HTTP API off (SetOption128 0)" and the fix, also in Copy from a device) replaces "likely refuses HTTP API commands", and the fix no longer reads as if it meant MQTT. The connection card's "Since" shows when the API was first found off, not the latest refusal. Bulk Send command applies the write rule only to commands that write (#645)
  • Stopping TasmoFleet (docker stop, a restart) with a browser tab open takes a moment instead of 10 s and exits with status 0 instead of 1, so restart policies and monitoring no longer read it as a crash; and a start that fails halfway now waits for the background tasks before it closes the database (#497)
  • Policy: "Show all" under the devices of an unsaved rule (from a template, a command or Duplicate) works without JavaScript and keeps what you typed, instead of ending on a white page reading "unknown form field"; a mistyped address of New rule or Duplicate shows the error page too (#512)

TasmoFleet 0.31.0 "Cape Spear"

Choose a tag to compare

@github-actions github-actions released this 05 Nov 22:59
v0.31.0
f1554aa

Changed

  • The Settings tab and Policy → GPIO templates show the last values read at once, with their age ("Read 3m ago"), instead of waiting for the device, and read it in the background when they open; values older than an hour carry a "Stale" marker, a refresh that fails keeps the old values and says why, and opening a page while a read runs sends the device nothing more. The values are kept in memory, so after a restart the first open reads the device again (#599)

Fixed

  • Sign out after the session has expired signs out: the sign-out button no longer ends on a white "403 missing or invalid CSRF token" page, the cookie is cleared and you land on the sign-in page (#508)
  • A device on TasmoFleet's broker that left it with a retained Offline will (a power cut while switching broker, a restored config for another broker, MQTT switched off) is now asked over HTTP like any other device, at the normal interval while it answers and backing off while it does not, so it is shown online again when it answers and the broker hints and re-reads can reach it; before, it stayed Offline forever. With its HTTP API off as well, the refusal counts as an answer, as for every other device: it is online, the Reachability tile says "HTTP API off", and backups, updates and bulk actions say up front that no path is left (#619, #447, thanks @Noschvie)
  • What's new: a long section title such as "Upgrade notes: action may be required" wraps inside its badge instead of running over the first item, paths in code break after a slash instead of inside a word on phones, and the collapsed "Older releases" list no longer reserves 8 px below its title (#510)
  • Firmware: a host-style device name such as livingroom-readinglamp.example.internal in the Delete file confirmation breaks between its labels on a phone instead of inside one (#511)
  • Layout at tablet widths (720 to 1199 px): the Devices table of Backups uses the full width instead of being cut off in a half column, Settings → MQTT puts TLS on its own row (and Notifications puts the SMTP security on its own row) so "Reset to default" no longer overlaps Port, the Notifications message preview no longer breaks the word "failed", and a policy rule has no double gap above its history; on Backups, device names and "Newest backup" now wrap at every width where they reach the end of the line instead of being clipped (#633)

TasmoFleet 0.30.1 "Eddystone"

Choose a tag to compare

@github-actions github-actions released this 05 Nov 20:04
v0.30.1
a440186

Fixed

  • Times no longer show in the server's format for a moment while a page loads, for example when switching the Online and All chips on Devices (#635, thanks @Noschvie)
  • Devices with SetOption4 1 are read over MQTT without the 8 s wait and the HTTP fallback every 10 minutes, and writes to them over MQTT are confirmed (#632)