54 Commits

Author SHA1 Message Date
Sebastian 7aa65a022a refine keymap (#1025) 2026-05-06 03:42:24 +02:00
Sebastian 342dadda09 refine keymap (#1007) 2026-05-01 21:01:19 +02:00
Simon Klee a10e71c9bf chore(three): move three-related code to separate package (#994)
I moved examples to packages/three. When we add a separate
packages/examples i'll merge it in again, but just keep it simple for
now.

Close #408
2026-04-30 11:01:13 +02:00
Simon Klee b91b3636f7 deps: update diff to 9.0.0 and jimp to 1.6.1 (#989)
Close #988
2026-04-29 11:46:10 +02:00
Sebastian 2a90ba9f59 fix example standalone build (#986) 2026-04-28 16:09:06 +02:00
Sebastian f1c511780e Keymap (#983)
See `docs/keymap/overview.mdx` for details.

---------

Co-authored-by: Simon Klee <hello@simonklee.dk>
2026-04-28 02:10:37 +02:00
Sebastian d030397901 Setters for line number gutter colors (#894) 2026-03-29 23:19:12 +02:00
Simon Klee 2f17b8f0c3 core: refactor/fix renderer api options (#851)
Cleaned up CliRenderer config by replacing overlapping renderer flags
with explicit modes.

The current config uses useAlternateScreen, useConsole, and
experimental_splitHeight. That setup makes it hard for you to tell:

- where the renderer draws
- whether it captures stdout or passes it through
- whether the console overlay is enabled

This makes it explicit:

- screenMode: alternate-screen | main-screen | split-footer
- externalOutputMode: capture-stdout | passthrough
- consoleMode: console-overlay | disabled

Goal is to make CliRenderer configuration simpler and easier to
understand. It replaces implicit flag combinations with explicit modes.

It's a breaking API change, obviously.
2026-03-29 10:54:31 +02:00
Simon Klee 6d5d25afda Switch tsconfig to NodeNext module resolution (#855)
Prevent regressions where extensionless imports break consumers using
NodeNext
or Node's ESM loader.

tsconfigs override back to "bundler" because bun-ffi-structs and
bun-webgpu
don't export NodeNext-compatible types yet.

Change this once @kommander fixes upstream. I think we can merge this pr
now and update the last things once you've updated upstream.

Close: #843
2026-03-24 11:32:43 +01:00
Sebastian 2b8ab9b3ff improve external plugin/module resolve for oc (#831) 2026-03-19 16:52:00 +01:00
Simon Klee 9f72c33592 paste: carry raw bytes instead of decoded text (#801) 2026-03-13 17:06:09 +01:00
Johannes Schickling cb3f930e08 fix: add .js extensions for NodeNext module resolution (#614) 2026-03-12 15:45:55 +01:00
Sebastian 63df8307a8 Plugins (Slots) (#774) 2026-03-12 12:03:20 +01:00
Sebastian 5ccd87659f Time to first draw measurements (#790) 2026-03-08 00:45:40 +01:00
Sebastian 35a6a89ff8 fix multiline paste viewport/scroll margin behavior (#582) 2026-01-24 18:25:24 +01:00
Sebastian Herrlinger b4ec1d390e solid truncation example and exit fix 2026-01-16 00:28:08 +01:00
Jens Rømer Hesselbjerg b6fcb68f76 Fix(solid/examples): line-number-demo type errors and hidden header (#508) 2026-01-11 21:56:34 +01:00
Sebastian faaa6912be support rendering OSC8 hyperlinks (#447) 2025-12-27 20:32:53 +01:00
Sebastian 95075c3a82 diffs (#358) 2025-11-29 02:23:31 +01:00
Sebastian 802fba13cd introduce line number renderable and expose text wrap info (#350) 2025-11-27 00:41:42 +01:00
Adictya 5e41a034a8 feat(core): allow configuring cursor style fixes #257 (#267)
Fixes issue #257
2025-11-05 15:01:07 +01:00
Sebastian 4aeb84e629 use kitty keyboard by default when available (#259) 2025-11-03 16:12:40 +01:00
Sebastian 3a9be39cd7 rework placeholder to be fully visual only (#241) 2025-10-28 01:47:33 +01:00
Sebastian 63abf532eb simulate extmarks and make textarea usable for opencode (#233) 2025-10-26 23:11:34 +01:00
Sebastian 2822f5091a Textarea (#224)
reworked all text handling and rendering
2025-10-22 12:06:54 +02:00
Sebastian 169872019f Fix renderable.add with index (#222)
Now delegating to and using similar logic as `insertBefore`
2025-10-21 17:30:41 +02:00
Sebastian Herrlinger 63d6b70d34 add scrollbox.scrollAcceleration setter to allow override in solid 2025-10-08 23:11:13 +02:00
Sebastian a8fe63ce2f feat(core): Code Highlighting (#191) 2025-09-30 21:06:48 +02:00
Sebastian 9d06e8e4a3 Allow preventDefault on global key handler to not trigger focused renderables (#182) 2025-09-24 17:53:36 +02:00
Adictya d06b64fac6 Feat(solid): improve useTimeline hook (#181)
Co-authored-by: Sebastian Herrlinger <hasta84@gmail.com>
2025-09-24 14:02:25 +02:00
Sebastian 8d3a92523c Support for Bracketed Paste (#177)
Note: The input renderable/element does not automatically insert pasted
text. Needs to be captured and inserted. The input renderable will be
backed by an EditBuffer soon that will handle paste properly. Check the
solidjs input demo on how to hook it up.
2025-09-22 21:36:17 +02:00
Sebastian a62d36a1fb Solid test coverage (#167) 2025-09-17 10:10:07 +02:00
Adictya 85eb52b6a8 Add b i em strong and br primitives to solid (#161) 2025-09-14 12:53:37 +05:30
Ben Chidlow d3cd107458 Fix text node rendering in Solid (#155)
https://github.com/user-attachments/assets/161493a4-1e47-4c25-98de-b70e67fdcb07

Adds `<span>` element
Makes it so only `<text>` can have text

You can no longer used styled text directly in the renderer, you must
use span. This can be fixed later
2025-09-12 16:38:07 +08:00
Ben Chidlow 5bea98977b Update scroll examples to use solid-isms (#154)
Updated solid scroll examples to use solid-isms like For and Index
Added an Index demo
2025-09-11 14:10:13 +08:00
Sebastian Herrlinger 6c89763c0a sticky scroll 2025-09-10 22:59:49 +02:00
Sebastian Herrlinger d99671e0c6 2-pass render 2025-09-10 19:36:20 +02:00
Sebastian Herrlinger e581e5f322 allow styled text as TextNode children 2025-09-10 09:29:31 +02:00
Sebastian Herrlinger 4330ea8dbc reduce text-buffer mem usage significantly + prepare for text tree 2025-09-08 23:51:20 +02:00
Ben Chidlow f84b2dfe3e Fix solid renderable lifecycle issues (#147)
Fixes issue with solid reusing old nodes in list arrangement. This
should also make things more performant.
Fixes issue where parents where destroying themselves instead of their
children first, leaving dangling children.

---------

Co-authored-by: Adictya <aditya.26101@gmail.com>
2025-09-08 23:48:25 +02:00
Adictya 96f64ef018 Fix solid not anchoring to text chunk correctly (#140) 2025-09-05 22:50:42 +05:30
Sebastian Herrlinger c3c70dc1e8 scroll box auto scroll on selection 2025-09-05 18:43:14 +02:00
Matt Simpson 1734c322d5 fix: add reactive scroll properties (#133) 2025-09-03 23:16:52 +01:00
Adictya 1264864407 Add ScrollBox to SolidJs (#132) 2025-09-04 01:44:24 +05:30
Matt Simpson f16d321917 feat(solid): add extend ability to align with @opentui/react (#113) 2025-09-01 06:19:58 +01:00
Sebastian Herrlinger b4dbcf4710 remove Group renderable in favor of Box (default no borders) 2025-08-29 12:48:35 +02:00
Sebastian 81e8952d1e Almost full unicode (#90)
- Supports graphemes in native `OptimizedBuffer` and `TextBuffer`
- adds the `zg` dependency for the zig build, to iterate grapheme
clusters and measure their width
- Adds terminal capability detection, currently using explicit width
when available and setting preffered `WidthMethod`
- Cursor state is now Renderer scoped, not global anymore
- In ts `OptimizedBuffer` and `TextBuffer` now need a mandatory width
method value (will be taken from the renderer in most cases, as the
renderer holds the capabilities for the terminal)
- Refactors `Renderable` constructor to now take a `RenderContext` (the
renderer implements this context), moving the `id` into options and
making it optional to use a custom id.
- Made react and solid reconcilers `RenderContext` aware
- Fixes a mouse capture bug where renderables would not be draggable
anymore after dropping

Note: There are still known issues with unicode/grapheme rendering
across terminals, help wanted.
2025-08-27 14:57:31 +02:00
Matt Simpson d40c124a5b fix: fallback to default values when properties undefined (#73) 2025-08-25 11:29:31 +01:00
Adictya 7ffbbb147f Fix solid text breaking due to Immutable styled text (#49) 2025-08-20 15:44:34 +02:00
Adictya bd8179439e Prettify solid (#46) 2025-08-19 19:59:38 +02:00