Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# @dtechvision/indexingco-cli

## 0.1.0

### Minor Changes

- introduce the `indexingco tui` interactive dashboard with live polling, vim-style navigation, command palette, and in-app pipeline actions

## 0.0.3

### Patch Changes
Expand Down
60 changes: 60 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,66 @@ indexingco pipelines --api-key "your-api-key-here"
- `test` - Test a transformation
- `create` - Create/commit a transformation

### Terminal UI

Launch the k9s-inspired terminal dashboard with:

```bash
indexingco tui --api-key "your-api-key-here"
```

Key highlights:

- Vim-style navigation (`hjkl`, `gg`, `G`, `/`, `:`)
- Sidebar quick-jump (`gp`, `gf`, `gt`, `ga`)
- Search with live highlighting (`/`, `n`, `N`)
- Command palette for runtime tweaks (`:set refresh 10`, `:set theme light`)
- Pipeline actions (`b` backfill, `t` test, `D` delete) with inline confirmation
- Bookmarking (`m` + letter, `'` + letter) and persistent selection across refreshes
- Split details pane toggle (`d`) and modal drill-down (`enter`)
- Activity log capturing every API interaction

Use `K` inside the TUI to re-enter an API key and `?` to display the full keybinding reference.

#### Keymap & Commands

**Modes & Global Keys**

- `hjkl` / arrow keys – move selection in the focused pane
- `tab` / `shift+tab` – cycle focus between sidebar → table → details
- `gg`, `G` – jump to table top / bottom
- `/` – enter search mode (type inline; `esc` clears, `enter` returns to normal)
- `:` – open the command bar (vim-style palette)
- `n` / `N` – next / previous search match
- `?` – show the keybinding overlay
- `K` – prompt to re-enter the API key
- `d` – toggle the detail pane (hidden ↔ split)
- `enter` – open the modal detail overlay for the selected row
- `v` – toggle table view ↔ raw JSON
- `m` + letter – bookmark current row; `'` + letter jumps to bookmark
- `gp`, `gf`, `gt`, `ga` – jump to Pipelines / Filters / Transformations / Activity tabs
- `r` – force immediate refresh (resets countdown)
- `q` / `ctrl+c` – quit the TUI

**Command Bar (press `:` first)**

- `:refresh` – refresh immediately (same as `r`)
- `:set refresh <seconds>` – adjust polling interval
- `:set theme <dark|light|mono>` – switch themes on the fly
- `:set log-level <info|debug>` – toggle logging verbosity
- `:set api-key <value>` – swap API credentials without exiting
- `:filter <pipelines|filters|transformations> <text>` – apply table filter (works like `/`)
- `:view <pipelines|filters|transformations|activity>` – jump tabs
- `:logs` – shortcut for `:view activity`
- `:help` – show keybinding overlay
- `:quit` / `:q` – exit the TUI

**Pipeline-Specific Hotkeys** (table focused)

- `b` – backfill (prompts for network, then value)
- `t` – test (prompts for network, then beat/hash)
- `D` – delete after typing `yes` to confirm

### Help

```bash
Expand Down
127 changes: 122 additions & 5 deletions bun.lock

Large diffs are not rendered by default.

13 changes: 11 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@
"type": "git",
"url": "git+https://github.com/dtechvision/indexing-co-cli.git"
},
"dependencies": {
"ink": "^4.4.1",
"react": "^18.3.1",
"react-reconciler": "^0.29.0"
},
"publishConfig": {
"access": "public",
"directory": "dist"
Expand All @@ -20,12 +25,13 @@
"check": "tsc -b tsconfig.json",
"lint": "eslint \"**/{src,test,examples,scripts,dtslint}/**/*.{ts,mjs}\"",
"lint-fix": "bun run lint --fix",
"test": "vitest run",
"test": "node ./node_modules/vitest/vitest.mjs run",
"coverage": "vitest run --coverage",
"copy-package-json": "bun scripts/copy-package-json.ts",
"changeset-version": "changeset version && bun scripts/version.mjs",
"changeset-publish": "bun run build && TEST_DIST= bun vitest && changeset publish",
"release": "bun scripts/release.mjs"
"release": "bun scripts/release.mjs",
"postinstall": "patch-package"
},
"devDependencies": {
"@changesets/changelog-github": "^0.5.0",
Expand All @@ -40,16 +46,19 @@
"@eslint/eslintrc": "3.1.0",
"@eslint/js": "9.10.0",
"@types/node": "^22.5.2",
"@types/react": "^18.3.5",
"@typescript-eslint/eslint-plugin": "^8.4.0",
"@typescript-eslint/parser": "^8.4.0",
"effect": "latest",
"ink-testing-library": "^4.0.0",
"eslint": "^9.10.0",
"eslint-import-resolver-typescript": "^3.6.3",
"eslint-plugin-codegen": "0.28.0",
"eslint-plugin-deprecation": "^3.0.0",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-sort-destructure-keys": "^2.0.0",
"patch-package": "^8.0.0",
"tsup": "^8.2.4",
"typescript": "^5.6.2",
"vitest": "^2.0.5"
Expand Down
21 changes: 21 additions & 0 deletions patches/vitest@2.1.9.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
diff --git a/dist/chunks/utils.Cn0zI1t3.js b/dist/chunks/utils.Cn0zI1t3.js
index 1111111111111111111111111111111111111111..2222222222222222222222222222222222222222 100644
--- a/dist/chunks/utils.Cn0zI1t3.js
+++ b/dist/chunks/utils.Cn0zI1t3.js
@@ -13,7 +13,13 @@ function createThreadsRpcOptions({
return {
post: (v) => {
port.postMessage(v);
},
on: (fn) => {
- port.addListener("message", fn);
+ if (typeof port.addListener === "function") {
+ port.addListener("message", fn);
+ } else if (typeof port.on === "function") {
+ port.on("message", fn);
+ } else if (typeof port.addEventListener === "function") {
+ port.addEventListener("message", fn);
+ }
}
};
}
Loading