feat(host): quick-pick welcome screen for bare /workflow - #41
Merged
Conversation
Bare /workflow now opens a compact terminal-native quick-pick in the TUI editor slot (like /settings), a native dialog over RPC, and falls back to the plain /workflow list in print/json modes where hasUI is false. Rows show each workflow's name and description, duplicate declared names gain a filename hint, and broken workflow files surface as warnings in every mode. Shared catalog-option presentation lives in workflow-display.ts so dialogs, the picker, and listings agree. Spec §6.0 documents the decisions. Co-Authored-By: Kimchi <noreply@kimchi.dev>
Add an external-dependency workflow that imports slugify from its own package directory, installed with a dedicated pnpm package detached from the workspace. examples/.npmignore keeps the example's node_modules out of the published tarball. Co-Authored-By: Kimchi <noreply@kimchi.dev>
Kimchi Code ReviewA review is being prepared and will be posted shortly.
What to expectKimchi will analyze the changes in this pull request and post:
The review typically completes within a few minutes. This comment will be updated once the review is ready. Interact with Kimchi
ConfigurationReviews are configured by your organization admin. Powered by Kimchi — AI-powered code review by CAST AI |
examples/ becomes a standalone package owning its toolchain (vitest, typescript, slugify) with its own lockfile; its tsconfig and vitest config alias the published @kimchi-dev/kimchi-workflows specifiers to src/ so the suite exercises the current checkout. The offline suite moves from test/examples-suite.test.ts to examples/example-workflows.test.ts and covers every example, guarded by a directory-coverage test, and the external-dependency example gains a real run test. Root tsconfig no longer typechecks examples/, so the detached-dependency example stops breaking the root typecheck job. New typecheck:examples / test:examples scripts; CI gains an examples job and the release check runs the same steps, both installing example dependencies first. biome now errors on undeclared dependencies. Co-Authored-By: Kimchi <noreply@kimchi.dev>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Bare
/workflow(no subcommand) is now the feature's front door instead of a no-op:same interaction region as
/settings— numbered rows, arrow/jk navigation, Enter to run,number-key shortcuts, Esc/Ctrl-C to dismiss, and the host restores the editor afterwards.
hasUIfalse): falls back to the plain/workflow listresponse, withoutscanning the catalog first.
Rows show each workflow's name and description; duplicate declared names get a filename hint
so rows stay distinguishable;
Create new workflowis always last (and the sole action in theempty state). Broken workflow files are surfaced as warnings in every mode and never offered
for selection. Selecting a workflow runs its exact file.
Implementation notes
normalization) lives in new
src/host/workflow-display.ts, used by the picker, the RPCdialog, and the plain listing so all three agree.
restores the editor.
pi-tuiis pulled in via dynamic import only in TUI mode — rpc/print processes never load it.notifyBrokenWorkflowsextracted from/workflow listso broken files cannot be hidden byany catalog surface.
Docs & spec
broken-file visibility).
/workflowrow; the trust-boundary note now covers thepicker, which imports every workflow module just like
/workflow list.Also in this PR
examples/external-dependency/— a self-contained example verifying a workflow can resolvea third-party package (
slugify) from its own package directory, plusexamples/.npmignoreso the example's
node_modulesstays out of the published tarball (verified withnpm pack --dry-run). Happy to split this into its own PR if you prefer.Testing
test/workflow-picker.test.ts(6 tests): screenshot-shaped rendering, empty state,keyboard navigation, numbered shortcuts, duplicate disambiguation, editor-slot settling,
fail-closed path.
test/extension-handlers.test.ts: RPC empty/populated/broken states, end-to-end TUI catalog discovery through the dynamic import, headless
fallback proving no scan occurs.
tsc --noEmitandbiome checkclean.