Commit Graph

46 Commits

Author SHA1 Message Date
jack e2ce8778e0 feat(files): sync Source panel browser with chosen save directory 2026-07-10 14:37:29 -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 ac4448ed44 refactor(backend): clean up package re-exports, settings model properties, and unused signals 2026-07-09 12:49:33 -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 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 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 e2d71662ff refactor: data_parser binary parsers use shared sensor_count_for() 2026-07-06 13:24:46 -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 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 27292c3bdb chore: cleanup
WaferMapTab stale comments + minor component fixes
2026-06-30 13:24:00 -07:00
jack 5105ab1ab6 feat(tabs): update all tab views, dialogs, and session controller 2026-06-29 14:58:10 -07:00
jack f4621f1faf feat(viz): implement RBF heatmap and custom QPainter trend chart item
Introduce Radial Basis Function interpolation for fine wafer thermal gradients and GraphQuickItem for high-performance trend line rendering.
2026-06-25 13:47:48 -07:00
jack 2cbc143c20 feat(backend): introduce session controller and status models
Implement DeviceController and SessionController to bridge QML requests with backend state, supporting playback replay tracking, cluster averaging, and slot error boundaries.
2026-06-25 13:47:21 -07:00
jack 62ce5a9c37 feat: implement DTW comparison, add data segmentation and persistence, and update QML UI for file imports and graphing. 2026-06-23 21:38:45 -07:00
jack 20a34e22ee feat: wire ReplayStatsTracker into SessionController + complete GraphView.updateTrend 2026-06-20 18:28:55 -07:00
jack 7206334a27 feat: implement slot_error_boundary decorator and add unit tests for session and device controllers 2026-06-18 21:01:37 -07:00
jack 5514653b94 refactor: prune orphaned attic modules and standardize project configurations
- Move orphaned modules (data_segment.py, contour_models.py, marching_squares.py) to attic/.
- Standardize local settings logic, serial port parameters, and graph view plots.
- Update pyproject.toml pyside6-project dependencies and configure gitignore.
2026-06-18 17:09:24 -07:00
jack 93868bcde4 feat(ui): implement save directory browse button and pre-detection check
- Add a 'Browse...' button to the Connection Status panel in StatusTab.qml.
- Check if save directory is set before wafer detection in HomePage.qml, prompting the user if empty.
- Resolve QML Connections warning by renaming onLogMessageEmitted to onLogMessage.
- Remove temporary debug stack traces from device_controller.py.
2026-06-18 17:08:58 -07:00
jack 66942d250d refactor: standardize codebase formatting, optimize import orders, and update GUI resolution to 1080p 2026-06-18 13:13:47 -07:00
jack 1119733929 feat: add interactive folder selection for CSV saves and stabilize cross-platform dependency locking 2026-06-18 10:30:51 -07:00
jack e545c245d7 feat: implement cluster averaging pipeline, UI controls 2026-06-15 15:02:55 -07:00
jack 7d32fb4b65 refactor: normalize data directory naming, and consolidate serial connection handling 2026-06-15 12:39:16 -07:00
jack b34b920759 refactor: standardize timing with monotonic clocks, remove redundant stream parsing 2026-06-15 11:37:51 -07:00
jack 2e4763510d feat(ui): improve device session management, update data directory paths, and add session clearing functionality. 2026-06-15 11:28:28 -07:00
jack 7e584e08e8 feat(visual): implement square wafer (X) template, inward label alignment, and density scaling 2026-06-15 11:20:55 -07:00
jack cea4fb782e feat(wafer): introduce layout metadata modeling and shape resolution helpers
- Define WaferLayout subclass to wrap sensor lists with shape and size attributes.
- Add resolve_shape_and_size resolver to infer wafer shape/size from filename prefix or sensor count.
- Update Sensor dataclass to support dynamic side alignments and coordinates offsets.
- Expose waferShape and waferSize properties from SessionController for QML data-bindings.
2026-06-15 11:19:32 -07:00
jack 12bd778f13 refactor: modernize WaferMapTab layout and redesign ReadoutPanel statistics display 2026-06-11 12:57:52 -07:00
jack 72334795da refactor: reorganize backend modules into sub-packages for models, data, visualization, wafer, and controllers 2026-06-11 12:15:00 -07:00
jack b9f8032203 Refactor code structure for improved readability and maintainability 2026-06-11 11:57:46 -07:00
jack b52b983bb2 Add wafer layouts and RBF heatmap functionality
- Introduced new YAML layout files for wafers B, C, D, F, X, Z, and their reversed versions.
- Implemented RBF heatmap interpolation using CuPy and NumPy for GPU acceleration.
- Created a backend module to load wafer layouts from YAML files, mirroring the existing schema.
- Developed a QQuickPaintedItem for rendering wafer maps, including sensor markers, heatmaps, and labels.
- Enhanced the drawing capabilities with concentric rings, crosshair axes, and orientation markers.
2026-06-11 11:56:55 -07:00
jack ca1a514f23 feat: Wafer Map integration
## Backend — Session & playback
- Add SessionController (QML-facing live/review controller) with
  loadedFile property for active-file highlight binding
- Add SessionModel, FramePlayer, and CsvRecorder for state machine,
  frame seek/step/speed, and CSV recording
- Add SensorEditor for per-sensor value overrides (replace + offset)
2026-06-11 11:55:34 -07:00
jack 9cd3170e8a Replay Tabs:
- Add stability detection and threshold classification features with corresponding tests
2026-06-04 13:25:11 -07:00
jack 9779baa468 Restructure into src/ layout under pygui package
Move all application source under src/pygui/ and rewire imports,
build config, and QML module path to match.
- Relocate backend/, serialcomm/, and the ISC QML module into
  src/pygui/; convert main.py into pygui/__main__.py with a main()
  entry point (run via `python -m pygui` or the new `isc` script)
- Rewrite absolute imports: backend.* -> pygui.backend.*,
  serialcomm.* -> pygui.serialcomm.* (source + tests)
- Move app icons (isc.ico/icns) into packaging/
- Update README and ISC.qmlproject to the new paths
2026-06-03 11:41:45 -07:00