Skip to content

Commit 5d265c5

Browse files
committed
Update README
1 parent bf3ef18 commit 5d265c5

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

LICENSE

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
ISC License
2+
3+
Copyright (c) 2021 Iain Collins
4+
5+
Permission to use, copy, modify, and/or distribute this software for any
6+
purpose with or without fee is hereby granted, provided that the above
7+
copyright notice and this permission notice appear in all copies.
8+
9+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15+
PERFORMANCE OF THIS SOFTWARE.

README.md

+29-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@ This release does not currently include the logic or assests developed for the p
1414

1515
_This documentation is intended for developers._
1616

17+
The codebase is split up into three parts:
18+
19+
* `src/app` — "ICARUS Terminal.exe", a Win32 application written in Go
20+
* `src/service` — "ICARUS Service.exe", a Win32 application written in Node.js
21+
* `src/web` — A web based interface developed in Next.js/React
22+
23+
"ICARUS Terminal.exe" serves as both a launcher and a shell to render the graphical interface. It creates new terminal windows by spawing itself with the `-terminal` and `-port` flags). All terminal processes exit when the launcher terminates.
24+
25+
"ICARUS Terminal.exe" uses [a fork of a webview wrapper for Go/C++](https://github.com/iaincollins/webview) which uses the Microsoft Edge/Chromium engine to render the interface. This library has been manually bundled with this project in `resources/dll`, along with a suitable loader from Microsoft.
26+
27+
There can be multiple instances of "ICARUS Terminal.exe" running - this allows you to pin multiple windows to a single screen, or run multiple windows across different screens, - but only one instance will be designated as the "launcher" window. The launcher will have a different interface to the terminal windows and is responsible for starting and stopping the background service.
28+
29+
"ICARUS Service.exe" is a self contained service, websocket server and a static webserver. All terminals connect to the service. There should only ever one instance of "ICARUS Service.exe" running at a time. The service interfaces with the game, broadcasts events to terminals and allows the graphical interface to be accessed remotely. It is invoked automatically by "ICARUS Terminal.exe" and stops when "ICARUS Terminal.exe" terminates. The web interface is written in Next.js/React and is statically exported and the assets bundled inside "ICARUS Service.exe", making it self contained.
30+
1731
### Requirements
1832

1933
To build this application you need to be running Microsoft Windows and have the following dependencies installed:
@@ -54,4 +68,18 @@ You can enable/disable debugging and skip build optimization using constants def
5468
Notes:
5569

5670
* "ICARUS Terminal.exe" depends on "ICARUS Service.exe" being in the same directory to run, or it will exit on startup with a message indicating unable to start the ICARUS Terminal Service.
57-
* For development purposes, you can also run the service in development mode with `npm run dev` and start the Terminal in headless mode with `ICARUS Terminal.exe -terminal -port 3300`.
71+
* For development purposes, you can also run the service in development mode with `npm run dev` and start a Terminal that connects to it without running the launcher by invoking it with `ICARUS Terminal.exe -terminal -port 3300`. You can also directly invoke "ICARUS Service.exe" and run it standalone.
72+
73+
## Contributing
74+
75+
I'm not currently taking code contributions (please do not raise pull requests).
76+
77+
You can fork this codebase! See the LICENSE file for details.
78+
79+
## Credits
80+
81+
The name ICARUS was suggested by [SpaceNinjaBear](https://www.reddit.com/user/SpaceNinjaBear).
82+
83+
I'd like to express appreciation to [Serge Zaitsev](https://github.com/zserge) for his work on the WebView library.
84+
85+
Thank you to all those who have written libraries on which this software depends.

0 commit comments

Comments
 (0)