0.2.0-beta.1
Pre-release
Pre-release
github-actions
released this
09 Dec 19:29
·
348 commits
to main
since this release
This version introduces a major rewrite of Boson. The vast majority of the code has been rewritten from scratch, although the overall functionality is not significantly changed.
Breaking changes
- The configuration file for this new version is substantially different. Boson may not work properly when opened with an old config file. After opening this new version, immediately open Preferences, go to Interface, and click on the button to reset the configuration. Then restart Boson.
- If that doesn't work, or Boson refuses to open at all, manually remove the file
~/Library/Application\ Support/boson/config.json
.
General
- Critically, the app does not seem to crash when packaged after a certain time running. Memory and CPU use seem to have improved.
- The package now uses electron-react-boilerplate. This seems to work better than the previous CRA boilerplate; bundle size is smaller and enough Webpack configuration is exposed that it's possible to optimise certain aspects of the app.
- The tron-related class and tools have been significantly rewritten, in particular the way listeners are registered. Connection and authentication has been cleaned a bit, and there is now a
connectAndAuthorise()
higher lever tool that is use by the renderers. - It's now possible to connect to tron without authentication (port 6093).
- A list of keywords defined in the configuration file are tracked and their last value kept in memory. When a window subscribes, if the value is known it is returned internally; otherwise a
keys getFor
is used. This limits the number of cases wherekeys
is needed and avoid flooding the log windows when a new window opens. - The IPC interface has been slightly modified, although most access points are the same.
- The configuration has been split between
default.json
anduser.json
. Only the latter is loaded and modified in the store. The IPC storeget
method has different option to access the default value, user one, or a merged combination. - The colour scheme has been modified. Discord colours and styles has been used for inspiration.
- Window position and size saving has been improved.
Main
- The main window now handles the connection to tron and shows the authentication status, connected details, elapsed time, etc.
- Reconnection has been improved. Now the code will keep trying to reconnect unless the authentication fails due to a bad password. In that case a dialog will be shown to set the new password.
- A sidebar provides access to the most used windows.
- The TCC interface has been removed for now.
Preferences
- The preferences has been fully rewritten.
- The
Connection
tab allows to define the connection parameters and reconnect. A series of profiles for direct or tunnelled connections are provided and can be made active easily. Profiles can be added and edited. - The
Interface
tab allows to set the theme mode, clear the user configuration, and determine how windows are saved.
Log window
- The log window has been redesigned although the functionality is the same. It's still possible to filter by actor, message level, and text. When search text, it's possible to limit the results to matched text, and use regex.
- The history scrolling has been fixed.
- Sticking to bottom now seems to work better and it's not necessary to have a dedicated button to stick to bottom. This is accomplished by expanding the height of the viewport that is considered "at bottom" to 400 pixels. That means that sometimes if one scrolls up only a bit, that won't be enough to stop the viewport from scrolling back to bottom on a new message. The height may be adjusted in the future. Note that the window may still in rare cases stop following the stream of messages. That can happen normally if a lot of messages arrive at the same time or, more usually, when the filter settings are changed.
- The buffer is better handled and a lot of work has gone into making sure no extra re-renders in the viewport happen. Still, the CPU usage of the log windows is substantial, but that may be an unavoidable consequence of the virtualisation library used.
- The viewport is only updated every 500 ms when the buffer is not empty. This reduces the number of re-renders and some of the visual instability.
- Only the last 50,000 messages are kept to reduce memory use.
CmdStarted
andCmdDone
are colourised to indicate when a command starts/end.
Snapshots
- Snapshots have been redesigned but most of the functionality has not changed.
react-pdf
has been updated and it's no longer necessary to to pre-packaging gymnastics for it.- Zoom is now controlled by a slider.
- Previous configurations can by accessed by clicking on the file name on the header; that opens a select menu.
- A snackbar at the bottom shows whether the FPS is folded, moving, configured, or locked.
Guider
- The guider window has been redesigned but most of the functionality has not changed.
- JS9 scripts are dynamically loaded only for the Guider window. Memory use seems better, but GPU memory use when the window is open is high.
- JS9 is copied to the built application at the Webpack configuration file level (see
.erb/configs/webpack.config.renderer.dev.ts
and.erb/configs/webpack.config.renderer.prod.ts
) - Select menus have been replaced with buttons that show menus on hover.
- A reset button has been added that resets the pan, colour levels, and zoom.
- The exposure time indicator has been slightly improved.
- Some bugs related to the applied scale, colour map, and scale limits have been fixed.
- The expose and guide buttons now track the exposure state even if the command has not been started by that window/user. A user can cancel the guiding started by a different user.
HAL
- HAL has been cleaned up a bit but overall not changed. That means that some known bugs are still there, and the design doesn't fully match the rest of the app.
Caveats
- Autoupdating the app has been disabled. It never worked properly and more work is needed to make it reliable. For now just download new versions here.
- The number of log lines kept cannot be configured yet in Preferences.
- The wrap line feature in the Log has not been added back, but it's probably ok since we are not setting the height of each line as a fix value.
- In Snapshots, when the window reopens, only the last two configurations can be navigated. In the future tron will internally keep a list of all the seen values for a keyword in certain cases.
- In Guider, the exposure bar does not show the remaining time.
- In Guider, in some rare cases the JS9 divs may not load. Reopening the window solves that. I have not seen this in the packaged app, so it may be a development mode issue.
- Weather, TCC, LCO Lamps, and Keywords have not been added back for now.
- Commands started in HAL by one user won't yet be seen as started by a different user. This is a high priority for the next version.