summaryrefslogtreecommitdiff
path: root/AGENTS.md
diff options
context:
space:
mode:
Diffstat (limited to 'AGENTS.md')
-rw-r--r--AGENTS.md46
1 files changed, 46 insertions, 0 deletions
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..4926365
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,46 @@
+## Features to implement
+### some of the features that i want to implement next
+
+- time speed adjustment
+- pause and resume time
+- label of current real time
+- label of current plot time
+- hover tooltip for data points
+- data input system
+- multiple panels that can be toggled on and off
+ - use extension scaffolding src as example https://github.com/MoebiusSolutions/extension-scaffold/tree/main
+ - possibly use ES directly, but ideally make own system if it can be better and simpler
+- config panel
+
+## Systems - dividing up concerns in a sensible, performant, and easy-to-maintain-and-work-with way
+### my initial thinking on the concerns of different architectural components. this very well may change, and each thing does not necessarily map to its own file or even its own class.
+
+- local configuration: read a config file
+- state management:
+ - user preferences
+ - service config (websocket url, remote api endpoints)
+ - UI config (what panels acive, )
+ - database stuff
+ - plots (which attributes of which input data-type are which graph axes, current time range viewable, )
+ - data input stuff (structure of input datapoints, source, metadata)
+ - health (service connections, framerate, db access)
+ -
+- application event system (to notify of state updates)
+- rendering
+- input data processing
+- HID input handling
+ - input controller maps
+- plot handling
+- DB handling
+- disk handling
+- service handling (websockets, mqtt, HTTP REST)
+
+## Some important data structures used in the program
+
+- input actions: a set of "single action that the user can perform"
+- user input: a single event of user input via hardware like key press or click or move joystick
+- input action map: a map of "set of "user input"" => "input action"
+- ui element definition:
+
+### Notes
+- we will need a good system for state management, as the state will grow fairly large, including things like user preferences, UI config (what panels are displayed), \ No newline at end of file