Release 0.11.0
The floor map became a set of drawings instead of one picture, and search now reaches what the forms have been collecting all along. A site can hold more than one building and a building more than one level, and every map position records which drawing its coordinates belong to. An existing single-map site upgrades into one building and one default level carrying the blueprint it already had, and nothing moves on screen. Landmark recalibration moves a level's markers onto a redrawn plan, solved per axis from the landmarks and never from the image dimensions, dry run by default, snapshotted before it applies. Two identifiers the UI collects were findable in almost no way and two plugins' records in no way at all: gaugelabreference matched only measuring tools, maintenancereference matched nothing anywhere, and USB devices and printed items were absent from search entirely because neither is an asset. All four are searchable now, from the global bar and from every list's own search box. Contract 0.20.0 is additive: a plugin that writes a map position must write its level with it. The version and the changelog are the release; the detail is in the entry.
This commit is contained in:
26
CHANGELOG.md
26
CHANGELOG.md
@@ -10,11 +10,17 @@ ADR-007 and ADR-002.
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.11.0] - 2026-08-17
|
||||||
|
|
||||||
The floor map became a set of drawings instead of one picture. A site can hold
|
The floor map became a set of drawings instead of one picture. A site can hold
|
||||||
more than one building, a building more than one level, and every map position
|
more than one building, a building more than one level, and every map position
|
||||||
now records which drawing its coordinates belong to. Driven by a real move: a
|
now records which drawing its coordinates belong to. Driven by a real move: a
|
||||||
second floor was added, a new blueprint changed size, and machines relocated.
|
second floor was added, a new blueprint changed size, and machines relocated.
|
||||||
|
|
||||||
|
Alongside it, a sweep of what search can actually reach. Two identifiers the UI
|
||||||
|
collects were findable in almost no way, and two plugins' records were findable
|
||||||
|
in no way at all.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Buildings and levels (ADR-017). Each level owns its own blueprint per theme
|
- Buildings and levels (ADR-017). Each level owns its own blueprint per theme
|
||||||
@@ -62,6 +68,26 @@ second floor was added, a new blueprint changed size, and machines relocated.
|
|||||||
place so a rollback still finds them. Verified end to end on MySQL 5.6 from a
|
place so a rollback still finds them. Verified end to end on MySQL 5.6 from a
|
||||||
production-shaped database.
|
production-shaped database.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- `gaugelabreference` was matched only on measuring tools and
|
||||||
|
`maintenancereference` was matched nowhere at all, for any asset type, while
|
||||||
|
Settings offers both identifiers on machines, PCs, printers and network
|
||||||
|
devices. Both are now matched by global search AND by every asset list's
|
||||||
|
`?search=`. An identifier that can be entered has to be findable, or it is a
|
||||||
|
write-only field, and the tag is read off the physical machine by someone
|
||||||
|
looking at the list page.
|
||||||
|
- USB devices and printed items were unreachable from global search entirely.
|
||||||
|
Neither is an asset, so the generic asset search could not see them and no
|
||||||
|
searcher existed. They now match on serial, asset tag and label, and on bin
|
||||||
|
code (`itemcode`), gage-lab tag, name and description respectively - both
|
||||||
|
honouring `isactive`, both with Settings toggles, result labels and filter
|
||||||
|
chips.
|
||||||
|
- Global search returned knowledge-base articles whose topic application is
|
||||||
|
retired, while `GET /api/knowledgebase` hid them. A filter that only some paths
|
||||||
|
apply is not a filter: the article stayed two keystrokes away and the result
|
||||||
|
printed the retired application as its subject.
|
||||||
|
|
||||||
### Known gaps
|
### Known gaps
|
||||||
|
|
||||||
- The Pascal printer-installer map still compiles in one drawing's dimensions and
|
- The Pascal printer-installer map still compiles in one drawing's dimensions and
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ never by editing this file.
|
|||||||
|
|
||||||
| series | value | governed by |
|
| series | value | governed by |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| product `__version__` | `0.10.0` | ADR-007 |
|
| product `__version__` | `0.11.0` | ADR-007 |
|
||||||
| plugin contract `__contract_version__` | `0.20.0` | ADR-002 |
|
| plugin contract `__contract_version__` | `0.20.0` | ADR-002 |
|
||||||
|
|
||||||
They move independently. A contract bump is not a release.
|
They move independently. A contract bump is not a release.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "shopdb-frontend",
|
"name": "shopdb-frontend",
|
||||||
"version": "0.10.0",
|
"version": "0.11.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ __contract_version__ = '0.20.0'
|
|||||||
# plugin-contract version above are distinct series with independent
|
# plugin-contract version above are distinct series with independent
|
||||||
# bump rules. Not part of the shopdb.api contract surface, so it is
|
# bump rules. Not part of the shopdb.api contract surface, so it is
|
||||||
# not re-exported there.
|
# not re-exported there.
|
||||||
__version__ = '0.10.0'
|
__version__ = '0.11.0'
|
||||||
|
|
||||||
|
|
||||||
def create_app(config_name: str = None) -> Flask:
|
def create_app(config_name: str = None) -> Flask:
|
||||||
|
|||||||
Reference in New Issue
Block a user