Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
522 commits
Select commit Hold shift + click to select a range
6c00ccd
chore(core): test cover stale line info fix (#178)
kommander Sep 23, 2025
f2e5157
chore(core): rework shutdown sequence (#179)
kommander Sep 23, 2025
a9a69e8
document env vars (#180)
kommander Sep 23, 2025
3590572
prepare release 0.1.25
kommander Sep 23, 2025
b753467
do not run gh release until fixed
kommander Sep 23, 2025
05d081b
Feat(solid): improve useTimeline hook (#181)
Adictya Sep 24, 2025
574bb9e
Allow preventDefault on global key handler to not trigger focused ren…
kommander Sep 24, 2025
992379a
handle meta+ctrl+letter
kommander Sep 26, 2025
e690c9b
feat(react): add animation/timeline hook (#185)
msmps Sep 27, 2025
4ec4507
Fix(core): Some children not getting destroyed (#188)
Adictya Sep 29, 2025
0c1e12d
prevent default onKeyDown for Input renderable
kommander Sep 29, 2025
704c748
fix segfault when renderer is destroyed during render pass (#190)
kommander Sep 30, 2025
a9b3f92
Fix(core): Yoga error due to incomplete removal of child node (#189)
Adictya Sep 30, 2025
c382c11
feat(core): Code Highlighting (#191)
kommander Sep 30, 2025
2a854cf
maybe fix tree sitter packaging (#192)
kommander Sep 30, 2025
c6dcf3d
resolve parser worker in package (#193)
kommander Oct 1, 2025
6a00c66
manual snapshots
kommander Oct 1, 2025
5c0cff7
default parsers standalone exec compat (#194)
kommander Oct 1, 2025
e01e4ea
document testing utils (#195)
kommander Oct 2, 2025
46fb4bc
render text immediately before highlights
kommander Oct 2, 2025
badafa1
Delegate scollbox insertBefore to content to fix “Anchor does not exi…
eli0shin Oct 5, 2025
e24cb11
Fix(core): insertBefore not rendering conditional children with sibli…
eli0shin Oct 6, 2025
3f671e1
Show error stack trace when an error is thrown in React render (#202)
remorses Oct 6, 2025
673d19b
Scroll acceleration for macOS (#198)
remorses Oct 6, 2025
ad0b3e4
ensure findDescendantById works for slots in solid
kommander Oct 6, 2025
242c8fe
run workflows for PRs
kommander Oct 8, 2025
5e3a714
show prettier diff in workflow on failure
kommander Oct 8, 2025
2ba7aa1
Fix scroll acceleration on Ghostty (#203)
remorses Oct 8, 2025
b128bc3
prepare release 0.1.26
kommander Oct 8, 2025
7dce97a
skip vue for release
kommander Oct 8, 2025
39d605f
add scrollbox.scrollAcceleration setter to allow override in solid
kommander Oct 8, 2025
d6dba61
suspend and resume
kommander Oct 10, 2025
d7a7cfb
docs: remove Go installation and examples (#211)
hanpham32 Oct 10, 2025
fccdbee
maybe fix bun 1.3 ci build
kommander Oct 12, 2025
8680d45
fix react and solid ci builds
kommander Oct 12, 2025
dcef8c6
maybe fix react ci builds
kommander Oct 12, 2025
27639f8
fix: standardize TextNode remove method to use ID-based lookup to res…
eli0shin Oct 12, 2025
d156ab1
Use useEffectEvent in React hooks (#210)
remorses Oct 12, 2025
131d0ea
fix: add missing SliderRenderable export (#206)
thefinalb055 Oct 12, 2025
3e6cd5e
document dev linkage
kommander Oct 13, 2025
0b187f5
prepare release 0.1.27
kommander Oct 13, 2025
36dfbf8
Fix renderable.add with index (#222)
kommander Oct 21, 2025
17a2f00
prepare release 0.1.28
kommander Oct 21, 2025
1301c35
feat: contributing guideline (#220)
hanpham32 Oct 22, 2025
32728af
docs: add zig as requirement (#223)
hanpham32 Oct 22, 2025
b7dcf91
Textarea (#224)
kommander Oct 22, 2025
7f9e076
Replace npx with bunx (#172)
ytsruh Oct 22, 2025
526395f
yoga prop setters handle runtime null/undefined (#226)
kommander Oct 23, 2025
cad7d87
handle 4-component hex colors (#227)
kommander Oct 23, 2025
30913dd
mitigate scrollbox disappearing content issue (#228)
kommander Oct 23, 2025
a5af66a
prepare release 0.1.29
kommander Oct 23, 2025
3812cc6
support custom textarea keybindings (#231)
kommander Oct 23, 2025
494ce43
textarea readline like editing (#232)
kommander Oct 23, 2025
7baf3c8
prepare release 0.1.30
kommander Oct 23, 2025
5121362
feat: add support for transparent terminal background rendering (#225)
KeremP Oct 25, 2025
9587466
simulate extmarks and make textarea usable for opencode (#233)
kommander Oct 26, 2025
6174f27
Straighten test helpers (#235)
kommander Oct 27, 2025
680273b
pass paste event instead of just pasted text (#239)
kommander Oct 27, 2025
22ba673
rework placeholder to be fully visual only (#241)
kommander Oct 28, 2025
3a546d3
prepare release v0.1.31
kommander Oct 28, 2025
d693a6a
return + linefeed instead of return + enter
kommander Oct 28, 2025
459c565
use extmarks controller type
kommander Oct 28, 2025
a2a926d
static tabstop handling (#242)
kommander Oct 29, 2025
23ee3b8
defragment rope and wrap fragments correctly (#243)
kommander Oct 29, 2025
03fd460
fix unicode (#244)
kommander Oct 30, 2025
0d5eebf
Fix React key prop (#246)
macklinu Oct 31, 2025
ea576db
markdown rendering via tree-sitter and code renderable (#247)
kommander Oct 31, 2025
2f91f18
fix(solid): init border when supporting props are present (#249)
msmps Nov 1, 2025
16c317a
handle partial escape sequences (#250)
kommander Nov 1, 2025
8cd8671
cleanup tree sitter tests
kommander Nov 1, 2025
8d99ec2
actually activate kitty keyboard (#251)
kommander Nov 2, 2025
ea876e2
prepare release v0.1.32
kommander Nov 2, 2025
7b57c76
fix: make TerminalConsole.resize use provided width/height parameters…
aymuos15 Nov 2, 2025
08a342e
ensure preventDefault works
kommander Nov 2, 2025
24627a5
grapheme aware getTextRange/getTextRangeByCoords (#258)
kommander Nov 3, 2025
090784a
prepare release v0.1.33
kommander Nov 3, 2025
02945e9
use kitty keyboard by default when available (#259)
kommander Nov 3, 2025
0884b2b
fix disappearing scrollbox content for code renderables (#264)
kommander Nov 4, 2025
68ccb23
prepare release v0.1.34
kommander Nov 4, 2025
2965cb7
open console on unhandled error optional
kommander Nov 4, 2025
8b7111f
feat: add new code + textarea components (#268)
msmps Nov 5, 2025
b6ce1a5
feat: add index control in the select component (#269)
aprogramq Nov 5, 2025
71517b3
feat(core): allow configuring cursor style fixes #257 (#267)
Adictya Nov 5, 2025
a1c683e
chore(react): replace render method with `createRoot` (#270)
msmps Nov 5, 2025
9b61115
streaming mode for code renderable and fixing grapheme related crashe…
kommander Nov 6, 2025
a772c01
prepare release v0.1.35
kommander Nov 6, 2025
217dd5d
(solid): use KeyEvent instead of KeyboardEvent
kommander Nov 6, 2025
c16099a
prepare release v0.1.36
kommander Nov 6, 2025
c513142
add zig default tree-sitter parser and query
kommander Nov 6, 2025
61da111
docs: add badges + showcasing (#274)
msmps Nov 6, 2025
8434355
renderer.getPalette to fetch the terminal color palette if supported …
kommander Nov 7, 2025
3a488e1
fetch layout for all children in layout pass and reduce after, consol…
kommander Nov 7, 2025
6703e8d
prepare release v0.1.37
kommander Nov 7, 2025
a68e405
fix sticky scroll (#279)
kommander Nov 7, 2025
73359a7
prepare release v0.1.38
kommander Nov 7, 2025
2fce376
fix SHOW_CONSOLE=1 to open console at startup (#280)
kommander Nov 7, 2025
10f4d64
handle ghostty custom csi for shift/ctrl+enter/esc etc. (#281)
kommander Nov 7, 2025
531c286
prepare release v0.1.39
kommander Nov 7, 2025
e00f93f
lazy highlights for code renderable and append text for native text b…
kommander Nov 9, 2025
a45447f
fix: iTerm2 cursor blinking issue (#287)
istarkov Nov 10, 2025
78ad182
mode 2026 + better capability detection (#290)
kommander Nov 10, 2025
38bab47
handle shift+backspace in textarea for kitty keyboard (#291)
kommander Nov 10, 2025
fe5130a
closer to readline defaults for textarea (#294)
kommander Nov 11, 2025
612491a
emit focus tracking events on the renderer (#295)
kommander Nov 11, 2025
426c94c
linear scroll acceleration by default (#297)
kommander Nov 11, 2025
9582434
fix: Suppress SIGWINCH in test renderer (#296)
veracioux Nov 11, 2025
1f6e16e
enable modifyOtherKeys by default (#298)
kommander Nov 11, 2025
74a00ef
fix capabilities getter (#299)
kommander Nov 11, 2025
54dddc4
move bracketed paste buffering to stdin buffer (#300)
kommander Nov 11, 2025
6a6d755
prepare release v0.1.40
kommander Nov 11, 2025
f188f1a
fix textarea default bindings (#301)
kommander Nov 11, 2025
7f9e08b
fix visual cursor vertical movement at virtual line boundaries (#303)
kommander Nov 11, 2025
ecf8cd2
prepare release v0.1.41
kommander Nov 11, 2025
e407584
Update README with Bun.build instructions (#305)
nduartech Nov 12, 2025
dc6bfef
fix: refactor asciifont and fix seg fault on color setters (#304)
msmps Nov 12, 2025
ccc436d
fix(solid): Call lifecycle dispose on renderer.destroy (#289)
veracioux Nov 12, 2025
61c7c89
fix multibyte char split in wrapping logic (#307)
kommander Nov 12, 2025
4232f31
fix CJK extmarks sim offsets (#308)
kommander Nov 12, 2025
0249d5d
prepare release v0.1.42
kommander Nov 12, 2025
31cd829
feat: set up react testing suite (#309)
msmps Nov 12, 2025
22b6234
fix(react): export test renderer (#310)
msmps Nov 12, 2025
c4a73d8
refactor(console): improve log entry handling and add destroy method …
msmps Nov 12, 2025
482efdd
setup release pipeline (no it is not stable yet) (#312)
kommander Nov 13, 2025
2c63e2b
prepare release v0.1.43
kommander Nov 13, 2025
9d7e0af
fix example install.sh (#314)
kommander Nov 13, 2025
4b2085b
add 5k celebration demo (#315)
kommander Nov 13, 2025
5a174dd
prepare release v0.1.44
kommander Nov 13, 2025
53a2b89
fix: Normalize file path for tree-sitter language loading (#317)
Hona Nov 15, 2025
e124c80
prepare release v0.1.45
kommander Nov 16, 2025
151a470
ignore nvim session
kommander Nov 14, 2025
57e1897
fix: enable bracketed paste (and more) on win (#320)
Hona Nov 17, 2025
720963f
update codeowners
kommander Nov 17, 2025
b4c3d52
fix word wrapping with CJK and at wrap/chunk boundaries (#319)
kommander Nov 17, 2025
36c74d9
old style meta+arrow (#322)
kommander Nov 17, 2025
3d4d7f5
allow <1 scroll speed for slowdown (#323)
kommander Nov 17, 2025
25fb533
prepare release v0.1.46
kommander Nov 17, 2025
e632a1c
suspend/resume actually resetting terminal (#324)
kommander Nov 18, 2025
1117409
remove zg dependency, prepare to handle widthMethod in utf8 functions…
kommander Nov 18, 2025
b08e23e
fix: Use mock Readable as stdin in test renderer (#292)
veracioux Nov 19, 2025
a73fcbd
fix: Exception when selecting text on destroyed component (#285)
veracioux Nov 19, 2025
85f07d7
fix editor grapheme cursor + wcwidth/no_zwj modes (#329)
kommander Nov 19, 2025
661b9c4
prepare release v0.1.47
kommander Nov 19, 2025
e3d12d8
unicode encoding API (#335)
kommander Nov 21, 2025
70a3c65
prepare release v0.1.48
kommander Nov 21, 2025
68203bb
fix: stdin handling on suspend/resume (#331)
veracioux Nov 22, 2025
e22f1b9
get rid of bounded array usage for wcwidth prev grapheme (#338)
kommander Nov 23, 2025
6ee36f3
prepare release v0.1.49
kommander Nov 23, 2025
65c58ba
fix: export createElement from React (#340)
msmps Nov 23, 2025
95cb9de
fix integer overflow for negative y text buffer pos for rendering (#341)
kommander Nov 24, 2025
448f1ae
fix textarea selection in scrolled viewport (#342)
kommander Nov 24, 2025
2945ac0
temp deactivate kitty graphics detection (#343)
kommander Nov 24, 2025
2c70131
prepare release v0.1.50
kommander Nov 24, 2025
d98c603
slightly better text selection in scrolled textarea viewport (#347)
kommander Nov 26, 2025
ed939d2
Ctrl+A/E navigates to line start/end and home/end to buffer start/end…
remorses Nov 26, 2025
d870e50
Properly export solid plugin (#348)
ericc-ch Nov 26, 2025
64b00d7
introduce line number renderable and expose text wrap info (#350)
kommander Nov 26, 2025
c2b6f69
extend dev linkage and consolidate dev docs
kommander Nov 27, 2025
ef5f69a
fix: snapshot renderable handlers so they don't get in-flight events …
hsulab Nov 27, 2025
0ea1c6d
fix text measure in absolute positioned groups (as far as yoga suppor…
kommander Nov 27, 2025
320782b
fix line num destruction on solid removal (#353)
kommander Nov 27, 2025
4393b11
feat(terminal-palette): add tmux OSC sequence passthrough support (#354)
melMass Nov 27, 2025
127bffe
feat: add kitty event types (#357)
melMass Nov 28, 2025
2de8e7a
diffs (#358)
kommander Nov 29, 2025
0d843ed
prepare release v0.1.51
kommander Nov 29, 2025
ecdb57d
fix: key repeat breaking change from PR #357 (#363)
melMass Nov 29, 2025
129408a
prepare release v0.1.52
kommander Nov 29, 2025
762e0ce
feat: rebase + add line number renderable (#364)
msmps Nov 29, 2025
44221da
Actually properly export solid plugin in build script (#362)
ericc-ch Nov 29, 2025
666e6a2
feat(react): add <diff> component support (#360)
remorses Nov 29, 2025
6a9962a
fix line number renderable event emitter leak (#365)
kommander Nov 29, 2025
4672665
prepare release v0.1.53
kommander Nov 29, 2025
7e60966
fix(tab-select): clears current frame buffer if tab options length is…
eric-k-chu Nov 30, 2025
2b3900e
fix: tilde-terminated CSI sequences (#366)
melMass Nov 30, 2025
cb97ca2
harden input event handling (#370)
kommander Nov 30, 2025
ce06624
feat(core): emit capabilities event on terminal capability response (…
melMass Nov 30, 2025
7d28ccd
remove cc flicker feature, harden diffs (#371)
kommander Dec 1, 2025
c38c9b3
prepare release v0.1.54
kommander Dec 1, 2025
c1f8ff4
fix(OSC4): tmux 3.6 has native support for OSC4 and should not be wra…
noirbizarre Dec 2, 2025
8ee318f
fix: Input inserting KeyEvent with modifiers as text (#375)
kommander Dec 2, 2025
4f9c0bc
fix: viewport culling stale data (#377)
kommander Dec 3, 2025
094bb64
prepare release v0.1.55
kommander Dec 3, 2025
8523241
fix: Bundled win32 (#378)
Hona Dec 4, 2025
4485be2
prepare release v0.1.56
kommander Dec 4, 2025
ae61ae2
input debug tool in examples (#381)
kommander Dec 4, 2025
ff0d32b
add final capabilities state to json export (#382)
m-pa Dec 5, 2025
0bb6925
introduce key name aliases (#384)
kommander Dec 5, 2025
215f9e2
feat: add configurable exit signals for process termination (#383)
msmps Dec 5, 2025
e7c1f83
prepare release v0.1.57
kommander Dec 5, 2025
c7ab20b
ci: add review workflow (#385)
rekram1-node Dec 5, 2025
e164cfa
fix(diff): add fg prop to support light mode themes (#390)
code-yeongyu Dec 8, 2025
eb23626
fix: getNextWordBoundary now searches subsequent chunks after cursor …
nikvdp Dec 8, 2025
44ab25d
Fix ScrollBox scissor clipping for nested scrollboxes (#389)
acoliver Dec 8, 2025
e72431c
fix(core): wrap line-home/end at line boundaries, cmd-left and cmd-ri…
remorses Dec 8, 2025
769b2e3
prepare release v0.1.58
kommander Dec 8, 2025
6287a28
allow shift+space insert as space char (#396)
kommander Dec 9, 2025
1aa9be0
prepare release v0.1.59
kommander Dec 9, 2025
3045796
make kitty event flag optional (changes renderer option interface) (#…
kommander Dec 9, 2025
2b6d2fc
textarea defaults: ctrl+d=delete, ctrl+shift+w=delete-word-forward (#…
kommander Dec 9, 2025
a0ac419
separate setText and replaceText for EditBuffer (#400)
kommander Dec 10, 2025
7958344
prepare release v0.1.60
kommander Dec 10, 2025
0284074
additional default keybinds for the textarea and visual EOL/SOL nav (…
kommander Dec 11, 2025
40ccd52
feat(core): add opacity property to Renderable (#401)
muhammedaksam Dec 11, 2025
5a25062
pin node types
kommander Dec 11, 2025
9dcf03b
fix(core): clean up timers and listeners in destroy() to allow proces…
remorses Dec 15, 2025
d4b738a
dev setup and ffi debug tweaks (#418)
kommander Dec 15, 2025
1e8aafa
fix: absolute positioned elements now position relative to parent (#413)
edlsh Dec 15, 2025
7836654
feat(console): add mouse selection and scrolling support, with option…
edlsh Dec 15, 2025
e369e77
prepare release v0.1.61
kommander Dec 16, 2025
3524515
Add .zig-version file for automatic version detection (#422)
remorses Dec 16, 2025
30fbf23
rework some of the selection logic to native (#424)
kommander Dec 18, 2025
fb458ac
fix some unicode char widths (#425)
kommander Dec 18, 2025
61e3e9d
textarea mouse scroll and cursor positioning + selection auto-scroll …
kommander Dec 19, 2025
21ee0c0
prepare release v0.1.62
kommander Dec 19, 2025
2cb37f5
type conflict workaround
kommander Dec 19, 2025
c1b427f
export flushSync from react package (#429)
remorses Dec 19, 2025
f253a28
fix(core): fix memory leaks in Zig unicode encoding and grapheme pool…
edlsh Dec 22, 2025
b33e060
Fix wrong Kitty keyboard protocol flags (#426)
devxoul Dec 22, 2025
9f29fc6
prepare release v0.1.63
kommander Dec 22, 2025
9276d94
fix: reset flex properties on style removal (#414)
edlsh Dec 23, 2025
725753d
support rendering OSC8 hyperlinks (#447)
kommander Dec 27, 2025
36aaef8
feat(textarea): add super+arrow key bindings for Kitty Keyboard mode …
remorses Dec 27, 2025
6a54687
feat(react): add React Refresh support (#446)
remorses Dec 27, 2025
0b6223b
refactor(react): export reconciler methods (#450)
msmps Dec 28, 2025
3850587
feat: implement react-devtools support (#448)
msmps Dec 28, 2025
f3ad51e
prepare release v0.1.64
kommander Dec 28, 2025
c5ba379
package check multi location
kommander Dec 28, 2025
ac58596
prepare release v0.1.65
kommander Dec 28, 2025
e182837
fix diff stale lineInfo (#457)
kommander Dec 29, 2025
1132f61
prepare release v0.1.66
kommander Dec 30, 2025
2b94e29
fix: correctly handle enableMouseMovement default value (#453)
aarongrtech Dec 30, 2025
9f931ac
fix: hide terminal cursor when showCursor is set false in focused tex…
remorses Dec 30, 2025
155298c
fix CodeRenderable streaming mode with drawUnstyledText=false (jitter…
kommander Dec 30, 2025
0f29e50
prepare release v0.1.67
kommander Dec 30, 2025
77d3aa8
fix: handle flushSync rename in react-reconciler 0.32.0 (#454)
remorses Jan 1, 2026
db3dcda
run CI on push only (#462)
kommander Jan 2, 2026
5996e4a
Revert "run CI on push only (#462)"
kommander Jan 2, 2026
fb335f2
use gpa (#465)
kommander Jan 2, 2026
59945e9
fix(utf8): widen WrapBreak offsets to u32 for lines > 64KB (#464)
simonklee Jan 2, 2026
e1cf4db
prepare release v0.1.68
kommander Jan 2, 2026
e8bf4e3
feat(solid): allow passing custom CliRenderer to render() (#469)
remorses Jan 4, 2026
5daa2b1
bench(text-buffer-view): add measureForDimensions benchmark (#472)
simonklee Jan 5, 2026
6e0e296
improve word wrap perf by tracking byte_offset instead of recalc (#473)
kommander Jan 5, 2026
026adb1
perf(text-buffer-view): cache measureForDimensions results (#475)
simonklee Jan 5, 2026
88a2d6b
bench: replace the measureForDimensions bench (#474)
simonklee Jan 5, 2026
a50cdcb
prepare release v0.1.69
kommander Jan 5, 2026
a423905
fix some examples and more coverage for osc8
kommander Jan 6, 2026
718f291
Upgrade to Zig 0.15.2 (#439)
remorses Jan 6, 2026
a0ab5c1
[react] unmount when renderer is destroyed externally (#492)
kommander Jan 7, 2026
c67b58f
chore: remove unmaintained vue and go packages
msmps Jan 7, 2026
8035887
chore: remove vue/go references from scripts and workflows
msmps Jan 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
* @kommander @msmps @Hona
/packages/react/ @msmps @Adictya @fezproof @kommander @Hona
/packages/solid/ @Adictya @fezproof @msmps @kommander @Hona
37 changes: 37 additions & 0 deletions .github/workflows/build-core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Build Core

on:
push:
pull_request:
branches: [main]

jobs:
build:
name: Core - Build and Test
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Setup Zig
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.15.2

- name: Install dependencies
run: bun install

- name: Build
run: |
cd packages/core
bun run build

- name: Run tests
run: |
cd packages/core
bun run test
218 changes: 218 additions & 0 deletions .github/workflows/build-examples.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
name: Build Examples

on:
workflow_call:
inputs:
version:
description: "Version being released"
required: true
type: string
isDryRun:
description: "Whether this is a dry run release"
required: false
type: boolean
default: false

jobs:
build-examples:
name: Build Example Executables
runs-on: macos-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: latest

- name: Install dependencies FIRST (before copying built packages)
run: |
echo "Installing base dependencies..."
bun install

echo ""
echo "✅ Base dependencies installed"
echo "Note: bun-webgpu will be installed by the build script (src/examples/build.ts) for all platforms"

- name: Download npm packages artifact
uses: actions/download-artifact@v4
with:
name: npm-packages-${{ inputs.version }}

- name: Extract and install npm packages
run: |
set -e
echo "Extracting npm packages..."
test -f npm-packages.zip || (echo "❌ npm-packages.zip not found!" && exit 1)
unzip -q npm-packages.zip

# Create node_modules structure
mkdir -p node_modules/@opentui
mkdir -p packages/core/node_modules/@opentui

# Copy core dist (required)
echo "Copying core dist..."
test -d "npm-packages/core-dist" || (echo "❌ core-dist not found in artifact!" && exit 1)
cp -r npm-packages/core-dist packages/core/dist
test -f packages/core/dist/package.json || (echo "❌ core dist/package.json missing after copy!" && exit 1)
echo "✅ Core dist copied"

# Copy native packages to core's node_modules (required - these OVERRIDE the npm versions)
echo "Copying built native packages (overriding any npm versions)..."
test -d "npm-packages/core-native-packages" || (echo "❌ core-native-packages not found in artifact!" && exit 1)
cp -r npm-packages/core-native-packages/* packages/core/node_modules/@opentui/
test -n "$(ls -A packages/core/node_modules/@opentui/)" || (echo "❌ No native packages copied!" && exit 1)
echo "✅ Native packages copied"

# Copy other package dists (optional)
if [ -d "npm-packages/react-dist" ]; then
cp -r npm-packages/react-dist packages/react/dist
echo "✅ React dist copied"
fi

if [ -d "npm-packages/solid-dist" ]; then
cp -r npm-packages/solid-dist packages/solid/dist
echo "✅ Solid dist copied"
fi

echo ""
echo "Package extraction complete:"
ls -lah packages/core/dist/
ls -lah packages/core/node_modules/@opentui/

- name: Verify bun-webgpu is available for build
run: |
echo "Checking bun-webgpu installation..."

# Check root node_modules first
if [ -d node_modules/bun-webgpu ]; then
echo "✅ bun-webgpu found in root node_modules"
# Check packages/core/node_modules
elif [ -d packages/core/node_modules/bun-webgpu ]; then
echo "✅ bun-webgpu found in packages/core/node_modules"
else
echo "❌ bun-webgpu not found in root or packages/core/node_modules!"
echo "Note: The build script will install it, but it should already be present"
exit 1
fi

# Check for platform-specific packages in .bun cache (where bun install --os="*" --cpu="*" puts them)
echo ""
echo "Checking for platform-specific bun-webgpu packages in cache..."
if [ -d node_modules/.bun/[email protected] ]; then
echo "✅ bun-webgpu-darwin-arm64 found in cache"
else
echo "⚠️ bun-webgpu-darwin-arm64 not found (will be installed during build)"
fi

if [ -d node_modules/.bun/[email protected] ]; then
echo "✅ bun-webgpu-darwin-x64 found in cache"
else
echo "⚠️ bun-webgpu-darwin-x64 not found (will be installed during build)"
fi

if [ -d node_modules/.bun/[email protected] ]; then
echo "✅ bun-webgpu-linux-x64 found in cache"
else
echo "⚠️ bun-webgpu-linux-x64 not found (will be installed during build)"
fi

if [ -d node_modules/.bun/[email protected] ]; then
echo "✅ bun-webgpu-win32-x64 found in cache"
else
echo "⚠️ bun-webgpu-win32-x64 not found (will be installed during build)"
fi

echo ""
echo "✅ bun-webgpu ready for bundling"

- name: Build examples
run: |
set -e
cd packages/core
bun src/examples/build.ts

- name: Verify example builds
run: |
set -e
echo "Verifying example executables..."
test -f "packages/core/src/examples/dist/darwin-x64/opentui-examples" || (echo "❌ darwin-x64 example missing!" && exit 1)
test -f "packages/core/src/examples/dist/darwin-arm64/opentui-examples" || (echo "❌ darwin-arm64 example missing!" && exit 1)
test -f "packages/core/src/examples/dist/linux-x64/opentui-examples" || (echo "❌ linux-x64 example missing!" && exit 1)
test -f "packages/core/src/examples/dist/windows-x64/opentui-examples.exe" || (echo "❌ windows-x64 example missing!" && exit 1)

echo "✅ All example executables verified"
echo ""
ls -lah packages/core/src/examples/dist/*/

# Create separate zips for each platform's examples
- name: Package examples - darwin-x64
run: |
set -e
mkdir -p artifacts/examples-darwin-x64
cp packages/core/src/examples/dist/darwin-x64/opentui-examples artifacts/examples-darwin-x64/
cd artifacts
zip -r examples-darwin-x64.zip examples-darwin-x64/
test -f examples-darwin-x64.zip || (echo "❌ Failed to create darwin-x64 zip" && exit 1)
test -s examples-darwin-x64.zip || (echo "❌ darwin-x64 zip is empty" && exit 1)
echo "✅ darwin-x64 packaged successfully ($(du -h examples-darwin-x64.zip | cut -f1))"

- name: Package examples - darwin-arm64
run: |
set -e
mkdir -p artifacts/examples-darwin-arm64
cp packages/core/src/examples/dist/darwin-arm64/opentui-examples artifacts/examples-darwin-arm64/
cd artifacts
zip -r examples-darwin-arm64.zip examples-darwin-arm64/
test -f examples-darwin-arm64.zip || (echo "❌ Failed to create darwin-arm64 zip" && exit 1)
test -s examples-darwin-arm64.zip || (echo "❌ darwin-arm64 zip is empty" && exit 1)
echo "✅ darwin-arm64 packaged successfully ($(du -h examples-darwin-arm64.zip | cut -f1))"

- name: Package examples - linux-x64
run: |
set -e
mkdir -p artifacts/examples-linux-x64
cp packages/core/src/examples/dist/linux-x64/opentui-examples artifacts/examples-linux-x64/
cd artifacts
zip -r examples-linux-x64.zip examples-linux-x64/
test -f examples-linux-x64.zip || (echo "❌ Failed to create linux-x64 zip" && exit 1)
test -s examples-linux-x64.zip || (echo "❌ linux-x64 zip is empty" && exit 1)
echo "✅ linux-x64 packaged successfully ($(du -h examples-linux-x64.zip | cut -f1))"

- name: Package examples - windows-x64
run: |
set -e
mkdir -p artifacts/examples-windows-x64
cp packages/core/src/examples/dist/windows-x64/opentui-examples.exe artifacts/examples-windows-x64/
cd artifacts
zip -r examples-windows-x64.zip examples-windows-x64/
test -f examples-windows-x64.zip || (echo "❌ Failed to create windows-x64 zip" && exit 1)
test -s examples-windows-x64.zip || (echo "❌ windows-x64 zip is empty" && exit 1)
echo "✅ windows-x64 packaged successfully ($(du -h examples-windows-x64.zip | cut -f1))"

- name: Verify all artifacts before upload
run: |
set -e
echo "Verifying all artifacts exist..."
test -f artifacts/examples-darwin-x64.zip || (echo "❌ examples-darwin-x64.zip missing!" && exit 1)
test -f artifacts/examples-darwin-arm64.zip || (echo "❌ examples-darwin-arm64.zip missing!" && exit 1)
test -f artifacts/examples-linux-x64.zip || (echo "❌ examples-linux-x64.zip missing!" && exit 1)
test -f artifacts/examples-windows-x64.zip || (echo "❌ examples-windows-x64.zip missing!" && exit 1)

echo ""
echo "✅ All artifacts verified. Ready to upload:"
ls -lah artifacts/*.zip

- name: Upload example executables
uses: actions/upload-artifact@v4
with:
name: example-executables-${{ inputs.version }}
path: |
artifacts/examples-darwin-x64.zip
artifacts/examples-darwin-arm64.zip
artifacts/examples-linux-x64.zip
artifacts/examples-windows-x64.zip
if-no-files-found: error
retention-days: 30
Loading
Loading