# Roadmap: Junction ## Milestones | Version | Name | Phases | Status | Completed | |---------|------|--------|--------|-----------| | v0.1 | Walking Skeleton (MTConnect) | 1 | βœ… Shipped | 2026-07-21 | | v0.2 | Machine Management UX | 2, 2.1 | βœ… Shipped (2.1 commit pending) | 2026-07-21 | | v0.3 | Data-Item Selection + UX | 3, 3.1 | βœ… Shipped (branch v0.3.1-theming) | 2026-07-22 | | v0.4 | OPC UA Protocol | 4 | 🚧 In progress (branch v0.4-opcua) | - | | v0.5 | Fanuc FOCAS Protocol | 5 | ⏸️ Deferred (no native/Windows on dev host) | - | | v0.6 | History & Trends | 6 | πŸ“‹ Planned | - | ## 🚧 Active Milestone: v0.2 Machine Management UX **Goal:** User fully manages a fleet of N machines from the UI (add/edit/delete + detail view), with reliable online/offline state and live monitor reload. **Status:** Phase 2 complete (commit pending) **Progress:** [β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ] 100% ### Phase 2: Machine Management UX **Goal:** Detail screen, config CRUD, offline detection, dynamic monitor reload. **Depends on:** Phase 1 **Research:** Unlikely (internal patterns) **Plans:** - [x] 02-A: Core β€” offline detection (fail-threshold β†’ Disconnected) + dynamic monitor API (AddOrUpdate/Remove machine live) - [x] 02-B: App β€” machine detail screen (full snapshot) + dashboard row-click nav + back - [x] 02-C: App β€” config add/edit/delete screen + repo.Upsert + live monitor reload; Core AvailableProtocols ### Phase 2.1: Refinements [INSERTED] **Goal:** Post-v0.2 polish + repo hygiene. **Depends on:** Phase 2 **Reason:** UX/robustness feedback + tracked-artifact cleanup. **Plans:** - [x] 02.1-R1: MTConnect shared static HttpClient + per-request timeout (linked CTS) β€” fix socket-exhaustion - [x] 02.1-R2R3: disconnection UX (status color/dot/badge + LastSeen) + robust delete confirm overlay - [x] 02.1-tablefix: dashboard β†’ DataGrid (aligned columns, Details own column) + Avalonia.Controls.DataGrid 11.3.10 ## πŸ“‹ Planned Milestone: v0.3 Data-Item Selection + UX **Goal:** Per-machine selection of which data items to monitor (probe catalog, opt-in, filters persistence); then themed/iconed UI polish. **Prerequisite:** v0.2.1 committed **Estimated phases:** 2 | Phase | Focus | Research | |-------|-------|----------| | 3 | Item selection: Domain Machine.MonitoredItemIds + DataItemDescriptor + IProtocolDriver.ProbeAsync; MTConnect probe + filter to selected; Persistence col; App config checklist + detail shows selected | Unlikely (probe parser exists) | | 3.1 | Theming/UX: Fluent light/dark + accent, per-protocol icons, curated layout | Unlikely | ## πŸ“‹ Planned Milestone: v0.4 OPC UA Protocol **Goal:** Second protocol plugin (OPC UA) proving multi-protocol architecture. **Prerequisite:** v0.3 complete **Estimated phases:** 1 | Phase | Focus | Research | |-------|-------|----------| | 4 | OPC UA driver plugin (endpoint/nodes β†’ MachineSnapshot), config keys, tests | Likely (OPC UA SDK on net48) | ## πŸ“‹ Planned Milestone: v0.5 Fanuc FOCAS Protocol **Goal:** Fanuc FOCAS plugin via native fwlib32 (P/Invoke, Windows-only). **Prerequisite:** v0.4 complete **Estimated phases:** 1 | Phase | Focus | Research | |-------|-------|----------| | 5 | FOCAS P/Invoke driver, native lib lifetime/marshalling, Windows-only guard | Likely (native interop; use dotnet:dotnet-pinvoke) | ## πŸ“‹ Planned Milestone: v0.6 History & Trends **Goal:** Persist time-series, show trends in detail page. **Prerequisite:** v0.5 (or parallelizable) **Estimated phases:** 1 | Phase | Focus | Research | |-------|-------|----------| | 6 | History tables, retention, trend charts in detail view | Unlikely | ## βœ… Completed Milestones
v0.1 Walking Skeleton (Phase 1) β€” Shipped 2026-07-21 ### Phase 1: Walking Skeleton + MTConnect **Goal:** One configured machine polled by MTConnect plugin against docker mock, last datum live on Avalonia dashboard. net48 + net8.0 build on Linux. **Plans:** all complete (T1–T30 + unify), 115 tests + 2 docker integration, live e2e proven. - [x] Solution scaffold, csproj set, Directory.Build.props, global.json - [x] Domain: Result, models, IProtocolDriver/Factory, IMachineRepository, PluginManifest - [x] Core: PollingEngine, PluginLoader (Assembly.LoadFrom), MachineMonitor, DI - [x] Persistence: schema, SqliteMachineRepository (Dapper), swap seam - [x] MTConnect: HTTP driver + namespace-version-agnostic parser (1.7 + 2.0) + plugin manifest - [x] App: Avalonia shell (net48;net8.0), DI+NLog, live dashboard, seed machine, start monitor - [x] Docker MTConnect mock; canned XML fixtures; integration test (docker-gated) - [x] Committed + pushed to origin/main (507753f) **Commit:** 507753f β€” `init: scaffold Junction multi-protocol machine monitor (M1 walking skeleton)`
--- *Roadmap created: 2026-07-21* *Last updated: 2026-07-21*