Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
676 commits
Select commit Hold shift + click to select a range
90d6455
refactor(tui): split stream output context
gocanto Jun 16, 2026
c63c77d
refactor(tui): split search session actions
gocanto Jun 16, 2026
3b5bf3b
refactor(tui): split multisearch session actions
gocanto Jun 16, 2026
5a283f4
refactor(tui): split data table search state
gocanto Jun 16, 2026
bda50f1
refactor(tui): split progress prompt guard
gocanto Jun 16, 2026
314ed95
refactor(tui): split number form step runners
gocanto Jun 16, 2026
e515d49
refactor(tui): split progress readback
gocanto Jun 16, 2026
ab1368a
refactor(tui): split task logger label sync
gocanto Jun 16, 2026
12f71c1
refactor(tui): split multisearch selected labels
gocanto Jun 16, 2026
054e602
refactor(tui): split progress labels
gocanto Jun 16, 2026
01cdba3
feat(tui): redraw task frames on logger changes
gocanto Jun 16, 2026
7dd60cf
feat(tui): redraw stream frames in place
gocanto Jun 16, 2026
5d3d486
refactor(tui): centralize prompt submission state
gocanto Jun 16, 2026
affaf3e
refactor(tui): share iterable validators
gocanto Jun 16, 2026
0606eb2
refactor(tui): reuse submission state across prompts
gocanto Jun 16, 2026
4e4b14a
chore(tui): expose package module entrypoints
gocanto Jun 16, 2026
c8a9e92
refactor(tui): share disabled choice labels
gocanto Jun 16, 2026
a420edc
refactor(tui): centralize choice labels
gocanto Jun 16, 2026
b922cfd
refactor(tui): share table cell validators
gocanto Jun 16, 2026
c73f446
fix(tui): clamp progress frame values
gocanto Jun 16, 2026
3d2638d
refactor(tui): validate stream chunks
gocanto Jun 16, 2026
c186298
fix(tui): restore task streams before flushing
gocanto Jun 16, 2026
7fa463a
refactor(tui): split spinner lifecycle options
gocanto Jun 16, 2026
f55bbd8
refactor(tui): share data table submission state
gocanto Jun 16, 2026
a6f4e4f
refactor(tui): validate task definitions
gocanto Jun 16, 2026
9f043b1
fix(tui): preserve number retry defaults
gocanto Jun 16, 2026
8eb2179
fix(tui): preserve retry defaults across prompts
gocanto Jun 16, 2026
efe4ffe
refactor(tui): validate choice prompt overloads
gocanto Jun 16, 2026
1606e6f
refactor(tui): validate basic prompt overloads
gocanto Jun 16, 2026
5dfd80d
refactor(tui): validate task output writer inputs
gocanto Jun 16, 2026
f747308
refactor(tui): validate dynamic choice sources
gocanto Jun 16, 2026
bb0e52e
refactor(tui): centralize runtime validators
gocanto Jun 16, 2026
45de364
fix(tui): preserve parser error retry values
gocanto Jun 16, 2026
9058e54
refactor(tui): parse form status overloads
gocanto Jun 16, 2026
6f28970
refactor(tui): parse form choice overloads
gocanto Jun 16, 2026
91fce87
refactor(tui): parse basic form step names
gocanto Jun 16, 2026
7a27739
refactor(tui): parse form output rows
gocanto Jun 16, 2026
a46927a
refactor(tui): parse public prompt overloads
gocanto Jun 16, 2026
d43eda0
refactor(tui): parse progress step sources
gocanto Jun 16, 2026
6231a58
refactor(tui): parse notification platforms
gocanto Jun 16, 2026
62d533e
refactor(tui): parse data table defaults
gocanto Jun 16, 2026
64d86da
refactor(tui): parse key lookup names
gocanto Jun 16, 2026
a003f6e
refactor(tui): parse shared prompt defaults
gocanto Jun 16, 2026
6421ed5
refactor(tui): parse data table row values
gocanto Jun 16, 2026
b2ffe4c
refactor(tui): parse prompt cancel values
gocanto Jun 16, 2026
7c1b727
refactor(tui): parse invalid retry values
gocanto Jun 16, 2026
4bad167
refactor(tui): parse prompt fallback boundaries
gocanto Jun 16, 2026
60b0c2f
refactor(tui): parse process output streams
gocanto Jun 16, 2026
fd16c21
refactor(tui): parse normalized choice values
gocanto Jun 16, 2026
49aab97
refactor(tui): parse previous form responses
gocanto Jun 16, 2026
568151b
refactor(tui): parse data table option rows
gocanto Jun 16, 2026
d8cce72
refactor(tui): parse status callbacks
gocanto Jun 16, 2026
8367e8a
refactor(tui): parse choice option schemas
gocanto Jun 16, 2026
0c976e3
refactor(tui): parse iterable containers
gocanto Jun 16, 2026
0ad8f63
refactor(tui): parse data table row shapes
gocanto Jun 16, 2026
a3f8c0b
refactor(tui): parse select choice schemas
gocanto Jun 16, 2026
cf8b35b
refactor(tui): parse search source schemas
gocanto Jun 16, 2026
125dc43
refactor(tui): use direct multi choice result type
gocanto Jun 16, 2026
058f2cd
feat(tui): export environment helper types
gocanto Jun 16, 2026
71331e5
feat(tui): export progress signal target type
gocanto Jun 16, 2026
1b8693a
chore(tui): isolate generated tool caches
gocanto Jun 16, 2026
6164969
refactor(tui): parse lifecycle errors through validators
gocanto Jun 16, 2026
9cd2533
refactor(tui): parse raw key chunks through validators
gocanto Jun 16, 2026
7eec975
refactor(tui): parse prompt numeric boundaries
gocanto Jun 16, 2026
d330bfe
refactor(tui): parse choice record entries
gocanto Jun 16, 2026
e30e07c
refactor(tui): parse data table row fields
gocanto Jun 16, 2026
15e39be
refactor(tui): parse comma choice answers
gocanto Jun 16, 2026
76c1f37
refactor(tui): compose prompt info details
gocanto Jun 16, 2026
1bbd0f0
refactor(tui): parse note message lines
gocanto Jun 16, 2026
efbbe01
refactor(tui): parse task log lines
gocanto Jun 16, 2026
0693bd4
refactor(tui): parse stream and process chunks
gocanto Jun 16, 2026
3c48680
refactor(tui): resolve fallback conditions in validators
gocanto Jun 16, 2026
06bef00
refactor(tui): validate task definitions
gocanto Jun 16, 2026
5f4755b
refactor(tui): preserve partial input configuration
gocanto Jun 16, 2026
30a99af
refactor(tui): validate environment output patches
gocanto Jun 16, 2026
031e6aa
refactor(tui): resolve form conditions in validators
gocanto Jun 16, 2026
ee30f3f
refactor(tui): parse first key value in validators
gocanto Jun 16, 2026
4649dda
refactor(tui): resolve prompt sources in validators
gocanto Jun 16, 2026
80f496f
refactor(tui): branch basic form prompts through validators
gocanto Jun 16, 2026
29b20f0
refactor(tui): branch choice form prompts through validators
gocanto Jun 16, 2026
ab2e452
refactor(tui): resolve stream form arguments in validators
gocanto Jun 16, 2026
3a5b473
refactor(tui): resolve task form arguments in validators
gocanto Jun 16, 2026
1562aa5
refactor(tui): resolve choice form arguments in validators
gocanto Jun 16, 2026
41a482c
refactor(tui): resolve confirm form arguments in validators
gocanto Jun 16, 2026
ab6bed4
refactor(tui): resolve basic form arguments in validators
gocanto Jun 16, 2026
739266c
refactor(tui): resolve status form arguments in validators
gocanto Jun 16, 2026
ad7ec51
refactor(tui): resolve output form arguments in validators
gocanto Jun 16, 2026
aef9beb
refactor(tui): resolve process output writes in validators
gocanto Jun 16, 2026
7b4b938
refactor(tui): split basic form validators by concern
gocanto Jun 16, 2026
b02f568
refactor(tui): split status form validators by concern
gocanto Jun 16, 2026
43e5fdc
refactor(tui): split select form validators by concern
gocanto Jun 16, 2026
185f93b
refactor(tui): split search form validators by concern
gocanto Jun 16, 2026
c5e5704
refactor(tui): split suggest form validators by concern
gocanto Jun 16, 2026
9b58a1e
refactor(tui): split output form validators by concern
gocanto Jun 16, 2026
0625a22
refactor(tui): split process output validators by concern
gocanto Jun 16, 2026
4927980
refactor(tui): share choice option validation
gocanto Jun 16, 2026
47dccf3
refactor(tui): move terminal color parsing to validators
gocanto Jun 16, 2026
f9aa58b
ci: run validation when draft is ready
gocanto Jun 16, 2026
8cbbcae
chore: route tool caches through provision
gocanto Jun 16, 2026
9981aaa
fix(tui): lazy load opentui test renderer
gocanto Jun 16, 2026
0637174
fix(tui): normalize note message newlines
gocanto Jun 16, 2026
9b13ea6
fix(tui): allow sync scoped environment callbacks
gocanto Jun 16, 2026
19558c8
fix(tui): normalize multiline content newlines
gocanto Jun 16, 2026
d167cbb
fix(tui): allow sync prompt input methods
gocanto Jun 16, 2026
873c193
fix(tui): align public helper option types
gocanto Jun 16, 2026
367910f
fix(tui): expose notification input option types
gocanto Jun 16, 2026
e1a8f9c
fix(tui): type resolved spinner options
gocanto Jun 16, 2026
4dcf9a5
fix(tui): narrow progress overload return types
gocanto Jun 16, 2026
03f7b4d
fix(tui): require callbacks for form progress steps
gocanto Jun 16, 2026
64fa09e
refactor(tui): centralize previous default validation
gocanto Jun 16, 2026
8a7a5f0
fix(tui): reject empty data table prompts
gocanto Jun 16, 2026
485df25
fix(tui): align multi choice default matching
gocanto Jun 16, 2026
5f68117
fix(tui): return matched multisearch default values
gocanto Jun 16, 2026
ff07f62
fix(tui): resolve line mode multi defaults
gocanto Jun 16, 2026
aa7ab4a
fix(tui): resolve line mode search defaults
gocanto Jun 16, 2026
1a7e685
fix(tui): match data table defaults by value
gocanto Jun 16, 2026
2865642
fix(tui): honor data table fallback defaults
gocanto Jun 16, 2026
4657124
fix(tui): ignore disabled default choices
gocanto Jun 16, 2026
234e5b8
fix(tui): preserve password defaults on empty submit
gocanto Jun 16, 2026
8b607fa
fix(tui): require data table fallback input
gocanto Jun 16, 2026
0f2eb37
fix(tui): default data tables to first row
gocanto Jun 16, 2026
5516169
fix(tui): scope data table fallback defaults
gocanto Jun 16, 2026
9e85fd0
fix(tui): clear invalid search frames
gocanto Jun 16, 2026
0c06059
fix(tui): require object search prompts by default
gocanto Jun 16, 2026
1db71ed
fix(tui): validate multi prompt defaults
gocanto Jun 16, 2026
b45b24b
fix(tui): gate search exhausted defaults
gocanto Jun 16, 2026
5f2ed33
ci: keep validation manual for local testing
gocanto Jun 16, 2026
81c5ae8
fix(tui): isolate scoped prompt environments
gocanto Jun 16, 2026
35b2105
perf(tui): optimize shared text operations
gocanto Jun 16, 2026
2259669
fix(tui): preserve stacked ansi styles
gocanto Jun 16, 2026
00cb53e
perf(tui): optimize plain text wrapping
gocanto Jun 16, 2026
7989563
fix(tui): handle grouped ansi resets
gocanto Jun 16, 2026
1eb1484
fix(tui): cancel pause prompts
gocanto Jun 16, 2026
6ee990d
fix(tui): cancel filtered data tables
gocanto Jun 16, 2026
9abe78c
fix(tui): resolve exhausted search input
gocanto Jun 16, 2026
2a11f14
fix(tui): validate dynamic choice sources
gocanto Jun 16, 2026
de61a11
fix(tui): cancel invalid select highlights
gocanto Jun 16, 2026
7bac1be
fix(tui): preserve multi search cancel selection
gocanto Jun 16, 2026
832368d
refactor(tui): extract multiselect cancellation
gocanto Jun 16, 2026
c0ffaab
refactor(tui): consolidate search cancellation
gocanto Jun 16, 2026
b9281cc
fix(tui): track partial task log trimming
gocanto Jun 16, 2026
168187a
fix(tui): complete progress on finish
gocanto Jun 16, 2026
d9dda30
fix(tui): retry notification fallbacks
gocanto Jun 16, 2026
cb3703d
fix(tui): preserve raw input flow state
gocanto Jun 16, 2026
cd89c05
fix(tui): reset grouped ansi colors
gocanto Jun 16, 2026
55f5779
fix(tui): render cursor before newlines
gocanto Jun 16, 2026
0227e3d
fix(tui): preserve decimal number input
gocanto Jun 16, 2026
348ebbd
fix(tui): preserve decimal number steps
gocanto Jun 16, 2026
59bd397
fix(tui): clamp narrow grid layout
gocanto Jun 16, 2026
f34ac29
fix(tui): guard empty data table widths
gocanto Jun 16, 2026
01b3295
fix(tui): preserve data table search selection
gocanto Jun 16, 2026
5aa5ca2
fix(tui): trim data table fallback queries
gocanto Jun 16, 2026
64ce793
fix(tui): apply number defaults after parsing
gocanto Jun 16, 2026
dc96907
fix(tui): return highlighted select on input exhaustion
gocanto Jun 16, 2026
7cb613c
fix(tui): return highlighted search on input exhaustion
gocanto Jun 16, 2026
833477f
fix(tui): return highlighted suggest on input exhaustion
gocanto Jun 16, 2026
4ce55d7
fix(tui): keep multisearch exhaustion unsubmitted
gocanto Jun 16, 2026
b2fe0a2
fix(tui): keep confirm exhaustion unsubmitted
gocanto Jun 16, 2026
f53d115
fix(tui): keep multiselect exhaustion unsubmitted
gocanto Jun 16, 2026
d8a4506
fix(tui): clamp non-finite grid widths
gocanto Jun 16, 2026
2a8dc01
fix(tui): clamp progress frame widths
gocanto Jun 16, 2026
8c44964
fix(tui): validate terminal dimensions
gocanto Jun 16, 2026
4543e94
fix(tui): validate terminal erase counts
gocanto Jun 16, 2026
9cb6acc
fix(tui): validate box render widths
gocanto Jun 16, 2026
ac2f93d
fix(tui): validate typed value row windows
gocanto Jun 16, 2026
e2047e4
fix(tui): validate typed value cursor bounds
gocanto Jun 16, 2026
ec74923
fix(tui): validate stream fade steps
gocanto Jun 16, 2026
dd21088
fix(tui): validate stream buffer fade limit
gocanto Jun 16, 2026
649715a
fix(tui): validate stream frame widths
gocanto Jun 16, 2026
2e2abf4
fix(tui): validate task log limits
gocanto Jun 16, 2026
4c50709
fix(tui): validate grid render widths
gocanto Jun 16, 2026
138c9d6
fix(tui): validate data table widths
gocanto Jun 16, 2026
2284baf
fix(tui): validate data table column counts
gocanto Jun 16, 2026
71f8e5c
fix(tui): clear active prompts on reader errors
gocanto Jun 16, 2026
69788fa
fix(tui): restore stream terminal on flush errors
gocanto Jun 16, 2026
60963e6
fix(tui): restore progress terminal on erase errors
gocanto Jun 16, 2026
4c31e78
fix(tui): restore status cursor on cleanup errors
gocanto Jun 16, 2026
35acb1d
fix(tui): clean up raw key sessions on invalid chunks
gocanto Jun 16, 2026
27d0c13
fix(tui): validate typed value wrap widths
gocanto Jun 16, 2026
c17c204
fix(tui): validate string layout dimensions
gocanto Jun 16, 2026
4d9964a
fix(tui): validate number prompt step
gocanto Jun 16, 2026
dfaa4af
fix(tui): validate data table selection state
gocanto Jun 16, 2026
62db984
fix(tui): validate grid layout width
gocanto Jun 16, 2026
4748b0a
fix(tui): parse number input through zod
gocanto Jun 16, 2026
93a62f6
fix(tui): validate notification commands
gocanto Jun 16, 2026
8d10ba9
fix(tui): clear active frame after erase errors
gocanto Jun 16, 2026
81bfcd9
fix(tui): unref raw key escape timer
gocanto Jun 16, 2026
7fb34a1
fix(tui): validate keyboard events
gocanto Jun 16, 2026
8dc28ef
fix(tui): ignore empty printable keys
gocanto Jun 16, 2026
4f9e7dc
fix(tui): commit task frame after write
gocanto Jun 16, 2026
18f98ee
fix(tui): clear progress frame after erase
gocanto Jun 16, 2026
68a82ed
fix(tui): commit stream frame after write
gocanto Jun 16, 2026
44d78de
fix(tui): restore progress cursor on setup errors
gocanto Jun 16, 2026
e2b2887
fix(tui): restore task cursor on setup errors
gocanto Jun 16, 2026
400d4d8
fix(tui): validate stream fade options
gocanto Jun 16, 2026
172d8b0
fix(tui): validate process output encodings
gocanto Jun 16, 2026
9f00973
fix(tui): restore spinner cursor on setup errors
gocanto Jun 16, 2026
1fa8f9a
fix(tui): validate status signal targets
gocanto Jun 16, 2026
e430960
fix(tui): validate environment helper inputs
gocanto Jun 16, 2026
e1bfe79
fix(tui): validate prompt output content
gocanto Jun 16, 2026
2c1f544
fix(tui): tolerate invalid required options
gocanto Jun 16, 2026
6cc24c6
fix(tui): preserve data table defaults on transform errors
gocanto Jun 16, 2026
d129f11
fix(provision): declare ts workspace import alias
gocanto Jun 16, 2026
2ba5d23
fix(provision): isolate scoped environments
gocanto Jun 16, 2026
be345ac
fix(tui): flush stream close in one frame
gocanto Jun 16, 2026
7d03f99
fix(tui): bind prompt stream output writers
gocanto Jun 16, 2026
3238b8e
fix(tui): normalize invalid progress steps
gocanto Jun 16, 2026
85ee466
fix(tui): guard progress values parser
gocanto Jun 16, 2026
d76bd39
fix(tui): normalize invalid task definitions
gocanto Jun 16, 2026
98757de
fix(tui): normalize invalid spinner options
gocanto Jun 16, 2026
60768ff
fix(tui): normalize invalid notification options
gocanto Jun 16, 2026
4dfcb02
fix(tui): normalize invalid environment patches
gocanto Jun 16, 2026
7d1571f
fix(tui): normalize invalid scripted input
gocanto Jun 16, 2026
270af2b
fix(tui): normalize invalid output values
gocanto Jun 16, 2026
5a2b986
fix(tui): normalize prompt validator failures
gocanto Jun 16, 2026
470d78e
fix(tui): normalize core validator failures
gocanto Jun 16, 2026
9279da9
fix(tui): harden notification command lookup
gocanto Jun 16, 2026
d172bc0
fix(tui): avoid spread insertion limits
gocanto Jun 16, 2026
3781f21
fix(tui): submit direct confirm choices
gocanto Jun 16, 2026
4b61a32
feat(tui): expose public subpath exports
gocanto Jun 16, 2026
7eceaf5
fix(tui): sanitize terminal titles
gocanto Jun 17, 2026
01e2a30
chore: document provision cache buckets
gocanto Jun 17, 2026
06b445d
fix(tui): move data table default validation
gocanto Jun 17, 2026
f255df5
fix(tui): coalesce piped stream renders
gocanto Jun 17, 2026
b508151
fix(tui): keep stream append public API stable
gocanto Jun 17, 2026
4efdb14
feat(tui): export prompt domain subpaths
gocanto Jun 17, 2026
1cd3e8e
feat(tui): export status and output subpaths
gocanto Jun 17, 2026
c45a8a6
feat(tui): expose prompts subpath
gocanto Jun 17, 2026
10d28a8
feat(tui): export basic prompt subpaths
gocanto Jun 17, 2026
399fa34
chore(tui): avoid relative helper paths
gocanto Jun 17, 2026
9a9832c
docs(tui): update parity map for package surface
gocanto Jun 17, 2026
398fd55
fix(tui): map shifted arrow key events
gocanto Jun 17, 2026
937f107
fix(tui): scope prompt hook state
gocanto Jun 17, 2026
22c9fb2
chore: derive test paths from workspace root
gocanto Jun 17, 2026
15c6ce4
fix(tui): keep confirm line default consistent
gocanto Jun 17, 2026
13c9e89
fix(tui): preserve data table fallback hint
gocanto Jun 17, 2026
2fe041b
fix(tui): align textarea cursor boundaries
gocanto Jun 17, 2026
fb7eb80
fix(tui): defer captured output callbacks
gocanto Jun 17, 2026
64861b1
fix(tui): normalize true color detection
gocanto Jun 17, 2026
84fa898
perf(tui): reuse normalized prompt queries
gocanto Jun 17, 2026
44d010c
fix(tui): render data table cancellation state
gocanto Jun 17, 2026
e897fa3
fix(tui): preserve cancelled select output
gocanto Jun 17, 2026
88c9717
fix(tui): accept named table form steps
gocanto Jun 17, 2026
771bcd6
fix(tui): preserve callable validators and prompt retries
gocanto Jun 17, 2026
387ca12
format
gocanto Jun 17, 2026
d97d2f2
ci: enable validation for pull requests
gocanto Jun 17, 2026
6b70c59
docs: move vitepress source out of generated directory
gocanto Jun 17, 2026
27740c5
ci: stream test logs
gocanto Jun 17, 2026
62ab9e3
test: allow package acceptance checks to finish in ci
gocanto Jun 17, 2026
4b4620e
Merge pull request #2 from oullin/chore/console-shell-go-port
gocanto Jun 17, 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
  •  
  •  
  •  
