icarus

ICARUS Terminal for Elite Dangerous

ISC License

Stars
162
icarus - v0.1.19

Published by iaincollins almost 3 years ago

Release Notes

This release includes major UI improvements, with support for mobile and tablet displays and improved UI scaling. The approach being used should lend itself well to development of other UI panels that are adaptable to different screen sizes and display orientations.

There is a new data transfer indicator, that in addition to indicating (by blinking) when the connection between client and server is lost, also indicates when data is being transferred by lighting up.

In this release, only logs from the last 30 days are loaded at startup. Previously all data from the last 90 days was loaded at startup, but loading only data from the last 30 days is likely to be much faster while still loading enough data to be useful.

This further change to what data is loaded is an interim change to improve startup times. Eventually data should be persisted and this won't be necessary (all logs will be loaded once at initial run and from then on, only very fast incremental updates necessary). There may still be intermediate approaches applied on a pragmatic basis until persistence is implemented - the effort is not in persisting the data, but in doing so efficiently and in a useful way that scales well and meets needed use cases.

New Features

  • Added navigation menu (only Log view enabled)
  • Added network status / data transfer indicator
  • Added support for mobile sized displays
  • Added support for tablet sized displays

Other

  • Changed to load logs from last 30 days (was 90 days) at startup
  • Improved UI scaling
  • Improved text on launcher
  • Refactored UI layout components
icarus - v0.1.18

Published by iaincollins almost 3 years ago

Release Notes

Now defaults to loading log entries from the last 90 days by default. Includes log view improvements.

Loading everything from the last 90 days is a pragmatic middle ground between only loading the most recent log file and loading everything. This will likely be revised again in future (once data persistence is in place it will be possible to import everything, once) but this provides a decent amount of utility for now without depending on other features.

New Features

  • Import all data from last 90 days
  • Improved log view

Other

  • Internal API now supports loading additional logs after startup, with the option to load everything (or specify a cutoff point). This with a view in future to supporting fast initial startup (with no delay) and an optional, slower one-time bulk ingestion that runs in the background and only incrementally hydrates on future runs.
icarus - v0.1.17

Published by iaincollins almost 3 years ago

Release Notes

Improved log browser interface with better display of log events and event details.

New Features

  • Improvements to log browser UI
  • Slightly large default window size for new terminal windows
icarus - v0.1.16

Published by iaincollins almost 3 years ago

Release Notes

You can now browse log messages. Additionally, new interface elements are now implemented.

This is the first release with something approaching meaningful functionality.

With the application scaffolding in place a framework to build on and assets imported (including a new icon library) porting features and assets is proving straightforward. While the event handling as been slightly refactored (and is not yet final; there is currently no event data persistence between reloads) functionality has so far been easy to port in from the unreleased prototype.

New Features

  • Select and browse recent log events
  • New toolbar UI
  • Implemented layouts for 3 types of panel (full, left and right)

Fixes

  • Improved loading spinner appearance
icarus - v0.1.15

Published by iaincollins almost 3 years ago

Release Notes

Added icons using the new icon font.

Using an icon font (rather than vector graphics) means that icons can have the same effects (e.g. glow, glitching) applied to them as other text.

Icon font glyphs are still vector images, but are (in practice) monotone and transparency is not supported (though it is possible to approximate it using a halftone effect). SVG images will still be used in the app (the map view, for example, generates SVGs on the fly to generate the system map) but icon buttons and some other use cases will use the icon font to allow the same special effects to applied to icons and text.

Some icons are original, some are recreations of icons seen in Elite Dangerous icons and many come from http://edassets.org (see also https://github.com/SpyTec/EDAssets).

New Features

  • Now uses icon for fullscreen button
  • Added connection signal indicator (changes to a blinking red icon when the connection is lost)

Other

  • Internal refactoring of UI components
icarus - v0.1.14

Published by iaincollins almost 3 years ago

Release Notes

Improved loading performance and improved loading UI with new statistics (log lines, file sizes) and progress meter.

New terminal view now shows a list of recent log events (and updates in real time)

IMPORTANT:

