Helios. Sign in
What is coming planned
More than one place alerts go out no date yet
A second account on the same messaging service, simply as a second entry: one group for the technicians and one for the customer, two mailboxes, two numbers. Today where an alert goes is a kind and you get one of each per site; it should be something you name, and can have several of — the way a connection already is.
Speed test from the app after the current season
A speed measurement you run on site with your phone and that is kept with the device: download, upload and latency, with the time it was taken. Against a measurement point of our own instead of a random server, so the outcome is repeatable and comparable between locations and between years. Alongside that, room for a screenshot of a measurement from another app, for whoever is used to that number.
Shipped
v0.176.0 2026-10-10
change WhatsApp over the platform's own server now goes out through the platform, which keeps it within limits: a few messages a minute, an hour and a day per customer, so a burst of alerts cannot get your number blocked by WhatsApp. It is free for the first 14 days after linking and continues on a paid plan after that. The Test button on the Evolution API package says until when it is free — and, once that has passed, why alerts stopped. WhatsApp over a server of your own is not affected.
v0.175.1 2026-10-09
nieuw Failover and failback alerts for a site that runs on a fixed line with a mobile backup. Switch it on per site under Which alerts, and you hear it the moment the fixed line drops and the site falls back to mobile — and again when the fixed line returns, with how much data the mobile backup carried while it was in use. It is its own switch, separate from the general connection-switch alert, because a backup kicking in deserves a clearer message of its own.
v0.174.0 2026-09-07
nieuw WhatsApp without a subscription. Press Link WhatsApp on the Evolution API package and you get a session of your own on the platform's server: the address, the session and its key are filled in for you, and all that is left is scanning the code with the phone that will send. It costs nothing, so a trial has WhatsApp alerts too. The screen says plainly what you are linking to — WhatsApp has no official interface for this, so the number you link can be blocked later on, and that is worth knowing before you scan rather than after.
v0.173.0 2026-09-07
nieuw A third WhatsApp supplier: Evolution API, a server you host yourself. It sits beside Green API and WASender under the same medium, so one organisation can be on one supplier and the next on another, and a destination on the Alerting page says which account it goes out over. The package is free — a session on a server of your own costs nothing per month. Fill in the address, the key and a session name, press Link WhatsApp, and scan the code with the phone that will send.
v0.172.1 2026-09-07
change The label under a bonded router's signal figure reads ‘SF’ instead of ‘SpeedFusion’. The column is as wide as a percentage, so the full word ran off the edge and arrived as ‘SpeedFusio’; the other labels in that column — LTE, Wi-Fi, Health, Latency — are short for the same reason. Hovering still gives the full name.
v0.172.0 2026-09-06
fix Two controllers of the same make no longer share one connection status. They are two installations of one connector, and they kept overwriting each other: one unreachable, the other fine, taking turns — which produced a stream of ‘connection lost’ messages each followed within the same minute by ‘connection restored’, while nothing had changed. Each installation now has its own status, and the alert names the controller it is about instead of saying ‘the wifi controller’ when there are two of them.
v0.171.2 2026-09-04
change Paying the first month happens on Mollie's own payment page: the button takes you there, you pay as you always do (iDEAL, card, or a QR shown there), and Mollie brings you back to the billing page, which updates itself the moment the payment is in. The QR code that Helios drew itself is gone; bank apps could not read it.
v0.171.1 2026-09-04
fix The QR code on the billing page showed one blown-up corner instead of the whole code, so no phone could read it. It now scales with the screen.
v0.171.0 2026-09-04
nieuw Becoming a paying customer takes one payment. On Profile, Billing, pick a plan, fill in the address for your invoices and scan the QR code — or open the payment page. That payment covers the first month and authorises the monthly collection, so nothing is asked of you again; the page updates itself the moment the payment is in.
change The billing tab shows the invoices as your administration sends them, with a status you can read — paid, open or credited — and the PDF of each. A plan change moves the subscription from the first of next month; going up, the difference for the days left is invoiced and collected like any other invoice.
change There is no trial period any more. A new Helios starts on the free Starter plan and stays there until you choose otherwise; nothing runs out.
v0.170.0 2026-09-04
change Alerters that cost nothing no longer have a switch to forget. E-mail, Green API, Telegram, Slack and Discord are free: installing one is the choice, and it works from that moment. Only an alerter with money attached is switched on separately — today that is WASender, where every connected number costs per month. Of that one there is exactly one: it sends to as many groups, in as many sites, as you like, so a second is never needed and no longer offered.
v0.169.0 2026-09-04
change You switch an alerter on or off, not a medium. Green API and WASender both send over WhatsApp, and until now they shared one switch: turning one off turned the other off with it, and the screen showed what looked like two switches and was one. Each package has its own licence now — pick the one you want and that is the one you have. What was already switched on stays on: an existing licence moves to the package that was carrying it, so no alert stops.
v0.168.1 2026-09-04
fix Linking WhatsApp asks for the phone number. The supplier needs to know which number a session is for, and without it every attempt came back as an error in their words. There is a field for it now, and pressing the button while it is empty says which field to fill instead.
v0.168.0 2026-09-04
nieuw Linking WhatsApp is one button. Helios asks the platform for a WhatsApp session of its own, fills the key in for you, and shows the QR to scan with the phone that will send — you never visit the supplier and never copy a key. The QR is refreshed while you wait, because it only stays valid for a moment, and the screen says so itself once the phone has scanned it. After that you pick the group with a code, and alerts go out.
v0.167.0 2026-09-04
fix A second supplier for a medium that already had one is visible again. Green API and WASender both carry WhatsApp, but the screen where you fill in credentials listed one entry per medium rather than one per account — so WASender, which loaded, was licensed and could send, had nowhere to be set up. The list is per account now, named after the supplier, and a destination shows whether that account itself is configured instead of borrowing the answer from its neighbour.
v0.166.1 2026-09-04
fix The WASender package is in the shop. It worked everywhere it was tried — it loaded, registered and sent — but it was missing one empty file the shop requires before it will offer a package at all, so it was the one package nobody could install.
v0.166.0 2026-09-04
nieuw Link a WhatsApp group with a code instead of looking up its id. On the Alerting page you ask for a code, send it in the group the alerts should go to, and the group appears as a destination on its own — with its own name. Nobody has to find a chat id, and no list of groups is shown that is not yours: the group tells Helios who it is by answering. A code lives fifteen minutes and links one group once.
v0.165.0 2026-09-04
nieuw A second WhatsApp supplier, WASender, beside Green API. It is a package you install from the shop: one session is one WhatsApp number, reached over a single API key. Per organisation you pick at a destination which account sends the alert, so one can be on Green API and another on WASender without either getting in the other's way.
v0.164.0 2026-09-02
nieuw E-mail works from the first minute. A fresh installation had no mail server, so until somebody typed one in it could not invite a colleague, reset a password or e-mail an alert. An installation that is run by the Helios platform now sends its mail through the platform instead, from the platform's own address — nothing to fill in. Fill in a mail server of your own only if you want mail to come from your own address; the moment you do, that one is used. Switching a connection off still switches it off.
v0.163.8 2026-09-02
fix A line in a list is as tall as a line in a table. The alerting screen listed thirty-five devices at 36px each where a table row is 27px, and seven other lists each had a height of their own — 3, 6, 8, 8 and 10px. They all take the one measure now, so a list and a table beside each other read as the same thing.
v0.163.7 2026-09-02
fix This page is written in English, and the entry above quoted a Dutch sentence from the application itself. The quote is gone; what it said is described instead.
v0.163.6 2026-09-02
fix The status page a customer opens works again. It showed the message that the status could not be loaded, and no devices at all, whatever the group: the page stands on its own and had stopped loading the script its own text needs, so the first line of drawing threw and the failure was reported as a status that could not be fetched. The status badge on it also has its shape back — it was bare text beside an invisible dot — and the shared view, the other public page, is in Dutch again instead of English.
v0.163.5 2026-09-02
fix No more little pictures in the interface. A tile with a plug or a satellite in front of every device on the customer page, a picture beside the name of a device in a group, a magnifying glass inside a search box: they are gone and the word stands there instead. The symbols you can put in a notification template stay — those end up in the message, not on a screen here.
v0.163.4 2026-09-02
fix The delete button says what it is again. It carried a wastebasket picture, and a picture is not a letter: the font draws it on its own baseline, so in the lower row it stood a few pixels too low and was cut off along the bottom. It is a cross now, on all three screens that have such a button. The badges beside it lost their pictures too and simply say what they mean: orphan, link, archived.
v0.163.3 2026-09-02
fix One badge for the whole application. The same little round label had six shapes — a different height on the devices page, in the connector hub, on an asset, in the bulk bar and on this page — and in a table it decided how tall the row was. It has one height now, like a form field and a table row already had, and so does a button standing in a row. A devices row went from 33px to 27px; what is left is the text itself.
v0.163.2 2026-09-02
fix Table rows are lower again. The action button at the end of a row was the tallest thing in it — 24px against a 19px badge — so it, and not the row, decided how tall every table was. A button standing in a row now takes its height from one measure, like a form field and the row itself already did.
v0.163.1 2026-09-01
fix A Peplink now shows its firmware and its serial number. Both were in the answer InControl2 gives on every round — fw_ver and sn — and neither was ever stored, so those columns showed a dash and read as “this device does not report it”. Nothing new is asked of InControl2; the round is the same call it always was.
v0.163.0 2026-09-01
nieuw The badge in the Polling column is coloured by how its connector is doing. It said only where a device came from, in one colour for everything, so a link that had not completed a round in a fortnight looked exactly like one that finished a round a minute ago. Green is a round completed on time, orange a connector that is up but behind, blue one Helios cannot reach right now, red one that has been away for over a day, and grey a device nothing is polling any more.
info “Behind” is measured against the connector’s own poll interval — two of its own rounds — so one that polls every minute is late after two and one that polls hourly is not late until two hours have passed. Everything this needs was already recorded; nothing new is asked of any connector.
v0.162.0 2026-09-01
change Table rows are shorter, and every table has the same row height. It was four measures for one thing: 10 pixels in the shared rule, 5 on the devices page, 3 in a source-group table, 4 and 5 in the client list of an expand panel. One measure now, in one place, and it is set lower than any of them.
info The check that holds the field height to one measure holds the row height to one as well. It was reading a rule’s comment as part of its selector, which quietly exempted the very rule the measure lives in — and it missed `#ap-table td` entirely, which is the exception that made the devices page a different height from every other table.
v0.161.9 2026-09-01
change Adding a destination and sending a test alert stand next to each other under the list. Both are what you do underneath it; a column of one button each said they were two different kinds of thing.
v0.161.8 2026-09-01
change On a destination, “over what” and “to where” are the same width: they split the room fifty-fifty. One fixed and one growing meant a package name was cut off while a group name had half a line to itself.
v0.161.7 2026-09-01
change Destinations are separated by a hairline instead of each sitting in a box on a lighter fill. A box plus a tint made three surfaces on one card and it still did not read as a list.
v0.161.6 2026-09-01
change The template picker moved onto the destination’s own line, where the name field was. A destination is named by what it is and where it goes — the package and the group — so a field for a second name was one nobody was going to fill in. The line of tick boxes under it now carries only the ticks, and sits closer.
v0.161.5 2026-09-01
change A destination stands a shade lighter than the card it sits in, so each one reads as a thing of its own instead of as a run of controls on the card’s own surface.
v0.161.4 2026-09-01
fix Moving the routing matrix onto the destinations read only half of what it meant, and that half went out. The matrix said two things at once: rows for an event meant “only these media get this one”, and NO rows for an event meant “everybody gets it”. A site whose matrix said “outages go to WhatsApp” therefore ended up with a WhatsApp destination that received outages and nothing else — losing the connection, quality and usage alerts it had been getting — while an e-mail destination the matrix never named started receiving the outage alerts it had been kept from.
fix Every destination on every site is recomputed from both halves. It is safe to run over the earlier result, which is what it does.
v0.161.3 2026-09-01
fix The two time fields under Quiet hours have room for the clock the browser draws in them. 96 pixels fitted “22:00” and not the furniture beside it, so the last digit sat against the edge.
v0.161.2 2026-09-01
change Fields are 26 pixels tall, and 24 in a dense table row.
v0.161.1 2026-09-01
change Fields are 30 pixels tall instead of 34, and 26 in a dense table row. One line changed — which is what having one measure is for; a day ago this was twelve edits and a hunt for the ones that were missed.
v0.161.0 2026-09-01
change Every field in Helios is the same height. Twelve places set their own — the shared rule, the alerting page twice, a device table, a report header, the settings page twice, the login form, the two-factor form, a profile swatch — so one screen could show a select, a number box and a time field at three different heights in one row. Nothing failed; it simply read as unfinished. One measure now, in one place, with a smaller one for a dense table row.
info A check holds every screen to it, the way one already holds every table to one row height. A measure that follows from whatever happens to be inside a control is not a measure.
v0.160.4 2026-09-01
fix The two time fields under Quiet hours are the height of every other field on the page. A browser draws its own hour and minute segments in a time field and gives them a height of their own, so the padding that suits a number box left these standing a head above the line they sit on. They are also 96px wide instead of 120 — which is what “22:00” needs.
v0.160.3 2026-09-01
change The Alerting settings stand in two pairs: what this organisation is alerted about beside what happens when nobody acts on it, and the quiet window beside the digest. Cards in a pair are the same height and sit in the same rhythm as the ones above and below, and they stack again on a narrow screen.
v0.160.2 2026-09-01
change Quiet hours and the digest stand side by side. A time window and an interval are one line of controls each; under each other they left half the width empty and made the page longer for nothing. Escalation keeps the full width — it has two rows and a recipient. They stack again on a narrow screen.
v0.160.1 2026-09-01
fix The picker on a destination says Template, which is what they are called everywhere else — the tab, the editor, the list. It said “wording”, a second word for one thing, which is a second thing for anybody who has not read both screens.
v0.160.0 2026-09-01
nieuw A destination says which alerts it wants and in whose words. “Routing per event” was a card of its own beside the destinations — one decision spread over two screens — and it could only pick a MEDIUM: “the technicians on an outage, the customer only when it is back” could not be said at all. It is two lines on the destination now, and that card is gone.
change Every destination is rendered in its own words. The message used to be built once for the whole fan-out, so one template served a site; a destination with a template of its own now gets it, and the others keep the site’s default.
info Nothing changes for a site that had a routing matrix: what it said moved onto its destinations — every destination of a medium the matrix named for an event now asks for that event, with the template that went with it. A destination that says nothing wants everything, which is what a site without a matrix already did.
v0.159.1 2026-09-01
fix A destination is one line: over which package, to where, called what, on or off, gone. It was three full-width fields stacked on top of each other, which read as three unrelated settings — because that is what they were before this became a list. The switch and the cross keep to the right edge, so two destinations line up under each other.
change The two endpoints that wrote one destination per medium are gone along with the screen that used them. They were a second way of writing the same table, with the older idea of what a destination is baked into them.
v0.159.0 2026-09-01
nieuw The Alerting page holds a list of destinations instead of one row per medium. Add as many as a site needs: the technicians’ group and the customer’s, two mailboxes, two numbers — each with the package that carries it, a name of your own, its own switch and its own cross. Two over one medium is two rows now, and no longer one overwriting the other.
change A destination says which installation carries it, so “our own WhatsApp account” and “the customer’s own” are two choices in the same list. The collapsed card shows one chip per destination that is actually on.
info Choosing per event still picks a MEDIUM: tick WhatsApp for outages and every WhatsApp destination of that site gets them. Per destination — the technicians on an outage, the customer only on a recovery — is a finer cut than that table can make yet.
v0.158.3 2026-09-01
fix A migration writes down that it ran. Everything they report sat at INFO while an installation runs its log at WARNING, so the lines were made and thrown away: no installation has ever recorded that it ran its schema migrations, and moving eleven alert destinations onto accounts said nothing at all. Only the migrations are louder — turning the whole application to INFO would bury the one line that matters.
v0.158.2 2026-09-01
change A card in the shop puts what you already have in its top corner. “✓ installed v1.0.0” sat between the description and the button — in the middle of the card, taking its room from the only line that says what a package is for. Name and state on the top line, the description across the full width under it, the button in the opposite corner. Connectors and notification packages both, because it is one card.
v0.158.1 2026-09-01
fix The shop has a door on the Notifications tab too. It sells both kinds of package now, and the only way in was a button under the connector list called “Add connector” — so a notification package could be found by nobody who was looking for one. Each door shows what you walked up to it for.
fix The licence line on the Alerts tab said “Expires in 2027-09-01T14:13:52.806064 days days”. Two helpers were both called _chDays — one turning a date into a number of days, one turning a number into words — and JavaScript lets the second replace the first without a word, so a date went into the pluraliser.
info A check now holds every script to one name per function. It found a second case on the same page while being written; that one turned out to be a deliberate wrapper, which it can tell apart because a wrapper keeps the value it replaces.
v0.158.0 2026-09-01
nieuw A notification package installs the way a connector does: the folder it sits in is the installation. `channels/greenapi` is one; the same package installed again alongside it is a second, with its own name, its own credentials and its own destinations. Two WhatsApp numbers is two installations, exactly as two controllers of one make are two connectors.
nieuw Where an alert goes is a destination now: which installation carries it, over which medium, to where. A site could hold one destination per medium, so “the technicians’ group and the customer’s” could not be said. Several per medium is the point, and what sends is handed exactly that installation’s credentials.
change Two packages may carry the same medium — one WhatsApp over Green API and another over somebody else’s. Which one a message leaves over is what the destination says.
nieuw Notification packages are in the same shop as the connectors, with the same buttons behind them: install, update, remove, and install again into a folder of its own. The control plane packs them from the same source the images are built from, checks the same “needs Helios x.y.z”, and puts them back after an upgrade — a notification package left behind is an alert that stops going out, which is worse than a poller that stops reading.
change A package that needs a table of its own gets it, whichever of the two it is. The migrations that run at start-up now cover the notification packages as well.
info Nothing moved and nothing is routed differently: the installation carrying a package’s own name keeps the settings keys that were already there, and every destination moved to the installation that was already carrying it. The Alerting page still shows one destination per medium; showing the rest is a screen change rather than another change to what sends.
v0.157.0 2026-09-01
nieuw Who delivers an alert and what it is delivered over are two different things now. A KIND is the medium — WhatsApp, e-mail, Telegram; a PROVIDER is who carries it. Green API carries WhatsApp and it carries Telegram, and somebody else carries WhatsApp, so the two could not stay one word. A provider is a package that says what it needs, and the settings screen draws itself from that.
change The notifications page has no hand-written forms left. Green API, the alerting mail server and the Telegram bot each had a block of HTML, their own field names and their own save route — four write paths to the same rows, and the reason a sixth provider was a change in four files of ours. All five providers now declare their fields, their test and their own Dutch, exactly as a connector does.
change Testing a provider no longer sends anything. Green API is asked for the state of its instance and Telegram for who its bot is — a test that lands in a customer's group is not a test.
info Nothing moved in the database: a provider's fields are stored under the same setting keys as before, so no credentials could be lost by this. Routing is unchanged as well — an organisation still routes to a kind. Naming an account, and with it a second account on the same service, is the next step.
v0.156.3 2026-09-01
info Two items leave the roadmap, one of them only half. The catalogue you add connections from is in use: it builds its own list from the source, so a new kind appears there as it is finished, and it says on the card what a connector gives back, which version you have and whether it needs a newer Helios than this one. What it asks OF you — an address, a token, a password — is still only visible on its settings page once it is installed.
info Two controllers of the same make side by side is done, so that half is off the list as well: an installation is something you name, with its own address and its own settings. Where alerts go out is still the old shape — one entry per kind per site, so a second account on the same messaging service cannot be added. That is what is left of that item, and it is what the roadmap now says.
v0.156.2 2026-09-01
fix The settings of ten more connectors are Dutch. Only the connector that had a language pack of its own was translated; every other one still explained its address, its token and its password in English, one line below a Dutch label. Each now carries its own Dutch, and the one sentence they all share word for word sits in the layer above them.
fix An invalid escape sequence in three provider queries. Harmless today, a warning on every start, and an error in a future Python.
info The check that was supposed to catch the above passed while it was happening: it compared what the screen received with the catalogue, and a phrase with no Dutch line comes out of the catalogue unchanged — so English matched English. It now also demands that somebody actually decided. A phrase that is the same in both languages is written down as such in the translation file, where a translator can see it, instead of as an exception inside the check.
v0.156.1 2026-09-01
fix The connector settings page stood in English. What a connector calls its own settings — the label of a field and the explanation under it — is data arriving over an API, never a literal in a file, so the browser could not look it up and the server did not translate it on the way out. It does now, and so are the names of the states a connector declares, which stood in English on the colour page and in every tooltip.
fix Two sentences on that same page were translated years ago and never shown. The string extractor stopped at the first half of a sentence written as t('a ' + 'b') — JavaScript glues with a plus, Python with whitespace — so the page catalogue held half a sentence while the browser asked for the whole one, and it fell back to English.
fix A stored password that cannot be decrypted no longer takes the connector settings page down with it. The page never showed the value in the first place, only whether one was set — and it was the one page from which it could have been retyped.
info A new check asks the two doors themselves instead of the catalogue: the phrases the browser can look up must be in the catalogue it is actually sent, and a connector's settings are fetched over HTTP as Dutch and have to come back Dutch.
v0.156.0 2026-09-01
nieuw A connector brings its own tables. Until now the storage a connector needed had to be added to Helios itself, so a connector with a table of its own was an application release — and somebody else’s connector had nowhere to put anything. A connector may now carry its own migrations, which run at start-up and are counted per connector. The IP connector is the first to use it: the table holding what each device is checked on moved out of the core and travels with the connector.
info Removing a connector leaves its tables standing, exactly as it leaves the devices and the history it gathered. Ten minutes without a connector should not cost a year of measurements.
v0.155.2 2026-09-01
fix Three English phrases in the IP connector are Dutch. “Valid for” stood in the certificate column of every device watched that way and had never been translated at all; the two settings under it — how many pings a check sends and how many failures make a device offline — had their labels and their explanation in English on a Dutch page. A check now holds every phrase a connector puts on a screen against the catalogue.
v0.155.1 2026-09-01
fix A connector’s language pack is read where connectors actually live. In an installation they sit on a volume of their own; the new layer looked only in the folder beside the application, which is where they sit in a checkout. So the pack was installed, the words were not read, and the sentences that had just moved out of the application came out in English.
v0.155.0 2026-09-01
change A connector brings its own words. Its Dutch lived in the application, released with Helios — untidy for ours, which sit in the same repository, and a wall for anybody else’s: a connector could bring its code, its poller, its panel and its states and then had nowhere to put the one thing a customer actually reads. A language pack is now built from three layers: what the connectors ship, the application over them, and the translation page on top — so a connector’s wording can be corrected without touching that connector, and an installation can correct ours.
v0.154.0 2026-09-01
change A connector brings its own states. A radio’s signal bands, a UniFi device being adopted, a host that answers a ping: each of those is a colour on a bar, a name in a tooltip and a word in a report, and all three were lists in the application — for connectors that ship and update on their own. They are declared where they are written now, and the settings page, the timeline and the report read them from there. Install a connector that has states of its own and they appear on the Status colours page by themselves.
v0.153.2 2026-09-01
fix The Providers page lists providers again. It built its list from every operator in the data minus two internal tokens by name — two, because there were two when that line was written. There are twelve now, so the rest of them stood in the table as though a modem had reported them, with a colour picker beside each. They belong on the Status colours page and that is where they are; what a colour picker there did store is cleaned up, since it coloured nothing and was never chosen.
v0.153.1 2026-09-01
fix An installation knows its own name from its configuration instead of from the address a visitor typed. The door somebody from the control plane arrives through checks that a ticket was written for this installation and no other, and it asked a setting that was never handed to the process — so it fell back to the hostname in the request. That was right as long as nothing between the internet and here rewrote a Host header, and the day something did, every one of those doors would have shut with the reason only in a log.
v0.153.0 2026-09-01
nieuw Status colours are yours to set, on a page of their own beside the providers. Everything on a bar that is not a provider — the wired WAN, Wi-Fi WAN, SpeedFusion, an IP check, a radio link’s signal bands, the states a UniFi device passes through while it is being taken into service, and offline itself — works the same way as a provider colour: pick it, save it, and it applies to the timeline, shared links and reports. Only what you change is kept, so the rest keeps following the application.
change Each of those statuses is named in one place. The colour of a wired WAN was written into the code in six, its name in two, and the report knew half of them — which is why a token like “__unifi_adopt__” could end up in a customer’s report.
v0.152.0 2026-09-01
change A device watched by IP gets a green bar when it is up — a lighter green than a cellular or radio link, because it is online in the same sense but there is no signal behind it to grade. It used to be the grey that means “online, provider unknown”, and about a pinged device nothing is unknown: there is simply nothing to know.
fix The internal tokens stay off the screen and off a report. A bonded connection said “__sf__” in the tooltip and the legend, and a UniFi device that was being adopted, provisioned or upgraded printed that token in the provider column of a customer’s report. Each of them now says what it is, and a check holds every token a connector writes against all three places that have to read it.
v0.151.0 2026-09-01
fix A web check on a port other than 443 asks in the right language. Which scheme to use was decided by a list of ports that counted as “the HTTPS ones”; a controller on 11443 was therefore asked in plain HTTP, answered 400 from its own nginx, and the panel reported a web server that was not running — while it was running and simply being addressed wrongly. The port now decides the order and no longer the outcome: whichever of the two answers is what you see, and the certificate is read off the port that answered.
nieuw A device you added yourself can be renamed — in the Devices list by clicking its name, and from the three-dot menu on the Monitor. Nothing anywhere could change a device name, so a typo made while adding one was permanent. Not for a device a connector found: its name comes from the controller and every poll writes it back, so that is refused with the reason rather than undone a minute later.
v0.150.0 2026-09-01
fix Monitoring a device by ping works. The image had no ping in it — not since the day that connector shipped — so adding one answered “no answer to the ping” and every device already watched that way was written down as offline, once a minute, for as long as nobody asked why. The tool is in the image now.
change A check that cannot run is no longer recorded as an outage. Ping needs a tool, a web check needs a network: when the check itself cannot happen, the device keeps the state it had and the round says so once. “We could not ask” and “it did not answer” are different things and only one of them is about your device — adding one now says which of the two it is.
v0.149.0 2026-09-01
nieuw A connector says which Helios it needs. It ships, installs and updates on its own — that is the point of them — but the two halves still have to agree on words: a panel block is asked for by name, and who decides what a share link may show is settled in the application. Install one that asks for more than the Helios it lands in can give and nothing fails; the block is simply empty. The shop now says what a connector needs, and refuses what does not fit — an upgrade leaves such a connector standing rather than replacing it with one this installation cannot follow.
fix A Teltonika or NetCon router says “RMS company” again where it comes from upstream. Moving that label out of the frontend and into the connector left these two without one, so it read “Group”.
v0.148.1 2026-09-01
fix A share link shows the panel, not everything behind it. A connector’s description travels as one field, and that field is public — so anything a connector kept beside its description went with it. It now stays inside: the connector’s own bookkeeping never travels, and a connector can mark a figure, a row or a whole column as not for a link. Starlink’s subscription is the first: what a cycle used and what goes over the allowance is an invoice, and a link is a URL that gets forwarded. How the dish is doing stays on it, which is what such a link is for.
v0.148.0 2026-09-01
change Peplink and PepNetCon bring their own panel, and with that every connector does. A router shows what it showed — the uplinks over the window, the signal, the charts, the clients, its tunnels — and a FusionHub still gets the hub layout with its spokes. What changed is who decides which of the two: that was a check on the word “fusionhub” in the model name, in the frontend, and it is now the connector that fetched the thing.
nieuw A PepNetCon router also shows its network, its firmware and its management address. The SIM column was kept by the frontend for the one connector it knew by name, and it showed six of the nine fields that connector was collecting. It is that connector’s own column now, and it shows all of them.
change The name of the group a device comes from upstream is said by the connector: “IC2 group” for Peplink, “RMS company” for Teltonika. It was the last place where the panel had to know what make it was drawing.
v0.147.0 2026-09-01
change Teltonika and NetCon name their own panel. The picture is the same — deliberately: for a router that panel was right. What changed is who decides. It used to say “give me the panel the frontend keeps for routers”; it now lists the blocks it wants: the status, the uplink it is on, the signal, how the window was divided over the providers, the charts and the client list.
change A connector whose panel is the same for all its devices declares it once instead of writing an identical description next to every device every round. Two of them do — that is a thousand rows a day that no longer have to be written to say the same thing.
v0.146.0 2026-09-01
nieuw Starlink brings its own panel. A dish used to open the panel built for a cellular router — rows for RSSI, RSRP, RSRQ and a cell, every one of them empty, because a dish has none of that. It now shows what it does have and what was being fetched every two minutes all along: throughput down and up, signal quality, latency, how much of the time the view is obstructed, how long the terminal has been up, and the subscription with what this cycle has used — including what went over the allowance and what that costs, which is the question the whole usage reading exists for.
change The latency a Starlink terminal reports is kept with the measurements, so it stands in the panel and in the history rather than only in the moment it was read.
v0.145.0 2026-09-01
change A connector brings its own panel. What a device shows when you open it on the Monitor used to be drawn by Helios, per make, in the frontend — so a connector that arrived later could only borrow a panel built for something else. The panel is now put together out of named blocks: the status, the uplink it is on, the signal with this installation’s thresholds and how the window was divided over the providers stay with Helios, because they depend on the period you are looking at or on settings a connector has no business knowing. Everything else the connector says itself.
nieuw MikroNetCon is the first to do so, and now shows what it was collecting all along: the RouterOS version, the modem firmware, the agent, the load, and whether the configuration still matches the recorded baseline. That last one is what that controller exists for and it was the one thing you could not see — it was being read every round and shown nowhere.
fix A phrase in a panel is in Dutch. The labels went through the catalogue and the values did not, so a line read half in one language and half in the other. Only phrases the connector writes itself: a site really called “Default” keeps that name, or the panel no longer says what the controller says.
v0.144.1 2026-09-01
fix The Remove-connector button works again. The connector’s name went into the button’s own click handler, and a name like “Algemeen (IP)” carries quotation marks — which ended the attribute halfway. What was left was half a handler, so pressing it did nothing at all, without so much as an error.
nieuw Installing, updating and removing a connector show what is happening. A bar with the step it is on — building the package, putting it into the installation, restarting — in the place the button was, and when it is done the page fetches itself. It took about a minute and a half in which the only sign of life was a button that had renamed itself, and a screen that went on showing the old truth until somebody reloaded it by hand.
v0.144.0 2026-08-31
nieuw A device monitored by IP now says what “reachable” means for it. Besides the ping there is a port — does anything accept a connection on 22, on 3389 — and a web server: Helios asks for the page and calls the device online when it answers below 400. A host that pings while its web server is dead is then a device that is down, which is what you wanted to know when you put a web server on the Monitor.
nieuw The address, the port and the path can be changed afterwards. On the Devices page the address itself is the way in — click it — and the three-dot menu on the Monitor opens the same form. Saving says what the check found: “the web server answers (200)”, or that it did not. A device that moves keeps its history instead of having to be added again.
nieuw The check can run every second. Measuring and recording are separate: a snapshot is written the moment the state changes, with the second it changed on, and otherwise once a minute with the average and the peak latency over that minute. So an outage is noticed within a second without sixty rows a minute per device.
change A single dropped packet is no longer an outage. A device counts as offline after three failed checks in a row — adjustable — and as online again on the first answer. At a one-second interval every lost packet would otherwise be an outage in the timeline with an alert attached.
v0.143.6 2026-08-31
fix The cloud connector describes itself in Dutch too. Its description was the only one without an entry in the catalogue, so it stood in English on a Dutch screen. A check now reads every connector's description and reports the ones the catalogue does not know.
v0.143.5 2026-08-31
change The connector list is in alphabetical order, by the name on the screen. Rename one and it moves to where you would look for it — it used to stay in the place it was found in, so a connector called after its controller sat somewhere in the middle of the list.
v0.143.4 2026-08-31
change Labels and explanations on a connector's settings have room again. The input kept a fixed width and the label got what was left over, which in a half-width card was about a hundred pixels: field names broke over two lines and their explanation ran three words to a line. On a narrow screen the field now sits under its own label instead.
v0.143.3 2026-08-31
change Two cards beside each other end on the same line. A short one hanging in the air next to a tall one read as unfinished.
v0.143.2 2026-08-31
change The list of connectors is a little wider. A connector you renamed carries a hostname, and those sat hard against the edge with the status dot on top of them.
v0.143.1 2026-08-31
change On a connector's settings, Connection and Poller stand side by side again and Remove sits at the very bottom. Remove spans the full width, so in the middle it cut the row in two and pushed the poller onto a line of its own.
v0.143.0 2026-08-31
fix Update now updates. Pressing it added a third copy of a connector you already had twice — with empty settings, and the old one still running beside it. It replaces what is there, in every copy of that connector at once.
nieuw A connector can be removed again. Its address, account and password go with it; what it collected stays — the devices, their history and the sites it mapped. Put the same one back and it finds them again.
v0.142.2 2026-08-31
fix A second connector of the same make read the first one's settings. Two UniFi controllers side by side, each with its own address filled in, both talked to the same one — the test button said so and the poller did it, silently. Every connector was affected, not only UniFi.
fix A missing required field says so in Dutch, and names the field by the label on the screen.
v0.142.1 2026-08-31
fix A refused save now says why. The screen answered "something went wrong" while the reason had been sent along with the refusal: which field is wrong and what to put there instead. That applies everywhere, not only on a connector's settings.
v0.142.0 2026-08-31
change A device put back into stock also forgets its written location. The photo and the position on the map already went; the description of a room the device is no longer in stayed behind, and it is the field the site list and the reports show.
fix Moving devices in bulk, and moving one from the phone, now clear the same things. Only moving one at a time from the Monitor did — so a whole rack put back after a show kept every photo and every place, which is exactly when they are all wrong.
v0.141.6 2026-08-31
fix The three-dot menu on the Monitor did nothing on a device that was offline. The button was there, the click did not open anything, and on a device that was online the same menu worked — which is what made it look like the offline devices themselves were the problem.
v0.141.5 2026-08-31
fix The site dossier threw half its answers away on every save. The uplink kind, the supplier, the speed, the handover point, the parking and the access notes were sent under a different name than the one being read, so they arrived empty — and empty is written, not skipped. What was already there was overwritten with nothing, which is why filling it in and saving left the page blank again.
v0.141.4 2026-08-31
fix Saving a site's details did nothing on some sites. Filling in an address and pressing Save gave a message about the catch-all site — something the person was not changing — and it happened on every attempt, so those details could never be recorded at all.
fix A refused save no longer half happens. The name, timezone, address and contact were already written when the refusal came, so the screen showed an error over a save that had partly gone through.
v0.141.3 2026-08-31
fix The wifi sheet still did not name the total it divides. The figure was taken before the daily totals are rebuilt, and for a show that runs from one afternoon to one evening there is no whole day for the controller to report — so it came out at zero and the sentence was quietly left off.
v0.141.2 2026-08-31
fix The split per wifi network now says which total it divides. An access point stood at 175.50 GB and 72.6% while the network that ran on it stood at 4.32 GB and 23.6% on the next page — both correct, and side by side impossible to read. Access points are counted at the access point and at the uplink; the split per network comes from the per-device statistics, which account for a fraction of it. The sheet now names both figures, so a percentage is read against the total it belongs to.
v0.141.1 2026-08-31
fix The usage half of a report was empty. It looked up which controller site the equipment belonged to in what the connector last recorded about each device — which is where a device stands today, not where it stood during the show. One access point that had since been moved decided the answer for the whole site. The site now comes from the coupling between a site and an organisation, which is what that coupling is for.
v0.141.0 2026-08-31
fix The graphs in a report were unreadable. Axis labels and figures came out many times too large, stacked over each other and over the graph. Every PDF made since the move to containers had this; on screen it always looked right, which is why it stood so long.
fix A day with no traffic gave five identical labels down the side of the graph. An empty day now reads as an empty day.
fix A report about a single evening was filed under an end date that fell before its own start date. The period printed on the report itself was always right; only the name it was filed under was not.
change Availability now says over how much time it was measured. A device that stops reporting halfway used to get a percentage over the sliver that was left: one access point stood at 3.86% beside an interruption of 52 minutes, both true and together misleading. Below nine tenths coverage the report gives no percentage and says how long it did look, and such a device no longer drags the average.
v0.140.3 2026-08-31
fix After a visit to the connector shop, clicking a connector you already have showed its heading but not its settings. Reloading the page brought them back, which is a poor way to find out.
v0.140.2 2026-08-31
fix A shared link showed an error instead of a timeline. It has been answering that way since the last release; the link itself was fine and keeps working, no new link is needed.
fix The handover report left the address of every device empty. It said nothing about it, which is why it took a while to notice.
fix On a shared link, opening a device now shows the same detail as it does when you are signed in, and the Site column is filled in.
v0.140.1 2026-08-31
fix A device's card could show what a connector said the day it was switched off, instead of what the one you use just fetched. Only the connectors an installation has are asked now.
v0.140.0 2026-08-31
nieuw The same connector can be added more than once. A second controller of the same make is a second connector in the list, with its own name, its own settings, its own schedule and its own sites — where before there was one of each kind and no way to watch two.
change Every connector's settings page is now the same page. A connector says what it needs to be told and the screen follows, so a connector that arrives later looks like the ones that came with the installation instead of like an afterthought.
nieuw NetCon stands on its own. It finds its own routers, keeps their name, model and serial, and puts its sites on the map of organisations — so it can be the only thing you use, without the RMS connection beside it. Where you have both, a router is one device and not two, and the one that reached it is the one that reports it.
nieuw Every connector now carries a version of its own, shown beside its name. The catalogue says which one it has on offer, so you can see an update waiting instead of finding out afterwards.
change A device's card is built from what its own connector says about it. A device of a kind Helios has just learned about is described in its own terms, instead of borrowing the layout of a mobile router and showing empty rows for a SIM card it does not have.
change The link in an alert opens the device on the Monitor, in its own site, instead of a page of its own that showed a router's fields for everything.
v0.139.2 2026-08-30
fix An installed connector can find its own parts. It is the same folder whether it came with the installation or from the marketplace, and it is now loaded as the same thing — so the first one installed on an installation without any could not start.
v0.139.1 2026-08-30
fix Leaving the connectors out of the build also hid them from the internal checks, ten of which are about what a connector does. They are copied in, checked, and removed from the finished image instead.
v0.139.0 2026-08-30
change An installation carries only the connectors it asked for. All eleven used to be in every one, which is what made adding one meaningless: you already had them. They come from the marketplace now, and an installation that has none starts with an empty list and a way to fill it.
change Nothing changes for an installation that already had connectors: each has been given its own copy of what it was using, and it reads them from there.
v0.138.0 2026-08-30
feat Add a connector from Helios itself. Under the connector list there is now a way in to everything this installation could read: pick one and it is installed for you, the installation restarts briefly, and it is there afterwards. What you already have is shown as such rather than hidden — a shop that hides what you own makes you wonder whether you own it.
change The catalogue is asked for, never pushed. An installation that is not connected to a marketplace simply has none, and one that cannot reach it says so instead of showing an empty window: an empty shop and a broken line look the same and mean opposite things.
v0.137.0 2026-08-30
change Helios now looks for the connectors it has instead of carrying a fixed list of them. Eleven were written into the application by name, so every installation had every one whether it wanted it or not — and "add a connector" could not mean anything, because there was nothing to add. Nothing changes yet for an installation that has them all; this is what makes adding one possible.
change A connector that will not start costs itself and not the installation. The other ten are somebody's monitoring.
v0.136.0 2026-08-30
feat You can give a UniFi controller a name, and add a second one. On the Connectors page the controller is now something you pick, add, rename or pause — and the settings underneath belong to whichever one you picked. Pausing keeps everything it brought in; removing is refused while it still carries sites, because those hold where devices land and what they did.
v0.135.0 2026-08-30
feat A UniFi controller is now one of possibly several. The poll walks every controller that is set up, each on its own, so an unreachable one costs its own sites and not the other's. Which site belongs to which of your sites is looked up per controller — two of them can hand out the same site name, and that used to be one answer for both.
change The UniFi settings are stored with the controller they belong to instead of on their own. Nothing changes for an installation with one: it keeps its address, its account and its sites.
v0.134.2 2026-08-30
fix An internal check said it had failed where the tool it needs is simply absent, which stopped the release that carried the fix above.
v0.134.1 2026-08-30
fix Pollers can record their sites again. The previous release changed how a site is keyed and the recording still used the old key, so every round that saw a site failed — which is every round, on six kinds of equipment. Nothing was lost; measurements simply stopped being written while it lasted.
v0.134.0 2026-08-30
change Groundwork for connections you name. Every link to another system was a kind, and you got one of each — its address and keys were single settings, so a second controller of the same make had nowhere to go. Each link is now a thing with a name of its own, and what it brings in belongs to that link rather than to the make. Nothing changes on screen yet: existing links keep their settings and their sites, and simply have a name from now on.
v0.133.0 2026-08-30
change The last of the six long functions is taken apart: who lands in which part of the final report, and how the outage sheets are laid out, are now two things you can read on their own. Five real reports came out identical to the byte. Nothing in the application is over two hundred lines any more, and a check keeps it that way.
v0.132.0 2026-08-30
change The site report's arithmetic stands on its own. Working out how long each device was up, down and on which carrier used to sit inside a 220-line function; it is now something that can be read — and checked — by itself. Five real reports came out identical.
v0.131.0 2026-08-30
change The detailed final report is built one sheet at a time. It was 263 lines appending to one list; build_html is now 41 and reads as the table of contents it always was. Three real reports were rendered before and after and are identical to the byte.
v0.130.0 2026-08-30
change The Peplink poll is readable too: 272 lines down to 191. Deciding which alerts a device earns now sits in one place shared with the Teltonika poller, so the two cannot quietly drift apart — they had the same block twice, buried in two long functions.
v0.129.0 2026-08-30
change The Monitor's timeline is built in readable pieces. One function of 286 lines chose the queries, thinned the measurements, decided which of four signal lines each one belonged on and assembled the answer; it is 160 now. The output was compared before and after over three windows and sixty devices and is identical to the byte.
v0.128.1 2026-08-30
fix One of the new internal checks needed a database to import what it tests, and said it had failed where there was none. It reports that it could not run there, like the others that need one.
v0.128.0 2026-08-30
change The Teltonika poll is readable again. One function of 384 lines did the fetching, the merging, the writing and the deciding at once; it is now 180, with the parts that can be reasoned about separately standing on their own. Nothing about what it does has changed — which is checked rather than claimed.
v0.127.1 2026-08-29
perf Building an image is quicker. The checks run in a stage of their own, so the tools they need sit in a layer that only changes when the dependencies do — they were being downloaded again on every code change, which was 40 of the 89 seconds a build took.
v0.127.0 2026-08-29
change The four checks that guard who may see and change what can now run inside a running installation, which is where the state they read actually lives. They are run across the fleet every six hours: roles, memberships and sites move every day, so a door can open without a line of code changing.
v0.126.1 2026-08-29
change The gate also runs the checks that read the timeline's own JavaScript. Two of them needed node, which a build did not have, so they sat out — and that is where the last three faults were. node and pyflakes are installed for that step and removed again; neither ends up in the finished image.
v0.126.0 2026-08-29
change The internal checks now run by themselves. Forty-four of them existed and nothing ever started them, so they proved whatever was true the last time somebody happened to look. They run while the image is built: a failing check means no image, and no image means nothing to deploy. A check that cannot run where it is (no database, no node) says so and is counted apart — "could not run" is not "passed", and a suite that quietly stops covering half of itself is worse than none.
v0.125.1 2026-08-29
fix One of the internal checks crashed where it could not run instead of saying so. A check that dies reads as a broken build; this one now reports that it did not run, which is a different fact and belongs said out loud rather than counted as passing.
v0.125.0 2026-08-29
feat Two Monitors open side by side now agree. Move a device to another site and a colleague watching the same screen saw it in the old place until they reloaded by hand — the refresh repainted the bars every thirty seconds but left the layout as it was at first load. It now notices when the fleet itself changed and redraws; a device merely going offline still does not, because that happens all day and a screen that rebuilds under your hands is its own problem.
v0.124.3 2026-08-29
fix The master switch for notifications no longer claims something the installation contradicts. An installation can be started with alerts off, and then nothing is sent whatever the switch says — but the page read only the database and drew it green. So Settings said alerts were on while a test alert answered that they were off installation-wide. The page now says who is holding them off, and the rule lives in one place that both the page and the sender ask.
v0.124.2 2026-08-29
fix The Location entry in the Monitor's three-dot menu is there for every device. Teltonika routers were left out because their poller used to overwrite the field every round; it stopped doing that in 0.123.1, so the exclusion only kept the entry away from the very devices it was asked for.
fix Emptying a field in a dialog now does something and says so. An empty answer was thrown away without a request and without a message, so clearing a location looked exactly like a save that had not been read — adding one to an empty device worked, correcting a filled one did not.
fix The three-dot menu in the Monitor no longer opens underneath the browser's own tooltip, which covered the first entry in it.
v0.124.1 2026-08-29
fix The fix time NetCon sends is stored the way every other time in Helios is stored — as UTC, given a zone only when it is shown. It arrived carrying an offset, which would have put two shapes in one column and read an hour off for half the year.
v0.124.0 2026-08-28
feat A Teltonika's position comes from NetCon where NetCon has one. It reads the receiver over its own connection and passes the fix time along with it, so it is the better of the two sources; RMS stays as the fallback. A router without a receiver reports that it has none, and that is not read as a position — otherwise every one of them would land in the Atlantic.
v0.123.1 2026-08-28
change The Location field of a Teltonika is editable. RMS still fills it in when a device first appears, but it is no longer written over on every round — so "Meterkast 2e verdieping" now survives longer than the thirty seconds until the next poll.
v0.123.0 2026-08-28
change A position you set by hand on a Teltonika now stays. RMS reports where the router thinks it is, which for a unit in a cabinet on a roof can be hundreds of metres out, and every poll overwrote the correction within thirty seconds — so pinning one looked like it had not saved at all. The poller leaves a manual position alone; a device that goes back to stock still loses it, because then it hangs nowhere.
v0.122.1 2026-08-28
fix The check for that wipe refuses to run against anything but a development database. It moves a device for real, and the route it calls commits its own transaction, so the rollback at the end does not undo it — against a live instance it would have moved a device and deleted its photo.
v0.122.0 2026-08-28
change A device that goes back to stock leaves its photo and its position behind. Both described where it hung, and it does not hang there any more — a picture of the wrong ceiling and a pin on a site the device has left read as fact, and the next person believes them. Moving a device from one site to another keeps everything: it is still somewhere, and that is exactly when the photo is worth having.
v0.121.6 2026-08-28
fix The WhatsApp group picker on the Alerting page stayed empty. It read the credentials from the environment while they live in the settings table, so on every installation configured through Settings the list never loaded — and the message told you to check GreenAPI, which was the one thing that was right. Sending was never affected, which is why it went unnoticed. The call also has a timeout now.
v0.121.5 2026-08-28
fix Three checks each had their own idea of which files belong to this project: two asked git, which is not installed where they run, and one walked into the test dependencies and reported on those. One answer now, in one place.
v0.121.4 2026-08-28
change The linter list is empty again. Thirty-four imports that really were not used are gone, two calculations that went nowhere, an unpacked year nobody read, three f-strings without anything to fill in, and a dictionary that quietly set the same key twice. The twenty-six imports that are there on purpose say so, and the check now fails on anything that does not — a list where deliberate and forgotten look the same is a list nobody reads.
v0.121.3 2026-08-28
change The digest asks the database three questions per round instead of two per site. It ran once a minute over every site with something waiting, opening a connection for each — so when an outage touches thirty sites, which is exactly when the machine has better things to do, it opened ninety connections to ask the same two questions thirty times.
v0.121.2 2026-08-28
fix The two new checks looked at other people's code as well: inside the image the test dependencies live under /app/.local, and a check that reports on httpx is noise — which is what teaches people to ignore a check.
v0.121.1 2026-08-28
change An error that is swallowed now says so. Thirty-one places caught everything around a database call, a network request or a file and then said nothing at all — a real fault looked exactly like the normal case. They log it at debug level with the name of the function, so it can be found when somebody goes looking, and nothing changes for anybody who is not.
v0.121.0 2026-08-28
feat Times follow your own clock. The profile has carried a time zone picker for months, with "Times are shown in this zone" written under it, and the value was stored and then ignored everywhere. It is now the first thing consulted: your zone, otherwise the site's, otherwise the installation's. A page that shows a location's clock on purpose — Planning, a site report — still does.
fix The browser and the server now read the same clock. The times a page draws in JavaScript followed the site while the ones rendered on the server followed the reader, which put two clocks on one page.
v0.120.1 2026-08-28
fix Reading the depth asked too much of the cloud: one console with 21 sites costs a hundred requests, every two minutes, and the Site Manager answered 429 — so the depth disappeared for exactly the console where it is worth the most. It is now fetched every ten minutes instead (uptime and processor do not move faster than that), statistics are asked only for devices that are actually on, and four requests run at a time instead of eight. A throttle is answered with a shorter wait than a refusal, and the last reading stays on screen in between.
v0.120.0 2026-08-28
change One clock. Python deprecated datetime.utcnow() and has scheduled it for removal; it was called 86 times across 44 files here, and the image already warns about every one of them. Those calls now go through clock.utcnow(), which returns the same naive UTC moment as before — deliberately not an aware one, because every timestamp column in this database is without a time zone and subtracting the two would raise at runtime. The day that changes, it is one function and one migration instead of eighty-six call sites.
v0.119.3 2026-08-27
fix Nineteen texts an English-speaking user was reading in Dutch now go through the catalogue: Loading…, Peak, Mode, Temperature over time, Dynamic, Options, Testing…, Working…, Active, Error, Gone, Orange, Blue, Mobile, Other, and the photo caption.
change The check that is supposed to find those was calling half of Dutch English. Its stemmer chopped up to three letters off a word and looked the remainder up, so temperatuur passed as temperate, dynamisch as dynamis and bezig as be — the check was green while the screen said "Temperatuur over tijd". It now allows only real English inflections, and short Dutch that no dictionary can rule out (ja, nee) is named.
v0.119.2 2026-08-27
fix A device read through the cloud connector got the panel of a cellular router: empty RSSI and EARFCN rows it can never fill, and the internal token __unifi_up__ shown as though it were a provider. It is a UniFi device whichever road it arrived by, and now gets the UniFi panel — with its clients, uptime, throughput, processor and memory.
v0.119.1 2026-08-27
fix Reading the depth stopped on the first real round: the integration API describes a device's interfaces as an object with radios, and other hardware answers with a list. Anything that arrives in another shape now reads as "nothing measured" instead of taking the poll down.
v0.119.0 2026-08-27
feat The cloud connector reaches into a console. Where UniFi's Connector Proxy is open, every device now reports its uptime, processor, memory, throughput and the number of clients on it — read from the console's own integration API, through the cloud, without a route into the network and without a VPN. Until now the cloud could only say whether a device was up.
change A console that cannot be reached that way says so once instead of every two minutes: firmware below 5.0.3 and a key without rights on that host are answers, not hiccups, and they are retried on the quarter.
v0.118.2 2026-08-27
fix The expand panel held together between phone and desktop. Every box in it could grow but none could shrink, so a long provider name pushed its percentage out of the column and onto the one beside it — "99.6%" printed across "RSSI". The columns are now a grid of at least 240 pixels each, which lands on one, two or three per row instead of four slivers, and text wraps inside its own box rather than over its neighbour.
fix The status strip wraps instead of overlapping: "SpeedFusion" ran into "· 2 connections" on a narrow window.
fix A throughput chart drops tick labels when it gets narrow. Four times were drawn whatever the width, and below roughly 55 pixels per label they ran into each other.
v0.118.1 2026-08-26
change An instance's memory limits come from its own settings file rather than standing in the shared compose template. The template is copied over on every upgrade and that file is not, so a limit raised for one customer used to be undone by the next release. Unset still means the same 512 MB as before.
v0.118.0 2026-08-26
change One place for accounts, and two questions instead of one switch. There were two user screens — the settings one and a per-site one run by a site administrator — over the same people, which is how two answers to "who may what" come about. The per-site screen is gone and everything happens under Settings, Users. There, an account now answers two separate questions: what it may do (administrator, user or viewer) and where (every site, or a selection). That makes possible what could not exist before: somebody who sees the whole fleet and may change nothing. Existing accounts keep their sites; a former site administrator becomes an ordinary user, because managing accounts is no longer a thing you do inside one site.
fix Two buttons that had quietly done nothing since the rename to English work again: removing a site from an account, and the floor-plan drawing on a shared link. Both called a path that had been renamed underneath them. The check that is supposed to catch exactly this only looked at direct fetch calls, so anything routed through a page's own helper was invisible to it — it now reads every API path in the front-end, and both faults fail it.
v0.117.0 2026-08-26
nieuw A quality line that stops now says why. An access point reports the satisfaction of its clients, so one without clients has no health to report and its line simply ended mid-bar — which reads as a broken measurement even though it is the truth. Stretches that were never measured are drawn as muted dashes at half height: deliberately not a value, because drawing the line flat to the edge would claim a health figure nobody measured. Measured across the fleet first: a line that keeps being fed trails the edge by one poll, invisible at 0.2 to 1.6 percent of the bar, while an access point whose clients left an hour ago stopped at seventy.
v0.116.7 2026-08-26
fix The quality line sits in the bar again — 0.116.6 filled the row, and the row is not the bar: the segments sit a few pixels inside it, so the line floated above the green. The bar's inner box is one CSS variable now (--tl-inset on the bar element) and the segments and the line both read it; the phone size redefines only that variable. Two things drawing in one box now share one definition of that box, which is what should have been true from the start.
v0.116.6 2026-08-26
fix The quality line's geometry has one owner now, and the recurring breakage ends with it. Three incidents shared one disease: the maths put 100% quality exactly on the edge of the drawing box, and the stylesheet compensated with offsets and calc heights, re-tuned per page and per screen size — and broken per page. The margin lives in the line's own coordinates now (qualityY, shared), the stylesheet only says 'fill the bar', the phone exception is gone, and the check that guards this treats any per-context tuning as the failure it is.
v0.116.5 2026-08-26
fix The whole wifi card lines up under WeasyPrint, not just the QR. The label rows used flex with gap and baseline — both ignored by WeasyPrint, gluing the password to its label and floating the values above their line — and the divider drew its lines with stretching pseudo-elements, which simply vanished. Rows are a CSS table now and the divider is a hairline with the label lifted onto it: identical in every engine, verified by rendering the card and looking at it.
v0.116.4 2026-08-26
fix The QR code on the wifi cards sits centred again. Chromium centred it as a side effect of the card hugging its content; WeasyPrint gives the card its full width and left-aligns a block image. Auto margins centre it under both engines.
v0.116.3 2026-08-26
fix The PDF engine of 0.116.2 could not actually write a PDF: WeasyPrint 62 is incompatible with the newer pydyf library pip installs next to it, and the very first render crashed. WeasyPrint 63 is the pair that belongs together — verified this time by rendering a PDF inside the image instead of only importing the package.
v0.116.2 2026-08-26
fix PDFs render inside a container too. The image deliberately shipped without Chromium (400 MB, one feature) — but that left the wifi cards and report map pages with no engine at all: "no Chromium or WeasyPrint found". WeasyPrint, the code's built-in fallback, is now part of the image at a fraction of the size.
v0.116.1 2026-08-26
fix The UniFi Cloud feed's silence is now a verdict. Ubiquiti's cloud drops a device from its list once it has been off long enough — and a poller that only writes what it sees would leave such a device's last snapshot reading online forever. A known device of a console that is switched on and absent from the round's feed now gets a normal offline snapshot, segment and alert; consoles you left unchecked are not touched.
v0.116.0 2026-08-26
nieuw A UniFi Cloud connector, next to the existing controller one. It reads Ubiquiti's account-wide cloud API, so every console on the unifi.ui.com account shows up — including ones Helios cannot reach directly. One API key is the whole configuration; which consoles are ingested is opt-in per console under Assign consoles, so a console the local connector already reads is never ingested twice. The cloud reports status, model, IP and firmware per device — enough for the timeline and alerts; the deeper figures remain the local connector's.
v0.115.8 2026-08-25
fix The UniFi OS repair of 0.115.7, finished. The probe of the classic login path leaves behind an empty session cookie that the parser does accept — which then masked the real one, and at send time a jar cookie overrides a manual header of the same name. The session now runs entirely on the login response's own cookies and the jar is emptied, so a stale morsel cannot override them.
v0.115.7 2026-08-25
fix A controller that migrated to UniFi OS no longer reads as a hundred offline devices. Two separate faults, same day: the login auto-detect took any 200 on the old login path as proof and then talked to the wrong API, and the session cookie UniFi OS Server hands out carries an attribute Python's cookie parser does not know — which silently drops the whole cookie, so every call after a perfectly good login went out unauthenticated. The chosen variant is now verified with a real API call before it counts, and cookies the parser refuses are read from the response ourselves. Classic controllers keep working unchanged.
v0.115.6 2026-08-25
fix The wordmark top left is now the same size everywhere Helios shows its face. The instances were letting it inherit the top bar's 15 pixels while the portal had settled on 24 — same mark, two sizes, depending on which door you came in through.
v0.115.5 2026-08-25
fix The quality line stays inside its bar, full stop. The phone repair two days ago moved the line's geometry into the stylesheet and sized it with auto — and an SVG is a replaced element, which under auto does not stretch between its edges like a box but takes its built-in size of 300 by 150 pixels. Every quality line since has quietly been a box far taller than its bar, drawing over the bars beneath it. Explicit sizes now, and the check that guards this no longer settles for the rule merely existing — that is exactly what let this through.
v0.115.4 2026-08-25
fix The quality line no longer strings sparse readings together into spikes. An access point only measures client satisfaction while it has clients, so its series is bursts of readings with long quiet stretches between them — and the line's bridge-a-gap threshold was computed from the mean spacing, which those stretches inflate until half an hour of nothing gets drawn as one stroke. One passer-by with poor reception became a dramatic zigzag on a perfectly healthy AP. The threshold now uses the median spacing — the true measuring cadence however many gaps there are — so the line breaks where the data does. Devices that measure continuously draw exactly as before.
v0.115.3 2026-08-25
fix The UISP site groups carry their names on the connector page. Every other connector passed the name along and this one forgot, which left six nameless rows on the mapping screen — and a nameless row never gets mapped, which is why every radio kept landing in the installed base regardless of the site it belongs to. Existing rows pick their name up on the next poll; the landing choices themselves are untouched.
v0.115.2 2026-08-25
fix A radio link counts as connected only when the controller says the link is — not when one of the two radios happens to be up. That fallback marked a dead link as connected as long as one end lived: a station the controller had not seen for months read as online, with the panel claiming connected over a bar that stayed grey.
fix Older airMAX radios grade on their own reported signal. The M series never fills the per-link statistics — every signal on the link is empty while the radio itself reports its receive level — so a working link on those sat grey forever with the caption online, no reading. The bar, the panel and the sparkline now read the same number.
fix A link score of 94% no longer shows as 0.94%. The controller reports a fraction and the panel appends a percent sign — technically present, practically missing.
v0.115.1 2026-08-24
fix Saving a site works again. It had been failing since the 19th with 'a name is required' while the name field was filled: the language migration renamed the keys the route reads and the page kept sending the old ones — five of the eight did not match. The check built for exactly this seam kept saying OK, because the save call nests braces two deep and the check silently skipped what it could not parse. It counts braces now, and a fetch it cannot read is a finding rather than a pass.
v0.115.0 2026-08-23
change Each container of an instance gets a CPU allowance, and the web and scheduler a memory ceiling of 512 MB — about nine times what they actually use. They are there to be measured against rather than to restrain anything: without a limit a container reports the whole machine as its ceiling, so "a third of a percent of memory" means a third of a percent of a machine shared with everyone, which reads as roomy and says nothing.
change The database deliberately gets no memory ceiling. Almost all of its memory is page cache — 2.1 GB of cached database against 8 MB that is really the database engine — and capping that would throw the cache away the moment it came close, send reads that came from memory back to disk, and set a counter ticking over something entirely normal.
v0.114.1 beta 2026-08-23
fix The strip that explains why alerting is held could not report its own failure. The handler that keeps a database problem from taking down the page called a logger that did not exist in that file, so a failure there would have raised a second error inside the first — in the exact place whose whole job is to stop that happening.
v0.114.0 beta 2026-08-23
change One button, and it is the open one: an orange outline with the label in the reading colour, filling with a hint of orange under the cursor. There were three different buttons depending on which page you were on, and a solid orange block shouts on a dark screen.
change The name in the top left comes from one place again, and without the little sun in front of it. A sun says something about the name and nothing about the product — and it had quietly survived on one page after being dropped everywhere else.
v0.113.1 beta 2026-08-23
fix The quality line stays inside its bar on a phone. Its height was worked out in the page script with a fixed margin that suited the desktop bar, and a phone bar is smaller than that margin — so the sum came out below zero. On a shared link the line escaped the bar; on the monitor it was clipped away entirely and looked like missing data. Same fault, two faces, and neither visible until the measurement lives where the bar does.
v0.113.0 beta 2026-08-23
fix Saving a VAT number tells you what came of it. The European VAT register was already being consulted and the answer was thrown away, so somebody typing a number that does not exist was told “saved” and nothing more.
v0.112.0 beta 2026-08-23
feat Alerting can be put on hold, with the reason on every page. Held is not off: everything stays visible and nothing stops watching — what stops is the sending. And it is never quiet about it, because somebody who does not know their alerts are off reads a calm screen as a calm network.
feat A held alert leaves the cooldown untouched, so a device that has been down all week is reported the moment the hold lifts rather than counting as already told.
v0.111.0 beta 2026-08-23
change The changelog lives in one place instead of in every installation. It used to be shipped and rendered by each one, which means the same text rolled out everywhere to change a single line. An installation with nothing behind it still shows its own — it should not point at a page that does not exist for it.
v0.110.0 beta 2026-08-23
change Dark is the theme you start on. It followed your operating system before, which sounds considerate and is not: Helios is a dark tool, and a fresh installation opening in light because a laptop happens to be set that way is not the product introducing itself. Whoever prefers light picks it once and keeps it — nothing about the switch changed.
v0.109.2 beta 2026-08-23
fix A visit from the platform records the platform, not a person. Entering leaves nothing behind by design — no user, no membership — but two places record who did something: switching a module and generating a report. Those wrote an address into a customer's database. The name now reads simply “Helios”: not an address, and not the customer's own admin either, because a record that files an action under somebody who did not take it is worse than one that is vague.
change Report writing takes the signed-in user and works the name out itself rather than trusting each caller to have done it. There are two callers today and the third will be written by somebody who never read that rule.
v0.109.1 beta 2026-08-23
fix The platform's door answers exactly as any path that does not exist. It returned a 404 on the reasoning that a redirect would stand out — but here the sign-in check runs before the router, so every unknown path redirects. The 404 was the one thing on the installation that looked different: the fingerprint instead of the camouflage. Reasoned about rather than measured, which is where it went wrong.
v0.109.0 beta 2026-08-23
feat Support can open this Helios from the platform without an account in it. Nothing is created: no user, no membership, no password — the session carries the identity and the user list is untouched, because there is nothing to leave out of it.
feat This installation holds no key that opens it. It keeps a public key and can do one thing with it: check a signature. A visit is a signed ticket worth sixty seconds and one use, valid only for this installation.
v0.108.2 beta 2026-08-23
fix A UISP router that is online is green. The module was built when UISP held nothing but point-to-point radios, where “online” belongs to the pair — one end up without the other is not a working link — and the bar is graded on receive level for exactly that reason. A router has no far end, so grading it on a signal it cannot have painted thirty-six healthy routers grey under the label “Online · no link”. True, and completely beside the point. The bar now grades only what has a link to grade.
v0.108.1 beta 2026-08-23
fix Helios refuses to start without a database address instead of quietly falling back on a development one. A process that lost its configuration used to come up looking perfectly healthy against an empty database — and nothing looks broken on a screen that is simply showing you the wrong database, until the schema has been created there and rows written to it.
fix That address is read when it is needed rather than when the module loads, so putting it in .env now works. It was read too early to see .env at all, which meant anyone configuring it that way silently got the fallback.
v0.108.0 beta 2026-08-23
change “Superadmin” is now simply “admin”. The role never changed — everything, across every site in this installation — and roles.py has called it admin all along. Only the column and the labels still said superadmin, and that word is needed for something else: the people who run the platform. One word, one meaning.
fix Migrations run one process at a time. The app and the scheduler start together on a deploy and both apply them; without a lock they read the same state, decide the same work is pending and race. It covers the schema as well as the migrations — “create if not exists” is itself a check followed by an act, and four processes against an empty database left three dead. An empty database is a new installation, so that is where it mattered most.
fix The button that grants that role posted a field the route no longer read after the rename, which would have made it silently revoke instead of grant. Caught before release — a form field and the parameter behind it are one agreement and move together or not at all.
v0.107.0 beta 2026-08-23
feat The sign-in screen stands on lit ground. A low dawn above the card and a vignette weighing the bottom down — the page already explains it, since Helios is the sun god who sees everything.
change The name sits above the card now: Helios. Monitoring on one line, the way the tagline used to read but shorter and out of the way of the form. The card is the form.
change The sign-in button is an outline rather than a filled block, and as wide as its own word instead of the full field. Fields and button are on the same measurements as the rest of Helios — the door was a size larger than the room behind it.
change “Forgot password?” in the same colour as the text around it. It is the way out, not the way in.
fix The sign-in screens now follow the theme you chose. They had no script to read it, so they stood dark for everyone — including whoever had picked light and landed in a light Helios one click later.
fix The second step, forgotten password and password reset were whole copies of the sign-in screen rather than users of it. They had drifted, and any change to that screen reached two doors out of five. One shell now.
v0.106.3 beta 2026-08-22
fix The cards on the Billing tab were resting against each other with no gap.
change No empty Invoices card on a plan that is never invoiced. “No invoices yet” reads as a promise, and for a Helios Pionier there is nothing coming.
v0.106.2 beta 2026-08-22
fix No Billing tab on a Helios that is invoiced elsewhere. It held one sentence saying your invoices come from somewhere else — an empty room with a sign on the door, read by somebody who already knew.
v0.106.1 beta 2026-08-22
feat Helios Pionier now reads as what it is on the Billing tab: everything switched on, no limit, nothing invoiced. Not “€ 0.00 per month”, which would file a gift under price.
v0.106.0 beta 2026-08-22
change A new mark: the name, and a full stop in orange. The drawn sun is gone. It said something about the name and nothing about the product, and a gradient does not survive being small, being printed, or sitting on a background nobody chose.
change The tab icon carries the initial and the same stop — “Helios.” at sixteen pixels is a grey smudge.
v0.105.0 beta 2026-08-22
feat Every invoice on the Billing tab has a PDF to download.
change The Billing tab reads top to bottom now: the four things you came to check — your plan, your devices, the direct debit, the next invoice — then your invoices across the full width, then the choices, then the address. It used to be two columns, so half of it was beside the question rather than after it.
v0.104.1 beta 2026-08-22
change Moving to a bigger plan now costs the difference for the days left in the month, on an invoice of its own, and the full amount from the next one. The page says so before you choose, and the confirmation says what was charged — a charge you did not expect is the same charge, remembered worse.
v0.104.0 beta 2026-08-22
feat You can change your plan yourself, from Profile → Billing. A bigger plan takes effect straight away: the room is yours at once and it costs from your next invoice. Nothing is split halfway through a month.
change A smaller plan becomes possible after a while on the one you are on, and the page says which date rather than only that it is not possible yet.
v0.103.1 beta 2026-08-22
fix The tabs on the profile were bare browser buttons. A few other places had the same thing without anybody noticing: a small hint under a field on the Alerts page and a status pill in the settings were rendering with no styling at all.
v0.103.0 beta 2026-08-22
feat A Billing tab under your profile: the plan you are on, what it costs, how many devices you are using against the room it buys, your invoices, and your invoice address — which you can now correct yourself.
change Changing the invoice address applies to invoices from then on. One that has already been sent keeps the address it was sent with; that is not a limitation, it is what an invoice is.
v0.102.2 beta 2026-08-22
change The router card said the same thing twice: uplink, load and uptime stood in the headline row and again in the column below it. The column now carries what the headline does not.
v0.102.1 beta 2026-08-22
feat A UISP router now opens on a card of its own. It used to get the radio panel: two masts, a Fresnel zone and the line "no radio link configured on this radio" — a picture of something that was never there, on a device that was working perfectly. In its place: the uplink and the speed it negotiated, how hard the router is working, how long it has been up, and UISP's own outage score.
v0.102.0 beta 2026-08-22
feat The UISP connector now takes in everything the controller manages, not only point-to-point radios. A UISP full of routers used to report its device count on the test and then bring in nothing at all; those devices now appear in their sites like any other. A device without a radio link shows as online without a signal reading, which is what it is.
fix Two labels on the timeline bar stood in Dutch on an English screen.
v0.101.3 beta 2026-08-22
fix No notification anywhere in Helios appeared any more — not a confirmation, not a warning, not an error. Buttons therefore looked as though they did nothing: a connector test ran and reported back into the void, and a save that failed failed silently.
fix A controller address is now checked when you save it, and the message says which part is wrong — a missing https://, a typo in it, a space, an impossible port. Before, anything you typed was accepted and the first sign of trouble was a connector that never brought anything back.
fix When saving a connector fails, the reason is shown instead of "Save failed".
v0.101.2 beta 2026-08-22
fix The tiles under "Runs continuously" on the Planning page kept reporting the moment you opened the page. The bar and the colour kept up, the line underneath did not, so a tile could turn red while its own text still said everything was fine. It now counts along with the rest.
v0.101.1 beta 2026-08-22
fix Planning kept reporting a connector you had switched off. Its last round stayed in the list of things that run continuously, aged past its interval and turned red — "quiet for 12 min", then for a day. The list now holds only what is supposed to be running, so a red one means something.
v0.101.0 beta 2026-08-22
feat Helios can now be delivered as an installation of its own: your own Helios, on your own address, with a database nobody else shares.
fix Setting a password answered "403 CSRF validation failed" and refused to save. Anyone who had to set a password before using the application was stuck on that screen.
fix The set-password screen arrived wearing the full application shell, sidebar and all, with a site picker saying there was no site. You appeared to be inside while every link bounced you straight back. It is a doorstep now, and looks like one.
fix A brand-new installation started with the Teltonika connector switched on and licensed, which nobody had asked for. Its poller then called RMS without credentials every round, so the first thing you saw was a connector reporting no connection. Installations that were already using it keep it, exactly as before.
v0.100.4 beta 2026-08-21
fix The "Why Helios?" panel on this page stood half in English and half in Dutch, with one Dutch sentence in which a single word had been translated and the rest left alone. It is English throughout again.
v0.100.3 beta 2026-08-21
fix Ctrl-K (Cmd-K on a Mac) did nothing. The shortcut for the search box has been broken on every page for a while.
fix Moving a device to another site reported success and then left the list as it was, so it looked as though nothing had happened until you reloaded.
fix On the asset card, the deployment history — which site a device was at, and when — failed to appear.
fix When the server could not be reached, the alert channels page showed nothing at all instead of saying so: the error message was itself the thing that went wrong.
refactor The linter now covers the JavaScript written inside the pages, not only the separate files — two thirds of it had never been checked. The four fixes above are what the first run found. Pages are assembled the way a browser assembles them, so a function defined in one place and called in another is judged as it actually behaves.
v0.100.2 beta 2026-08-21
fix A shared link that was allowed to show the field photo and the position on the map showed neither. The page and the script had come to disagree on the name of that permission, and a name a browser does not recognise is simply empty rather than an error.
fix The freshness warning on the floor plan read "{n} seconds ago" literally, with the braces, instead of the number.
refactor The browser code now goes through a linter as well, and the shared timeline script is checked against the pages that configure it. Both faults above came out of that on the first run — the JavaScript had no check of this kind at all until now.
v0.100.1 beta 2026-08-21
fix The detail panel of a Peplink with a SpeedFusion tunnel showed an error instead of the device.
fix Signing in could land on an error page for anyone whose site selection had been lost — a first sign-in, or a browser that had cleared its cookies.
fix Deleting a site that still had references to it failed instead of naming what was in the way.
change Both of the first two came in with 0.100.0 this morning and were out within the hour. They are named here rather than quietly corrected: a release that only ever mentions its good days is not a record.
v0.100.0 beta 2026-08-21
fix **Seven things that quietly did not work.** Capturing the view, the drawing surface and the loading screen on the floor plan; generating a report; saving an outage, and filling in a cause or an action for several at once; the role you picked when adding a user, which always fell back to viewer; and downloading a report. Each of these looked normal on screen — a button that responds and then does nothing is the worst kind of broken, because nobody reports it.
fix **The site dossier wiped its own free-text blocks.** Saving the dossier sent the blocks under a name the server did not read, so it stored an empty list every time. Anything typed there was gone on the next save.
fix Producing a handover report failed outright as soon as one selected device had no photo.
change **Every screen text now runs through the language layer** — the last hundred or so that were still written straight into the page: the asset list, the alerts matrix, the module cards under Settings, the floor plan and the timeline detail panel. Those were invisible to the translation page before, so a language could never be finished. It can now.
change The countdown on Planning read its own screen text to know how much time was left, which only worked in Dutch. It stops for nobody now.
change **Planning moved to Settings → Maintenance.** It sat in the sidebar under Organisation, but everything on it is about the installation as a whole — scheduled work, clean-up rounds, the background processes. Old links redirect.
change The SIM switch has been taken out. Router management moved to our own controller a while ago and nothing had been written since; what remained was a screen that could no longer show anything.
change The last remnants of the router log were removed as well — the routers have been sending it to our own controller for some time. The Log under Settings is the application log and is unaffected.
refactor **The code is now English throughout.** The fifth and last layer after the addresses, the field names and the screen texts: comments, variable names, styling classes and the internal names in the reports. Nothing changes for you — this is the kind of work that pays off in everything that comes after it.
refactor Six new automatic checks, each of which found real faults on its first run: whether every button points at something that exists, whether the screen and the server agree on the names they exchange, and whether anything Dutch is left in the code. The seven fixes above came out of them.
v0.99.0 beta 2026-08-19
change The Settings tab bar has two levels. Twelve tabs sat in a single row, and every new one simply made it longer; the groups are now headings with only the open group's tabs below. Data retention, Database, Log and Translations sit together under Maintenance.
change The translation page opens with a tree that mirrors the menu. You translate one screen at a time, and the number beside each screen is what is still open rather than what exists — a flat list of a thousand lines tells you neither where you are nor what is finished.
fix Four Settings tabs — Archive, Providers, Database and Log — showed nothing at all. They had ended up nested inside the Maintenance panel, which is hidden.
fix Setting up two-step verification showed no QR code to scan.
change Layer 4 of the move to English: the address bar. The pages are now called /site, /devices, /outages, /users, /floorplan and /profile. Old bookmarks keep working — they redirect automatically, including the tab you were on. A shared link to a floor plan that is already with a customer keeps working too.
change The Monitor is now called Monitor in the address bar as well, instead of timeline — the only page where the menu and the address still disagreed.
fix Collecting the network names while building a report could fail.
fix In the archive under Settings, the Show days column stayed empty.
nieuw **Multilingual** — Helios can now run in several languages. You pick language and time zone on your own profile, so two people in the same site can each have their own language and clock.
change Every screen now runs through the language layer — over 1,000 texts, including the dates and elapsed time on Planning, the detail panel on Monitor, and the pages a customer sees without signing in. Those last ones now follow the browser's language.
change The changelog is now in English — all 261 versions. It stays out of the language packs on purpose: a changelog is a record of what happened, in the words it was written in, and text that can change later when somebody edits a translation is no longer a record.
nieuw **Translation page** for administrators: every text on one screen, with a search box and a filter for what is not translated yet. A language you build here can be exported as a file and read back in elsewhere — so somebody can create their own language and share it with us.
v0.98.0 beta 2026-08-19
change Layer 3 of the move to English: the last Dutch field names travelling between server and screen — some thirty keys, renamed on both sides at once. Nothing changes on screen; the phone app API was deliberately left alone.
v0.97.1 beta 2026-08-19
fix Reports could no longer be downloaded, mailed or deleted: the buttons pointed at an address that had moved in the previous version.
fix The report list showed a dash for period and author instead of the dates and the name.
fix On a site overview the count of running events could fail, leaving the site picker without its dots.
fix The handover report was missing the parking information and the navigation address.
fix An outage always said ‘manual’, even when Helios had reported it itself.
fix A note on a device arrived empty.
v0.97.0 beta 2026-08-19
change Layer 2 of the move to English: the database schema. Fifty columns and three tables now carry English names — tickets, deployments, notes, show days, wiki, connector health and the report store. Every rename sits behind a guard, so on a fresh installation the migration is a no-op. Nothing changes on screen.
v0.96.0 beta 2026-08-19
change Technical, but worth reporting: all internal names in the code — modules, functions, constants — have been moved to English. Over 1,100 renames, fifteen file names. Nothing changes on screen; this is the foundation for multiple languages, which is built next. The database columns, API fields and addresses follow in their own steps.
v0.95.0 beta 2026-08-19
nieuw A small clock in the top bar shows the last five pages you visited, together with the site they belonged to at the time. Clicking one switches back to that site first and only then navigates — otherwise “Devices” silently opens another site's fleet, which is worse than having no history at all.
change The same page under two sites counts as two items: “Devices · Reggae Lake” and “Devices · Parade” are different places. Sign-in and password screens stay out of the list. Everything lives in your own browser; nothing goes to the server.
change The asset card now carries the device name in the tab title — in the browser, in bookmarks and in the history that screen was otherwise called “Device” five times over.
v0.94.0 beta 2026-08-19
change The device identifier is now called **device_id** throughout the database and the code. Five tables still called it `rms_id` — after Teltonika's Remote Management System, which this tool was originally built for — while nine others already called the same thing `device_id`. At every join between tables you had to remember which side you were on.
change The cookies are now called `helios_session` and `helios_active_org` instead of `rms_session` and `rms_active_org`. The old ones are still read, so nobody gets signed out; they die out by themselves.
change What does stay called RMS is the connection to Teltonika's RMS itself — that is a product name, not a leftover. The phone app notices nothing: it talks through the field “id”, and that has not changed.
v0.93.0 beta 2026-08-19
change The profile page has been rebuilt. It had its own cards, input fields, labels and alert bars — copies of what the rest of Helios already has, at slightly different sizes. It now uses the same building blocks as Settings and the asset card, so it feels like them too.
change Who you are now sits at the top in a single line: username, created, last sign-in and whether 2FA is on. That used to be halfway down a form, between the input fields.
change The four heavy orange buttons have become the slim buttons the rest of the app uses, and the coloured labels next to “confirmed” and “disabled” are plain text.
v0.92.0 beta 2026-08-19
nieuw A dot at the start of every row in the asset list: green if the device is online now, red if it is off. Handy for seeing how much of the fleet is running — right now 42 out of 258, the rest are in the crate between events.
change There is a third colour: grey, for devices whose last measurement is more than an hour old. “We are not looking right now” is something else than “it is off”, and a red dot on a five-day-old measurement would have the list claim something it does not know. The tooltip says when it was last measured.
change Brand now comes before model in the asset list.
v0.91.3 beta 2026-08-19
change Deployments and outages on the asset card now have a header row and real columns: site, location, from, to and duration. There used to be a column with no header holding a dash for most devices — that was “location”, but nothing told you so. For 91 of the 386 rows there is something useful in it (“on loan to Check & Charge”, “Spare”, “Lost??”), so the column stays — now with a heading above it.
change “Name at the time” has become a column of its own. It used to be a loose line — “was called …” — that only appeared after a rename, 20 times out of 386. Now every deployment shows the name the device carried then; if it differs from the current one it stands out in full, otherwise it is dimmed, so a rename still catches the eye.
nieuw There is a duration alongside: how long a device stood at a site, and how long an outage lasted. That is the number you are looking for and would otherwise have to work out from two dates yourself.
v0.91.2 beta 2026-08-19
change Every deployment on the asset card now has a start and an end. Almost half the rows have no date — those are the oldest, from before Helios kept site history — and they are derived from the chain: where one deployment stops the next begins, and the very first starts no earlier than when Helios first saw the device.
change A derived date gets a tilde and the note “derived, not measured”. It is good enough for the order and the duration, but a guessed date that looks like a measured one is exactly the kind of number you end up relying on later.
v0.91.1 beta 2026-08-19
change The asset list now shows hours under the days as well — “10 days” with “245 hours” beneath it. Days read comfortably, hours are what you add up and compare. On the asset card they sit side by side. Below an hour the hours line is left off, because “0 hours” contradicts “< 1 hour”.
change The rows in the asset list sit closer together; about four more fit on a screen.
v0.91.0 beta 2026-08-19
nieuw **Asset card per device.** Click a row in the asset list and you get everything Helios knows about that device: the details, the operating time, every deployment it has had and every outage it was part of — with the cause and what was done about it.
nieuw Four fields Helios cannot know by itself: purchased on, warranty until, purchase price and supplier. You fill those in by hand; the rest of the card comes from the connector and is overwritten every round.
nieuw Notes on a device, as a log rather than one text box: “antenna replaced”, “drops out in the rain”, “in the crate”. Every note keeps its date and who wrote it. A field you overwrite loses what was there, and the history is precisely the point here.
v0.90.0 beta 2026-08-19
nieuw **Asset list** — the whole fleet on one screen, independent of which site you have open. Per device: model, serial number or management IP, where it hangs now, how long it has been running and how often it was part of an outage. Groupable by brand, site or model, with a search box and an archive.
change Operating time is the accumulated time a device was online and Helios saw it — not the age of the device. That is why it says since when that device has been measured, and what share of that time it was on. Without those two, “43 days” reads as the age, and it is not.
change Superadmin only: the list runs across every site by definition. Devices of a switched-off connector are included — they are no longer measured, but they are not gone, and an inventory that loses things because somebody flipped a switch is not an inventory.
v0.89.1 beta 2026-08-19
fix Changing a role on a site's Users page now has a Save button, and the row in the list shows the new role straight away. It already saved as soon as you picked, but without a button and without a visible change it looked like nothing happened until you refreshed. Cancel puts the choice back, so nothing is left standing that has not been saved.
fix The same trouble in Settings → Users: the sites and roles on the row kept showing the old values after a change in the edit panel. Changing a role, adding a site and removing a site now land in the row immediately.
v0.89.0 beta 2026-08-19
change A site's Users page has been given the same layout as Settings → Users: list on the left, add on the right, columns with a header row, and the row opens its own panel. The role and the button to remove somebody from the site sit inside it, so the list itself stays a list.
change The styling of both screens now lives in one stylesheet instead of in the Settings template. Two copies drift apart sooner or later, and then two screens that do the same thing look almost, but not quite, alike.
v0.88.0 beta 2026-08-19
change The user list has been given columns: user, email, sites, created and last sign-in, with a header row above them. It was all there already, but run together with dots in between — and then you work out for every row all over again where one thing ends and the next begins.
change A superadmin now reads “all sites” instead of nothing: they are allowed everywhere, and an empty cell leaves you wondering whether the data is missing. “2FA on” sits as a small word under the name.
change When the card gets narrow, “created” drops off first and after that everything stacks — with its label in front, because four grey lines without labels are as much of a puzzle as one long one. That follows the width of the card and not of the window: the list sits next to the add form and is therefore narrower than the screen.
v0.87.2 beta 2026-08-19
change The four buttons under a user sit on one row and are slimmer. They used to be two heavy orange buttons above a separate line with two thin ones — two blocks, while it is one row of choices. Save keeps an accent border because that is the button you are heading for, and delete stays red and sits on the right, away from the one you are aiming at.
v0.87.1 beta 2026-08-19
fix Only one user can be open at a time now. If you clicked three, all three stayed open and one form sat under another one's row — with no way to tell which fields belonged to whom. Collapsing erases nothing: what you typed is still there when you open it again.
v0.87.0 beta 2026-08-19
change No more buttons on a user's row: you click the row and the edit panel opens. There were three — one to edit and two that concern the account itself — and those last two do not belong in an overview you are reading, with “Delete” next to every name.
change “Make superadmin” and “Delete user” now sit at the bottom of the edit panel, behind a rule and apart from Save: they are not changes you save but actions that happen immediately.
v0.86.2 beta 2026-08-19
fix Save closes the edit panel again and takes you back to the list — that is, after all, the end of the action. In 0.86.1 it stayed open, which overshot: only what you do in between (adding a site, turning off 2FA) should keep the panel open.
v0.86.1 beta 2026-08-19
fix You now stay in a user's edit panel. Adding a site reloaded the page and Save sent you back to the list — while you are usually not done yet: a site, then the email address. The site is now added without a reload (so filled-in fields stay too), and after Save the panel opens again on the same user.
fix A site you remove comes back in the dropdown, and a site you add disappears from it. Otherwise you could pick the same site twice, or fail to give back a just-removed site without refreshing.
v0.86.0 beta 2026-08-19
change User management has been rearranged: the list of accounts now sits on the left with the add form beside it, in a card of its own. That form used to be at the bottom of the same card — so behind the entire list, and with twenty accounts you had to scroll to discover it was there.
change The coloured labels are gone, bar one: “superadmin”. That says something about what somebody is allowed to do and should catch the eye immediately. “You”, whether an email address is confirmed and which sites somebody belongs to sat beside it as coloured pills and read together as a row of warnings while nothing was wrong. Those are plain text now.
nieuw Two-step verification now sits in user management: you see per account whether it is on, and you can turn it off — with your own password, as with every intervention in somebody else's account. An administrator cannot turn it on: for that, somebody has to scan a secret into their own app. So this is not a switch but an emergency key, for the phone that is lost and the backup codes that were in the same drawer. The secret and the backup codes go with it.
change The buttons per user sit in fixed columns, so the same button lands in the same place across all rows. “Revoke superadmin” is twice as wide as “Make superadmin”, and on your own account the last two buttons are missing — which put “Delete” on one row underneath “Edit” on the next.
v0.85.0 beta 2026-08-19
nieuw Helios now reports when a connection goes down, and when it is back. Every connector talks to somebody else's server — a controller, a cloud portal, a management tool — and until now you could only tell it had dropped out from the consequences.
fix And those consequences were the real problem: a server unreachable for an hour turned all of its devices into “orphans” and all of its groups into “vanished” groups — complete with clean-up buttons. Nothing was wrong except the connection. While a connection is down, nothing is marked as orphaned or vanished any more, and deleting and archiving refuse with an explanation.
change After a day and a night Helios stops holding back the clean-up. A server that has not answered for that long may not be coming back, and then it is no longer a service to keep pretending everything is still there: the normal rules apply again and one message goes out saying so. The outage itself stays reported — it is the protection that lapses.
change The light next to a connector (Settings → Connectors) turns blue while the connection is down. It only showed the licence, and a green dot next to a connector that has fetched nothing for an hour is exactly the wrong signal. The licence status stays in the text.
change One failed round is not an outage yet: only after two in a row is the connection called down, and then one message goes out — not one per round. The alert goes to the landing site, because a controller that does not answer is our problem and not the customer's.
change On the Devices page such a device says “connection” instead of “orphan”, and in Settings it sits above the group list with a note that you are looking at the last known list.
v0.84.1 beta 2026-08-17
fix On the card for the connection to the outside world, “External address” and “Port speed” showed a dash while the controller did know them. The report read only one field and that stays empty on the UXG-Pro; it now falls back to the last known WAN address and to the port the controller itself calls the WAN port.
v0.84.0 beta 2026-08-17
nieuw A site with more than one controller now appears in full in the detailed report. Reggae Lake runs two: the production village on Starlink and the rest of the grounds on the private LTE. Both connections to the outside world are now included — you used to see one, because the second overwrote the first, and it did not say which of the two you were reading.
change The networks are listed per part of the grounds, with a heading above them. The same network name on two parts is not a duplicate but two networks; the ring shows how the traffic was spread across the parts.
fix A device that sat on both parts of the grounds appeared twice in the list of busiest devices and counted double in “across how many devices”. Now one row, with the usage of both parts added together.
fix Congestion on the band (foreign access points) only counted what the last fetched part saw; now all parts together.
fix Under an uplink without bonding there was a footnote about bonding figures that appear nowhere on that page.
v0.83.1 beta 2026-08-17
fix With two controller sites under one site — as at Reggae Lake — a second, nearly empty site put the whole hourly picture on “limited”, and the day table fell back to the raw figures: the same day three times, twice with a zero after it. The judgement is now made once, on the best-filled site. This arrived in 0.83.0.
fix With several controller sites the same hour arrived twice and the chart put them one after the other — the same day twice on the axis. They are now added together per hour.
v0.83.0 beta 2026-08-17
change The detailed final report now only covers the days on which there was a show. At a four-day festival with a build week before it, half the traffic in the report was the build crew's; those days no longer count — and that goes for everything: the hourly pattern, the day table, per wifi network, per access point and the busiest devices.
nieuw The show days sit at the top of the usage half, with the times of each day beside them, and the number appears as a headline figure on the cover. Whoever reads the report sees straight away which days are in it.
change Pick a period with no show in it and you get an explanation instead of a report. Otherwise you get a report about the build week that looks exactly like a report about the show.
fix The usage figures were requested from the controller with a window that took the server's system clock into account. On production that is UTC and it was right; elsewhere the window shifted by two hours and the last two hours of the final day were missing.
v0.82.0 beta 2026-08-16
nieuw Handle several outages at once. Tick them — or all of them at once with the box in the header — and set the status, the cause and the resolution in one go. After an event there are dozens open with the same cause; opening those one by one is exactly the work that gets left undone.
change Empty fields leave what was there. Set a batch to “resolved” without filling in a cause and the causes that were already there simply stay — a bulk action should not quietly erase.
change The message afterwards says how many were still running: “12 outages updated — 3 were still running”. Closing an outage while the device is still offline is allowed, but you do want to know.
v0.81.0 beta 2026-08-16
nieuw The Outages page has a <strong>Per device</strong> button: how many outages each device has had across the whole season, how many of those are still open, how many were false, how long it was offline in total and between which dates. Sorted by count, so the device costing you the most work is at the top. Click a row and you see the outages of that one device.
change That count comes from the database and not from the list on screen. The latter fetches at most 300 outages — enough to read, too few to total a season with: one location managed 51 in the first week. A count that quietly truncates is worse than no count.
change Devices that have since left the site simply count, with a note that they are archived. They did have those outages, and that is precisely what you want to see back at the end of a season.
v0.80.2 beta 2026-08-14
fix In Planning the MikroNetCon poller appeared as the bare key <code>mikronetcon</code> among the tidy names. It now simply has a name.
v0.80.1 beta 2026-08-14
change The connector card is called plain <strong>Teltonika</strong> again. On the other brand cards the name states the source — Peplink InControl2, Starlink Business — and that no longer held here: RMS has become the fallback and NetCon the source. Two sources do not fit in brackets, so the name states the brand and the description says where it comes from.
v0.80.0 beta 2026-08-14
nieuw A device can now be <strong>archived</strong> instead of deleted. It disappears from the fleet and from the Monitor, but keeps what it measured — so a report about a period in which it hung there still adds up. You find them back through the <em>Archive</em> button on the Devices page, and ↩ brings one back.
change When clearing up an orphaned device, Helios now asks what should happen, with archiving as the suggestion. Deleting was the only way out until now and that is almost never what you mean: the device is out of the fleet, not out of the history.
fix Deleting only did half the job. The measurements went but the rows recording which device sat in which site and when stayed behind, so a deleted device still turned up in a report about that period — with a name and without a single measurement. Deleting now takes those along.
change A device can only be archived once it has not been seen for over an hour, the same condition as for deleting. Otherwise it would vanish from view while it is still happily measuring.
v0.79.0 beta 2026-08-13
change The <strong>Log</strong> has gone from Helios. The routers have been sending their syslog since the switch to NetCon, so nothing arrived here any more — and router logs belong to management, not to monitoring. You now find them in NetCon, which stores the same lines with search, a live tail and counts per hour. What was in Helios has moved along; the history from the switch onwards is in NetCon.
change The last traces of the ZeroTier layer have been cleared away: the management address and password per device, the accompanying settings and the “ZeroTier” mention on the poller. On the Devices page a Teltonika now shows <em>NetCon</em> or <em>RMS</em> as its polling method, which matches where the data actually comes from.
fix The timeline based “no usable connection” on a field that has not been updated since the switch. That gave a wrong yes for 34 devices and a wrong no for the rest. It now looks at the uplink data itself.
v0.78.1 beta 2026-08-13
change <strong>NetCon has become a connector of its own</strong>, alongside PepNetCon and MikroNetCon, instead of a block in the Teltonika card. It is a management tool that Helios reads — and Peplink and MikroTik devices will soon come out of the same controller, so hiding it under one brand was wrong. Turn it off and the Teltonika poller falls back to RMS.
v0.78.0 beta 2026-08-13
change The Teltonika routers are now read from <strong>NetCon</strong> instead of Helios going to them over SSH itself. RMS stays underneath as a fallback. For these routers Helios was the only connector that played the management tool itself; now it is — as with every other brand — an ordinary reader of a controller. Nothing changes on screen: the same measurements, the same alerts, the same history. It was all checked beforehand by putting both sources against the same twelve routers and comparing them field by field.
nieuw Settings → Connectors → Teltonika has a block for the <strong>NetCon connection</strong>: address and a read-only API key, stored encrypted. <em>Test connection</em> fetches the fleet and says how many of your Teltonika devices NetCon recognises — the rest fall back to RMS in the meantime. That is the question that matters: not whether the key is valid, but whether the controller knows your routers.
change Router management has gone from Helios: the ZeroTier layer, the SIM switch (immediate and scheduled), tuning the failover and pinning a DHCP lease. That belongs to management, and you do that in NetCon. The client list itself simply stays — that is a measurement, not a button.
v0.77.2 beta 2026-08-10
change The green dot next to an event running a show has become the word <strong>LIVE</strong> in a small frame, just before the device counts. Because those counts have a fixed width, all the labels line up in the same place. It no longer blinks: in a list of thirteen sites, three pulsing greens are restless, and the notice in the bar — which is about the site you have open — is allowed to stand out.
v0.77.1 beta 2026-08-10
change Archiving and deleting at the bottom of the Site page now sit in one frame instead of two. They were two lines both saying “there are still 9 devices in it”, while it is one situation. The condition is now stated once, with the choice below it: keep or throw away.
fix The Archive button looked clickable while it was disabled. Like Delete, it is now grey as soon as the action is not possible.
fix For the installed base it said “move the devices, then this is possible”, while afterwards it still is not: that site catches whatever belongs nowhere and stays in view. The real reason is now given.
v0.77.0 beta 2026-08-10
fix On an outage you could no longer tick a device that had since moved out of the site, and on save it came loose from the outage — even if you had only typed a cause. It is precisely the outages you write up afterwards that concern devices already back home. Such devices now simply appear in the list, with a note that they no longer hang here, and stay attached as long as you leave them ticked.
nieuw Sites can now be <strong>archived</strong>. An event that is over thereby disappears from the site picker, but nothing goes away: the device history, the outages, the show days and the dossier stay, and you can still build a report about that site. That is the difference from deleting, which throws all of that history away. You archive at the bottom of Site → Details.
nieuw Under <strong>Settings → Archive</strong> sits the list of archived sites, with the number of devices, the number of show days and when it was archived for each. <em>Open</em> makes such a site active — handy for a report after the fact — without putting it back in the list; <em>Restore</em> does that.
change The archive is there for the installation administrator. A site admin manages their own site and does not see the tab; archiving takes a site out of everybody's picker, after all.
change If the site somebody was in gets archived and they have no other site at all, they end up on “No site” instead of being stuck in a site that no longer exists for them.
change A site with devices in it cannot be archived, and neither can the installed base that catches devices. Otherwise alerts keep arriving about a site you can no longer open anywhere. Move the devices first — the same order as for deleting.
v0.76.2 beta 2026-08-10
fix On every restart a site called <em>Default</em> reappeared saying devices land there, while the connectors were landing in the installed base. The start-up code looked at the name of that site instead of at whether a catch-all already existed; rename or delete it and it simply made a new one. There would then be two, and which one was used depended on the order the database happened to return. Now it only intervenes when there really is no catch-all, and then preferably by pointing at an existing installed base.
v0.76.1 beta 2026-08-10
fix Under <em>Assign sites</em>, PepNetCon and MikroNetCon showed zero devices everywhere, and mapping a site did not bring along the devices already there. Neither poller recorded which site of the tool a device came from. That now happens every round, so the counts add up and a mapping also picks up what was already there. If a device moves to another site in the tool, that follows — a move you made in Helios stays.
v0.76.0 beta 2026-08-10
nieuw <strong>PepNetCon</strong> and <strong>MikroNetCon</strong> now have — like the other connectors — an <em>Assign sites</em> block: map each site from that tool to a Helios site, or turn monitoring off for it. Both connectors already reported their sites, but there was no screen to map them, so everything kept falling into the installed base.
change Where the screens still said “Default organisation” they now say “installed base”. That site is already called that, and in two places a name was referenced that no longer exists.
v0.75.0 beta 2026-08-10
nieuw The site picker shows a green dot after every event with a show day running right now. Until now you only saw that for the site you had open, through the LIVE notice in the bar; with more than one event at a time you had to open them one by one to see where things were happening. The dot refreshes itself every time you open the picker, so it also disappears when the show ends while your screen is open. Fixed locations do not get it — they run no shows.
v0.74.0 beta 2026-08-10
nieuw A site is now an <strong>event</strong>, a <strong>fixed location</strong> or an <strong>installed base</strong> — three choices side by side under Site → Details. An installed base is the stock: kit that hangs nowhere. There may be several, for example one for fixed kit and one for event material, and they sit at the top of the site picker.
nieuw One installed base catches whatever a connector cannot map anywhere; you tick that on the Site page and it switches off on the previous one. Two were marked, and because the pollers took the first one they found, the database decided which it became — that is how dismantled kit ended up in the wrong bin.
nieuw The PepNetCon connector now reads the tool's sites too. They appear under Groups, where you map them to a Helios site; whatever is unmapped lands in the installed base. Set a site there to not-monitored and its devices are skipped. Until now this connector threw everything on one pile, while the sites were in the API all along.
fix A site without devices lines up with the rest in the site picker again, and there is space between the groups. The number of an empty site sat just outside the column, which made the whole list look crooked.
fix Delete a site and its show days, outages and the history of which device hung in it and when now go with it. Those stayed behind, pointing at a site that no longer existed.
v0.73.3 beta 2026-08-10
fix The button to delete a site is now disabled while the action is impossible, and the line beside it matches the situation. It always said "there are N devices in it; those block deletion" — even at zero, which read as a prohibition while it was in fact allowed. An empty site now says it can go, and the default site that it stays.
change The default site sits at the top of the site picker, apart from the groups and without a heading above it. Devices that belong nowhere or have been dismantled land there; that is not an event and not a location but the bin everything passes through.
change On the Site page the Save button sits at the top right instead of at the bottom of the tab. The form is long enough to scroll, and then you go looking for the button after you have already used it. It only appears on the tab where there is something to save.
change The site picker now groups by kind: the events first, the fixed locations below them. Those are two different kinds of work — at an event you look during the show, at a fixed location all year round — and on one pile you search past one to find the other. An empty group drops out, during searching too.
nieuw Per site you now state whether it is an <strong>event</strong> or a <strong>fixed location</strong>. At an event things are only recorded during the show days and the report counts show time only; at a fixed location the full day applies — there, three in the morning is exactly when you want to know something is down. Existing sites with show days became events, the rest fixed locations; so nothing changes for anybody in how it works today.
change Site → Details has been rearranged: the name, the time zone, the address and the contact now sit in one card, and the show days take the place of the contact. The contact was a card with two fields in it and took up half the screen; the show days are the part where there is actually something to do.
v0.72.0 beta 2026-08-10
nieuw <strong>LIVE</strong> in the top bar. If a show day is running right now on the site you have open, that appears at the top with the end time beside it — on every page, not only on the page you happen to be on. If nothing is running, nothing appears: a bar that always announces something stops being read.
change The 'record outages' switch has moved from Site → Details to the Outages page, with a frame above it showing at a glance whether the show is running, whether it is build-up, or whether recording is off. That is the page where you see the effect, so that is where the switch belongs.
nieuw Show days: you now enter each show day separately with its own start and end time, instead of one show period with fixed hours. Filling in a row and pressing Enter immediately adds another below it, so even twenty-one days go in quickly. Below the list is the total show time.
change The reports work from those show days. Only time inside a show day counts: availability is divided by show time, and an outage running on beyond the show only counts for the part that fell inside it. Build-up, tear-down and quiet days therefore no longer count — which is exactly what a three-week event with varying times ran aground on. Recording outages follows the show days too. Fill in nothing and everything counts as before.
v0.70.0 beta 2026-08-09
change Explanations on outages have been dropped; outage recording does this job, and it also records what was done about it. Whatever you had written down as an explanation has been converted into an outage with that text as its cause — nothing is lost.
change The separate final report has been dropped. The detailed final report contains everything that was in it — availability, outages with cause and resolution, spare devices — and the usage on top of that. Two documents with the same uptime in them is one too many. Final reports already created simply stay in the list and can be downloaded and mailed. The detailed final report is now also built in one pass instead of as two separate documents glued together afterwards.
v0.69.1 beta 2026-08-09
nieuw Every outage in the report now carries what is known from the outage records: the cause and what was done about it, on the line below the interruption itself. An outage you set to 'false alarm' is marked as such too. It applies to the final report and to the detailed final report — after 'when', 'and what was it' is the next question, and that answer belongs in the same place.
nieuw Spare devices no longer count towards the figures. Helios recognises them by their location — it reads "Spare" — and puts them in a list of their own at the bottom instead of at the top among the points of attention. A device lying in the crate as a spare, and therefore switched off, dragged the average availability of a whole show down for something no customer ever noticed. Applies to the final report and the detailed final report.
change The detailed final report has been given a period of its own. It used the final report's, but that was nowhere visible because the fields sat in the frame above it.
v0.68.0 beta 2026-08-09
change The detail report is now called <strong>Detailed final report</strong> and also contains everything the final report holds: one document with the availability, the outages and the usage, with both kinds of headline figures on the first page. The page of justification is gone; the explanation that really matters sits with the table itself. Beyond that the whole document is set more tightly: less margin, less white space, and short sections share a page.
fix The handover report could not be generated since 0.56.0. While rebuilding the final report, the function that glues the wifi cards behind the report disappeared, while it was still being called. Put back.
v0.67.1 beta 2026-08-09
fix The detail report said "Something went wrong" while generating. The place that reads the requested period only looked at the final report, so the detail report got no start and end date and stalled while fetching the figures. Which reports have a period is now defined in one place.
v0.67.0 beta 2026-08-09
nieuw Detail report: what went through the line. The hourly pattern with the evening peaks and the number of devices, the usage per day, per wifi network, per network and per access point, the busiest devices, and the kit that carried the traffic outwards — firewall and bonding, with speed, packet loss and latency per line. The figures come straight from the network controller over exactly the requested period; the report itself explains how each number was counted and what cannot be in it.
v0.66.1 beta 2026-08-09
change Our own promotional network no longer appears in the reports. It hangs at every location, but a customer does not need to sign in to it and a QR card of it on the wall is wrong. Every spelling falls under it — with and without capitals, with a dot, hyphen, underscore or space between, run together, and with a suffix after it. It applies to the wifi codes and to the cards at the back of the handover report.
v0.66.0 beta 2026-08-09
fix A final report about a period in the past only showed the devices that still hang there now. During tear-down those go back to the default site, and then a report about a show that was already over shrank with them — at World Pride nine of the forty-four remained, and for thirty-four devices the location had been erased as well. Helios now records which device belonged to which site and when, with the name and the location of that moment, and the report uses the make-up of the time. The World Pride devices were restored retroactively from that morning's backup.
nieuw The online history of devices now has its own retention period, separate from the snapshots (Settings → Maintenance). That is where the final report works out availability and outages, and it is roughly a thousand times smaller than the individual measurements: 3 MB against 2 GB on production. Three years by default, so that two seasons later you can still build a final report about a show long since dismantled, without blowing up the database.
change The 'Without interruption' list in the final report has become a list instead of a row of separate boxes. Thirty-two labels in a row do not get read; two columns with one line per device do.
v0.65.1 beta 2026-08-09
nieuw Recording outages can now be switched on and off per site, under Site → Details. For a fixed installation without a show, every flap is worth an alert but not an outage to account for afterwards; there you turn it off. It is on for existing sites, so nothing changes unnoticed. Adding an outage by hand is always possible, even with automatic recording off, and an outage already running is closed properly as soon as the device is back.
v0.65.0 beta 2026-08-09
nieuw Outage recording. Every offline alert automatically becomes an outage, and whatever falls over within ten minutes of it belongs to the same one — a switch going down takes its access points with it, and that is one outage and not eleven. For every outage you record what was wrong and what was done about it. An outage Helios did not see itself, a phone call or somebody on the floor, you enter by hand. Short flaps are not thrown away but set to 'false alarm' by you: filtering automatically on duration makes exactly the thing disappear that you later want to know about. The page is internal; the outages arrive in the final report in a next step.
nieuw Show hours per site, under Site → Details next to the show period. Only within those hours does an alert automatically become a recorded outage — during build-up and tear-down all sorts of things go on and off, and that is work, not an outage. A show running past midnight you enter as 12:00 to 02:00; the night then counts towards the day before. Leaving it empty means the whole day. The alerts themselves are still sent, and an outage that started during the show is properly closed outside show hours too as soon as the device is back.
v0.64.1 beta 2026-08-09
fix The times in the final report were in UTC and therefore two hours early: a switch that went down at 01:23 appeared in the report as 23:23. The requested window was read as UTC as well, so a show period of 14:00 to 23:59 actually selected 16:00 to 01:59 — just across the border between build-up and show. All times in the report are now on our own clock, summer and winter time included.
v0.64.0 beta 2026-08-09
change The outages in the final report are now grouped per device: the devices alphabetically, the name mentioned once, and its own interruptions below it in order of time. If a device's list runs on to the next sheet, the name is repeated above it.
new You can now put an explanation on an outage. On the report page the Explanations button opens the outages from the chosen period; what you fill in there appears as a footnote under the outages in the final report, with a reference at the interruption itself. They belong to the device and the time span, so they stay when you rebuild the report later.
v0.63.0 beta 2026-08-09
change The outages page of the final report now names every interruption separately, with start, end and duration, in order of time. It used to give only how often and how long per device; a customer wants to know when something was down. The count and the total downtime are still at the top.
v0.62.0 beta 2026-08-09
change On the final report and the show period you now also give a time, not just a date. A show starts at a certain hour and what happens before that is build-up; without a time, an interruption during build-up was counted as if it happened during the show. Fill in only a date and it stays as it was: the whole day.
v0.61.2 beta 2026-08-08
fix The heading of the final report had one day too many. The period is stored internally up to midnight of the following day, and that number was printed literally — a report up to 8 August announced 9 August. It now states the last day that is genuinely in it.
change The final report has more air. Each section starts on its own page with the dark bar and a generous top margin; previously a continuation page started tight against the top edge because that margin only applied at the start. A long list is now spread neatly across several sheets.
v0.61.1 beta 2026-08-08
fix The availability of devices deployed later was not quite right yet. It was calculated over the calendar period instead of over the time actually measured, so hours still to come counted as downtime. The measurement is now cut off at the moment of deployment, just as the rest of the report already did.
fix In the final report a heading could be left at the bottom of a page with its content on the next sheet. Headings now stay with their table, and if a table runs across two pages the column header goes with it.
change In the final report the location follows every device name, where it is filled in. A customer reads ‘VIRT-PEP-047’ and does not know where that hung; it now says it was the CP backup connection.
v0.61.0 beta 2026-08-08
change The final report has been redesigned, in our own house style — the same typefaces, logo and layout as the wifi cards lying on the table at the same event. With headline figures at the top, a bar per device and a separate page for the outages. It is about what did not go well: devices that ran throughout the period sit compactly in a row instead of as dozens of identical bars.
nieuw Devices only set up later are recognised as such and named separately. Their availability counts from the moment they came online, because the hours before that are not an outage. The World Pride CP backup topped the points of attention at 42%; it arrived on day three and has run at 100% since.
v0.60.1 beta 2026-08-08
fix The MikroTik routers from MikroNetCon appeared on the timeline as ‘WiFi WAN’ while they work over the mobile network — an SXT does not even have wifi. They are now shown as mobile, with the name of the network.
v0.60.0 beta 2026-08-08
nieuw New connector: MikroNetCon. The MikroTik fleet from our own controller arrives as devices, with signal, provider and signal quality, and simply appears on the Monitor and in the reports. That controller's sites appear under Groups; map them to a Helios site once and new devices land in the right place by themselves from then on.
nieuw MikroNetCon has its own configuration screen under Settings → Connectors, laid out like the others: poller on or off, poll interval, base URL and API key, plus a button to test the connection.
v0.59.0 beta 2026-08-08
nieuw A site now has a show period: from when to when the event runs. You fill it in once under Site → Details, and the final report then starts with those dates instead of with the last seven days. The handover report names the period at the top with the location details.
change Overview, Site settings and Wiki have become one page: Site, with two tabs — Overview and Details. All three were about the same location and ran into each other; the settings and the dossier even shared an address field. Everything you fill in about a site now sits under one Save button. The old addresses keep working.
fix A site's address sat in two places: in the settings and in the wiki. The handover report read the second, so a site where only the first was filled in got a report without an address — that already applied to one of the fourteen sites. There is now one address field; whatever was only in the wiki has moved along.
change Renaming and deleting a site sat in two places. Now only on Details, where it also says how many devices are in it and what exactly disappears with it.
change The Notes field has been dropped. The free blocks in the dossier do the same thing but with a heading above them, and those do make it into the handover report.
v0.58.0 beta 2026-08-08
nieuw The report screen has become a report cabinet. At the top are the three kinds — handover report, wifi codes and final report — each with a button. What you create stays below: to download, to mail and to throw away again. Previously a report vanished as soon as you closed the tab, and nobody could look back at what exactly was recorded on handover day.
change Picking devices is no longer possible anywhere. Every report covers the whole site, because that is what you hand over; half a report looks complete and that is exactly what you fall back on later. Only the final report still has a from and to date, because it is the only report that looks back.
change The devices in the handover report are now in network order instead of alphabetical. At the top the core — the bonding, the firewall and the switches — then the access points on the wired network, and after that per LTE router the router with the access points hanging off it, with a heading above. Helios works out who hangs where from the addresses: an access point in the same range as a router belongs to that router. Alphabetically a router sat somewhere at the bottom under V while its own access points sat under A.
fix The handover report was missing the headings for the bonding, the firewall and the switches: those simply sat with the rest. The layout itself was right — it was only called with different field names than it expected, so it recognised no device at all as core. The radios of the radio-link type also got no address in that report.
nieuw Helios now remembers which network each Teltonika router sits in. That was already being read, but only at the moment somebody requested that router's DHCP clients; it now happens in the ordinary measurement round, over the same connection that is open for it anyway. That lets the access points behind such a router be grouped with that router too, as already happened for the other routers.
fix Not every firewall was recognised in the network order. Only the older type counted, so a UXG-Pro ended up at the bottom among the access points instead of at the top. All generations of gateway now count. Radios of the radio-link type got no place either, because their address is supplied with a suffix.
fix The monitoring page returned an error instead of the timeline shortly after the previous change. A helper function had accidentally ended up between an address and its own code, so that address landed on the wrong function. Only ever visible on the development environment.
nieuw On the monitoring page you can now group by Network: the core at the top, then the wired network, and after that per LTE router the router with the access points hanging off it — the same layout as in the handover report. Helios works that structure out on the server and sends only the group label, never the addresses the layout rests on; so it does not end up on a shared page.
nieuw Next to every created report is a Show button: it opens the document in a window on screen, without having to download it first.
change Two things have gone from the handover report. The list of wireless networks sat just before the wifi overview at the back that shows the same networks, with QR code — two lists of the same thing, two lines apart. And the heading ‘Comes later in this report’ has been dropped; it promised, among other things, separate wifi cards that are now simply in it.
change The report is no longer replayed on screen. It is a document you keep or send, and that second rendering next to it drifted away from the real one as soon as anything changed.
v0.57.1 beta 2026-08-08
fix The handover report held a database connection while fetching the wifi networks from the controller. With a slow or unreachable controller that could run to over a minute, and there are only twenty — run that stock out and the next visitor gets an error. The fetching now happens after the connection has been handed back, as the pollers already did. Nothing changes visibly.
fix While merging the handover report with the wifi cards, three documents were left open in memory, for every report again. Nothing changes visibly; in a process that runs for months on end it does add up.
v0.57.0 beta 2026-08-08
nieuw The handover report has the wifi cards at the back. So you get one document with everything in it: what was handed over, then the wifi overview and the separate cards to put up. The separate wifi download simply remains and does not change — it is the same builder, so the cards look exactly the same in both. If there are no networks with a password, or building them fails, the handover report simply comes out without that appendix.
change The handover report no longer has a device selection: it always covers every device of the site. That is also what you hand over — a report with a half-ticked list looks complete while it is not, and that is exactly the paper you fall back on later. The selection list stays for the performance report.
v0.56.3 beta 2026-08-08
fix The wifi cards could not be built on the server. The browser needed for it was installed there as a ‘snap’, and such a snap refuses to start from a background service — so it worked fine from the command line and not in Helios. There is now a browser of its own alongside the app, which does not have that limitation.
fix The overview at the front of the wifi PDF ran on past the page, and whatever no longer fitted disappeared without notice — beyond seven networks the rest was simply not there. The overview now continues on the next sheet, with ‘continued’ and the number range in the heading, so you can see there is more.
v0.56.2 beta 2026-08-08
fix The handover report put the world clock's time in the heading instead of ours. A report drawn up after ten in the evening therefore carried that morning's date — on a sheet that goes to the customer. It now simply shows the time the rest of Helios shows.
v0.56.1 beta 2026-08-08
fix The small maps in the handover report stayed away on the server. They were fetched with a package that was on the development machine but not in the list of requirements, and therefore not on the server — after which the report appeared without maps without saying why. Fetching now uses what Python brings along itself, so nothing is added, and a missing component is reported from now on.
fix An internal check raised the alarm groundlessly now and then. It looked for a site number in the output and also found it in the random security token every page carries, so it fired once and not the next time. Nothing changes visibly, but a check that turns red at random stops being believed in the end.
v0.56.0 beta 2026-08-08
nieuw The handover report now shows what hangs where. Per device the photo sits next to a small map with a pin at the place the device was recorded, with the coordinates below. If there is no photo or no known place, that half stays empty — so while leafing through you see immediately where something is still missing.
fix A wide logo ran off the page in the handover report. It was scaled to height, and the Virtical logo is four times as wide as it is tall; it now fits inside a fixed box, whether it is wide or square.
v0.55.2 beta 2026-08-08
fix Building the wifi PDF said “No Chromium or WeasyPrint found” on the server while Chromium was right there. It ran, too, but it is installed as a snap and such a snap has its own temporary directory: it reported the file had been written, and outside the snap there was nothing. The work now happens in a directory it can reach, and if it still goes wrong the message names the real cause instead of sending you looking in the wrong place.
v0.55.1 beta 2026-08-08
change The logo on the reports and the wifi cards is now one setting for the whole installation, under Settings › Branding. Since yesterday it was per site, with the installation as fallback. That is the wrong way round: it is the house style of the company doing the handover, not of the customer being handed over to — and with two levels the question of which of the two is on that sheet kept coming back.
v0.55.0 beta 2026-08-08
nieuw The handover report. Alongside the performance report you can now record what is there: the location details, per device the place, the photo and the specifications, and the wireless networks of that site. You pick the kind at the top of the report screen; they share the device selection.
nieuw Wifi overview as a PDF, with a separate card per network to put up — network name, password and a QR code a phone connects with directly. Networks without a password, or that are switched off, get no card, because a code that signs you in nowhere helps nobody.
nieuw House style per site: set a logo under Site settings that appears on the reports and the wifi cards. If a site has none, Helios uses the installation's logo.
change The report screen has been rearranged. The device list now uses the full width with the name on the left and the type right-aligned, instead of a cramped box with half an empty screen beside it. The buttons to download or send only appear once there is a report.
v0.54.4 beta 2026-08-07
change The wiki page has been set more tightly. Every field had a heading in capitals with plenty of air around it and often a paragraph of explanation; that is now a compact line with a thin dividing rule, and the explanation is cut back to the sentence that does the work. The input fields stay full width, because the example text in them says what belongs there.
v0.54.3 beta 2026-08-07
change Adding somebody to a site now takes one row instead of a block covering half a screen. Username, email and role sit side by side, as on Shared links. Setting a password yourself is still possible, but sits below it — that is the exception, for somebody without an email address.
v0.54.2 beta 2026-08-07
fix If you entered Settings on another tab and then clicked to Alerts, the channel list stayed empty and the heading above it was missing. Going straight to Alerts did work, because then the list was fetched while the page loaded. Every tab now fetches its data as soon as you open it.
fix If fetching the alert channels fails, the page now says so, with a button to try again. It used to build itself half way without explanation, which looked as if something had been removed.
v0.54.1 beta 2026-08-07
nieuw A "Copy from email settings" button on the email alerts. The two connections are separate, but most installations use one mail server — then you do not have to type the details twice. It is a one-off copy: changing one afterwards does nothing to the other.
v0.54.0 beta 2026-08-07
change Email has been split into two separate connections, each with its own server, sender and switch. Alerts about outages stay under Alerts; invitations, password resets and reports have been given their own Email tab. They used to hang off the same switch: whoever turned off the alerts also turned off the password reset — and somebody locked out could then not help themselves. Your existing settings have been carried over to the new connection, so nothing changes until you adjust them yourself.
v0.53.1 beta 2026-08-07
nieuw A new user gets an invitation by email and picks a password in it themselves. So whoever creates the account does not have to think one up and pass it on. The link is valid for three days and works once; if it has expired you request a new one through "Forgot password?" on the sign-in page. If somebody has no email address, you can still set a password yourself.
v0.53.0 beta 2026-08-07
nieuw Users and roles per site. Until now anybody who signed in could do everything: every site, every setting. From now on an account belongs to one or more sites, with a role per site. A site administrator arranges who may access their site; a user can view and change what happens day to day; a viewer sees the same but changes nothing. Whoever manages the whole installation keeps access everywhere. Existing accounts stay administrators, so nothing changes until you add somebody yourself.
nieuw A screen of its own for user management per site, and in Settings you can see and arrange which sites an account belongs to.
change You now always look at one site at a time. The "all sites" state has been dropped; the site picker shows the sites you may access and remembers your choice.
change A new account picks its own password at first sign-in, even if an administrator has already set one.
fix Shared links show exactly what you chose when creating them. Limit a link to one kind of kit and that now applies to the map and the floor plan too; those used to show more than the timeline. The switch for photo and location works the same everywhere, and a shared overview now contains only what a visitor is supposed to see.
fix Requesting a shared link over a long period could keep the server busy for a long time or return an error. The time window is now bounded.
fix In the detail panel of a shared link there was a heading "Network" with nothing but dashes below it. A row without a value and a column holding nothing are now left out — that reads more honestly than a dash.
fix A device's details had been cut back too far in a shared link: type, model, firmware, IP address and uplink had disappeared while the customer is used to them. Those are back. The management address we use to reach the router is deliberately kept out.
v0.52.5 beta 2026-08-06
change The client block in the detail panel disappeared when there were no clients. A router with nothing connected to it therefore looked exactly like a router we could not reach — both nothing. It now says what is going on: no clients connected, device unreachable, or no ZeroTier address to ask through. Those are three different stories and only the last two have something to fix.
v0.52.4 beta 2026-08-06
fix The map on the floor plan ran over the bar at the bottom of the screen, leaving the legend at the bottom left half covered. The height was calculated to 16 pixels above the bottom of the window, while that bar is 25 tall — exactly those nine pixels of difference. The height now allows for the bar, and measures it instead of assuming it: in kiosk view the menus disappear but that bar stays.
v0.52.3 beta 2026-08-06
fix The site picker at the top left disappeared behind the map on the floor plan. It is wider than the menu beside it and therefore overhangs the map, and there it sat underneath instead of on top. The search results in the top bar had the same problem: they were locked inside that bar and could never rise above it.
refactor The order in which things overlap has been fixed in four bands — page content, the frame around it, what folds out of that, and windows allowed to cover everything. The loose numbers drifting through the stylesheets have been tied to it. Picking such a number that happens to look high enough is exactly how this arose.
v0.52.2 beta 2026-08-05
nieuw A shared link can now also show a device's field photo and position — the same column with the photo and the small map you see on the Monitor yourself. Switchable per link, when creating it or afterwards with a button on the Shared links page.
change That switch is off by default, including for links that already exist. A link already with a customer should not suddenly show more than it did when it was shared, and where kit hangs exactly is not meant for every recipient.
v0.52.1 beta 2026-08-05
nieuw Housekeeping now appears with the continuous processes on the Planning page. That process keeps the systemd watchdog awake and clears out expired measurements and log lines daily, but wrote nothing anywhere — so you could not tell whether it was still running. If it goes down, the bar now turns red.
nieuw The daily clean-up appears on the timeline, with how many snapshots, segments and log lines were removed and how long it took. The database backups already run are now there too, with file name and size — previously you only saw when the next one was scheduled, and not whether it had succeeded.
fix The daily clean-up ran again on every restart of the service. It reckoned with the time since the machine came up rather than since the previous round, so at start-up the threshold had always already been met; on a day with four deploys that meant four delete rounds over millions of rows. It now runs on the clock, at 03:00, and remembers in the database that it has been that day.
v0.52.0 beta 2026-08-05
nieuw New: Wiki per site. Helios knew everything about the devices and nothing about the place — how the uplink arrives there, where you park, which code is on the gate. That lived in heads, chat messages and loose documents, and therefore never with the person standing there at half past five in the morning. The Wiki page sits in the menu above Site settings.
nieuw Three fixed sections: Connection (kind of uplink, supplier, speed, fault number, handover interface), Addressing (WAN IP, gateway, DNS, LAN range, VLANs) and On site (navigation address, parking and access, entry). Fixed fields and no free text, so you can lay them side by side per site later.
nieuw Below that, free blocks with a heading of their own, for everything that will not fit in a field — where the patch cabinet hangs, which circuit the network cabinet is on. Addable, removable and orderable.
change Anybody who can view the site may read it; only an administrator may change it, as with the site settings. An engineer must be able to look up the gate code without being able to change it. Wiki data never travels in a shared link.
change This page now starts with 'What is coming': announced work not yet built, above a rule with what has actually shipped below it. Deliberately separated — a changelog with plans and facts mixed together can no longer be believed.
v0.51.8 beta 2026-08-05
nieuw A filter on the floor plan per kind of device. On a site where many devices hang close together the dots and their labels run over each other; the buttons in the legend at the bottom left switch routers, access points, switches, gateways or bondings on and off separately. The choice is kept per site, even when you close the page, and the counters at the top count along with what you see.
change The legend at the bottom left was written out twice — once for the management page and once for the share link. Now once, so both get the same. So the share link has the filter too.
v0.51.7 beta 2026-08-05
change The photo and the small map in the detail panel are now the same size. The photo was as wide as the column and 132 pixels tall, the map a fixed 232 by 150 — right below each other in the same column that showed. The map now flexes with the width of the column, as the photo always did.
v0.51.6 beta 2026-08-05
nieuw Click the field photo in the detail panel and it opens at full size over the page, with the device name below it. Away with the background, the cross or Escape. Previously that opened a tab with a bare image file you then had to navigate back out of.
change Photos are downscaled on save. A phone delivers 3024x4032 and a megabyte and a half; that now becomes 1600 on the long side and roughly a sixth of the size. Across 250 devices that saves hundreds of megabytes of disk, and it is still sharper than the enlargement on a big screen shows.
fix The GPS coordinates a phone bakes into the photo file itself are now removed. Helios keeps the position separately, and that you can erase; a coordinate hidden in a photo file you cannot.
v0.51.5 beta 2026-08-05
refactor The six detail panels in the Monitor were built in two different ways. Four of them — routers, hubs, bondings and IP monitors — shared one layout; the panels for access points and radio links had their own heading, their own cards and their own columns. They now all share the same skeleton, that of the router panel. What they show still differs per device kind, because a radio link has no SIM card.
change As a result those two panels look different. The quality labels 'Good', 'Fair' and 'Weak' have been replaced by a colour on the figure itself, as with a router's signal strength, and the station list of a point-to-multipoint link now sits full width at the bottom instead of squeezed into a column.
fix In a router's detail panel the 'Switches' line showed the text 'undefined' as soon as that value was missing, instead of a dash. That line was hand-written and bypassed the shared code.
v0.51.4 beta 2026-08-05
change The position in the detail panel has become a small map instead of two numbers. Coordinates say nothing about where something stands; a map with a pin says it at a glance.
fix On access points and radio links the block with the photo ended up below the other two instead of beside them. Those panels lay their data out in two columns, so a third card dropped to the next line. With this block there are three.
v0.51.3 beta 2026-08-05
fix The quality value on the right of every device row stuck to the top of its cell instead of sitting in the middle. That crept in at version 0.49.2, when the value moved next to its unit instead of above it: the alignment was on the text baseline, and that pushes the content up as soon as the cell is taller than the text. The percentage and the unit still share their baseline with each other.
v0.51.2 beta 2026-08-05
fix The photo and the position were missing on access points, radio links, bondings and IP monitors. The Monitor has six different detail panels — routers, hubs, access points, radio links, bondings and generic — and the column only sat in the routers' one. AP-09 had both a photo and a position and showed neither.
refactor The column is now shared by all six instead of written out per panel. That was the cause as well: something that belongs in six places and sits in one is only noticed when somebody happens to open the right device.
v0.51.1 beta 2026-08-05
fix The column with the photo and the position in the detail panel only appeared when something had actually been recorded. Because 24 of the 247 devices have a position, nine out of ten devices you open showed nothing and the feature looked broken. The column is now always there, with 'No photo yet' or 'No known position' when there is nothing — that is information in itself.
v0.51.0 beta 2026-08-05
nieuw Photos taken with the field tool can now be seen in Helios itself too. Until now they disappeared from the view of everybody behind a screen: the engineer recorded how something was mounted and that was where it stayed.
nieuw In the detail panel on the Monitor there is now an extra column with the photo and below it the device's position. The column drops out if there is neither photo nor position, like the chart column beside it.
nieuw On the device page there is a block 'Recorded in the field' below the cards, with the photo, the coordinates and when the photo was taken.
change Both for signed-in users only. A shared link runs through the same code, but does not receive these details — where a device stands exactly and how it is mounted is no business of a customer's. Measured on a link with 98 devices: none of the fields comes along.
v0.50.2 beta 2026-08-05
refactor The logo was written out four times in the templates. It now sits in one place, with the size and the styling as options. Cause: the previous two versions both had to clear out the same dead piece of code, the first time in one place and the second time in the other three. Nothing changes visibly.
v0.50.1 beta 2026-08-05
fix The four rays that were never drawn sat in four templates, and the previous version took them out of one. Now also out of the sign-in page, the changelog page and the shared link page. Nothing changes visibly — the mark has always had four rays.
v0.50.0 beta 2026-08-05
nieuw The field tool on the phone is being set up around the three phases of an event: build-up, show and tear-down. This version lays down the server side for that; the app itself follows.
nieuw A photo on a device. During build-up you record how it is mounted; one photo per device, a new one replaces the previous. Stored on the server next to the floor plan drawings, with a file name we decide rather than the phone.
nieuw Clearing up afterwards: a device goes back to the Default organisation in one action, and the location description and the manually pinned position go with it. Otherwise a router is still called 'Bar 2' at the next site. A position the device reports itself stays — that corrects itself.
nieuw The app can fetch the status history per site, through the same code the Monitor and the shared links use. That way the show view in the app tells the same story as what the customer sees on their screen.
fix The logo contained four rays that were never drawn. Their gradient is calculated over the shape's bounding box, and for a dead straight line that is zero wide or zero tall — a browser skips such a shape. So the mark has always had four rays; those lines merely claimed otherwise. Nothing changes visibly.
v0.49.5 beta 2026-08-05
change The client list in the detail panel on the Monitor now appears almost immediately. That list comes from the device itself — over SSH through ZeroTier on Teltonika, through InControl 2 on Peplink — and that took over a second and a half. From now on what was stored last time is shown first, and the fresh list slides in quietly as soon as it arrives.
fix For a device that is offline, no call is attempted any more. A router not answering the poller will not accept SSH either, so three seconds were spent waiting for a connection that would fail anyway, only to show the stored list afterwards regardless. That is now immediate. In measurement it saved 3,091 milliseconds per click, and it affects fourteen routers.
fix The top bar did not fit on a phone: the Dashboard button stuck sixteen pixels off screen, which made every page shift sideways. On a narrow screen only the icon remains.
v0.49.4 beta 2026-08-05
fix The quality value on the Monitor sat somewhere different everywhere on a phone. With a long name the label pushed the value and the row's menu button off the row, so they landed on a line of their own and some rows became half as tall again. The value now sits in a fixed column on the right, the same for every row.
change The unit below the value ('LTE', 'Latency') is dropped on a phone; there is no room for it and the value already says it — a percentage is quality, milliseconds are latency. On a larger screen the unit simply stays.
change When it gets tight, the location gives up space and not the name. Previously both truncated and VIRT-LTE-11 became VIRT-LTE-… while there was room. Now 4 of the 98 names still truncate, and those are the genuinely long ones.
v0.49.3 beta 2026-08-05
change The Monitor has become usable on a phone. Of the 390 pixels of width, 32 were left for the time bar: the sidebar took 60, the name label 140, the quality column 66 and the menu button 28. The bar got whatever happened to be left, and a timeline of 32 pixels is not a timeline.
change The room was there, it was just badly divided: everything was fighting over the same line. The time bar now sits on its own line under the name, full width — from 32 to 264 pixels. The row is thereby two text lines tall, just as before.
fix The page scrolled sideways on a phone because the summary strip in the group header was wider than the screen. That now drops to a line of its own.
v0.49.2 beta 2026-08-04
change The device rows on the Monitor are more compact. The name and the location sat under each other and thereby forced a row of 44 pixels; they now sit side by side and the row is no taller than that one line of text. That saves over forty per cent in height: where 19 devices used to fit on screen, it is now 35.
change The locations sit in a column of their own with a fixed width, so neatly under each other instead of shuffling along behind a name of differing length per device. Names longer than the column truncate; that affects roughly one device in ten.
fix The time axis above the chart was thirty pixels out of step with the bars below it, so the times did not quite match what you saw. Axis and bars are now tied to the same measurement.
change Applies to shared links too, which use the same layout. On a phone the old stacked row stays — the width is not there for anything else. On a tablet name and location stay side by side, but narrower: at that width the full name column would halve the time bar and squash the times together.
v0.49.1 beta 2026-08-04
fix Routers from the PepNetCon connection were all shown as LTE, even when the traffic ran over a wired WAN. VIRT-PEP-020 hangs off a Starlink with the SIM card as backup, but the timeline showed the name of the mobile network. The connector simply wrote 'lte' without knowing — no WAN data arrived at all until now.
nieuw PepNetCon now sends the uplinks per router along with their priority, plus which of them carries the traffic. Helios follows that active uplink and does not infer it from a fixed order itself: on a router with Starlink at priority 1 and an LTE backup that is up at the same time, 'cellular first' would still make it LTE.
change On the device page, Connection type now shows the router's own label — 'Ethernet' or 'Cellular 1/1' — instead of the invented 'lte'. If nothing is active, the field stays empty instead of suggesting a connection.
v0.49.0 beta 2026-08-04
nieuw A slider at the bottom right of the floor plan that fades the background, at the same height as the legend on the left. On a large screen a full map fights with the dots on it: street names, buildings and green areas have more contrast than an eleven-pixel dot. Pull the background back towards white and the status speaks while the plan stays recognisable.
change It works on both backgrounds — the map and your own drawing — and touches only the background: devices, their names, the legend, the zoom buttons and the attribution stay sharp. The scale runs from 15% to 100%.
change The setting belongs to the captured view and travels with 'Save view', like position and zoom. Sliding is visible at once but not yet captured; only with that button does it become the site's setting, for shared links and viewer screens too.
v0.48.4 beta 2026-08-04
fix The button row on the floor plan had sat permanently under the title instead of beside it since 0.48.2. The bouncing up and down had been fixed then by giving the freshness notice a fixed width, but that width was chosen on the longest text — which left the row stuck in its wrapped state. That space is now as small as possible: the notice says 'just now', '41 sec' or '6 min', without 'ago'. That word sits in the tooltip.
change If it does get tight, the bar gives up space in a fixed order rather than wrapping straight away: first the search box shrinks, then the site name truncates. The counters and buttons stay put. That saves a strip of screen height for the map itself.
change Below 1500 pixels of window width the bar wraps after all — one line is not achievable there. That is then a fixed state and no longer a flicker.
v0.48.3 beta 2026-08-04
fix Devices on the floor plan could no longer be dragged. That came from slimming the pins down in 0.48.1: before that the label had a frame and caught the mouse, and in practice that was what you grabbed a device by. Once the label became just letters that let the mouse through, an eleven-by-eleven-pixel target remained — the dot itself — and that is all but unhittable with a mouse.
change While editing, a pin now has an invisible grab area of twenty-four pixels around the dot, and the label counts as a handle again. The dot stays as small as it was. Outside edit mode the pin catches nothing extra, so the map stays freely draggable, including underneath the labels.
v0.48.2 beta 2026-08-04
fix The floor plan's button bar bounced a line up and down every twenty seconds, and the map below it moved with it. The cause was the freshness notice: for the first ten seconds after fetching it said 'just updated' and after that '14 sec ago'. That first text is a good deal wider, and if the bar sat right on the edge of wrapping, it wrapped and unwrapped on every fetch round.
change The notice has been shortened to 'just now' and now has fixed space, comfortably enough for the longest variant. The width of the bar therefore no longer changes with the clock.
fix If the button bar does wrap — a long site name, a narrow window — the map now measures again how tall it may be. Previously it stayed at its old height and the bottom edge fell out of view, until you touched the window.
v0.48.1 beta 2026-08-04
change The dots and labels on the floor plan are slimmer. The dot went from fourteen to eleven pixels and the label lost its frame: on a site where devices stand close together those blocks took up more of the screen than the map beneath.
change The lettering on the floor plan is now dark with a white outline instead of the other way round. Both the map and a scanned drawing are light paper; light letters stayed greyish on it, however heavy the outline. The router name below the place was especially hard to read as a result.
fix On the shared viewer screen the dots and labels had lost their own, larger size back in version 0.47.4: those rules still pointed at the old class names and hit nothing. So a screen on the wall was showing the small management size.
v0.48.0 beta 2026-08-04
nieuw A search bar on the floor plan: type an address or place, pick one of the hits and the map jumps there. Previously search was hidden away in the settings panel and you had to scroll your way to a site whose address you simply know.
change Anybody signed in may search, not only administrators: it moves nothing and saves nothing, it only shifts your own view. It does not change the site's starting view — whoever wants to keep it uses 'Save view' afterwards.
v0.47.6 beta 2026-08-04
change The map now fills the whole available height instead of a fixed part of the screen. That gives about ten per cent more map, and a bit more again in kiosk view.
fix The 'Leave kiosk' button lay over 'Save view'. In kiosk view 'Fit' and 'Save view' stayed, while the exit button arrived as a floating element on top. In kiosk view all the controls now disappear — a screen on the wall is not operated — and the exit button simply sits in the row.
v0.47.5 beta 2026-08-04
change In the list of devices still to be placed, the location now comes first with the router name below it, as on the floor plan itself. There you are looking for 'Bar 3' to put on the map, not 'VIRT-PEP-007'. If a device has no description, the name stays on top.
change The list is now sorted by what you read: first the devices with a location alphabetically, then the rest by name.
v0.47.4 beta 2026-08-04
fix The floor plan came completely off the rails while editing: the devices in the list on the right became more than a thousand pixels tall, which made the page endlessly long and left the map in a corner. Each device's status line accidentally had the same name as the application's sidebar and inherited its styling.
fix The list of devices still to be placed now scrolls inside its own frame instead of stretching the page. With eighty devices that became a page of over four thousand pixels.
change On a narrow screen the map and the list now sit under each other instead of side by side. Side by side left too little room for a usable map.
v0.47.3 beta 2026-08-04
fix Moving devices on the map did not work: instead of the device the whole map moved along, which made the dot look stationary. For the same reason it was impossible to drag devices without GPS from the list onto the map. Both work now.
change A 'Leave kiosk' button at the top right in kiosk view. Previously you could only get out with Escape, which is awkward on a screen without a keyboard. The button is dimmed until you reach it with the mouse, so it does not join in on a screen on the wall. If you exit full screen through the browser, the view now returns by itself too.
v0.47.2 beta 2026-08-04
change The 'Save view' button now simply sits in the floor plan's bar. Pan and zoom the map until it looks right and click it: that is where this site opens for everybody from then on. Previously that button was tucked away in the settings panel, exactly where you do not look when you have just got the map right.
v0.47.1 beta 2026-08-04
fix The floor plan of a site without a captured starting view opened on the whole of the Netherlands, while the device positions were perfectly well known. The map now zooms in by itself until all devices just fit. If you have captured a starting view yourself, that stays authoritative.
change A new 'Fit' button on the floor plan that brings all devices back into view, handy after you have moved them.
v0.47.0 beta 2026-08-04
nieuw A new 'Site settings' page where everything about a site sits together: name, time zone, address, on-site contact with phone number, notes and deleting the site. Until now that was spread over three places.
nieuw A site can have its own time zone, and the whole tool honours it: the Monitor, the timeline, Planning, the Log, the floor plan, the shared views and the public group page. At an event abroad the times then match the clock at the location instead of the clock of whoever is looking. Without a time zone set, nothing changes.
fix The remark about a deviating router clock in the raw log was calculated with Dutch time. A router in another time zone that was in fact correct was therefore reported as wrong — and then a clock that is genuinely wrong no longer stands out. It is now compared against the site's time zone.
v0.46.0 beta 2026-08-03
nieuw A new 'Floor plan' page per site: all your devices as coloured dots on a map or on your own drawing, with the place they hang as the label and the status in the colour. Meant to be shown on a large screen during an event — at a glance you see where everything is and what it is doing.
nieuw Teltonika routers now report their GPS position. The RUTX11s with a fix appear in the right place by themselves; for a site like Parade most routers are immediately in the right spot. Only a reliable fix counts — a position a hundred metres off is more misleading than an empty space.
nieuw Devices without GPS you drag onto the floor plan yourself, from the list on the right. Dropping them outside the plan takes them off again. Click a dot for a menu: mark as spare, back to the GPS position, or take off the plan.
nieuw Uploading your own floor plan is possible too: PDF, PNG, JPG or WEBP up to 25 MB. The positions on your drawing are stored separately from those on the map.
nieuw Every shared link now has two views with a button between them: the technical overview you land on, and the floor plan. Existing links get it automatically. The floor plan has an address of its own, so you can put it straight onto an information screen.
nieuw A device can be marked as a spare: it stays visible but dimmed, counts separately in the totals and raises no alarm. Alerts go off with it, and back on as soon as you unmark it.
change The floor plan shows how fresh the data is. If no new measurements arrive for a few minutes it turns orange and then red with a bar across the full width. A screen stuck on old data showing everything green is more dangerous than a screen showing nothing.
change Only administrators can change the layout; anybody who sees the site may look on.
v0.45.1 beta 2026-08-03
change The SIM card details now sit in a column of their own in the middle of the detail panel, between Connection and Signal, instead of at the bottom of the first column. Three equal columns, then. On a router without SIM card details it simply stays two columns.
v0.45.0 beta 2026-08-03
nieuw On a Peplink router you now see the SIM card details when you expand it on the Monitor: APN, slot, number, ICCID, IMSI and network code. So at a glance you see which card is in which router, without signing in to the device.
fix A router running on its internal modem sometimes reported no provider name, so it appeared on the timeline as 'provider unknown' while it was perfectly well on its own network. The name is now also derived from the network code or the SIM card if the router does not supply it.
v0.44.2 beta 2026-08-03
fix A device that is reachable but whose modem reports no network yet — just after starting up, say, while it is still registering — got exactly the same purple colour on the timeline as Nino. Such a stretch therefore looked like a brief switch to another network. It now has a dimmed colour of its own with the text 'Online · provider unknown', in the legend too. It affected fifteen routers.
change The redundant provider colour 'Virtical VIRTICAL' has been removed. That name is already converted to 'Virtical' automatically, so the colour was never used and only produced a misleading box in the provider settings.
v0.44.1 beta 2026-08-03
fix The directories with database backups and log files on the server were not protected against a standard clean-up command of the version control tool. They are now. Nothing was lost; it was a trap lying underneath.
change The maintenance scripts for cleaning up the routers only existed on the server itself. They are now in the source, so they are kept and can be reused for the routers still to be done.
v0.44.0 beta 2026-08-03
change When deleting a site, only devices hold you back now; you move those to another site yourself. The rest sorts itself out. Previously you also got stuck on shared links and source groups, and had to detach those by hand first.
change Connections to external systems — a site in the network controller, an IC2 organisation, an RMS company — simply remain, including whether you follow them. Only the site their devices land in is emptied: new devices then end up in the Default organisation.
change Shared links lose the deleted site from their scope, but keep working for the sites still in them. A link that only showed that one site lapses and from then on shows a tidy page saying the link is no longer valid. Afterwards you see a message of exactly what was changed or dropped.
fix A shared link that referred to a site through its scope setting was overlooked when that site was deleted. Such a link was left behind with a reference to a site that no longer existed.
v0.43.1 beta 2026-08-03
fix A site without devices still could not be deleted. Alert channels or alert routing were still attached to it, and the deletion quietly failed on that. Those settings are now cleared away together with the site.
change When deleting a site you now see in advance what goes with it: that site's alert channels, alert routing and device groups. Devices, shared links and linked source groups hold the deletion back — you create those yourself and would otherwise lose them unnoticed. If it fails, it now says what is still in the way.
v0.43.0 beta 2026-08-02
nieuw The Devices page now reports when a device has moved to another site in the network controller while it still hangs under the old organisation here. You then see an orange label with the site it belongs to according to the controller. If that organisation exists here too, you move the device with one click on that label — so the choice stays yours.
change A device's placement was already deliberately not updated automatically, so that a manual move is not overwritten on every poll round. The consequence of that — a device staying in the old place after a move — was until now visible nowhere.
v0.42.7 beta 2026-08-02
fix In the organisation picker the online and offline counts now sit in two fixed columns, so they line up on every row. On a site without offline devices the online number used to shift to the right.
v0.42.6 beta 2026-08-02
fix The numbers in the organisation picker ran together (for example '827' instead of 8 and 27): your browser was still using the old styling. Styling and scripts now get a new version number automatically as soon as they change, so after an update you always see the right version without a hard refresh.
v0.42.5 beta 2026-08-02
change In the organisation picker the right-hand column is now called 'Devices' and holds the online (green) and offline (red) counts per site. Previously you only saw the number of outages there. A site without offline devices shows only the green number.
v0.42.4 beta 2026-08-02
fix The organisation picker had a scrollbar while there was room enough: the list was cut off at a fixed height. It now grows with the screen, so all sites are simply in view. Only when there really are more sites than fit on the screen does it still scroll, and then with a narrow bar that only appears when you move over it.
v0.42.3 beta 2026-08-02
change The bars on the background processes on the Planning page now run along: they fill towards the next round and jump back as soon as a process has run, with a short pulse at the dot. That way you see at a glance whether everything is still running — if a bar stays full, that process has stalled. Previously they only showed how long the last round took.
v0.42.2 beta 2026-08-02
fix The times in the Log were two hours behind: they were shown in UTC instead of Dutch time. That applied to the alerts and to the raw log. Both are now level with the clock, as on the Planning page.
fix Routers with a correctly set clock wrongly carried a remark about a deviating router time. That comparison was made against UTC, so every correctly set router appeared to be two hours out. The remark now only appears for a clock that is genuinely wrong.
v0.42.1 beta 2026-08-02
change On the Log page the router selection now sits to the right of the log window instead of below it. The log window is thereby considerably larger and uses the full screen width; on narrower screens the two go under each other again. The router list is more compact, so you see more of it at a glance.
v0.42.0 beta 2026-08-01
nieuw New menu item 'Planning': a diary of everything Helios has scheduled and has carried out. One timeline with 'now' as the divider — above it what is coming, below it what has been, grouped per day. At a glance you see what is up first, with a countdown. Scheduled SIM switches, maintenance tasks and the server's system tasks are all in it.
nieuw A task running right now gets a view of its own with progress ('19 of 24'), so you can follow along instead of having to dig out a log file afterwards.
nieuw At the bottom of the Planning page sit the background processes with their rhythm, last run and duration. A process quiet for longer than expected turns red, a process taking unusually long over a round turns yellow — until now that stood out nowhere.
v0.41.9 beta 2026-08-01
fix On some of the routers logging could not be switched on. Those routers lack the configuration file for logging that is present by default on other models; it is now created when it is missing.
v0.41.8 beta 2026-08-01
fix In the Log the date and the device name were stuck against each other. The columns now have enough width and space between them, and the date is dimmed so the time itself stands out.
v0.41.7 beta 2026-08-01
fix The Log stayed empty while alerts were arriving. The page requested the data through an address already in use by another part of Helios, so it landed at the wrong part and got an empty answer back. The alerts are now simply shown.
v0.41.6 beta 2026-08-01
fix For some the Log kept showing an old, empty page while alerts were definitely arriving: the browser had cached the page. The page and its data are now never cached by the browser, so you always see the current state.
v0.41.5 beta 2026-08-01
fix The Log filled up with routine messages from the RMS client, while those should have been filtered out. The name of the component was taken from the log line wrongly when that line itself contained a colon, so the filter did not catch it. Alerts that do matter — a failed connection check or a rejected DHCP request — simply stay.
v0.41.4 beta 2026-08-01
change The address routers send their logging to no longer has to be filled in: Helios works out for itself which address the routers see this server on. Setting it by hand is still possible, in case something in between requires it.
v0.41.3 beta 2026-08-01
fix The 'Raw log' button returned nothing while logging was arriving. The logging was written on the router's clock, and that is on local time while the server runs on UTC — so everything ended up in the next day's file. The moment of arrival is now authoritative. If a router's clock is out of step, its own time is noted alongside, so you see that instead of it disturbing the timeline.
v0.41.2 beta 2026-08-01
fix The Log said 'no alerts yet' while logging was definitely arriving. A router doing nothing unusual mostly sends routine traffic — such as Helios's own poll round — and that is deliberately not included in the searchable list. It now says how many lines were received, so you can see it is working and can open the raw log.
v0.41.1 beta 2026-07-31
fix The switch to enable syslog per router did not respond to a click. The click never reached the control, so nothing was saved.
v0.41.0 beta 2026-07-31
nieuw New menu item 'Log': routers send their logging straight to Helios, so you can look back at what exactly happened. Until now a router only kept about 200 KB of log lines itself — often no more than a quarter of an hour — so the logging of an outage had usually already gone by the time you went to look. You read along live, can search and filter by device, level and period, and request the full raw log per day.
nieuw Switchable per router with one toggle on the Log page. Helios configures the router itself during the poll round that happens anyway; nobody has to sign in to the router. If a router loses its settings after a reset, Helios puts them back by itself. Switching it on does not interrupt the network, but it does clear that router's log buffer — so do not do it in the middle of an outage.
change Logging is kept for 90 days. Every line goes to a file per router per day; only the lines that matter also go into the database, so searching stays fast. Noise from the RMS client is deliberately not counted — it writes perfectly ordinary messages as 'error', which would fill a filter on errors with nonsense. In the raw log everything is simply there.
v0.40.0 beta 2026-07-31
change The network split on the site overview has been divided into two groups that each answer a different question: 'Mobile' shows per provider which devices are on a mobile network, and 'Wired' shows what hangs on the network — access points, switches, gateways, routers, bonding or radio links. Previously everything without a provider ended up on one pile, so '21 wired' said nothing about what that actually was.
fix The Devices and Overview pages loaded needlessly slowly: the query for the last measurement per device could not use the database index and therefore scanned the whole measurements table. That is now a targeted index lookup — over a hundred times faster, and it stays fast as the history grows.
v0.39.0 beta 2026-07-31
change A shared link now always belongs to one organisation: the one you have selected at the top. You only pick which brands are visible within it (tick nothing = all brands). Links across several organisations can no longer be created; existing links simply keep working. The creation form has also been rearranged so everything lines up neatly.
change Site overview: 'Needs attention' now includes the device's location, so you know straight away where something has failed. Devices without a location are marked as such.
fix Site overview: devices without a mobile provider (access points, switches and other wired kit) were counted as 'Unknown' in the network split. They are now correctly shown as 'Wired'.
fix PepNetCon connector: a provider passed as a network code (for example 20495 on our own LTE) is now translated to the provider name, as with the Peplink connector. The message 'no network' no longer results in a fake provider.
v0.38.0 beta 2026-07-29
nieuw New on the Alerting page: a 'Send test alert' button. It sends one test message through exactly the channels and template configured for this organisation, so with one click you see whether the alerts work and what they look like. The message is clearly marked as a test. Digest and quiet hours are deliberately skipped (a test has to arrive at once); if the master switch is off or alerts are muted, nothing is sent and you are told so.
v0.37.1 beta 2026-07-28
change The phone app now opens on an overview instead of an empty search box: the status of the whole fleet (online/offline, how many still to be set up) and below it a chosen 'focus site' with its own status and devices — with the devices needing attention at the top. If you are on site, the app suggests switching to that site based on your position.
v0.37.0 beta 2026-07-28
nieuw The foundation for the Helios phone app: a separate mobile API the app can sign in through (with the same accounts and the same protection against too many sign-in attempts) and look up devices, assign the right site and location and see the status. Meant as a tool on site: you look a device up by name, serial number or by scanning the sticker, put it straight on the right site with a location description, and see whether it is genuinely properly online (reachable and with enough signal).
nieuw Devices can now have a position. It comes from the device's own GPS (where the connector supplies it) or you record it in the app while standing next to it — after which the app can show you which devices hang nearby.
v0.36.1 beta 2026-07-28
change Click a group in the search bar and you now jump straight to that group on the Groups page (with a brief highlight) instead of landing at the top of the list.
v0.36.0 beta 2026-07-26
nieuw New connector: PepNetCon. Alongside InControl 2 you can now also monitor your Peplink fleet from your own PepNetCon controller. Activate it under Settings → Connectors, fill in the base URL and API key, and the devices appear in the inventory and the Monitor with status and signal, including offline and quality alerts. A device still registering (adopting) raises no false outage alert.
v0.35.0 beta 2026-07-26
nieuw New: a search bar in the top bar (next to the theme button, or open it with Cmd/Ctrl+K) that searches all organisations, devices and groups at once. You search by name, ID, serial number, model, description and IP address, and separate words may be in any order (“entrance 34” finds “AP-08 - Entrance / VIRT-LTE-34”). Click a device and you switch straight to the right site and it opens in the Monitor.
v0.34.0 beta 2026-07-26
nieuw The dashboard has been rearranged into a genuine overview: at the top the fleet health (online/offline with a bar) and the signal quality, then per organisation, and at the bottom the alerting status (are alerts on, muted, which channels), the recent online/offline changes and the total data usage.
change The Dashboard button at the top right now opens the full dashboard page instead of a pop-up.
change The current WAN IP address of every Teltonika device is now stored as well (even when the device is briefly unreachable through the tunnel), so you can look back at which device has or had a particular IP address.
v0.33.1 beta 2026-07-24
change An expired or invalid share link now shows a tidy page in the Helios style saying the link has expired and that a new one can be requested from the administrator — instead of a bare error. Works for the monitoring links as well as the group/box links.
v0.33.0 beta 2026-07-23
nieuw Connected devices without a DHCP lease are now shown too (Teltonika). Devices with a manually set static IP never requested a lease and were therefore invisible; they now appear with the note 'No lease' and a '→ Static' button to record them with one click. The list is filtered neatly on the real local network, so no noise (such as internet addresses) creeps in.
v0.32.0 beta 2026-07-23
nieuw Two new alert channels: Discord and Slack. Both work with a webhook — you need to configure nothing globally: activate the channel under Settings → Alerts and paste the webhook URL per organisation on the Alerting page. They then appear by themselves in the routing per event, escalation and digest.
fix Connected devices sometimes stopped being visible when a router went offline. An empty reading (while a router is starting up, say) could overwrite the stored list; that list is now kept, so you keep seeing the last known devices for as long as the router is unreachable.
change Under the bonnet: the Alerts page now builds the channel list automatically from the registered channels. Adding a new webhook channel therefore no longer requires a change to the page itself.
v0.31.1 beta 2026-07-23
fix Stability: the app now recovers automatically after the database has been restarted (by an overnight system update, for instance). Previously a page could then return an 'Internal Server Error' until the app was restarted; broken database connections are now recognised and replaced.
v0.31.0 beta 2026-07-23
nieuw Digest / summary (Alerting page). Turn digest on for an organisation and alerts are bundled into one summary per period (adjustable interval) instead of separate messages — calmer with many devices. The summary goes to the same channels as your routing. Quiet hours and the maintenance mute are respected (the bundle waits neatly until the window has passed), and escalation always still arrives immediately. Off by default. With this the alert configuration layer is complete: routing, quiet hours, escalation and digest.
v0.30.0 beta 2026-07-23
nieuw Escalation (Alerting page). If a device stays offline, a second alert automatically goes to an extra recipient after an adjustable number of minutes — handy for being warned yourself when an outage persists. Pick a channel and a recipient (for WhatsApp a group from the list, for email/Telegram an address/chat). Escalation deliberately ignores quiet hours (it is the 'louder' route), but does respect the global mute and whether a channel is active. Off by default.
change The notices at the bottom right (toasts) are larger and clearer: a coloured heading (Done / Something went wrong / Careful) with an explanation below it, and longer notices stay up longer. The texts on the Alerting page are fuller so it is immediately clear what happened.
change Alerting page: the event 'Status change' is now called 'Offline / online', matching the name on the 'Which alerts?' card.
v0.29.0 beta 2026-07-23
nieuw Quiet hours (Alerting page). Per organisation you set a time window in which all alerts are suppressed — at night, for instance, so a customer is not woken at 3am. The window may run across midnight (e.g. 22:00–07:00). It is off by default, so nothing changes until you switch it on yourself.
change The Alerting page has been freshened up: the devices column is narrower so the settings on the right get more room, the 'Alert channels' card is collapsible (collapsed you see at a glance which channels are active, with the WhatsApp group name instead of the internal code), and the routing matrix now updates immediately when you switch a channel on or off.
change The example messages card on the Alerting page has gone; a live example already sits under Settings → Alerts → Templates.
v0.28.0 beta 2026-07-22
nieuw Routing per event (Alerting page). Per organisation you now determine, per event — status change, connection switched, quality drop, data usage — through which channels the alert goes and which template is used. Tick nothing on an event and the default applies: all configured channels + the default template, so nothing changes until you set something yourself.
v0.27.1 beta 2026-07-22
change The Groups page (rental boxes) has been rearranged: at the top a status overview of every box at a glance (click a box to manage it), the creation form now sits as a column beside the management cards, and when editing a box the already-chosen devices sit at the top of the list.
change Monitor: the group names (when grouping by brand) now come from the connector settings, so they are consistent — Starlink is now called 'Starlink Business'. The figures in the group headers (online/offline/quality) are lined up neatly.
change Throughout the interface a 'router' is now called a 'device', consistent with the rest.
v0.27.0 beta 2026-07-21
nieuw New: Alert templates (Settings → Alerts → Templates). Design how alerts look yourself with variables such as {device}, {organisation}, {status}, {signal} and a {deeplink} to the device, plus a symbol palette and a live preview. You assign a template per organisation. An empty template uses the familiar built-in layout, so nothing changes until you fill something in yourself.
nieuw Alerts are now rendered properly per channel: email as a well-presented card (with a coloured bar per situation), Telegram with real formatting (bold), and WhatsApp as text. One template, three fitting renderings.
change The Provider settings are clearer: name mapping and colour now sit in one table, with the PLMN mappings beside it.
v0.26.1 beta 2026-07-21
change Passwords now require at least 8 characters everywhere (previously an administrator could still use 6 characters when creating or editing a user). Under the bonnet all API error messages have been put into a uniform format.
v0.26.0 beta 2026-07-21
nieuw Alert channels (WhatsApp, email, Telegram) now work like the connectors: an on/off switch per channel with a status (Not active / Trial / Active / Expired), a 14-day trial and a 'convert to paid' button. A channel that is not active sends nothing — so you can switch channels on and off separately.
change The Alerts page has been given a tidy, uniform layout: at the top one master switch for all notifications, and per channel the same clear configuration layout as with the connectors.
v0.25.4 beta 2026-07-21
nieuw Teltonika connector: ZeroTier now has a section of its own with a field for the ZeroTier server URL and the network ID, above the default password. That way all ZeroTier settings sit together clearly.
change All on/off switches in the settings are now green when they are on (they were orange) — matching the switches in the rest of the app, and fitting the green 'Active' status beside them.
change Clean-up under the bonnet: the four old connector mapping tables (replaced by the uniform source-group model in v0.25.0) and the accompanying dead code have been removed. No visible change.
v0.25.3 beta 2026-07-21
change The name of a settings tab in the address bar now matches the tab itself (e.g. ?tab=connectors instead of ?tab=modules). Existing links and bookmarks keep working.
v0.25.2 beta 2026-07-21
nieuw The Generic (IP) connector now has its own configuration page: switch the ping poller on/off, set the ping interval (10–600 seconds) and choose how many ICMP echoes are sent per check (1–10, default 3). More pings tolerates a single lost packet better.
v0.25.1 beta 2026-07-21
change On every connector you now see in the same way whether a password, API key or secret has been filled in: a green '— configured' or grey '— not configured yet' after the field. The stored value is never shown again; leave the field empty to keep the existing secret.
nieuw Peplink now has its own API connection in the settings: fill in client id and client secret (stored encrypted) and test the connection with one button. Previously this was only possible through server settings.
v0.25.0 beta 2026-07-21
change Uniform organisation mapping for every connector. Mapping source groups (IC2 organisations on Peplink, sites on UISP/UniFi, companies on Teltonika RMS) to Helios organisations now works the same way everywhere: one clear table per connector with the group, the number of devices, the status, a monitor switch and the organisation choice. Newly discovered devices land in the mapped organisation automatically — now on Peplink too (which previously put everything in the Default organisation).
nieuw Detection of vanished source groups. A site, organisation or company deleted at the supplier now appears as ⌛ 'Gone' in the connector mapping, with a delete button to clear it away. It deliberately does not disappear by itself — that way a temporarily unreachable source does not lose its mapping. Empty sites (without devices yet) are now shown too, so you can map them in advance.
change Monitoring per source group on/off now works on every connector (previously only on Peplink): switch a group off to deliberately ignore its devices. Orphaned devices (no measurement any more, source no longer returns them) are now clearly called 'orphan' on the Devices page.
v0.24.0 beta 2026-07-21
nieuw New Alerts menu (Settings → Alerts). WhatsApp, email and the new Telegram channel now sit under one overview: a list of channels on the left (with a status dot), the settings of the chosen channel on the right. Per organisation you pick on the Alerting page which channels you use and where they send to (WhatsApp group, email address or Telegram chat) — several channels at once is possible.
nieuw Telegram as an alert channel. Connect a bot (through @BotFather) and receive alerts in a Telegram chat, alongside WhatsApp and email. Adding a new channel is now a matter of one configuration page.
change "Modules" are now called "Connectors" and have a far clearer layout: a list on the left, and per connector its own configuration page with an on/off switch + status at the top (Not active / Trial / Active / Expired), below it the poller settings and the API connection in a calm, aligned form. Every connector now has an adjustable poll interval.
nieuw Teltonika: new organisation mapping. Map each RMS company to an organisation, so newly discovered devices land in the right organisation automatically (like the site mapping on UISP and UniFi). Existing devices of a mapped company move along in one go.
nieuw Nino Bonding can now be configured entirely through the interface — portal URL, credentials (encrypted) and poll interval — instead of through server settings.
v0.23.1 beta 2026-07-20
perf The Monitor now loads almost instantly, even over wide periods. The signal lines were built each time from hundreds of thousands of individual measurements; they now come from a pre-computed summary per 5 minutes, maintained automatically in the background for every source. Determining the current status per device has become more efficient as well. A 7-day window went from ~3.5 to ~0.5 seconds and the default 24-hour view from ~1 to ~0.6 seconds. For short periods (≤1 hour) the individual measurements are still shown for maximum detail, and the online/offline bar stays unchanged at full resolution.
v0.23.0 beta 2026-07-20
nieuw A personal accent colour. Under Profile → Appearance you now pick your own accent colour — a set of suggested colours or a fully custom one. The whole interface (buttons, menu highlight, hover borders and accents) recolours immediately, in both the light and the dark theme. The choice is per user and remembered in your browser; one click puts it back to the default orange.
change A refreshed design. The light theme has been given a calmer, higher-contrast look (white panels on soft grey, subtler borders), a new typeface (Lato) and slightly tighter, less rounded corners. The dark theme and the theme switcher remain available unchanged. The Profile page has also been set in a neat two-column grid instead of everything under each other.
v0.22.2 beta 2026-07-19
perf The Alerting page now loads almost instantly. The page waited to display until the WhatsApp group list had been fetched, and that comes through an external service (GreenAPI) that is sometimes slow and erratic (0.8 to 11 seconds). The page now builds immediately with its own (fast) data and loads the WhatsApp groups separately into the dropdown in the background. The group list is also briefly cached, so next time it is filled straight away.
v0.22.1 beta 2026-07-19
perf The Monitor (timeline) loads ~2× faster the first time. The page built the signal lines each time from hundreds of thousands of individual measurements; that is now more efficient (no more redundant time parsing, and the signal line is sampled at the display resolution instead of far finer than is visible). The online/offline bar stays fully accurate — it comes from a separate source and is not sampled.
v0.22.0 beta 2026-07-19
nieuw A new site report (Report page). Pick a period (7/30/90 days or a custom date range) and the devices you want within a site, and generate a clear performance report. The report is built in chapters with accompanying text and charts: a summary with automatically written commentary and headline figures, a bar chart with availability (uptime) per device, the network split across the mobile providers, and a detail table per device (uptime, outages, total and longest downtime, provider(s), average signal and the location). The report can be downloaded as a PDF and sent straight by email with the PDF attached.
nieuw A search box in the device picker on the Groups page: while assembling a box you can now search directly by name, type, description, organisation or device ID instead of scrolling through the whole list.
v0.21.0 beta 2026-07-19
change Under the bonnet, moved from SQLite to PostgreSQL. The database was hitting its limits as the measurement history grew (millions of measurements); PostgreSQL copes better with simultaneous reading and writing by the web interface and the separate poller processes at once, and leaves room to grow further. All existing data has been migrated; nothing changes about the behaviour or the data. The Database tab now shows the PostgreSQL database size (the SQLite-specific WAL and journal-mode cards have been dropped).
v0.20.19 beta 2026-07-19
nieuw Two-step verification (2FA): every user can optionally connect an authenticator app under Profile (Google Authenticator, Microsoft Authenticator, 1Password, …) through a QR code. With 2FA on, Helios asks for a 6-digit code alongside the password at sign-in. There are one-time backup codes for when you have no access to your app, and you can turn 2FA off again at any moment (with your password). Entirely optional — accounts without 2FA sign in unchanged.
v0.20.18 beta 2026-07-19
nieuw Email: there is now outgoing email over SMTP. Under Settings › Email you configure the mail server (host, port, security, sender); the password is stored encrypted and there is a button to send a test email. On a dev environment (alerts off) mail is only logged, never actually sent.
nieuw Forgot password: the sign-in page now has a 'Forgot password?' link. You receive a temporary, one-time reset link by email (valid for 2 hours). A reset automatically ends all existing sessions of the account.
nieuw Email verification: an email address that is set or changed receives a confirmation link (valid for 48 hours). Under Settings › Users and on your profile you can see whether an address is confirmed.
v0.20.17 beta 2026-07-19
nieuw User roles: there is now a distinction between ordinary users and administrators (superadmin). Only administrators can reach Settings and user management; ordinary users see the dashboard, the monitor, the timeline, alerts and sharing, but not the system configuration. Under Settings › Users an administrator can grant or revoke the administrator role per user. The last administrator cannot be demoted or deleted, so somebody always keeps access. Existing users automatically keep their full (administrator) rights at this update.
v0.20.16 beta 2026-07-19
fix Security hardening (completion). CSRF tokens are now signed, so a token forged by an attacker (who can only set a cookie) is no longer accepted. In addition, which routes are reachable without signing in is logged at start-up, so an accidentally public route stands out immediately instead of only at an audit.
v0.20.15 beta 2026-07-19
fix Security hardening. Sensitive data is now stored encrypted instead of readable: the WhatsApp/GreenAPI token and the central ZeroTier password. The SIM switch now runs entirely in-process over a secure SSH connection, so the password no longer ends up on the server's command line. A password change or reset now automatically ends all existing sessions of that account (on other devices). And a 'Generic (IP)' monitor can no longer be pointed at loopback or link-local addresses. Optionally, SSH host key verification can be enabled through the SSH_KNOWN_HOSTS setting.
v0.20.14 beta 2026-07-19
nieuw Alerting page: a new 'Alerts per connector' section that lets you switch alerts on or off per connection type (Teltonika, Peplink, UISP, UniFi, Nino, Generic) in one go — handy for temporarily silencing all alerts of one type.
nieuw Alerting page: a new 'Messages' section showing per alert type (offline, online, connection switched, poor quality, high usage) exactly what the WhatsApp alert looks like.
v0.20.13 beta 2026-07-19
fix Alerts on/off works immediately again: since the pollers run in a separate process, a change to the notification switch or the WhatsApp/GreenAPI settings was only picked up after a restart. Those are now read fresh on every alert, so a change takes effect at once.
fix Flap damping on status alerts: a device on a shaky connection blinking online/offline on every measurement sent a stream of WhatsApp messages. A status must now hold for two measurements before an alert goes out — a brief blink stays quiet, a real, sustained change (and a recovery) simply comes through, one measurement later.
change The Teltonika reading no longer opens all ZeroTier SSH sessions at once, but in manageable groups. That prevents a spike of simultaneous connections overloading the mobile tunnel and devices being read as offline wrongly.
v0.20.12 beta 2026-07-19
change The Devices page now has a full bulk action bar: tick several devices and move them to a site or delete them in one go. Deleting only applies to manually added and orphaned devices (not seen for over an hour); devices still being actively read are skipped with a message, because those you move.
v0.20.11 beta 2026-07-19
nieuw Clearing up orphaned devices: an automatically discovered device not seen for over an hour — a Peplink device from an InControl organisation you no longer have access to, for instance — can now be deleted permanently on the Devices page; it will not reappear anyway. Devices still being actively read stay protected (those you move between sites). On an orphaned device the button shows 'last seen' so you can be sure it really is a remnant.
change Performance and stability under the bonnet. Every poll cycle did a heavy full-table scan across all measurements to fetch the previous status; that now goes through an index — identical result, hundreds of times faster — which cuts the database load considerably as the history grows. The same optimisation has been applied to the Alerting page, where the device list previously needed several seconds to build and now loads almost instantly. In addition: old timeline segments are now cleared away too (that table used to grow without limit), the daily clean-up now runs outside the watchdog loop so a large clean-up cannot bring the service down, and the database write setting has been optimised (WAL + synchronous NORMAL).
v0.20.10 beta 2026-07-19
fix Security: the 'Secure' flag on cookies is now set automatically as soon as a request arrives over HTTPS (recognised through the reverse proxy), and omitted on direct HTTP access. That way users behind the HTTPS proxy get the extra cookie protection without breaking direct HTTP access — no configuration needed.
v0.20.9 beta 2026-07-19
fix Security: changing a user password now always asks for your own password as confirmation — including when managing another account, so nobody can quietly take over a colleague's account. The redirect after sign-in can no longer point to an external site, and cookies can be marked 'Secure' behind HTTPS (through the COOKIE_SECURE setting).
fix Reliability: a Nino bond that temporarily does not respond no longer makes the rest of the measurement fail; the Peplink token request now has a timeout so a hanging request does not block the poll; and a database migration that hits a data conflict is now retried after the conflict has been cleared, instead of being skipped permanently.
v0.20.8 beta 2026-07-19
fix Security: the SIM switch now uses the same encrypted credentials as the regular reading (per-device password, falling back to the central ZeroTier setting) instead of a built-in fallback. It can no longer perform a switch if no password is configured.
v0.20.7 beta 2026-07-18
change Database tab: the Teltonika row in the connector table now carries a 'ZeroTier' chip with the number of routers polled directly through the ZeroTier tunnel. ZeroTier is not a separate connector but a transport layer within the Teltonika connector; this way it is visible at a glance that it is covered.
v0.20.6 beta 2026-07-18
nieuw Database tab: a new top row 'System' with three live load cards — CPU load (with load average and number of cores), Services load (the CPU and memory usage of Helios's own processes: the web server and the scheduler) and Memory load. Colour-coded as soon as it heads for 75% (orange) or 90% (red).
fix Log: the poller lines had disappeared since the pollers run in a separate process. The log now shows the lines of both the web server and the scheduler together again, so you see the poll activity (Teltonika, Peplink, UISP, UniFi, Nino) once more.
fix Log: the columns (time, level, origin) now line up neatly; long origin names are truncated with the full name as a tooltip, so the messages always start in the same place.
v0.20.5 beta 2026-07-18
fix Nino bonding: the download and upload throughput in the detail panel was 8× too high. The Nino API supplies these values in bits/s, but they were converted as if they were bytes/s. The displayed speeds are now correct (a bond can never show more upload than its active legs can carry, for instance). Note: this is the live throughput at the moment of measurement, not the configured capacity.
v0.20.4 beta 2026-07-18
change The Monitor opens noticeably faster: with many devices, an enormous quantity of measurement points was fetched from the history on every load. The quality lines are now thinned out cleverly on the database itself (depending on the chosen period) and a duplicate database query has been removed. The online/offline bar stays exactly as accurate; only the time taken to build it drops considerably.
v0.20.3 beta 2026-07-18
fix You now also get a WhatsApp alert when a UniFi access point, a UISP radio link or a device monitored by ping goes offline/online — previously only on Teltonika and Peplink. As always depending on the connected WhatsApp group, the alerts ticked per organisation and the device's alerting switch.
nieuw Scheduling a SIM switch: through the three-dot menu on a Teltonika router you pick a date and time at which the SIM switch is carried out automatically. A subtle timer counts down to that moment behind the device name; scheduling and cancelling are possible at any time.
change Nino bondings are no longer a separate page but appear as ordinary devices in the inventory (under Default), so you can assign them to a site. Open a bond on the Monitor and you see the same details as before: throughput, active legs, aggregator, bonder info and the interface table.
change Light mode: a white page with grey cards (white and grey swapped) for a calmer picture.
change Less load on the routers: the Teltonika reading now uses one SSH session per router per measurement instead of two — saving connection set-up over the mobile link.
fix Various small UI improvements: the date/time picker for a scheduled SIM switch has been split into separate fields, and the display on the Database tab has been brought in line with the rest in font size.
v0.20.2 beta 2026-07-18
nieuw A new Database tab in Settings: one overview of server health. Storage (free disk with a bar, database and WAL size), database (journal mode, last measurement, number of devices/segments, retention) and per connector the poller status, when data last arrived, the duration of the last poll and the interval. That way you see at a glance whether everything is healthy and whether pollers stay comfortably within their interval.
change The Alerting page is now two-column: the device list on the left, the WhatsApp group and alert settings on the right.
change In 'Add device', Peplink InControl, UniFi and UISP now appear as methods too; those point to their connector configuration (they discover all devices of a connected organisation/controller automatically).
fix Peplink organisations whose InControl access has been revoked (a temporary customer engagement that ended, say) now stay visible in Settings with a clear status, so you can untick them; the log noise about it has been damped.
change Performance: the organisation picker (with the 'Critical' counts) and some heavy pages now load quickly and no longer block the rest of the application while loading. The Peplink poller now fetches its organisations in parallel, so a cycle is much shorter and does not grow linearly with the number of customer organisations.
change Preparing for growth: the pollers can optionally run in a separate process, decoupled from the web server, so a slow poll no longer slows the web interface. By default everything stays in one process; this is a choice at deployment.
v0.20.1 beta 2026-07-18
nieuw Ping-monitored devices (the 'Generic (IP)' connector) are now geared on the Monitor towards what is usually behind them: a web server. The detail panel shows the availability over the period, the web server (original URL, IP address, HTTP status, server type and any redirect) and the TLS certificate with issuer and expiry date — colour-coded as soon as that falls within 30 days (orange) or 14 days (red). Self-signed certificates are shown too.
nieuw The white line in the segment bar shows latency on ping devices (at the top = fast), and the quality column shows the average latency of the last measurement in ms with the label 'Latency' below it — as with LTE, WiFi and SpeedFusion. The poller pings three times per measurement for a reliable average.
change Groups (boxes) have become system-wide: the menu item now sits under System (between Profile and Settings) and the list always shows every box, whichever site is selected. A box mixes devices from several sites, after all.
v0.20.0 beta 2026-07-18
nieuw Groups (boxes): bundle devices in a box with a public QR code. The customer scans the code and sees a simple status page — per device online/offline, connection, signal, the last 24 hours and (on Starlink) the data usage of this period. A box may mix devices from different sites, for example a customer's router plus Starlinks from the pool. The QR/link can be renewed per box, after which the old one stops working.
nieuw Starlink connector: Starlink subscriptions are discovered through the business API and show their real status. Online comes from live telemetry (not from the billing status), and the usage of the current billing period — including the limit and any overage, on which the surcharge is based — appears in the box view. Configuration and 'Test connection' under Settings → Modules → Starlink.
nieuw Statuses that are honest for rental: a device deliberately switched off, or whose subscription is paused, now shows a neutral 'Off' or 'Paused' instead of a red outage alarm. 'Outage' (red) is from now on reserved for genuine failure: a device that was online recently and drops out.
nieuw Adding devices without a vendor cloud: with '+ Add device' on the Devices page you add a Teltonika router directly through its ZeroTier IP (no RMS needed) or any device at all through its IP with ping monitoring (the new 'Generic (IP)' connector). The connection is tested first; manually added devices can also be deleted permanently again.
change The Devices and Assignments pages have been merged: on Devices you now tick several devices and move them to another site in one go through the bulk bar. The separate Assignments page has been dropped (the old link redirects). The table also shows the polling method per device — standalone (ZeroTier, UniFi, UISP, Ping) or through a vendor cloud (RMS, InControl, Starlink) — and the rows are more compact.
fix Various reinforcements from the code review: group management follows the selected site, deleting clears away all accompanying data, and the ping monitoring bounds the number of simultaneous checks.
v0.19.2 beta 2026-07-16
change The Teltonika monitoring has been merged under the bonnet into one ZeroTier-led process: the tunnel determines the status, RMS is purely supplementary and for discovering new routers. As a result everything stays correct during an RMS outage without a separate emergency mode, routers without a tunnel are no longer wrongly set to offline, and names/data are kept when RMS briefly returns nothing.
v0.19.1 beta 2026-07-16
change The online status of Teltonika routers now comes primarily from ZeroTier. A router reachable through the tunnel is shown as online — even when the RMS cloud reports it as offline (because RMS has lost its connection while the router itself is working fine). RMS now only serves as a fallback (for routers without ZeroTier, or when the tunnel is down) and for supplementary data.
v0.19.0 beta 2026-07-16
nieuw Teltonika routers now fall back to ZeroTier during an RMS cloud outage. For as long as the RMS API is unreachable, routers with a ZeroTier tunnel are read directly over that tunnel, so their online status and signal stay correct instead of freezing. Routers without ZeroTier keep their last known status. During such an outage no alerts are sent (to avoid noise).
v0.18.3 beta 2026-07-16
nieuw The RMS API key can now be managed under Settings → Modules → Teltonika. Paste your personal access token, save (stored encrypted, applied immediately without a restart) and use 'Test connection' to check whether the key works. Previously this was only possible through an environment variable on the server.
v0.18.2 beta 2026-07-14
fix The 'connection switched' alert showed the same connection on both sides (e.g. 'Odido → Odido'). The from side is now the actually previous connection again, so you correctly see 'Virtical → Odido' or 'Odido → Virtical'.
fix A UniFi access point without clients now shows 'No clients' instead of a deep red -1% health — both in the column next to the timeline and in the detail panel. Such devices no longer count towards a group's average signal either.
v0.18.1 beta 2026-07-05
fix A UniFi or UISP device you move to another organisation by hand now stays there. The site→organisation mapping only determines the starting organisation of a new device, and saving the site mappings now only moves the devices of sites you actually changed. That way your manual moves are no longer undone — not at a next synchronisation and not when new sites appear.
fix On the changelog page the top right now says 'Back' when you are already signed in, instead of 'Sign in'. Visitors who are not signed in still see 'Sign in', which leads back to the sign-in screen.
v0.18.0 beta 2026-07-05
nieuw New module: Ubiquiti UniFi. Helios fetches your UniFi devices (access points, switches, gateways) from your own controller and shows them on the Monitor and timeline — with status, number of connected clients and device health. You map sites to an organisation in one go (and move them together), and provisioning/upgrading/adopting are shown as 'busy' (orange) instead of offline.
nieuw Share links can now be fine-tuned per organisation and per brand: pick which organisations are visible and which brands within them — for example only UniFi at one customer and only Teltonika at another.
nieuw The shared view now has the same grouping as the Monitor: the viewer can group by brand, organisation, type or site, with a summary per group (online/offline bar, counts and average signal).
fix A new share link now appears in the list immediately with a confirmation, instead of only after manually refreshing the page.
v0.17.3 beta 2026-07-04
nieuw On the Monitor you can now group the routers — by brand, organisation or type, or leave them ungrouped. Every group gets a summary: a bar with the online/offline ratio, the counts, and the average signal. Your choice is remembered.
change A deactivated module now also hides its routers from the views (Monitor, dashboard, report and share links). The data is kept and returns immediately as soon as you reactivate the module.
fix After activating a module the Configure button now appears immediately, instead of only after manually reloading the page.
v0.17.2 beta 2026-07-04
change Under the bonnet: the styling of the timeline (Monitor and the public share page) was duplicated on both pages and has been merged into one shared stylesheet. No visible change; but less chance of the two pages drifting apart at future changes.
v0.17.1 beta 2026-07-04
change The Modules page (Settings → Modules) has been redesigned: clearer cards with a distinct status indicator (including a subtly pulsing 'live' dot on active modules), a tidier expiry display that turns amber/red as the date approaches, and buttons that line up neatly.
v0.17.0 beta 2026-07-04
nieuw New module: Ubiquiti UISP. It lets you monitor radio links (airMax/airFiber) just like the routers: every radio appears on the timeline, coloured by signal quality. The detail panel is built specially for radio links — a graphical rendering of both antennas with the Fresnel zone between them, the received signal on either side, capacity, throughput, frequency and distance, plus the device's own details (IP, firmware, antenna, transmit power). Also a separate view for point-to-multipoint (one AP with several stations).
nieuw UISP configuration in Settings: server URL + read-only API token (stored encrypted), poller on/off + interval, and mapping UISP sites to organisations so the radios are grouped neatly.
change The signal quality labels (LTE / Wi-Fi) on the timeline now sit below the percentage instead of beside it, for a calmer picture.
v0.16.3 beta 2026-07-04
fix Following on from 0.16.2: while bringing the new alert debounce into use, the monitor could briefly become unreachable and restart with many devices at once. This has been fixed — the debounce now works without blocking the database.
v0.16.2 beta 2026-07-04
fix A SpeedFusion router whose bundle briefly falls back to one connection and recovers straight away produced a series of 'connection switched' alerts (there and back) in WhatsApp. Such a brief hiccup is now ignored: an alert only follows once the connection has genuinely changed for two measurements in a row. A real, lasting switch is still reported.
v0.16.1 beta 2026-07-04
nieuw SpeedFusion Hub: a hub (aggregator) is now recognised and gets its own view with all tunnels grouped per profile — you see per profile how many of the configured tunnels are connected, with the subnet and device status per spoke. Click a spoke to jump straight to that device, even when it sits in another site.
nieuw New in the ... menu on the Monitor: 'Move to…' to move a device to another site.
nieuw Muting alerts temporarily: through Settings → Maintenance you can switch WhatsApp alerts off for 15 min / 1 hour / 4 hours — handy during maintenance affecting many devices at once, so the group does not fill up.
change Peplink devices in an organisation where we only have group-level access are now monitored after all (they used to be skipped).
change The signal of a Wi-Fi uplink is now shown as soon as it is involved (including as a separate connection under a SpeedFusion bond), not only when it is the sole connection.
change The 'Move to' bar on the Assignments page no longer falls over the bottom rows and has been styled more neatly.
change Notices (toasts) now appear at the bottom right of the screen, slightly larger and with a calmer, better-finished look; they stay up for about 5 seconds.
change Various improvements under the bonnet: faster and more stable pages (including the timeline under concurrent use), more consistent signal quality between pages, and less duplicated code.
v0.16.0 beta 2026-07-03
nieuw SpeedFusion: routers bundling several internet connections at once are now shown as one 'SpeedFusion' connection on the timeline, instead of jumping back and forth between the separate connections. Previously that could wrongly produce a 'connection switched' alert while nothing was wrong.
nieuw A router's detail panel now shows exactly which separate connections are active under a SpeedFusion bond (with an SF label), each with its own IP address.
change The detail panel has been cleaned up: the separate 'Active connection' column is gone, all connections now sit clearly in one list with the IP address after the name, and duplicated information has been removed. More calm and more space.
nieuw You can now set a custom location/description on Peplink routers through the ... menu on the timeline; it is also included as 'Location' in WhatsApp alerts.
fix The quality of a Wi-Fi uplink is now shown correctly (percentage and signal strength), including when Wi-Fi is the only active connection. Previously the mobile standby signal could appear there by accident.
fix A router that had just switched SIM/connection is no longer briefly reported as 'offline' by a failed reachability check.
change Various improvements under the bonnet for stability and security: more robust database updates, safer clearing of old measurements, and stronger protection of the sign-in limit.
v0.15.12 beta 2026-07-03
change Under the bonnet: heavy pages (timeline, reports, sign-in) now run outside the main processing line, so the app keeps responding smoothly when several people work at once.
change Under the bonnet: database changes at an update are now tracked properly (version number) and stop with a clear error if something goes wrong, instead of quietly continuing — safer at future updates.
v0.15.11 beta 2026-07-03
fix The Modules page (Settings → Modules) had stopped working: the list hung on 'loading…' and the Configure buttons did nothing. Restored — you see your modules again with status and management buttons, and the action buttons are now evenly spread across the card.
change Security: sign-in attempts are now limited (max 5 failed attempts per minute per IP) to slow down password guessing.
change Security: device and provider names on the timeline and the public share page are now rendered safely, so special characters in a name can never be executed as code.
v0.15.10 beta 2026-07-02
change Maintenance under the bonnet: the provider colour logic was duplicated in three places (timeline, overview and the public share page) and has been merged into one shared place. No visible change; but less chance of the colours on one page drifting out of step at future changes.
v0.15.9 beta 2026-07-02
nieuw The retention period for measurements is now adjustable in the app: Settings → System → Maintenance. You choose how many days of snapshots are kept (1–3650); the daily maintenance task clears older data automatically. Previously this was fixed at 30 days.
v0.15.8 beta 2026-07-02
fix The daily maintenance task now also clears away old database backups (keeping the 5 newest by default). Every deploy left a backup of ~500 MB behind; those piled up unnoticed and filled the server disk. Adjustable through BACKUP_KEEP; the snapshot retention is now adjustable through SNAPSHOT_RETENTION_DAYS (default 30).
v0.15.7 beta 2026-07-02
fix The ZeroTier SSH layer (asyncssh) logged every connection extensively at INFO level; with dozens of routers per poll the system syslog filled up and the server disk would eventually run out. Those logs are now at WARNING, so only real problems are logged.
v0.15.6 beta 2026-07-02
nieuw A new 'Assignments' page (left menu) for assigning devices to a site. By default you see the devices not yet assigned, with search and filters, and you move several at once (bulk) — with a confirmation when you take one out of a live site. The old assignment frame that pushed the Devices page down has gone.
fix The SIM switch alert sometimes hung on the red dots forever and never gave a conclusion. It leaned purely on a ZeroTier ping, which recovers slowly/unreliably after a SIM switch. The alert now also confirms recovery as soon as the monitoring sees the router online again, and stops after 2 minutes regardless with a clear message instead of hanging silently.
fix In the Overview (network split per organisation) the bars now have the right provider colour per network, instead of all being orange.
change The data chart of the Teltonika routers now shows throughput over time (kbps/Mbps), as with the Peplinks, instead of data usage per interval. The throughput is derived from the counter readings, and 'Throughput now' now also appears in the status bar when expanding.
fix The harsh orange border around a device row on hover in the timeline has been softened considerably.
v0.15.5 beta 2026-07-02
nieuw Alert messages now show the connection type: alongside the mobile provider (with quality %) also whether a router is on WAN (wired) or WiFi WAN — for WiFi WAN including SSID, quality % and RSSI.
change The switch message is now called 'has switched connection' and shows both sides of the switch, including WAN/WiFi WAN. This alert now also fires on a switch to/from WAN or WiFi WAN (previously only between mobile providers).
change Peplink alerts now show the router's location too, as with Teltonika.
v0.15.4 beta 2026-07-02
change The changelog page is now publicly accessible — without signing in as well — with its own cleaned-up styling and a 'Sign in' button.
v0.15.3 beta 2026-07-02
fix The footer with the version number and changelog link was missing on the sign-in page; it is there now too.
v0.15.2 beta 2026-07-02
change An explanation of the name Helios has been added — a fixed panel on the changelog page and a short, subtle note on the sign-in page: why the name suits the light monitoring brings to an IT world where the real problem is often not the outage itself, but not knowing what the status of a device is.
v0.15.1 beta 2026-07-02
nieuw SpeedFusion monitoring for Peplink: you now see per router whether the SpeedFusion tunnel is connected — with an 'SF' label in the row and the tunnel name plus the far end (e.g. → aggregator.vpn.001) in the detail panel.
nieuw A device's detail panel has been rearranged: at the top a status bar showing the essentials at a glance (status, active connection, quality, SpeedFusion, throughput and uptime), below it logically grouped columns (Connection, Active connection, Signal, Charts) and the clients as cards across the full width underneath.
fix Routers bundling several connections through SpeedFusion were wrongly shown as offline; they are now correctly recognised as online.
change On a SpeedFusion router the quality (both the line in the bar and the figure) now shows the combined tunnel quality — the average of the active connections — instead of separate, confusing lines.
fix The throughput was displayed in Mbps while it was kbps; this is now correct (kbps, switching to Mbps automatically at high values).
change Time without usable service ('no service') now counts as offline in the connection split.
change Charts without data are no longer shown as an empty frame, but left out.
change The share link page now has exactly the same styling and layout as the Monitor page.
v0.15.0 beta 2026-07-02
nieuw A new name and logo: from now on the tool is called Helios, with a new sun logo in the top bar, on the sign-in page and as the tab icon (favicon).
change A new house colour: the blue has been replaced by the warm gold/orange of the Helios logo — buttons, links and accents throughout the app.
v0.14.8 beta 2026-07-02
fix Reliability: if a router went online/offline while the monitoring was briefly not running, that status change is now still reported as soon as the monitoring is back — previously such an alert could be missed.
refactor Internal clean-up and small performance improvements (more efficient queries and timeline processing, better diagnostic logging). No visible change in use.
v0.14.7 beta 2026-07-01
fix A security improvement: the output escaping when showing device and client details has been hardened, so names with special characters can never be interpreted as code.
fix A shared link must now always have an organisation or router as its scope — a link without a scope (which would accidentally show every device) is no longer created.
v0.14.6 beta 2026-07-01
change Light mode refined, especially on the Monitor page: hover effects and status colours now work on white too (better contrast), the surfaces have more depth, and the top bar stays dark — a consistent header anchoring the lighter content below it.
v0.14.5 beta 2026-06-30
change The charts on a device (Monitor) are somewhat larger and the captions (min/now/max) more compact on one line — that way the chart itself gets more room and is easier to read.
v0.14.4 beta 2026-06-30
fix The temperature chart stayed empty on devices with many measurements (a side effect of the smoothing change in the previous version). The full historical line is shown again.
v0.14.3 beta 2026-06-30
change The temperature chart on a device (Monitor) is now a calm, smooth line showing the trend instead of a jagged sawtooth — far easier to read. The MIN/NOW/MAX values below it still show the real measurements.
v0.14.2 beta 2026-06-30
change UI refinement: a new, more modern typeface (Plus Jakarta Sans), the light theme made properly readable everywhere (contrast), and subtle hover effects on clickable cards.
change The detail panel of a device on the Monitor is calmer: the coloured frame has been replaced by one neutral border (you read the status from the dot) and the charts are narrower so the data gets more room.
v0.14.1 beta 2026-06-30
nieuw New: a light/dark theme. Switch with the toggle at the top right of the bar — your choice is remembered. The whole app, including the timeline, recolours immediately without reloading.
v0.14.0 beta 2026-06-30
refactor An internal step towards several router brands: the ZeroTier connectivity now sits in a shared layer any module can use, and modules can now declare 'capabilities' (such as ZeroTier). The ZeroTier IP field on devices now appears automatically for every ZeroTier-capable source. The Teltonika module has also been decoupled more neatly from the core. No visible change in daily use.
v0.13.3 beta 2026-06-30
fix The timeline tooltip stopped appearing properly after the previous version (it vanished on every background refresh). Restored: the tooltip stays visible while hovering and disappears neatly as soon as you leave the bar.
v0.13.2 beta 2026-06-30
fix The tooltip on the timeline segments sometimes stuck when the view refreshed in the background. The tooltip now disappears reliably as soon as you leave the bar (on the Monitor as well as the share link page).
v0.13.1 beta 2026-06-30
fix The network split on the Dashboard accidentally showed the number of measurements over the last 24 hours instead of the number of devices. It now counts the number of devices online right now per network (matching the count on the Overview page).
v0.13.0 beta 2026-06-30
nieuw A completely new layout and a new name: the tool is now called Helios. A fixed bar at the top with the name and an organisation picker, a fixed menu on the left. You now work per organisation: pick an organisation at the top and every page (Overview, Monitor, Alerting, Devices, Report, Shared links) shows only that organisation.
nieuw A new Overview page per organisation: at a glance the number of devices, online/offline and active alerts, plus 'Needs attention' (which routers are offline now) and the network split (number of online routers per network).
nieuw The Dashboard is now a global status board across all organisations that you open from the top bar: status per organisation, which devices are offline and the network split of the whole fleet.
nieuw A new Profile page (in the menu under System): change your own username, email address and password. Managing all users stays under Settings → Users.
change Alerting per organisation now has a page of its own: set the WhatsApp group, pick which alerts are active (offline, provider switch, signal, data) and switch alerts on or off per device.
change You now manage devices on a page of its own per organisation — assigning or deleting routers and setting the ZeroTier IP per device (previously scattered through the settings).
change Settings has been rearranged with tabs at the top and is now purely about the application itself; module settings (Peplink, Teltonika) are bundled under Modules → Configure. The separate Alerting, ZeroTier and Organisations tabs have been dropped.
fix Saving WhatsApp settings accidentally reset the Teltonika polling interval to 30 seconds. The interval is now decoupled and stays put.
refactor Reliability: clearing old measurements and the service watchdog now run separately from the modules, so they keep working even if you disable a module. In addition, a lot of unused code has been cleared away.
v0.12.1 beta 2026-06-29
refactor Internal clean-up: the Teltonika endpoints and poller settings now have their own 'teltonika' prefix (as Peplink does), so every module has its own names. Existing settings move along automatically. No visible change in use.
v0.12.0 beta 2026-06-29
nieuw Teltonika is now a separate, disableable module (like Peplink) — on/off through Settings → Modules. Handy for set-ups without Teltonika routers. It is simply on by default.
nieuw A new 'Monitor' page (previously 'LTE Routers') gathers every source in one place — Teltonika and Peplink — with a new filter per module/source. The separate Peplink page has been dropped; Peplink routers simply sit among the rest in the overview.
refactor The Teltonika code (poller, RMS and ZeroTier clients) has been moved into a module of its own; the shared layer (alerting, providers, client cache) stays central. No visible change in daily use.
v0.11.4 beta 2026-06-29
fix WhatsApp alerts are now retried on a temporary error (quota propagation, rate limit, brief outage): 3 attempts with increasing wait, so alerts are no longer lost on a hiccup.
v0.11.3 beta 2026-06-28
refactor Internal clean-up: the alerting/notification logic now sits in a shared layer used by all device sources. No visible change — it makes future extensions (such as Teltonika as a separate module) cleaner and safer.
v0.11.2 beta 2026-06-28
nieuw Private networks by name: Peplink routers on a PLMN without a provider name (such as the Virtical private LTE network, PLMN 20495) now show the right name instead of 'LTE'. You manage PLMN mappings under Settings → Providers.
v0.11.1 beta 2026-06-26
fix Peplink routers now send WhatsApp alerts on offline/online and provider switch too (these were missing; only Teltonika routers raised alarms).
v0.11.0 beta 2026-06-24
nieuw Offline routers now show the last known connected clients, with a subtle 'offline / last known' note.
nieuw Settings made clearer: the tabs have been replaced by a grouped sidebar (Administration / Alerts / Monitoring / System).
nieuw A router that is reachable but has no usable connection now gets an orange 'degraded' status instead of green.
nieuw The temperature and data usage charts have been refreshed with a tidier style and a cleaned-up legend.
fix The 'Default' group now sits at the top everywhere (timeline, alerting, shared links).
fix Providers → Name mappings only shows providers that genuinely occur in the data; pre-configured variants can no longer disappear by accident.
v0.10.10 beta 2026-06-24
fix Alerting: the choice of WhatsApp group and the alert type settings per group were not saved (a consequence of decoupling the group). Fixed with a unique index on organization_id.
v0.10.9 beta 2026-06-24
nieuw Manage providers under Settings → Providers: a colour per provider and merging raw modem names under one name (e.g. 'T-Mobile / Ben' → Odido). Applies to the timeline, shared links and statistics.
nieuw Shared links moved to an item of their own in the main menu (it was a tab under Settings).
fix Operator names are now normalised in one place (on reading them in), so the same provider no longer appears as two separate providers in colours/statistics.
fix The link list now shows the current group name and the right scope; renaming a group takes effect immediately.
fix No more native browser dialogs (deleting/renaming): tidy in-app modals and toast notices everywhere.
fix Errors in background actions now appear as a notice instead of failing silently.
refactor Internal clean-up: shared CSS centralised, the legend out of the provider config, and share link logic in one place.
v0.10.8 beta 2026-06-23
fix Segment bar: T-Mobile / Ben got the wrong (purple) colour — it is now shown as Odido (blue), in shared links too
fix Native browser dialogs (deleting/renaming a group) replaced by tidy in-app modals and toast notices
v0.10.7 beta 2026-06-23
fix Toast notices did not work anywhere (showToast was undefined) — which made the bulk move button, among others, look as if it did nothing; toasts and the auto-refresh after an action now work everywhere
v0.10.6 beta 2026-06-23
nieuw Organisations tab: move routers in bulk — select several (or all) and move them to a group in one go
v0.10.5 beta 2026-06-23
fix The Peplink tab in the settings now only appears when the Peplink module is active (previously always visible with non-working buttons)
fix Activating the Peplink module now starts the poller immediately, without a restart (the poll loop checks module status + on/off every cycle)
v0.10.4 beta 2026-06-23
nieuw The Peplink poller can be switched on/off in the Peplink settings
nieuw The Peplink poll interval is adjustable (10–600s) in the Peplink settings
v0.10.3 beta 2026-06-23
fix Peplink clients were no longer being fetched — the IC2 org was still looked up through the decoupled org map; the IC2 org id now sits on the device itself
v0.10.2 beta 2026-06-23
fix Shared links returned a server error on the timeline — the share query was missing the new origin fields
v0.10.1 beta 2026-06-23
nieuw Newly discovered routers land in the Default group; you group them yourself on the Organisations tab
nieuw Peplink settings: pick which IC2 organisations you monitor (no fixed group mapping any more)
nieuw Origin (RMS company / IC2 group) visible in the device detail panel
nieuw Alerting tab: one Save button for all changes instead of a button per group
fix After saving on the Alerting/WhatsApp tab you now stay on the right tab
fix Alerting switches and settings were not saved because of a missing CSRF header
refactor The external group has been decoupled from the internal layout; pollers no longer overwrite your manual grouping
refactor App-wide CSRF handling for AJAX (a global fetch wrapper); boilerplate removed in ~17 places
v0.10.0 beta 2026-06-22
nieuw Peplink (InControl2) routers on the timeline — alongside Teltonika, polled through the IC2 cloud
nieuw Peplink org mapping in the settings — map an IC2 organisation to an internal organisation
nieuw Live throughput (Mbps) per Peplink router with its own chart
nieuw Clients per Peplink router (name/IP/type/manufacturer) through IC2
nieuw Adjustable signal thresholds now work everywhere — the stored value, the sparkline and the notifications (no longer just the badge)
fix Segment bars now fill the whole window — small gaps closed up, large gaps shown as offline instead of black/unknown gaps
fix The quality line ran through WAN segments and drifted on auto-refresh — now correctly aligned and recalibrated
fix The Alerting group/bulk toggle did not stay on (it used a missing company_id instead of organization_id)
fix WiFi WAN quality is now RSSI-based, the same formula as Teltonika
fix The IC2 token is self-healing on a 401 — the poller and settings otherwise dropped out until the token expired
refactor The signal quality calculation moved into a shared signal_utils module (notifier, both pollers, timeline, dashboard)
refactor primary_conn naming brought in line: lte/wan/wwan across both sources + a data migration
v0.9.4 beta 2026-06-21
nieuw A Log tab in the settings — a live view of the background processes (polling, WhatsApp, errors)
nieuw Last sign-in visible per user account on the Users tab
nieuw Last use visible per shared link on the Links tab
perf The WAL pragma removed from get_db() — it persists in the DB file anyway
perf Poll settings cached (60s TTL) — no more DB connection per poll cycle
refactor Duplicated effective-connection logic merged — the poller now uses core._eff_conn()
refactor share_timeline and api_timeline now share one _fetch_timeline() helper
v0.9.3 beta 2026-06-21
fix The quality and data alert cooldown was stored before WhatsApp delivery — now only on success
v0.9.2 beta 2026-06-21
nieuw An organisations table of our own — no longer dependent on the Teltonika company ID
nieuw A Settings → Organisations tab: create, rename, delete, move routers
nieuw New routers land automatically in a matching organisation or in Default
nieuw Nino Bonding and Peplink InControl2 as separate modules with their own template directory
nieuw A status dot (green/red/grey) per router on the Alerting tab
nieuw Settings always open on the right tab after a refresh (URL sync)
perf The timeline API reduced from ~120 to 4 DB queries through bulk fetching
perf An index added on snapshots(ts) for faster dashboard queries
fix The quality label read 'qual.' — it is now 'LTE'
fix Alerting: last_notified was updated before delivery — now only on success
fix The SSH deploy key restored for password-free production deploys
v0.9.1 beta 2026-06-20
nieuw WAN and WiFi WAN as segments of their own on the timeline (purple / pink)
nieuw A precomputed segments table for faster timeline loading
nieuw An in-memory cache (28s TTL) on the timeline API — instant loading on auto-refresh
nieuw WAN/WWAN features carried through to the shared view pages
fix The quality column showed LTE quality while WAN was the primary connection
fix The shared view returned an Internal Server Error because of a sqlite3.Row.get() call
v0.9.0 beta 2026-06-20
nieuw An LTE Routers timeline with provider colours per segment
nieuw Signal quality as a sparkline overlay on the timeline bars
nieuw A smart tooltip with the exact timestamp, provider and quality on hover
nieuw Shared links — temporary access without signing in
nieuw Multi-org selection on shared links
nieuw An Open button next to Copy on the shared links page
nieuw A poller on/off switch in the settings
nieuw ZeroTier integration for signal data straight from the routers
nieuw WhatsApp notifications through Green API on status and provider changes
nieuw Signal quality and data usage warnings per organisation
nieuw Organisation-specific WhatsApp group chat configuration
nieuw A systemd watchdog keepalive for poller robustness
fix Notifications were lost through nested SQLite connections — fixed with an alert queue outside the DB write block
fix The poller stopped silently on unexpected errors — it now recovers automatically
fix The timeline flickered on every auto-refresh — segments are now updated in place
fix The cooldown status was marked as 'sent' even when the WhatsApp message was never created