40 changes: 40 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Build, typecheck, and test

on:
pull_request:
types:
- ready_for_review
- reopened
- synchronize
workflow_dispatch:

jobs:
validate:
name: Validate
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 11.1.1

- name: Setup Node
uses: actions/setup-node@v5
with:
node-version: 25
cache: pnpm

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build
run: pnpm build

- name: Typecheck
run: pnpm typecheck

- name: Test
run: pnpm test
14 changes: 14 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
node_modules/
.turbo/
**/.turbo/
.cache/
**/.cache/
provision/.cache/
.DS_Store
coverage/
*.tsbuildinfo
packages/artefacts/.logs/
packages/artefacts/dist/
packages/tui/dist/
packages/docs/src/.vitepress/
packages/docs/src/api/
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
store-dir=provision/.cache/pnpm/store
23 changes: 23 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
MIT License

Copyright (c) 2026 Oullin

Portions of this package are derived from upstream MIT-licensed prompt toolkit code.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
70 changes: 70 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
SHELL := /bin/bash

ROOT_PATH := $(CURDIR)
FMT_IMAGE := ghcr.io/oullin/go-fmt:v0.4.0
FMT_RUN := docker run --rm \
--user $$(id -u):$$(id -g) \
-v $(ROOT_PATH):/work \
-w /work \
-e HOST_PROJECT_PATH=$(ROOT_PATH) \
$(FMT_IMAGE)