This release has reverted to loading all events to an in-memory database each time the app starts.

This takes a few seconds and uses lots of RAM and is not intended final behavior for release, but is useful for testing the performance delta between this build and previous builds, to quantify the impact of recent improvements.

The approach as we get closer to a 1.0 release will likely be a hybrid model with a small percentage of data persisted to storage (e.g. stellar cartography, system services, trade data) and the rest treated as transient events used to enrich data that is persisted; and previously imported data will persisted between app launches.

New Features

  • Improved loading performance with a range of optimizations
  • Improved loading UI with new statistics and progress meter
  • New terminal window view, with real time list of log events
  • Support for full screen mode and creating new terminal windows in Safari, Firefox and other browsers

Other

  • Internal optimizations and bug fixes to improve performance
  • Improved bulk loading mode
icarus - v0.1.13

Published by iaincollins almost 3 years ago

Release Notes

Refactored internal event handling to drastically improve load times and reduce memory usage.

This update also includes cosmetic changes to how loading status is displayed in the launcher.

The performance improvements came by selectively indexing in the in-memory database only some types of in-game event, keeping only the most recent instance of others in memory (but not in the database) and discarding other event types we don't care about entirely.

If required, further improvements could be made to performance by persisting previously loaded data to a cache on disk. If performance proves to be sufficient, given that loading is non-blocking (i.e. you can start using the app before it has finished loading and the UI continually updates as new information is loaded) implementing a persistent cache may not be necessary.

New Features

  • Improved time to load event data at startup
  • Improved memory usage
  • Cosmetic changes to loading info displayed in launcher

Other

  • Simplified event handling to reduce code/complexity of interface components
icarus - v0.1.12

Published by iaincollins almost 3 years ago

Release Notes

Terminal window now displays list of events and how many of each type found.

Terminal windows can now be launched before data has finished loading, they will update as new data is loaded.

New Features

  • Displays list of events found, sorted by number of each event type

Other

  • Refactored event loading to reduce complexity in both service and in interface components
  • Added single handle to broadcast whenever game state changes. This event is rate limited, so should not be used for message delivery but is useful for knowing that the game state has changed and that new data has been loaded.
icarus - v0.1.11

Published by iaincollins almost 3 years ago

Release Notes

Now displays count of the number of log files and events loaded in the launcher window. These update in real time as new events come in.

New Features

  • Statistics for data loaded now displayed in the launcher window.

Fixes

  • Bug fixes to file watching and event handling

Other

Release v0.1.10 is a defective build and should not be used (it will error at startup and exit with an error).

It should still auto-update to this build, but if you have any issues you may need to manually upgrade.

icarus - v0.1.9

Published by iaincollins almost 3 years ago

Release Notes

The launcher window now displays statistics for data that has been loaded.

Following the updated custom installer images in the last update - there is a new custom icon to give the app it's own visual identity.

New Features

  • Display number of log entries loaded - and JSON files parsed - in the launcher
  • New application icon

Fixes

  • Improved deferred message queue handling (when server is still loading/offline)
  • Improved event model- easier for different views to listen to events they might care about

Other

  • Developer documentation has been updated since the last release
icarus - v0.1.8

Published by iaincollins almost 3 years ago

Release Notes

New default port (3300)

ICARUS Terminal now always defaults to running port 3300, to provide for a consistent URL for remote connections.

The URL for remote network connections (from tablets, laptops, other computers, etc) is displayed in the launcher. It will be different on each system, depending on your computers local network IP address, and can be copied/pasted from the launcher window.

The number 3300 is significant as it corresponds to the in-game year when Elite Dangerous launched (the game is set 1286 years in the future).

If depending on a fixed port turns out to cause problems on some systems (e.g. because of other software using that port) it's trivial to revert the behavior of selecting an available free port (and could provide a UI to configure this) but having it be the same port every time, on all systems, would be ideal from a user experience point of view as would be the least confusing.

NB: It's still possible to override the default port by creating a shortcut to ICARUS Terminal.exe and using a command line flag to specify another port (e.g. --port=1234).

New installer branding

From this release forward there is custom branding on installation/update package.

