Repository navigation
Releases
Protect Go v0.18.0
Added
- The stations as a list of their own in the Data explorer's Layers panel (Tim, 2026-10-28): under the trackers, every offload station with a place has a box to show or hide it on the map, its name a link to the station's page, and Show all and Hide all of its own, as the trackers have; the count line went.
Fixed
- The Data explorer opened straight on its map no longer goes blank (found on 2026-10-28 while checking the Layers panel in a browser: a page that lands on the explorer's map while the project's map state is still being read drew nothing, "Style is not done loading"). The map was made before the project was known and restyled for it in the same instant it reported ready, under the page's layers. A restyle now waits one render, so the page lets go of its layers first and draws them again on the new style.
- The map follows a tracker that went far from the stations (Tim, 2026-10-28, decision D35: SP051307 drove through Namibia and the app's map held the Netherlands, where the offload station stands, and nothing of where the tracker was). Protect now cuts the map from several regions in one file, the project's places and the current positions of its devices grouped by distance (Protect's decision D365), and the bundle says whether the server's map still covers them. When it does not, a load of the project asks the server for a new map before fetching, says so while it is being cut, and the next sync brings it; a map that covers the project is fetched as before. A server before Protect's D365 answers no such word and the app behaves as it did.
Decodes with Protect's shared package at d2d356a. Protect's decision D365 (the map cut from several regions) is on its dev server since 2026-10-28; against an older Protect the app behaves as v0.17.3 did.
Protect Go v0.17.3
The map follows a switch made from another page. Open the Overview on one project, go to Offload stations or any other page, choose another project at the top: the Overview opened without its map. A map now waits for its project before it is made and applies a project that changed while it was loading, and the switch hands the new project's map to the pages at once. Checked from the Offload stations, Trackers and Files pages, and on the Data explorer's map, a station's page and a card's page. Protect's decoding at d2d356a still.
Protect Go v0.17.2
The map redraws after a switch between projects. v0.17.1 read the tiles from the right address, but the map library applied the new style as a difference against the old one and never reported it loaded, so the stations, tracks and tiles were not drawn again until the app was started afresh. The style is now reloaded whole on a switch and on a change of theme. Protect's decoding at d2d356a still.
Protect Go v0.17.1
The map follows a switch between projects. After choosing another project at the top, the map did not load until the app was started again: every map read its tiles from one address, and the map library's reader kept the previous project's archive. Each project's tiles now have an address of their own, and the Overview's map, the Data explorer's map and a card's map redraw when the project changes. Protect's decoding at d2d356a still.
Protect Go v0.17.0
Every project with an offload station is kept on this laptop, with its map, in the background.
- While the app is online and signed in, a sync every five minutes lists the server's projects, loads the ones with an offload station that are not on this laptop yet, loads again the ones that changed on the server, and fetches a map that is missing, all beside the project you are looking at, which stays as it is.
- A switch at the top therefore only changes what you look at: the stations, trackers, files and map of the chosen project are already on the laptop.
- The switcher and the Server page say so, and the Server page's Project line counts the projects on this laptop.
Protect's decoding at d2d356a still.
Protect Go v0.16.0
The project at the top, and the laptop organised per project.
- The top bar carries the project switcher, as Protect does: the loaded project's name, the projects on this laptop (they switch at once, without a connection) and, online and signed in, the server's projects with an offload station, loaded with their devices, keys and map when chosen.
- Everything you see is the loaded project's: its SD card files, trackers, stations, data explorer, uploads and map, nothing of another project. The laptop keeps a bundle and a map per project. SD cards read with an earlier version find their project the first time that project is loaded.
- A map the server was still cutting when you loaded the project comes by itself within a few minutes while online; the Overview says so meanwhile and offers "Fetch the map now".
- The Server page lists the projects on this laptop with "Use"; the Files page says how many SD cards of other projects it leaves out.
- The audit's advisories of the day: Electron 44.9.3, setuptools, brotlicffi and vitest's mocker. Protect's decoding at d2d356a still.
Protect Go v0.15.1
Fixed
- The empty strip along the right edge of the window is gone (Tim, 2026-10-23, as in Protect the same day). The stylesheet copied from Protect reserved room for a page scrollbar on the root (
scrollbar-gutter: stable) while only the main column scrolls, so the shell on Windows showed 15 px of empty background beside every page. The rule is gone. Protect pinned at d2d356a still.
Protect Go v0.15.0
Added
- A file read before is left out, and the page says so (Tim, 2026-10-23, decision D30: the duplicate check must hold on the laptop too, not only on the server). Reading a card looks every file up by its content over everything read so far, and within the same drop: a file read before is not kept, not read again and never waits for the upload a second time; the Files page says "N files were read before and were left out" with each file's name, the SD card that holds it and when it was read, and a card whose every file was read before makes no card at all and says "Nothing new". A card read again after it grew adds its new files alone. On the upload, the app reads Protect's new
duplicateflag on a skipped file (Protect's decision D353) beside the words "uploaded before" of older servers.
Changed
- Protect pinned at d2d356a (Protect's
mainof 2026-10-23, decisions up to D353). The shared package is unchanged in what the app imports; the pin moves for the dependency audit: Pillow 13.0.0 and certifi 2026.10.23 (both flagged on 2026-10-23), brotli 1.2.1 and the OpenTelemetry family 1.45.1, so the app ships the same versions as the server. - Protect pinned at b8c1c1c (Protect's
mainof 2026-10-20, decisions up to D345). The pinned driver reads an offload station's port 23 report in its versions 2 and 3 (the firmware branch of 2026-10-20: the card's size and free share, the observationssd_card_missingandsdfs_error), so a card that holds such a report decodes here as on the server instead of failing the frame. The card's new root-levelsdcheck.bin, the station's storage test file, is no station file and the card walk leaves it aside, as before. No code of the app changed.
Protect Go v0.14.0
Added
- The project follows the server by itself (decision D29, Tim, 2026-10-19: a station or tracker added in Protect, or a map made, should reach the app without a hand on Server). While the app is online and signed in, the connection probe compares the loaded project's revision with the server's every five minutes (Protect's
GET /projects/{id}/field-bundle/revision, Protect's decision D344) and, when it moved, loads the project again and reads the frames of trackers unknown before. A notice at the top of the page says when it happened and how many frames were read; the Server page's Project line says when the last comparison ran, or that the server's newer project could not be loaded.GET /api/setup/connectionanswersbundle_checked_at,bundle_updated_at,bundle_outdatedandframes_read_again; the bundle summary carriesrevision. Protect pinned at d79ffaf still; a server without the revision endpoint is left as it is.
Protect Go v0.13.0
Added
- Unknown trackers (Protect's decision D338, Tim, 2026-10-19: a card may name trackers Protect does not know yet). The Trackers page ends with the LP0 addresses the cards hold frames for that no device of the project has: the address, the tracker EUI when a v5 station wrote it, the frames, the stations that heard them, the last reception. "Add in Protect" opens the project's Offload page on the address, where the tracker is made with the DevEUI the card named; the Overview's Trackers button counts them.
GET /api/trackers/unknown; the frames keep the tracker EUI (source_eui). - The frames of a tracker added since decode after the next load. Loading the project again reads the frames of addresses unknown before from the kept files, for every address the fresh bundle knows now, and sums the cards' counts anew; no second import of the card.
POST /api/bundle/fetchanswersframes_read_again.