yves-biener
5831a8e2d2
mod: non blocking read of stdin regardless of raw mode option
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 11m42s
2026-06-03 22:50:24 +02:00
yves-biener
cb262aa51f
mod: use unbuffered streaming writer for TUIs
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 15m36s
2026-06-03 17:39:11 +02:00
yves-biener
24a08e0e62
mod: bump zig version to 0.16.0
2026-05-19 23:08:32 +02:00
yves-biener
bdf58f5102
mod(example): direct rendering "q" to quit
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 2m58s
2026-05-09 20:59:24 +02:00
yves-biener
312fbedf4c
mod(renderer/direct): buffer and flush screen output accordingly
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 2m31s
2026-04-02 09:53:37 +02:00
yves-biener
b39d4326be
mod(app): remove interupt method, merged with stop
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m13s
2026-02-13 13:27:58 +01:00
yves-biener
0bb91cab0d
mod(app): SIG.INT handler for Ctrl-C which issues a .cancel event
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m28s
2026-02-02 21:28:21 +01:00
yves-biener
6781c43fcc
add(renderer/direct): write newline function to align view if necessary
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m8s
2026-01-27 15:33:35 +01:00
yves-biener
eb36c7c410
fix: correctly read inputs from *stdin* when not using *raw mode*
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m6s
2026-01-23 12:44:48 +01:00
yves-biener
4441f1b933
feat(app): event line provides entire line contents as a single event; add(event): .cancel event
...
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m5s
Introduce `.cancel` event that is fired when the user sends EOF
in *non raw mode* renderings. The event `.line` now sends the
entire line (even if larger than the internal buffer) but requires
now an `Allocator`.
2026-01-22 08:56:12 +01:00
yves-biener
39fb8af174
fix(app): do not reset remaining bytes after reading
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m15s
2026-01-22 07:15:46 +01:00
yves-biener
bfbe75f8d3
feat(inline): rendering without alternate screen
...
Zig Project Action / Lint, Spell-check and test zig project (pull_request) Successful in 1m10s
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 55s
Fix issue with growth resize for containers with corresponding
borders, padding and gaps.
2026-01-20 23:09:16 +01:00
yves-biener
89517b2546
fix: add newly introduced parameter for App.start function to all corresponding usages
2026-01-20 15:16:10 +01:00
yves-biener
a71d808250
add: .line core event for line contents in non *raw mode* instead of .key core events
...
The end of the `.line` event received contents is highlighted by a trailing newline
(which cannot occur before, as that triggers the line event itself).
Add signal handler for SIGCONT which forces a `.resize` event that should re-draw the
contents after continuing a suspended application (i.e. ctrl+z followed by `fg`).
2026-01-20 15:11:19 +01:00
yves-biener
97a240c54d
mod: example shows how dynamic sizing is achived that can be independent form the reported terminal size
...
Setting the cursor with the `Direct` handler will cause the rendering
to halt at that point and leave the cursor at point.
Due to not enabling *raw mode* with the newly introduced `App.start`
configuration options corresponding inputs are only visible to `zterm`
once the input has been completed with a newline. With this it is not
necessary for the renderer to know nothing more than the width of the
terminal (which is implied through the `Container` sizes). Making it
very trivial to implement.
2026-01-20 13:57:55 +01:00
yves-biener
c29c60bd89
WIP make example interactive
...
Handle inputs as per usual (which however is a bit weak, is it goes through
key by key and not the entire line), batch all events such that all events
are handled before the next frame is rendered. For this the `App.start`
function needs to become configurable, such that it changes the termios as
configured (hence it is currently all commented out for testing).
2026-01-20 11:54:28 +01:00
yves-biener
4a3bec3edc
add: Direct Renderer implementation rendering the fixed size of the root Container
...
A corresponding example has been added, which is very minimalistic as of now,
but will add further functionality to test the corresponding workflow that is
usual in `zterm` such that it in the best case only a swap in the renderer to
switch from alternate mode drawing to direct drawing.
2026-01-20 11:28:37 +01:00
yves-biener
836d7669e5
feat: introduce growth options .horizontal_only and .vertical_only
...
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m5s
Growing containers only in one specific direction while fixing the
other dimension (which is then required to be provided - just like
before).
2026-01-18 13:36:03 +01:00
yves-biener
1621715ad8
lint: correct typo
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m7s
2026-01-17 12:29:42 +01:00
yves-biener
4874252e8c
mod: adapt implementation to zig version 0.15.2
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 54s
2026-01-17 12:05:20 +01:00
yves-biener
e1e8907848
doc: remove hint as builds now use latest zig version
2026-01-17 12:04:52 +01:00
yves-biener
1cb7fca701
mod(ci): change target zig version to *latest*
2026-01-17 12:04:19 +01:00
yves-biener
19d1602d3b
ref: omit capture instead of dropping
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 49s
2026-01-12 23:28:30 +01:00
yves-biener
88c7eea356
feat(unicode): accept unicode characters through the app's input handler to be handled correctly; key introduce isUnicode method
...
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m21s
With the `isUnicode` method the read unicode characters from the user
can be checked against displayable text and rendered on the screen accordingly.
2026-01-12 22:47:20 +01:00
yves-biener
b1a0d60ae3
mod: bump zig master version
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m9s
2026-01-06 22:58:10 +01:00
yves-biener
c49c2a5c6d
mod(app): export TextField from App to be used in other Element implementations similar to App.Input
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m1s
2025-12-27 19:56:44 +01:00
yves-biener
8b5d3757fc
mod(element/Input): split into TextField without associated event to automatically trigger
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m9s
2025-12-27 17:06:07 +01:00
yves-biener
06ab32bdde
mod(container): Size property handling for .fixed, .horizontal and .vertical check with assertions required values
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m0s
2025-12-17 22:58:58 +01:00
yves-biener
8e3b43fa61
mod(container): .horizontal and .vertical size.grow respect minSize value if no size.dim is used
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m0s
2025-12-17 22:48:02 +01:00
yves-biener
6b2797cd8c
mod(container): .fixed sizing behavior with minSize Container / Element function
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m1s
2025-12-17 22:04:06 +01:00
yves-biener
e972a2ea0f
mod(container): integrate minSize call when fit_resize is calculated
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 57s
2025-11-28 15:31:45 +01:00
yves-biener
67bfd90a2c
WIP(container): fit_size call minSize for determining the minimal required size of a given Container
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 57s
2025-11-28 15:25:10 +01:00
yves-biener
40fa080af6
WIP(container): use another approach
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 57s
2025-11-28 15:08:58 +01:00
yves-biener
d92f562a57
WIP(container): propagate individual child sizes correctly
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 57s
2025-11-28 15:03:50 +01:00
yves-biener
f7025a0fc2
fix(container): minSize should not add children's sizes, but take max instead
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 57s
2025-11-28 14:34:32 +01:00
yves-biener
41229c13d3
mod(container): provide minSize function for Element implementation to refer for nested structures
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m6s
2025-11-28 14:27:41 +01:00
yves-biener
855594a8c8
mod(element): introduce deinit interface for deinitializing Elements automatically with the Container
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m34s
2025-11-27 21:13:03 +01:00
yves-biener
9488d0b64d
feat(terminal/cursor): add support for cursor shape configuration
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m5s
2025-11-20 18:46:58 +01:00
yves-biener
424740d350
feat(terminal/osc12): define cursor color through style of cell that describes the cursor position
...
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m33s
The `.default` color will reset the cursor color to the terminal's default color
2025-11-19 18:42:13 +01:00
yves-biener
28c733352e
feat(event): introduce .bell system event
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 16m37s
2025-11-17 18:30:31 +01:00
yves-biener
3b5507ec1e
fix(lint): correct typo
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m4s
2025-11-10 17:18:36 +01:00
yves-biener
38d31fae72
feat(element): parameter *const App.Model
...
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 55s
The renderer will provide `resize`, `reposition` and `minSize` (for
the `Scrollable` `Element`) with a read-only pointer to the model of
the application (similar to how it is already done for `handle` and
`content`). Every interface function now has the same data that it can
each use for implementing its corresponding task based on local and
shared variables through the element instance and model pointer.
2025-11-10 17:09:29 +01:00
yves-biener
79a0d17a66
feat(io): introduce std.Io parameter for App.init
...
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m22s
The provided `std.Io` is used for running the input reading and the
rendering asynch. The user can provide their desired `std.Io`
implementation as they wish to use. The examples use `std.Io.Threaded`
as a simple threaded solution.
2025-11-10 16:44:02 +01:00
yves-biener
accbb4c97d
mod: bump action dependencies
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 56s
2025-11-05 22:45:56 +01:00
yves-biener
ad32e46bc9
feat(element/scrollable): mouse support for scrollbar interaction
...
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 55s
Fix an issue with the scrollbar contents to work proper with statically
defined `Container` sizes through its `Properties` sizing option.
2025-11-05 22:08:35 +01:00
yves-biener
8ebab702ac
fix(element/scrollable): reduce the number of minSize calls and correctly resize scrollable Container
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m26s
2025-11-05 18:33:16 +01:00
yves-biener
e53bb7880b
mod: cleanup TODO and outdated comments
2025-11-05 18:32:49 +01:00
yves-biener
a83e86f8d9
feat(element/scrollable): background configuration
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m30s
2025-11-02 21:00:17 +01:00
yves-biener
4567963ff2
mod(example/text): improve event loop; add stick table heading for used emphasis
...
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 59s
This should be the way it should be done all the time, such that you
are not rendering for every input, but instead handle all `App.Event`s
that happened between the last render and the current. This shares
similarities with the continuous event loops, which also batches
the events only with the exception that it instead blocks (see
`App.Queue.poll`).
2025-11-02 16:10:11 +01:00
yves-biener
d4cc520826
fix(element/scrollable): display and user interaction
...
Fix initial render to show scrollbar immediately if required. Show and
hide scrollbar correctly when content size or terminal size changes. Add
keybindings for scrolling similar to pager keybindings.
2025-11-02 16:05:53 +01:00