Commit Graph

46 Commits

Author SHA1 Message Date
Alexander Heldt
dc7af935ec Replaced Node.content with Node.heading 2025-12-26 11:53:08 +01:00
Alexander Heldt
0c4c085dd0 Add ability to switch View 2025-12-25 19:50:05 +01:00
Alexander Heldt
a3c5c203f1 wip set view 2025-12-25 17:51:32 +01:00
Alexander Heldt
0ef94d7c89 Key handling is state aware
By forwarding all `Key`s to the agent and allow it to decide what should
be done, instead of converting the `Key` to a `Control` and then decide
what should be done
2025-12-25 17:49:34 +01:00
Alexander Heldt
9d54495a4b Update search when Backspace is received 2025-12-21 17:11:36 +01:00
Alexander Heldt
95eaeb60f4 Layout consist of multiple Views 2025-12-21 13:21:14 +01:00
Alexander Heldt
ed69566f6f Plot layout on a grid
Redraw all x,y coordinates on screen Instead of using ANSI codes,
to be avoid clearing the screen which introduces flickering in TMUX
2025-12-20 14:05:25 +01:00
Alexander Heldt
b5965360eb Rework Layout
To be a based on a dictionary, where each node child is just a key in
the dictionary and the value is the node itself
2025-12-11 20:42:49 +01:00
Alexander Heldt
4752ce418b Move render_layout to layout module 2025-11-30 11:53:27 +01:00
Alexander Heldt
df9160b932 Don't prefix internal modules 2025-11-30 11:53:25 +01:00
Alexander Heldt
f9d7b573ac Simplify logging
To avoid having to pass around a `Subject`
2025-11-30 11:50:46 +01:00
Alexander Heldt
8134f7c3d6 Log dimension updates 2025-11-29 16:52:07 +01:00
Alexander Heldt
661b8f5e82 Update Layout.{width, height} on interval 2025-11-29 16:49:02 +01:00
Alexander Heldt
82a8800362 Remove unused fn ui.print 2025-11-29 15:22:39 +01:00
Alexander Heldt
1d12f46d2c Use logger 2025-11-29 15:06:24 +01:00
Alexander Heldt
610967b7be Add logging module 2025-11-29 15:06:15 +01:00
Alexander Heldt
0877344a94 Monitor musicplayer actor and stop main process when actor stops 2025-11-29 14:59:49 +01:00
Alexander Heldt
dd9468938d Simplify input capture
Instead of "injecting" characters into the input stream, the input
stream is now forwarded to the `musicplayer`. It has will have to
decide what to do with the stream, e.g. by setting the "mode" to
something that captures the input stream and acts upon it
2025-11-28 23:35:31 +01:00
Alexander Heldt
35d331a753 Update documentation 2025-11-25 21:02:35 +01:00
Alexander Heldt
34ff51881f Add Search section 2025-11-25 20:50:13 +01:00
Alexander Heldt
91eab4e454 Add Header section to layout 2025-11-25 20:49:40 +01:00
Alexander Heldt
649fbf1c87 Continuously forward Key to musicplayer on one subject
And remove any `input_introducer` markers to allow sections
like `Search` show the "clean" input stream
2025-11-25 20:46:47 +01:00
Alexander Heldt
c90f4716f4 Remove redrawing on tick from ui
The `musicplayer` will update the state as needed,
e.g. on an interval
2025-11-25 20:41:57 +01:00
Alexander Heldt
fdfd44017f Add Layout and ability to render its tree
Both on update events from `musicplayer` but also on interval
2025-11-23 18:57:16 +01:00
Alexander Heldt
008566c87f Use time.to_duration_string 2025-11-23 18:54:14 +01:00
Alexander Heldt
e746bfafcf Add time module with to_duration_string
Which turn a float into a `mm:ss` string
2025-11-23 18:52:01 +01:00
Alexander Heldt
26d9985a38 Add ui module and ability to update its state 2025-11-23 10:11:21 +01:00
Alexander Heldt
7d20bdad53 Add musicplayer module that wraps all logic 2025-11-23 10:06:33 +01:00
Alexander Heldt
d01b6d3f18 Move all code into musicplayer module 2025-11-22 19:03:49 +01:00
Alexander Heldt
249b0671e4 Extract reading of input i/o to input
And add the ability of other modules to listen to either
the final result (a `Key`) or tap into the input as it is read
2025-11-21 20:06:39 +01:00
Alexander Heldt
b69852f7ba Add ability to listen (tap) the input
By doing something like
```
fn input_output_loop(input_output: Subject(List(String))) -> Nil {
  let output = process.receive_forever(input_output)

  echo output

  input_output_loop(input_output)
}
```
2025-11-19 18:27:30 +01:00
Alexander Heldt
3f86b881c3 Add ability to inject characters into the input 2025-11-19 18:27:30 +01:00
Alexander Heldt
fee776b352 Add ability to create character sequences as Input 2025-11-19 18:27:30 +01:00
Alexander Heldt
78cc3647c7 Correct io_get_chars comment/documentation 2025-11-19 17:46:58 +01:00
Alexander Heldt
1c47a84750 Extract mpv/key to input
To separate the concern from `mpv`
2025-11-18 18:39:20 +01:00
Alexander Heldt
417b5a2559 Add ability to get playback-time 2025-11-16 16:23:16 +01:00
Alexander Heldt
94212996d2 Map Key to Control 2025-11-16 16:21:54 +01:00
Alexander Heldt
702313eac2 Restructure mpv/internal package 2025-11-16 16:04:06 +01:00
Alexander Heldt
ebdba09bc2 Remove unused Reason.Overflow 2025-11-16 10:40:03 +01:00
Alexander Heldt
c9931ff4d9 Remove unused Key.Empty 2025-11-15 14:31:46 +01:00
Alexander Heldt
bc5297196e Add ability to listen to input 2025-11-15 14:23:56 +01:00
Alexander Heldt
1dcbff3e22 Move echo_server to tests 2025-11-14 19:11:42 +01:00
Alexander Heldt
a1971693ef TCP echo server 2025-11-14 18:41:29 +01:00
Alexander Heldt
28b29d3dbf Send some messages 2025-11-14 18:39:51 +01:00
Alexander Heldt
77f441dea4 Add tcp module 2025-11-14 18:39:23 +01:00
Alexander Heldt
8bbfae4592 Light of day 2025-11-10 08:44:27 +01:00