"Grab your gear, we're going mobile!"
BLUF: : Special Thanks to one of the folks in the Discord who pointed out that the mobile view looked awful. Most of this update delt with some behind the scenes elements, Chiefly I wanted to make the Anti-Collision connector lines work properly and get a practical snap-to-grid in place BEFORE the Rack Mount Builder is released. Hope you find these updates smooth & useful. Don't forget to check out the Video Explainers for new Features.
Change Log
1: Mobile View — First Iteration
Added a dedicated read-only mobile interface with three primary views: Canvas, Handbook, and Swimlanes. This first iteration intentionally keeps all mobile functionality read-only while the mobile UX is validated and refined.
- Canvas: landscape-focused read-only topology viewer with pan, zoom, layer switching, and tile details.
- Handbook: read-only mobile Handbook supporting both portrait and landscape layouts.
- Swimlanes: scrollable read-only collection of Swimlane diagrams, ordered to match their placement in the Handbook.
- Added persistent mobile navigation that follows the phone's physical home-button edge: bottom in portrait, and left/right in landscape depending on rotation direction.
- Portrait initially opens Handbook; landscape initially opens Canvas. Once a user selects a view, rotating the device preserves that selection.
- Canvas remains landscape-only and shows a rotate-device prompt when opened in portrait.
- Mobile uses the existing atlas, backend, Handbook structure, and Swimlane data with no separate container, API, or mobile data store.
2: Snap to Grid — Canvas
Added an optional 20×20 Canvas grid snap mode for tile creation, duplication, drops, and drag placement. Existing layouts are left untouched when Snap is enabled, and Family positioning remains independent. This is a pretty high-density snap to grid set up, may have to zoom in to get them lined up.
3: API Hardening & 5-Step Persistent Undo/Redo History
Added a rolling five-change history for atlas.json, allowing users to Undo/Redo recent atlas changes even after refreshes or container restarts. As part of API hardening, atlas saves now use atomic file replacement and protected history snapshots, reducing the risk of corruption from interrupted or overlapping writes.
4: ADDITIONAL ITEMS:
-
Frontend / Backend Stack Naming Parity — Standardized generated stack names between the frontend and backend, including acronym-sensitive labels such as IOT Device and URL. This also prevents unnecessary Atlas normalization during saves.
-
Avoid Tiles Routing Engine v2.1 — Completely redesigned connector anti-collision routing using concepts derived primarily from libavoid-style orthogonal visibility routing and affected-route reasoning, with React Flow Smart Edge used as an additional design reference. CTR retains its own TypeScript routing core, Web Worker, caching, fallback, and PNG-export architecture.
-- Cleaner, more direct orthogonal routes
-- Reduced unnecessary detours
-- Unrelated distant tiles no longer cause connectors to randomly change paths
-- Only affected connectors are recalculated when geometry changes
-- Improved endpoint handling when connectors leave crowded tiles
-- Better route cleanup and direction-aware scoring
-- Unaffected connectors remain visible while other routes are recalculated -
Routing / Export Consistency — Interactive Avoid Tiles routing and Canvas PNG export now use the same canonical routing logic, keeping exported diagrams consistent with what users see on screen.
-
Routing Performance Improvements — Replaced the previous globally coupled routing graph with an obstacle-only scanline visibility graph, connector-local search regions, selective route reuse, and bounded spatial indexing. Large or distant Canvas edits now require substantially less routing work.
REMINDER: This "release" is just the release notes, if you're here for the first time and want to download the app, go back and select Packages, where the Docker Image link is located. Easy Peasy.
https://github.com/NoobCity99/CTRoadmap/pkgs/container/ctroadmap
