Release 0.11.2
Bug fixes for the buildings-and-levels work in 0.11.0, every one of them found by using the feature rather than by the suite. Anyone running 0.11.0 or 0.11.1 with more than one level should take this release: the map drew markers from every level on whichever floor plan happened to be showing, which is the failure ADR-017 exists to prevent, and it was in the one component that draws the map. The viewer also had no way to choose a level, and the editor never accepted a click at all - its handler was bound only if the map was already a picker at mount, and the editor opens with nothing selected. Also: a level's native size could not be set (the settings page had no height field), the same search could return different rows because fourteen searchers truncated without an ORDER BY, and both map pages carried a scrollbar from subtracting the wrong page chrome from the viewport height. No schema change, and the plugin contract stays at 0.20.0. The version and the changelog are the release; the detail is in the entry.
This commit is contained in:
49
CHANGELOG.md
49
CHANGELOG.md
@@ -10,6 +10,55 @@ ADR-007 and ADR-002.
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [0.11.2] - 2026-08-17
|
||||||
|
|
||||||
|
Bug fixes for the buildings-and-levels work in 0.11.0, all found by using it.
|
||||||
|
Anyone on 0.11.0 or 0.11.1 with more than one level should take this: until now
|
||||||
|
the map drew markers from every level on whichever floor plan was showing.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- **Markers from other levels were drawn on the displayed level.** The map
|
||||||
|
component filtered out positions with no coordinates and drew everything else,
|
||||||
|
never checking which drawing a position belonged to - the exact failure ADR-017
|
||||||
|
exists to prevent, in the one component that draws the map. Markers are now
|
||||||
|
filtered to the level being shown, and a position with no level is omitted
|
||||||
|
rather than approximated onto the default.
|
||||||
|
- **The map page had no way to choose a level.** It read the current level only
|
||||||
|
to title a PDF export, so a second floor was unreachable from the viewer most
|
||||||
|
people use. A level selector appears when a site has more than one, and
|
||||||
|
switching moves the drawing, the bounds, the coordinate space and the markers
|
||||||
|
together.
|
||||||
|
- **The map editor never accepted a click.** Its click handler was bound only if
|
||||||
|
the map was already in picker mode when it mounted, and the editor opens with
|
||||||
|
nothing selected, so selecting an asset and clicking did nothing at all for the
|
||||||
|
life of the page. The asset forms were unaffected, because their picker is
|
||||||
|
mounted inside a dialog that is already in picker mode.
|
||||||
|
- Existing markers are now drawn while placing one. Positioning an asset relative
|
||||||
|
to the machines already on the floor is the whole task.
|
||||||
|
- Searching the map follows results across levels: a search whose matches are all
|
||||||
|
on another floor showed an empty map while the filter counted them.
|
||||||
|
- **A level's native size could not be set.** The settings page had a width field
|
||||||
|
and no height field at all, and locked both once any marker was placed - which
|
||||||
|
blocked the case the feature was built for, a new blueprint of new dimensions
|
||||||
|
on a floor that already has markers. Both fields are editable, with a
|
||||||
|
confirmation and a pointer to landmark recalibration.
|
||||||
|
- **The same search could return different results.** Fourteen of the sixteen
|
||||||
|
searchers behind global search truncated with `LIMIT` and no `ORDER BY`, so the
|
||||||
|
database was free to return a different subset of matching rows each time.
|
||||||
|
Every searcher now ends in a total order.
|
||||||
|
- Re-searching a term already in the address bar did nothing: the router treats
|
||||||
|
it as a duplicate navigation and aborts, so the results page never re-queried.
|
||||||
|
This is why the sidebar box and the results-page box appeared to disagree.
|
||||||
|
- The empty legend no longer draws its bar and border, which read as a stray
|
||||||
|
input box under the map toolbar.
|
||||||
|
- The map editor's panel header no longer crams a heading and three controls onto
|
||||||
|
one row, which had squeezed the search box until its placeholder read
|
||||||
|
"Search na".
|
||||||
|
- Both map pages had a scrollbar. They subtracted the wrong amount from the
|
||||||
|
viewport height for the page chrome, so each overflowed by the difference; the
|
||||||
|
padding is now a value the pages and the layout share.
|
||||||
|
|
||||||
## [0.11.1] - 2026-08-17
|
## [0.11.1] - 2026-08-17
|
||||||
|
|
||||||
A patch release: the pagination-cap fixes, plus the documentation that missed the
|
A patch release: the pagination-cap fixes, plus the documentation that missed the
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ never by editing this file.
|
|||||||
|
|
||||||
| series | value | governed by |
|
| series | value | governed by |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| product `__version__` | `0.11.1` | ADR-007 |
|
| product `__version__` | `0.11.2` | 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.11.1",
|
"version": "0.11.2",
|
||||||
"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.11.1'
|
__version__ = '0.11.2'
|
||||||
|
|
||||||
|
|
||||||
def create_app(config_name: str = None) -> Flask:
|
def create_app(config_name: str = None) -> Flask:
|
||||||
|
|||||||
Reference in New Issue
Block a user