TS_GLOBS := '*.ts' '*.tsx' '*.vue' '*.mts' '*.cts'

.DEFAULT_GOAL := help

define step
@printf "\n\033[1;36m==>\033[0m \033[1m%s\033[0m\n" "$(1)"
endef

define run_oxfmt
@cd "$(ROOT_PATH)" && tmp=$$(mktemp); git ls-files -z $(1) --exclude-standard -- $(TS_GLOBS) | while IFS= read -r -d '' f; do [ -f "$$f" ] && printf '%s\0' "$$f"; done > "$$tmp"; if [ ! -s "$$tmp" ]; then echo "No TS/Vue files to format."; rm -f "$$tmp"; else xargs -0 $(FMT_RUN) format < "$$tmp"; rc=$$?; rm -f "$$tmp"; exit $$rc; fi
endef

define run_in
@cd "$(1)" && $(2)
endef

.PHONY: help dev format format-all fresh

help:
@awk 'BEGIN {FS = ":.*?## "; printf "\nUsage: \033[36mmake <target>\033[0m\n"} \
/^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5); next } \
/^[a-zA-Z0-9_.-]+:.*?##/ { printf " \033[36m%-28s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
@echo ""

##@ Development
dev: ## Run the docs dev server
$(call run_in,$(ROOT_PATH),pnpm --filter docs dev)

