Releases: scriMillspaugh/sensorview-toolkit
Release list
MapView Editor v1.2.0
Device search (Ctrl+F)
Search across all maps by hex device ID — or by plain-language name when a database is loaded. Results jump to the map, center the view, and pulse the device. An empty search offers a same-map duplicate-ID check; adding or renaming to a duplicate ID warns without blocking.
MCP integration — let Claude build drawings
mcp_server.py is a Model Context Protocol server exposing editing tools to an AI assistant: list/read maps, add/move/remove devices, draw/delete zones, search, load .mvdb/.svdb, export, and a flip_devices_y repair tool. Tools speak image coordinates; coordinate-system flips are handled internally.
py -m pip install mcp
claude mcp add mapview -- py mcp_server.pyLive sync
The editor tracks a revision counter and the browser polls it — edits made by the MCP server (or any API client) appear in the open editor within ~2 seconds. Unsaved manual edits are never clobbered; the UI warns instead. Page refresh now restores the session.
Fixed: device markers rendered vertically mirrored
Device y is stored y-up in the .mvdb (same as zone WKT), but the editor had read it as y-down since 1.0.0 — every dot drew mirrored across the map's midline. Invisible while dots were anonymous; v1.1.0's labels exposed it. The editor now flips device y on read/write exactly as it does for zones. Stored data is untouched and stays SensorView-compatible. Devices placed with earlier versions of this editor were saved in the wrong frame — flip_devices_y repairs a map in one call.
Full details: CHANGELOG.md · docs/METHOD.md
🤖 Generated with Claude Code
MapView Editor v1.1.0
Read-only database labels
Load a SensorView database backup (.svdb, or a bare sensor.mdb) alongside the .mvdb to show plain-language device and zone names instead of raw hex IDs:
- Names next to device markers, with a toolbar Labels show/hide toggle
- Hover tooltips as
Label (ID) — Model - Zone polygons show their zone name
- Read-only label rows in the properties panel
- Header badge reports match coverage (e.g.
42/45 devices matched)
Device-type dot colors & bigger dots
- Dots are colored by device family — sensors, WallPods, power packs, power supplies, I/O interfaces, backbone — with a colorblind-safe palette and an on-map legend of the families present on the current floor
- Dot radius now follows the map's own
deviceScalesetting (previously a fixed 5px), so markers are findable on large floorplans zoomed to fit
Safety
- The database is opened read-only in its own temp directory and the connection is closed after reading — the source file is never modified, and the exported
.mvdbis unchanged by this feature - The label feature needs the Microsoft Access Database Engine (same as the Label Editor); without it the tool shows a friendly message and map editing is unaffected
New endpoints: POST/GET/DELETE /api/labels. Full details in CHANGELOG.md and docs/METHOD.md.
🤖 Generated with Claude Code
Label Editor v1.1.0 (formerly Relabeler)
Note
Superseded — this tool is now the Label Editor.
The latest release is
Label Editor v1.2.0,
which ships as LabelEditor-v1.2.0.exe. Same tool, renamed and reorganized —
no change to how it reads, edits, or writes files.
If you are running this v1.1.0 build, its in-app "Labeling practices" link
points at a path that no longer exists. The document now lives at
label-editor/docs/LABELING.md.
Validation is now split into rules the BMS actually requires and recommendations
you can ignore, and the notes field is editable.
Full details: LABELING.md
Fixed
- Zone names were capped at 20 characters; the column holds 50. One limit was
applied to both tables, so valid zone names were rejected for 30 characters they
didn't need. Limits are now per-kind, measured from thesensor.mdbschema:
devicesVARCHAR(20), zonesVARCHAR(50), notesVARCHAR(200).
Changed
- The floor-token check no longer blocks a write. It was a site convention
({BLDG}_{FLR}_{AREA}) enforced as hard as the real rules, which locked out
anyone whose labels don't encode a floor in the second field. Now an advisory. - Hyphens are accepted. BACnet permits
-as a delimiter; Acuity documents the
underscore for nLight. Hyphens pass validation and raise an advisory. - Character validation now states the full BACnet restriction set — no spaces,
symbols, slashes, math operators, or non-ASCII glyphs. - Advisories appear in their own block in the web UI and under
NOTESin the CLI,
which still exits 0.
Added
- Notes are editable —
UserCommentson both devices and zones, 200 characters,
free text. New Notes column in the table, an optionalNotescolumn in the CSV
template, and writes on Apply. Blank means unchanged; an unedited note is never
rewritten. Length-checked only, since it isn't a BACnet object name. - LABELING.md — what the tools enforce versus what they recommend, with the
schema evidence and a naming format that holds up in a BMS.
Why length validation matters
Access accepts an over-length write and silently truncates it — 30 characters in,
20 stored, no error raised. Truncation can also forge duplicates out of labels that
differed only past the cutoff. That is why the check happens before the write
rather than being left to the database.
Install
Download SensorViewRelabeler.exe, double-click, and it opens in your browser at
http://127.0.0.1:5000. Everything runs locally — your backup never leaves the PC.
- Requires the free
Microsoft Access Database Engine
(64-bit), installed once per PC. - The exe is unsigned, so Windows SmartScreen may warn on first run — choose
More info → Run anyway.
MapView Editor v1.0.1
A small cleanup on top of v1.0.0. No functional change to the editor — if
v1.0.0 is working for you, there is no need to re-download.
Changed
/api/versionno longer returnsrepoPath. The field exposed the server's
local filesystem path over the API and had no consumer — the header badge
stopped displaying it in v1.0.0.
Everything else is identical to
v1.0.0.
Install
Download MapViewEditor.exe, double-click, and it opens in your browser at
http://localhost:5111. No Python and no extra dependencies.
The exe is unsigned, so Windows SmartScreen may warn on first run — choose
More info → Run anyway.
MapView Editor v1.0.0
Initial public release of the MapView Editor — a local, browser-based editor for
Acuity nLight SensorView .mvdb floorplan archives.
Everything runs on your own machine. Your export never leaves the PC, and the
original file is never modified — export always writes a new archive.
What it does
- Floorplan canvas — pan and zoom, move/add/remove device markers, draw and
reshape zone polygons, with a properties panel for device IDs, zone IDs, parent
devices, and ports. - Map management — add, rename, and delete floor maps; replace floorplan PNGs.
- Correct zone rendering — MapView stores zone polygons y-up while devices and
the image are y-down. Zones are flipped on read and write, so they no longer
render mirrored. - Lossless PNG optimization on export — indexed color when an image has ≤256
colors, typically 55–60% smaller. Originals are kept whenever the optimized
result would be larger. - Safe repack — the archive is rebuilt from the
mapinfoindex, so stray
working files never end up inside it. - Version reporting — header badge,
/api/version, and the startup banner.
Git branch and commit are appended when running from a clone and omitted in the
exe, where no repository exists.
Install
Download MapViewEditor.exe, double-click, and it opens in your browser at
http://localhost:5111. No Python and no extra dependencies — unlike the
Relabeler, this tool does not need the Access Database Engine.
The exe is unsigned, so Windows SmartScreen may warn on first run — choose
More info → Run anyway.
Notes
.mvdb files describe your building layout, so keep them off third-party
services. The editor binds to localhost and does all processing locally.
Format and pipeline details:
METHOD.md ·
Floorplan image guidance:
FLOORPLAN_STANDARD.md
Label Editor v1.2.0
The Relabeler is now the Label Editor. A rename and reorganization — nothing
changed about how the tool reads, edits, or writes your files. Upgrading is
optional; v1.1.0 keeps working.
Changed
- Renamed to Label Editor. The tool folder is
label-editor/, matching the
MapView Editor convention. Release tags are nowlabel-editor-vX.Y.Z; the
earlierrelabeler-v1.1.0release stays as history. - The exe carries its version —
LabelEditor-v1.2.0.exeinstead of
SensorViewRelabeler.exe. Two downloads in the same folder are now
distinguishable without running them. - Entry point renamed
app.py→server.py, matching the MapView Editor. - Documentation moved under
label-editor/docs/. If you are running v1.1.0, its
labeling link still works — a redirect was left at the old location. - The UI,
--help, and--versionall say "Label Editor".
Fixed
- The example CSVs in
examples/were missing theNotescolumn, so they no
longer matched the template the tool generates. Both templates now include it,
with a note-only row showing that you can edit a note without renaming.
Install
Download LabelEditor-v1.2.0.exe, double-click, and it opens in your browser at
http://127.0.0.1:5000. Everything runs locally — your backup never leaves the PC.
- Requires the free
Microsoft Access Database Engine
(64-bit), installed once per PC. - The exe is unsigned, so Windows SmartScreen may warn on first run — choose
More info → Run anyway.