jack
c76cddc5fd
feat(license): runtime trial gating UI + appendActivityLog entry point
2026-07-13 11:52:06 -07:00
jack
0e6e819851
feat(visualization): extract ring_boundaries to radial_metrics
...
- add radial_metrics: ring_boundaries + bucket_by_ring
- replace WaferMapItem inline logic with ring_boundaries()
- fix outer boundary: sensor max-hypot*1.05 (was wafer_radius_mm)
- add LicenseModel.reviewAccessBlocked() (ADR-0005 deferred)
- add appendActivityLog test
- add test_radial_metrics.py (89 lines, full edge-case coverage)
- update README: licmgr --level flag + date format
2026-07-13 10:48:49 -07:00
jack
67158ed7ab
feat(license): wafer license gate, runtime warning, and first-launch wizard
...
- Gate READ/ERASE/DEBUG behind wafer license check; log hint to load .bin
- waferRuntimeExceeded() warns when onboard runtime > 350s
- LicenseModel: remove-license (soft hide, .bin stays on disk) via
removed_licenses.txt; re-loading un-hides
- FirstLaunchWizard: 2-step popup (license + save dir) shown on first run
- Per-tab file memory in HomePage (map/graph/data don't bleed state)
- Merge test_device_controller_license into test_device_controller
2026-07-12 20:02:25 -07:00
jack
6003bde84d
feat(import): Z-wafer CSV import button with result banner
...
- importZWaferCsv slot on FileBrowser — converts and adds to list
- SourcePanel: import icon button → FileDialog → importSummary banner
(auto-dismisses after 5s, loads the converted file into streamController)
- wafer_map_item: showExtremes default → true
2026-07-12 16:54:24 -07:00
jack
7d98759b43
feat(export): batch wafer-map PNG export from file list
...
- BatchExport worker + BatchExportController (threaded, busy flag)
- SourcePanel: Export Maps button → FolderDialog → batch export
with progress/summary banner (dismissible)
- StreamControlPanel: name single export after loaded CSV + timestamp
2026-07-11 23:53:45 -07:00
jack
c26de492d7
refactor(graph): move Reset Zoom inline; color sensor name in stat strip
2026-07-11 22:30:21 -07:00
jack
35cee98579
feat(wafer-map): add threshold legend overlay and scrollbar polish
...
- Add color legend (Low/In-range/High + Auto/Manual mode)
as a floating overlay in WaferMapView
- Expose thresholdAuto on SessionController/SessionModel
to drive the legend's Auto · / Manual · label
- Style ReadoutPanel scrollbar (always-visible, 8px thumb)
and reserve 14px gap so cards don't overlap it
2026-07-11 21:57:57 -07:00
jack
f9c6639a66
fix(ui): light-mode polish — nav hover, graph theme tokens, title alignment
2026-07-11 20:50:42 -07:00
jack
9e3bec9031
feat(debug): add debug read with CSV export
...
- Parse F1 debug data via family-independent temp formula
(bits 4-14 scaled by 2**(i-8), sign at bit 0)
- Save sensor+debug temps side-by-side to debug_info.csv
- Wire READ DEBUG button in StatusActionsPanel
- Rename ReplayChart → RunChart; move into GraphTab
- Extract PanelBox/SectionTitle/PanelSlider in ReadoutPanel
to cut ~300 lines of duplicated styling
- Add rightRailWidth token to Theme for consistent rail sizing
- Wrap ReadoutPanel in ScrollView so Thresholds card stays
reachable when E-C delta rows appear
2026-07-11 18:39:29 -07:00
jack
fed4d9b590
feat: replay chart with zoomable viewpor
2026-07-10 20:54:24 -07:00
jack
4bb855a940
feat(graph): add graph tab for whole-run data
...
Provides a static line chart plotting multi-sensor temperature values
over time when a session file is loaded.
2026-07-10 20:06:48 -07:00
jack
94f917b116
feat(map): add edge-center delta stats, thickness overlay, and layout fix
...
- Add edge-center sensor pair tables and delta calculations per wafer family.
- Parse and interpolate wafer thickness CSV data for offscreen visualization.
- Refactor ReadoutPanel layout using Item + anchors to fix right-margin clipping.
- Compact E-C Delta text format to fit standard sidebar width.
- Add pytest suite covering delta calculations, layout pairs, and thickness CSV.
2026-07-10 17:32:12 -07:00
jack
25fa7507ce
feat(map): add min/max highlighting toggle and live safeguards
...
- Add "Highlight Min/Max" option to ReadoutPanel showing peak rings.
- Reset to review mode and blank wafer map when switching away from map tab.
- Disable hover highlights and sensor dialog triggers during live stream.
- Lower trendPane height and add top margin headroom for tick labels.
- Add test coverage for blanking states, toggle overrides, and interactions.
2026-07-10 16:28:55 -07:00
jack
034f13b717
feat(map): add peak highlights and live metrics to PNG export
...
- Draw rings around hottest and coldest sensors on export.
- Extend export_image to support second line for live metrics.
- Format detailed sensor stats in export footer.
- Add test coverage for footer rows, overlays, and stats.
2026-07-10 15:39:30 -07:00
jack
69753e35f9
feat(map): add batch export and adjust layout alignment
...
- Implement synchronous offscreen wafer map PNG rendering and CSV summary.
- Add "Batch Export" button to file browser sidebar.
- Adjust trend pane bottom spacer to align with About button when visible.
- Fix type check errors and add pytest coverage for batch export.
2026-07-10 15:22:36 -07:00
jack
278a48a2e4
feat(transport): editable frame field + uniform spacing
2026-07-10 14:38:12 -07:00
jack
e2ce8778e0
feat(files): sync Source panel browser with chosen save directory
2026-07-10 14:37:29 -07:00
jack
bdc667b2ed
refactor: extract StreamControlPanel and MetricRow from WaferMapTab
2026-07-09 15:16:11 -07:00
jack
b6249c2b8e
fix: added property var settingsPopup: null / property var aboutDialog: null to UtilityFooter.qml and updated onClicked to use local properties instead of utilFooter.parent.*.
2026-07-09 14:30:19 -07:00
jack
2fe8aef805
feat(ui): refine AboutDialog layout and add nav pill tooltips
2026-07-09 13:56:48 -07:00
jack
4ee139ad8f
fix: The QML cross-component id resolution for root.waferDetected was failing
...
silently. Exposing a proper waferDetected property on the Python
DeviceController ensures reliable gating, and resetting it on refresh
blocks the actions until the next successful detection.
2026-07-09 13:07:31 -07:00
jack
7b20ffa376
refactor(qml): finalize tooltip standardization and settings module imports
2026-07-09 12:50:24 -07:00
jack
ac4448ed44
refactor(backend): clean up package re-exports, settings model properties, and unused signals
2026-07-09 12:49:33 -07:00
jack
ca158a7946
refactor(qml): extract sidebar panels and data tab comparison cards to modular components
2026-07-09 12:49:10 -07:00
jack
637b51b999
fix(qml): resolve runtime reference errors, missing imports, and port change notifications
2026-07-09 12:47:56 -07:00
jack
bb9b5d709a
feat: add global ToolTip styling to HomePage
2026-07-08 00:31:46 -07:00
jack
b6903af625
feat: redesign StatusTab UI with bento-grid layout and add CSV metadata editing capabilities
2026-07-07 16:41:40 -07:00
jack
92f130b3bd
feat: implement master file configuration, UI indicators, and a Run Comparison tool for the Data tab
2026-07-07 15:05:22 -07:00
jack
1e03227788
style: increase ReadoutPanel font sizes and add CSV test fixture for data logging
2026-07-07 12:10:47 -07:00
jack
7df7fd4c6f
feat: implement C#-compatible AES-128-CBC license file parsing and integrate license management UI into AboutDialog
2026-07-07 11:15:06 -07:00
jack
e2d05d2c33
refactor: relocate live stream controls to ReadoutPanel and update chart axis rendering
2026-07-07 10:38:42 -07:00
jack
799155f249
refactor: optimize RBF heatmap performance by decoupling grid resolution from viewport size and update UI file handling.
2026-07-06 21:02:22 -07:00
jack
015642eea0
chore: apply linting fixes and expand ruff coverage to test suite
2026-07-06 15:52:53 -07:00
jack
d63332d619
feat: add load error signaling and comparison validation
2026-07-06 15:43:13 -07:00
jack
88b0214582
refactor(ui): consolidate Theme.qml tokens and replace unicode glyphs with SVG icons
2026-07-06 15:42:18 -07:00
jack
0014ccc184
fix: gate DTW comparisons on wafer type + recording category; surface load errors
2026-07-06 15:41:29 -07:00
jack
1989ba8e5a
feat: add vector icons for transport controls, implement marker hover effects, and update dialog positioning
2026-07-06 13:51:45 -07:00
jack
915720085b
refactor: StreamReader ASCII decoder uses shared sensor_count_for()
2026-07-06 13:26:03 -07:00
jack
e2d71662ff
refactor: data_parser binary parsers use shared sensor_count_for()
2026-07-06 13:24:46 -07:00
jack
52cc747536
chore: remove dead, contradictory EXPECTED_HEX_LENGTHS from DeviceService
2026-07-06 13:21:00 -07:00
jack
185e66ea3a
feat: introduce family_spec logic for wafer sensor-count partitioning
2026-07-06 13:19:47 -07:00
jack
3b919f576f
fix: comparison results never reached QML; restore click-box run selection
2026-07-06 13:12:58 -07:00
jack
f604308466
feat: rebuild Data tab compare view
2026-07-06 13:01:24 -07:00
jack
0f813b2376
chore: remove legacy GraphTab.qml component
2026-07-06 12:48:12 -07:00
jack
6996df73f8
feat: add recording toggle, stream stats UI
2026-07-06 12:44:43 -07:00
jack
3cc10ea7fe
feat: add file comparison, data splitting, and sensor modification functionality to SessionController
2026-07-06 11:58:26 -07:00
jack
ecab3d81b1
fix: resolve CSV data truncation in save_to_csv by correctly identifying column widths and remove redundant logic in ZWaferParser
2026-07-04 16:46:44 -07:00
jack
9e28a25695
refactor: implement thread-safe hardware operations, port caching, and refined state management in the device controller
2026-07-02 22:33:44 -07:00
jack
da43aeb1f6
refactor: simplify StatusTab UI layout
2026-06-30 22:15:54 -07:00
jack
0a2d6b78ba
refactor: update UI layout for wafer data display and add file browser auto-refresh on tab switch
2026-06-30 22:15:14 -07:00