v4.1.0
Overview: A ton of tiny improvements and bug fixes over 4.0.8
. A new upload that works for arbitrary directories. A completely redesigned UI. Many explanations inside the configuration tab. More user-friendly logs tab. Error email with any SMTP provider (not just Gmail). Buttons to test Pyra parts from the UI. Enriched activity history. Links to issue tracker and docs in UI.
Details
Code Quality Improvements:
- Now using Pydantic objects instead of TypedDicts and stricter types: #174, #122
- Refactor Helios code #194
- Merge persistent and temporary state into one object: #190
- No longer keep info logs (just the debug logs). Write log lines to archive right away. Only keep the last 5-10 minutes of logs in the debug log file to decrease system load and UI parsing logic: #189
- The UI now parses the loaded state and config using zod (https://zod.dev) for better runtime type safety. It sends error notifications if the parsing is unsuccessful but can display logs, nevertheless.
- Remove many UI loading states in favor of using
toast.promise
fromreact-hot-toast
(https://react-hot-toast.com/docs/toast#advanced) - Add a central UI hook that prevents multiple CLI commands from being run at the same time
Core Improvements:
- Prevent failing modules from blocking other modules from executing when there is no dependency between them: #173
- Add more links to PLC documentation: #172
- Add power cycle for the camera at midnight: #179
- Make the error email server configurable (still supports the Gmail one): #191
- Store GPS and Sun Elevation in state and render them in UI: #26
- Log current sun angle: #192
- In error emails, send debug-logs instead of info-logs: #183
- Save data from TUM PLC in files: #201
- Do not start measurements when PLC indicates rain: #203
- Fix bug in CLI when force-closing cover: #207
Opus Improvements:
- If we have the info about the cover angle, only run the Opus Macro when the cover is open: #198
- Fix Pyra launching multiple Opus windows: #202
- Possibly fix DDE errors due to multiple OPUS windows: #155
Helios Improvements:
- Showing the current Helios images in the UI: #199
- Add a minimum time between Helios decision changes: #195
- Add more log lines to clarify buffer logic: #178
- Make Canny filter threshold and target pixel brightness configurable: #200
Upload Improvements:
- Refactor the Upload: Now supports arbitrary directories: #193
- Do not run upload when measuring: #177
- Make upload work for datalogger files: #92
- Improve the observability of the upload process: the UI now has a dedicated logs filter for upload logs, and the logs are more verbose now: #116
CamTracker Improvements:
- Deal with large CamTracker files by only reading the last few lines: #107
- Add two more checks for a possible restart to detect whether CamTracker is stuck at initialization: #184
UI Improvements:
- The UI can now be used when the core is not running
- Divide logs into four categories: main, helios, upload, ui
- On file text inputs, add a button to show the parent directory in the File Explorer: #171
- Add button to copy
config.json
: #182 - Show long error messages in UI instead of printing "details in console": #196
- Add buttons to test upload and emailing: #120, #109
- Add buttons to test OPUS and CamTracker connectivity: #204, #205
- Fix the "config has changed" popup: #106
- Add links to documentation and issue tracker: #163
- Improve the activity history: #188
- Improve the design of everything: #175
- Debug notifications: #34
Sneak Peek
The two tabs, "overview" and "automation" from 4.0.8, have been merged into one overview tab. The new activity history and system status show more information. The measurement status is more apparent now (big green/gray bars).
Before:
After:
The config now explains all non-obvious settings. OPUS, CamTracker, Upload, and Error Emails have a self-test that can be run from the UI. The navigation bar has links to the issue tracker and the documentation (top right).
Before:
After:
The logs tab navigation has been improved so that each thread's logs can be seen separately.
Before:
After: