summaryrefslogtreecommitdiff
path: root/AGENTS.md
blob: 4926365bc8b9da1bf9a245f0ea6dcf99e06e668c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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),