- intro/landing: centered 'Tesseract Floorplan Analyzer' title, abstract,
and a footnote crediting CMU in Qatar with a link to the paper
- app renamed Tesseract (header, page title, Space title)
- floor transitions: backend normalizes 'transition' -> 'floor_transition'
so color, triangle shape, size slider, filter, and label are consistent
- drop the duplicate SF example (4 -> 3 cached images)
- Edit: add Redo with full undo/redo stacks; Done Editing button moved below
- harden edit/undo/display paths with try/catch and add a React ErrorBoundary
so a thrown error degrades gracefully instead of white-screening
- move the Current Route panel under Navigation (right column)
- double the broken-node connectivity glow; add 'smaller subgraph' wording
- labels singular and Title Case; 'Outside' -> 'Outdoor'; 'Room Subnode'
- toggling pre/post pruning preserves the viewport (zoom/pan) instead of
re-fitting, so the graph stays aligned with the floorplan; the overlay is
re-synced on every (re)init
- statistics now reflect the displayed stage: node/edge/type counts update
between pre-pruning and post-pruning (pruning reduction kept from backend)
- new Current Route panel in the left column shows path length, node count,
segments, cross-floor flag, and a per-type breakdown of the traversed path
matplotlib 3.11 removed matplotlib.cm.get_cmap, which crashed the flood-fill
stage when processing uploaded images. Switch to the colormaps registry
(mpl.colormaps[name].resampled(n)), which works on all supported versions.
- connectivity now flags only what matters: main rooms not mutually
connected, exit doors not reachable, and any node with zero edges
(a hard red flag); score + breakdown reflect those, recomputed live
- removing an edge on the active route now breaks or reroutes the
highlighted path in real time (viewer recomputes on every edit)
- expanding the warning list highlights the offending nodes in red on the
canvas; clicking one zooms to it
feat: hover-select glow, persistent route endpoints, live connectivity
- route/edit/delete modes glow the node under the cursor for clear feedback
- chosen Start/Destination nodes stay highlighted persistently after picking
- newly added nodes adopt the current per-type size from the sliders
- undo is unlimited and the button shows the remaining count
- stats panel shows live connectivity: a check at 100%, otherwise a warning
triangle that expands the list of disconnected nodes (each click locates it
on the canvas); recomputed live after every edit
feat: graph-editor UX overhaul and headless matplotlib fix
Frontend:
- two-sidebar layout (left: collapsible stats + visual controls; right:
navigation, edit, export) with a top-left Back button
- click-driven navigation via Set Start / Set Destination buttons
- graph edit toolkit (add and remove nodes and edges, with undo)
- floating zoom controls; floorplan overlay on by default with opacity slider
- nodes no longer draggable; smoother processing state when loading examples
Backend:
- force the Agg matplotlib backend and drop plt.show() so uploaded
(non-cached) images no longer crash the threaded pipeline
feat: interactive A*/Dijkstra navigation in the graph viewer
Add a Navigation panel to pick a start and destination room (or click two
nodes) and highlight the shortest route over the constructed graph,
computed client-side with Cytoscape A*. Off-route elements dim, and the
panel reports path length, segment count, and a cross-floor flag.
- RoutePanel component + routing state wired into App
- GraphViewer: A* search, route highlight, and tap-to-select, coordinated
with the existing visibility and floorplan-overlay logic
- route styling, endpoint constants, and types
- exclude paper artifacts from the Docker build context
Deploy: floorplan rendered as DOM element, edges always visible