Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
d37d6f3
feat: v1.0.0 — decouple telemetry, remove auth & prompt management
chtushar Mar 24, 2026
4f0e972
chore: release v1.0.0-beta.1
chtushar Mar 24, 2026
a3b6c31
feat: remove settings page and workspace-settings API
chtushar Mar 24, 2026
f3c515c
Remove review-reply.md and update .gitignore for .context file
chtushar Mar 25, 2026
488b258
feat: move pgStore to subpath export and define Store/Sink interfaces
chtushar Mar 25, 2026
d70c16c
chore: replace ESLint + Prettier with Biome (#71)
chtushar Mar 25, 2026
0588318
feat: remove provider configs, guardrails, and gateway UI
chtushar Mar 27, 2026
b551990
chore: release v1.0.0-beta.2
chtushar Mar 27, 2026
2661567
feat: move llmRequests and traces into pgStore
chtushar Mar 27, 2026
dcb3301
feat: set up .sql file imports for pgStore
chtushar Apr 3, 2026
c3656bf
feat: add tsqx for SQL-first type generation in pgStore
chtushar Apr 3, 2026
be51c23
chore: release v1.0.0-beta.3
chtushar Apr 3, 2026
cf6cd36
fix: validate pgStore connection string with Zod
chtushar Apr 3, 2026
0690b46
fix: create trace + span for every gateway LLM call
chtushar Apr 3, 2026
c8bc00b
refactor: remove zod from SDK, export plain JSON Schemas only
chtushar Apr 3, 2026
012e4de
refactor: strip tsqx query codegen, keep schema + migrations only
chtushar Apr 3, 2026
7d92b97
feat: remove Kysely, datalayer, playgrounds, and datasets
chtushar Apr 3, 2026
e4830b1
chore: release v1.0.0-beta.4
chtushar Apr 3, 2026
4541ec5
fix: use IF NOT EXISTS in initial migration
chtushar Apr 3, 2026
7c47737
chore: release v1.0.0-beta.5
chtushar Apr 3, 2026
652cc03
feat: add D1 store, move telemetry from core to SDK
chtushar Apr 4, 2026
3566605
chore: release v1.0.0-beta.6
chtushar Apr 4, 2026
31f8019
fix: restore core imports for logger, pricing, and cost calculation
chtushar Apr 4, 2026
9f00d9a
chore: release v1.0.0-beta.7
chtushar Apr 4, 2026
2e83dca
fix: extract telemetry types to prevent pg from bundling in Workers
chtushar Apr 4, 2026
06777ad
chore: release v1.0.0-beta.8
chtushar Apr 4, 2026
6cdfa0f
fix: isolate require('pg') to store/pg subpath only
chtushar Apr 4, 2026
d365e89
chore: release v1.0.0-beta.9
chtushar Apr 4, 2026
a6169b5
fix: remove createRequire from gateway for Workers compatibility
chtushar Apr 4, 2026
68c87a3
chore: release v1.0.0-beta.10
chtushar Apr 4, 2026
6dae2a1
fix: remove Express re-export from SDK main entry
chtushar Apr 4, 2026
67a1ef7
chore: sort devDependencies in root package.json
chtushar Apr 4, 2026
c28884b
chore: release v1.0.0-beta.11
chtushar Apr 4, 2026
04e99ed
fix: remove top-level Node.js filesystem imports from app
chtushar Apr 4, 2026
28a4fc3
chore: release v1.0.0-beta.12
chtushar Apr 5, 2026
529f6cc
fix: replace nunjucks with template literals for Workers compatibility
chtushar Apr 5, 2026
f86fc3d
chore: release v1.0.0-beta.13
chtushar Apr 5, 2026
e428496
fix: flush batch writers immediately on edge runtimes
chtushar Apr 5, 2026
a4a413b
chore: release v1.0.0-beta.14
chtushar Apr 5, 2026
f0da204
fix: await batch writer flushes on edge runtimes
chtushar Apr 5, 2026
d4c2f86
chore: release v1.0.0-beta.15
chtushar Apr 5, 2026
32f276f
feat: add waitUntil config for edge runtime telemetry flushing
chtushar Apr 5, 2026
d73c10f
chore: release v1.0.0-beta.16
chtushar Apr 5, 2026
b92f6c0
fix: parse JSON TEXT columns when reading from D1
chtushar Apr 5, 2026
3a19287
chore: release v1.0.0-beta.17
chtushar Apr 5, 2026
da48e25
feat: type telemetry config to accept single store or array
chtushar Apr 5, 2026
0462b5c
feat: add SQLite store for zero-config local dev
chtushar Apr 5, 2026
fcb170f
chore: add better-sqlite3 as optional peer dependency
chtushar Apr 5, 2026
429bf95
chore: release v1.0.0-beta.18
chtushar Apr 7, 2026
00457d1
Add better-sqlite3 as a dependency for planned sqliteStore
chtushar Apr 7, 2026
897d850
chore: release v1.0.0-beta.19
chtushar Apr 7, 2026
184268e
add opentui skill
chtushar Apr 7, 2026
8d40253
feat: add TUI command to CLI and update config loading
chtushar Apr 7, 2026
29b6ce9
feat: add eval primitives and CLI eval command
chtushar Apr 9, 2026
0da4b6b
chore: release v1.0.0-beta.20
chtushar Apr 9, 2026
84240e5
fix: add Bun setup to CI for CLI build
chtushar Apr 9, 2026
603f161
chore: release v1.0.0-beta.21
chtushar Apr 9, 2026
49c0012
chore: remove TUI command and Bun dependency from CLI
chtushar Apr 9, 2026
2615555
chore: release v1.0.0-beta.22
chtushar Apr 9, 2026
cd191fa
feat: add eval examples and fix CLI eval command
chtushar Apr 9, 2026
c8cece1
chore: gitignore eval result files
chtushar Apr 9, 2026
208421f
feat: use millisecond timestamps for eval result filenames
chtushar Apr 9, 2026
2d7f0bf
feat: improve judgeScorer and eval error reporting
chtushar Apr 9, 2026
c821217
feat: stream eval results as each datapoint completes
chtushar Apr 9, 2026
eef5b55
chore: release v1.0.0-beta.23
chtushar Apr 10, 2026
c5f0cb1
docs: update CLAUDE.md to reflect v1.0.0 architecture
chtushar Apr 10, 2026
0a56448
fix: allow store types to be assigned to TelemetryConfig
chtushar Apr 10, 2026
9d3b40e
chore: release v1.0.0-beta.24
chtushar Apr 10, 2026
834d2f0
fix: skip duplicate trace creation for internal SDK requests
chtushar Apr 10, 2026
491ef79
chore: release v1.0.0-beta.25
chtushar Apr 10, 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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,5 @@ node_modules
.sessions
_ralph
.mcp.json
.context
bin
74 changes: 74 additions & 0 deletions .opencode/command/opentui.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
description: Load OpenTUI skill and get contextual guidance for building terminal user interfaces
---

Load the OpenTUI TUI framework skill and help with any terminal user interface development task.

## Workflow

### Step 1: Check for --update-skill flag

If $ARGUMENTS contains `--update-skill`:

1. Determine install location by checking which exists:
- Local: `.opencode/skill/opentui/`
- Global: `~/.config/opencode/skill/opentui/`

2. Run the appropriate install command:
```bash
# For local installation
curl -fsSL https://raw.githubusercontent.com/msmps/opentui-skill/main/install.sh | bash

# For global installation
curl -fsSL https://raw.githubusercontent.com/msmps/opentui-skill/main/install.sh | bash -s -- --global
```

3. Output success message and stop (do not continue to other steps).

### Step 2: Load opentui skill

```
skill({ name: 'opentui' })
```

### Step 3: Identify task type from user request

Analyze $ARGUMENTS to determine:
- **Framework needed** (Core imperative, React declarative, Solid declarative)
- **Task type** (new project setup, component implementation, layout, keyboard handling, debugging, testing)

Use decision trees in SKILL.md to select correct reference files.

### Step 4: Read relevant reference files

Based on task type, read from `references/<area>/`:

| Task | Files to Read |
|------|---------------|
| New project setup | `<framework>/REFERENCE.md` + `<framework>/configuration.md` |
| Implement components | `<framework>/api.md` + `components/<category>.md` |
| Layout/positioning | `layout/REFERENCE.md` + `layout/patterns.md` |
| Handle keyboard input | `keyboard/REFERENCE.md` |
| Add animations | `animation/REFERENCE.md` |
| Debug/troubleshoot | `<framework>/gotchas.md` + `testing/REFERENCE.md` |
| Write tests | `testing/REFERENCE.md` |
| Understand patterns | `<framework>/patterns.md` |

### Step 5: Execute task

Apply OpenTUI-specific patterns and APIs from references to complete the user's request.

### Step 6: Summarize

```
=== OpenTUI Task Complete ===

Framework: <core | react | solid>
Files referenced: <reference files consulted>

<brief summary of what was done>
```

<user-request>
$ARGUMENTS
</user-request>
200 changes: 200 additions & 0 deletions .opencode/skill/opentui/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
---
name: opentui
description: Comprehensive OpenTUI skill for building terminal user interfaces. Covers the core imperative API, React reconciler, and Solid reconciler. Use for any TUI development task including components, layout, keyboard handling, animations, and testing.
metadata:
references: core, react, solid
---

# OpenTUI Platform Skill

Consolidated skill for building terminal user interfaces with OpenTUI. Use decision trees below to find the right framework and components, then load detailed references.

## Critical Rules

**Follow these rules in all OpenTUI code:**

1. **Use `create-tui` for new projects.** See framework `REFERENCE.md` quick starts.
2. **`create-tui` options must come before arguments.** `bunx create-tui -t react my-app` works, `bunx create-tui my-app -t react` does NOT.
3. **Never call `process.exit()` directly.** Use `renderer.destroy()` (see `core/gotchas.md`).
4. **Text styling requires nested tags in React/Solid.** Use modifier elements, not props (see `components/text-display.md`).

## How to Use This Skill

### Reference File Structure

Framework references follow a 5-file pattern. Cross-cutting concepts are single-file guides.

Each framework in `./references/<framework>/` contains:

| File | Purpose | When to Read |
|------|---------|--------------|
| `REFERENCE.md` | Overview, when to use, quick start | **Always read first** |
| `api.md` | Runtime API, components, hooks | Writing code |
| `configuration.md` | Setup, tsconfig, bundling | Configuring a project |
| `patterns.md` | Common patterns, best practices | Implementation guidance |
| `gotchas.md` | Pitfalls, limitations, debugging | Troubleshooting |

Cross-cutting concepts in `./references/<concept>/` have `REFERENCE.md` as the entry point.

### Reading Order

1. Start with `REFERENCE.md` for your chosen framework
2. Then read additional files relevant to your task:
- Building components -> `api.md` + `components/<category>.md`
- Setting up project -> `configuration.md`
- Layout/positioning -> `layout/REFERENCE.md`
- Keyboard/input handling -> `keyboard/REFERENCE.md`
- Animations -> `animation/REFERENCE.md`
- Troubleshooting -> `gotchas.md` + `testing/REFERENCE.md`

### Example Paths

```
./references/react/REFERENCE.md # Start here for React
./references/react/api.md # React components and hooks
./references/solid/configuration.md # Solid project setup
./references/components/inputs.md # Input, Textarea, Select docs
./references/core/gotchas.md # Core debugging tips
```

### Runtime Notes

OpenTUI runs on Bun and uses Zig for native builds. Read `./references/core/gotchas.md` for runtime requirements and build guidance.

## Quick Decision Trees

### "Which framework should I use?"

```
Which framework?
├─ I want full control, maximum performance, no framework overhead
│ └─ core/ (imperative API)
├─ I know React, want familiar component patterns
│ └─ react/ (React reconciler)
├─ I want fine-grained reactivity, optimal re-renders
│ └─ solid/ (Solid reconciler)
└─ I'm building a library/framework on top of OpenTUI
└─ core/ (imperative API)
```

### "I need to display content"

```
Display content?
├─ Plain or styled text -> components/text-display.md
├─ Container with borders/background -> components/containers.md
├─ Scrollable content area -> components/containers.md (scrollbox)
├─ ASCII art banner/title -> components/text-display.md (ascii-font)
├─ Data table with borders/wrapping -> components/code-diff.md (TextTable)
├─ Code with syntax highlighting -> components/code-diff.md
├─ Diff viewer (unified/split) -> components/code-diff.md
├─ Line numbers with diagnostics -> components/code-diff.md
└─ Markdown content (streaming) -> components/code-diff.md (markdown)
```

### "I need user input"

```
User input?
├─ Single-line text field -> components/inputs.md (input)
├─ Multi-line text editor -> components/inputs.md (textarea)
├─ Select from a list (vertical) -> components/inputs.md (select)
├─ Tab-based selection (horizontal) -> components/inputs.md (tab-select)
└─ Custom keyboard shortcuts -> keyboard/REFERENCE.md
```

### "I need layout/positioning"

```
Layout?
├─ Flexbox-style layouts (row, column, wrap) -> layout/REFERENCE.md
├─ Absolute positioning -> layout/patterns.md
├─ Responsive to terminal size -> layout/patterns.md
├─ Centering content -> layout/patterns.md
└─ Complex nested layouts -> layout/patterns.md
```

### "I need animations"

```
Animations?
├─ Timeline-based animations -> animation/REFERENCE.md
├─ Easing functions -> animation/REFERENCE.md
├─ Property transitions -> animation/REFERENCE.md
└─ Looping animations -> animation/REFERENCE.md
```

### "I need to handle input"

```
Input handling?
├─ Keyboard events (keypress, release) -> keyboard/REFERENCE.md
├─ Focus management -> keyboard/REFERENCE.md
├─ Paste events -> keyboard/REFERENCE.md
├─ Mouse events -> components/containers.md
├─ Text selection & copy-on-select -> keyboard/REFERENCE.md (selection)
└─ Clipboard (OSC 52) -> keyboard/REFERENCE.md (clipboard)
```

### "I need to test my TUI"

```
Testing?
├─ Snapshot testing -> testing/REFERENCE.md
├─ Interaction testing -> testing/REFERENCE.md
├─ Test renderer setup -> testing/REFERENCE.md
└─ Debugging tests -> testing/REFERENCE.md
```

### "I need to debug/troubleshoot"

```
Troubleshooting?
├─ Runtime errors, crashes -> <framework>/gotchas.md
├─ Layout issues -> layout/REFERENCE.md + layout/patterns.md
├─ Input/focus issues -> keyboard/REFERENCE.md
└─ Repro + regression tests -> testing/REFERENCE.md
```

### Troubleshooting Index

- Terminal cleanup, crashes -> `core/gotchas.md`
- Text styling not applying -> `components/text-display.md`
- Input focus/shortcuts -> `keyboard/REFERENCE.md`
- Layout misalignment -> `layout/REFERENCE.md`
- Flaky snapshots -> `testing/REFERENCE.md`

For component naming differences and text modifiers, see `components/REFERENCE.md`.

## Product Index

### Frameworks
| Framework | Entry File | Description |
|-----------|------------|-------------|
| Core | `./references/core/REFERENCE.md` | Imperative API, all primitives |
| React | `./references/react/REFERENCE.md` | React reconciler for declarative TUI |
| Solid | `./references/solid/REFERENCE.md` | SolidJS reconciler for declarative TUI |

### Cross-Cutting Concepts
| Concept | Entry File | Description |
|---------|------------|-------------|
| Layout | `./references/layout/REFERENCE.md` | Yoga/Flexbox layout system |
| Components | `./references/components/REFERENCE.md` | Component reference by category |
| Keyboard | `./references/keyboard/REFERENCE.md` | Keyboard input handling |
| Animation | `./references/animation/REFERENCE.md` | Timeline-based animations |
| Testing | `./references/testing/REFERENCE.md` | Test renderer and snapshots |

### Component Categories
| Category | Entry File | Components |
|----------|------------|------------|
| Text & Display | `./references/components/text-display.md` | text, ascii-font, styled text |
| Containers | `./references/components/containers.md` | box, scrollbox, borders |
| Inputs | `./references/components/inputs.md` | input, textarea, select, tab-select |
| Code & Diff | `./references/components/code-diff.md` | code, line-number, diff, markdown, text-table |

## Resources

**Repository**: https://github.com/anomalyco/opentui
**Core Docs**: https://github.com/anomalyco/opentui/tree/main/packages/core/docs
**Examples**: https://github.com/anomalyco/opentui/tree/main/packages/core/src/examples
**Awesome List**: https://github.com/msmps/awesome-opentui
Loading
Loading