198 Commits

Author SHA1 Message Date
2bb8b2d4e8 Remove float cast (#900) 2025-06-07 20:54:12 -04:00
8d688fa304 Add module-info files (#886) 2025-05-15 03:55:54 +00:00
17af3ead14 Renderers now take Terminal.Capabilities directly (#856) 2025-04-11 03:14:38 +00:00
07f150d9a6 Move terminal binding and policy behavior to helper (#855) 2025-04-11 02:28:23 +00:00
5df5e316c9 Rename terminal.kt to TerminalState.kt to reflect its content (#854) 2025-04-11 02:08:16 +00:00
8e1778e2db Some terminal docs, naming changes, and shuffling (#839) 2025-03-28 16:19:22 +00:00
cd8f78e70e Detect Kitty text sizing protocol (#835) 2025-03-26 11:25:23 -04:00
e45021fc1f Check underline when decided to emit a reset (#831) 2025-03-25 19:07:30 +00:00
4b40ca742a Expose terminal name (#828) 2025-03-25 16:22:46 +00:00
83a7d0c2f3 Create Terminal.Theme, and use Terminal.Size more (#815)
The ternary theme more accurately models our knowledge, and the size propagates both cell and pixel values.
2025-03-21 04:10:01 +00:00
cbcdc3487a Always go raw, but add a policy to skip TTY binding (#814) 2025-03-20 23:42:16 -04:00
52916d2f4a Rewrite POSIX Tty to actually use the TTY (#805)
And a PTY for testing. Windows still uses stdin/stdout for now.
2025-03-19 20:27:29 +00:00
545aba57bf Bring back Kitty underlines! (#806)
The difference in UnderlineStyle as opposed to Color and TextStyle was that it had a private constructor. Changing that to internal like the others avoids the compiler bug.
2025-03-18 16:49:55 +00:00
bedc15ea34 Remove pointless inline (#804) 2025-03-17 16:44:35 +00:00
e82432b11f Hide Kitty underline APIs which indirectly break native (#803)
Also disable partial linkage which hid this problem for two weeks.
2025-03-17 14:50:44 +00:00
01f5a6132e Expose all events on Termainl (#798)
Do not use a channel to communicate between the parser and the state machine. Process directly, and then forward all events to the channel.
2025-03-16 03:19:27 +00:00
a9441cc34f Eliminate terminal event package (#795) 2025-03-15 03:57:21 +00:00
ad9a59223f Add Tty.reset API (#789)
Allows reusing the bound Tty after useAsTerminal, or to just skip freeing resources if the process is exiting.
2025-03-13 15:42:37 -04:00
0350c20416 Rename terminal state aggregate type to avoid conflict (#788) 2025-03-13 18:28:45 +00:00
d77614b518 Split Terminal API from TTY Terminal implementation (#785)
This fixes the public API problem in the runtime.

Expose a TestTerminal from the testing library as well.
2025-03-13 15:30:10 +00:00
423ba21f8c Push terminal feature detection into terminal library (#784)
This starts to provide a high-level terminal abstraction. It's not perfect, but it's good enough to start with.
2025-03-13 04:34:30 +00:00
8cee1568ae Move static to root package (#778)
It no longer depends on UI things.
2025-03-07 14:26:49 +00:00
c38c09d8bc Create new static logging system (#777)
`Static` function is now called `StaticEffect` to better indicate that it only renders its content once.

`LocalStaticLogger` composition local provides access to `StaticLogger` which allows logging plain strings at arbitrary points for inclusion in the next frame. This can be used from effects, callback, state classes, etc.
2025-03-07 00:56:46 -05:00
667921777c Inline a single-use private function (#775)
Also reference the clock directly instead of needing to look it up from the coroutine context.
2025-03-07 04:04:20 +00:00
3fca635464 Remove trailing spaces when drawing canvas content (#439) 2025-03-04 04:38:24 +00:00
d26b4e7b3c Remove redundant parenthesis (#766)
An excellent change. Top notch.
2025-03-03 14:40:15 +00:00
8957294eff Add support for Kitty underlines (#765) 2025-03-02 06:47:20 -05:00
e0510403d3 Remove renderMosaic (#762) 2025-03-01 04:27:22 +00:00
3c1458fbcb Do not repeat APIs from Tty (#758)
These are lower-level, so you can go down to get them.
2025-02-28 20:26:56 +00:00
9e6127b4e6 Remove errant newline left in (#746)
Move it and the bootstrap logging behind a constant boolean.
2025-02-26 04:38:00 +00:00
f039345ce4 Remove dedicated test-only path with different responsibility split (#745) 2025-02-26 04:16:52 +00:00
1d6a300bb8 Upgrade to Kotlin 2.1.20-RC (#734)
Use the new application plugin replacement.
2025-02-24 17:02:18 +00:00
0da5a4459d Split input callback from implementation (#729)
In preparation to separate these layers.
2025-02-24 03:56:43 +00:00
4461277809 Eliminate useless Tty type (#728)
I want the name for renaming PlatformInput.
2025-02-23 16:53:23 +00:00
915d5ce41a Move raw mode enabling to platform input (#723) 2025-02-23 06:10:14 +00:00
1f78d959ce Query for Kitty underline support (#715) 2025-02-20 15:29:29 +00:00
c7e1a32710 Enable debug rendering at runtime (#714)
Set MOSAIC_DEBUG_RENDERING=true env var.
2025-02-20 02:58:39 +00:00
a12a2d928e Do not emit ANSI reset when level is none (#712) 2025-02-19 20:10:35 +00:00
d601be5e6a Perform rudimentary ansi color level detection (#711)
There is a lot to add here, but this gets us off the ground.
2025-02-19 00:51:01 -05:00
de15cc8699 Map all the keys on my keyboard (#710)
After this I cannot get it to crash.
2025-02-19 03:30:18 +00:00
e56a6f3847 Clear line before rendering to avoid deleting final character (#706)
When a row writes into the last column, the cursor stays in that position. Clearing the remaining line from that position has the potential to delete the final character. Instead, clear the line before rendering it. This may cause partial row flickering for terminals which do not support synchronized rendering, but that's an okay trade-off.

Additionally, use more efficient ANSI to move the cursor up and to clear the remaining lines.
2025-02-18 18:21:29 +00:00
82bd8277e8 Add more capability detection to startup (#702)
Kitty notification and pointer shape.
2025-02-18 05:29:37 +00:00
fd2b22e562 Run startup bootstrap in the main event loop (#700) 2025-02-16 13:32:11 +00:00
fb6846061f Correct range for function keys (#699) 2025-02-15 15:47:37 -05:00
93cccf14ff Add focus and theme to Terminal, make cursor and sync conditional (#696) 2025-02-15 14:50:17 -05:00
cc31d49df5 Switch to our own terminal library (#695)
* Switch to our own terminal library

This handles raw mode, VT parsing, and other system integration.

* Docs needs native libraries now

* API dump

* More test hacks

* Formatting
2025-02-14 14:44:52 -05:00
26765723a2 Drop Jansi, use Mordant for output (#692) 2025-02-14 15:37:13 +00:00
12ffc47444 Inject keys and terminal state into Mosaic (#691) 2025-02-13 16:23:23 -05:00
3b8a8aa718 Use our own env var lookup (#686)
Reducing Mordant reliance in preparation to switch to our own raw mode mechanism.
2025-02-07 21:28:35 +00:00
5e9d382466 Put a delay in LaunchedEffect test (#680) 2025-02-05 08:17:05 -05:00