##@ Formatting
format: ## Format + lint untracked + modified TS/Vue files via oxfmt/oxlint
$(call run_oxfmt,--others --modified)

format-all: ## Format + lint every non-ignored TS/Vue file in the repo via oxfmt/oxlint
@cd "$(ROOT_PATH)" && tmp=$$(mktemp); git ls-files -z --cached --others --exclude-standard -- $(TS_GLOBS) | while IFS= read -r -d '' f; do [ -f "$$f" ] && printf '%s\0' "$$f"; done > "$$tmp"; if [ ! -s "$$tmp" ]; then echo "No TS/Vue files to format."; rm -f "$$tmp"; else xargs -0 $(FMT_RUN) format < "$$tmp"; rc=$$?; rm -f "$$tmp"; exit $$rc; fi

##@ Maintenance
fresh: ## Clean generated state, reinstall dependencies, then build
$(call step,Removing generated dependency/cache/build state)
@test -n "$(ROOT_PATH)" && test "$(ROOT_PATH)" != "/" || { echo "Refusing to clean unsafe ROOT_PATH='$(ROOT_PATH)'"; exit 1; }
rm -rf \
"$(ROOT_PATH)/node_modules" \
"$(ROOT_PATH)"/packages/*/node_modules \
"$(ROOT_PATH)"/provision/*/node_modules \
"$(ROOT_PATH)/provision/.cache" \
"$(ROOT_PATH)/packages/artefacts/.logs" \
"$(ROOT_PATH)/packages/artefacts/dist" \
"$(ROOT_PATH)/packages/docs/src/.vitepress/cache" \
"$(ROOT_PATH)/packages/docs/src/.vitepress/dist" \
"$(ROOT_PATH)/packages/docs/src/api" \
"$(ROOT_PATH)/packages/tui/dist"
$(call step,Removing generated workspace caches)
find "$(ROOT_PATH)" -path "$(ROOT_PATH)/.git" -prune -o -type d -name '.turbo' -prune -exec rm -rf {} +
find "$(ROOT_PATH)" -path "$(ROOT_PATH)/.git" -prune -o -path "$(ROOT_PATH)/provision/.cache" -prune -o -type d -name '.cache' -prune -exec rm -rf {} +
$(call step,Removing TypeScript build info files)
find "$(ROOT_PATH)" -name '*.tsbuildinfo' -type f -delete
$(call step,Installing dependencies)
$(call run_in,$(ROOT_PATH),pnpm install)
$(call step,Building from scratch)
$(call run_in,$(ROOT_PATH),pnpm build)
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# `@ollin/tui`

An idiomatic TypeScript/OpenTUI prompt toolkit.

This repository targets behavioral parity with reference prompt toolkit release
`v0.3.18` while using TypeScript-first modules and package boundaries.

## Status

The current codebase is a TypeScript ESM package with the public `@ollin/tui`
entrypoint exporting prompts, form composition, output helpers, status
indicators, terminal utilities, OpenTUI adapter wiring, and deterministic prompt
environment helpers.

Local test suites cover prompt behavior, form flows, output and status helpers,
terminal and string utilities, key handling, typed-value editing, and package
consumption through `packages/acceptance`. The docs package builds a VitePress
guide plus generated API reference. Reference parity and the completion audit are
tracked in `UPSTREAM.md`.

## Development

```sh
pnpm install
pnpm typecheck
pnpm test
```
Loading
Loading