New Features

  • Now defaults to running port 3300 at startup
  • Added branding on installation/update package

Other

  • This release also sees the introduction of a build step for creating an Elite Dangerous icon font (and React components) from SVG assets.

This is significant as a number of unique animation and effects can be applied to font assets that cannot be applied to SVG files and will make it easier to blend in effects applied to icons with other text in the interface.

I intend to both leverage assets from https://edassets.org/ and share the resulting fonts back with them / the community so it can also be used in other projects. Expect more information about this in a future update.

icarus - v.0.1.7

Published by iaincollins almost 3 years ago

Summary

When loading content (launcher, a new terminal window) a version of the loading animation embedded into the application is now displayed.

This improves perceived loading performance and reduces flicker while the UI is rendered.

New Features

  • Embedded loader is now displayed while UI (launcher, terminal) is loading
  • Launcher size is now larger to accommodate future UI
icarus - v0.1.6

Published by iaincollins almost 3 years ago

Summary

UI now powered by Next.js/React.

This is an internal change but an important feature to test.

Other

  • Implements WebSocket interface using Hooks and React Context which will be used to share state across all views
  • App versioning for dependency management, application files, installer and in user interface all managed by the version field in package.json, this ensures app versioning should always be consistent as defined in a single place for the entire application / build process.
  • Improved developer experience for interface development, with hot reloading of the interface in development mode.
icarus - v0.1.5

Published by iaincollins almost 3 years ago

Summary

New versions are now automatically downloaded and run when you choose to update to the latest version.

New Features

  • Updates now automatically downloaded and run (with appropriate privileges required)

Other

  • Improved build step for installer so that the the installer version always matches the product version. This should mean the installed application version is correctly displayed in Windows Add/Remove programs.

Known Issues

  • No progress is displayed during the download phase, though the application is only 20 MB in size so typically this should only take a few seconds at most. This user experience is likely to improve when the update check is integrated into the launcher UI in a future update.
  • Updates are not silent and still require you to confirm the update in the installer window that is displayed. This is not likely to change anytime soon due to a number of side effects and additional work that would be required to ensure a smooth user experience that wasn't confusing in edge case scenarios, without compromising on security or using an alterative commercial installer (and/or a fully custom updater).
icarus - v0.1.4

Published by iaincollins almost 3 years ago

Summary

The application exits if an update is download.

New Features

  • The application exits if update is download, which avoids the update displaying an error until the application is shutdown.

Other

  • Added credit for loading animation
  • Build process improvements

Known Issues

  • Updates are not automatically applied (users must run the installer to apply the update), this may also not be obvious that this is happening (depending on the users browser). The installer needs to run with escalated pillages and investigation is needed to determine if this can be resolved by code that invokes it or if refactoring the installation/update mechanism will be required.
icarus - v0.1.3

Published by iaincollins almost 3 years ago

Summary

The installer now checks for Microsoft Edge WebView2 Runtime at installation time and automatically installs dependencies that are required - this means the application will work out of the box on systems that don't have Microsoft Edge installed.

New Features

  • Improved installer - now checks for and installs missing dependencies

Fixes

  • Includes a fix for a bug that caused the update check to run twice at startup

Other

  • Scaffolding for Next.js/React UI
icarus - v0.1.2

Published by iaincollins almost 3 years ago

This prelease build is not intended for production use.

There is no meaningful functionality in this release.

This release is being tagged up as a production release in order to facilitate testing of the upgrade mechanism.

This build improves the behavior of checking if a new version is available.

icarus - v0.1.1

Published by iaincollins almost 3 years ago

This prelease build is not intended for production use.

There is no meaningful functionality in this release.

This release is being tagged up as a production release in order to facilitate testing of the upgrade mechanism.

This version should automatically check for new releases at startup and provide the option to download a new release.

This is a crude initial implementation to test release integration and is not intended to be the final behavior.

icarus - v0.1.0

Published by iaincollins almost 3 years ago

This prelease build is not intended for production use.

There is no meaningful functionality in this release.

This release is being tagged up as a production release in order to facilitate testing of the upgrade mechanism.