Skip to content

feat(studio): organised toolbar, editor folder dialog, and drag-to-output (includes #258, #259) - #260

Merged
russoedu merged 8 commits into
mainfrom
feat/studio-drag-to-output
Oct 14, 2026
Merged

russoedu merged 8 commits into
mainfrom
feat/studio-drag-to-output

Conversation

@russoedu

@russoedu russoedu commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Why

Studio's toolbar mixed three jobs under confusing labels (three folder buttons, a recipe dropdown, + New recipe, and an Open document… that opened nothing), and building the output meant clicking proposals or typing fields. This is the whole set, on one branch, to go to main together.

Supersedes #258 and #259: their commits are included, so merging this closes both.

What

Record tab suggestions (#258)

  • A strip lists values the steps read that no field uses, with a guessed type; + adds the field and its mapping in one click, Add all adds every one.
  • Each field row opens with a type badge, the source pill and the sample value.

Toolbar (#259)

  • Recipe ▾: the recipes of the open folder (opening one opens the output it names), New recipe…, Open folder….
  • Load ▾: Document… and Web page (URL)…; dropping a file anywhere is the same Load. A source of the kind the open recipe reads replaces its start address (steps and mapping stay); the other kind, or no open recipe, starts a new recipe and says so.
  • "All changes saved" / "Saving…" status.
  • Recipe-creating files moved into a recipe-start/ slice (own commit, no behaviour change).
  • Open folder… goes straight to the server's dialog and falls back to a typed box only when there is none. In the VS Code extension that dialog is vscode.window.showOpenDialog, asked over the Studio process's IPC channel (works in remote windows).
  • Desktop e2e tests follow the new menu.

Drag to output (this PR's own commits)

  • The Record tab's field list is a drop target: a pill adds a field and its mapping; a content-pane selection is appended to the steps and its values become fields. A pill dropped on a row's source box still only maps that row.
  • Holding a pill or a selection over the Record tab opens it.
  • Manual §2, §5 and the READMEs updated.

Not included

  • No VS Code extension version bump: the extension stays at 0.1.0, so merging does not publish a new one.
  • No server-side "open a recipe file" dialog; Recipe ▾ lists the open folder's recipes.

Test plan

  • studio-ui and vscode-extension jest, lint and typecheck (nx targets)
  • studio-desktop e2e and packaged e2e (fixed for the new menu; CI)
  • Real browser: pill → Record tab → list, and a PDF/grid chip → Record tab → list
  • Real VS Code window: Recipe ▾ → Open folder…, local and remote

🤖 Generated with Claude Code

https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap

russoedu and others added 8 commits October 14, 2026 13:09
…ummarise each field row

The Record tab lists values the steps read that no field uses, with a guessed
type, and adds a field and its mapping in one click. Each row opens with a type
badge, its source pill and the sample value.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_014yC6LN4a8qnR7gu3QmRnbg
… slice

Pure move, no behaviour change: the new-recipe dialog, the drop zone and the
open-by-path and document-import flows leave the shell's folder for a slice
with its own barrel, so the toolbar rework can build on it without the app
folder growing past the size review line.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
Recipe ▾ is which recipe is being edited (the recipes of the open folder,
New recipe…, Open folder…), Load ▾ is what it reads (Document…, Web page
(URL)…), and a status says edits are saved as they are made. The folder box,
Open, Browse… and Open document… buttons give way to those.

Load puts the source into the open recipe: a page replaces a web recipe's
start address, a document a document recipe's, steps and mapping kept. A
source of the other kind starts a new recipe and leaves the open one alone,
and a bar says which happened. Dropping a file anywhere is the same Load.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
Open folder… in the browser now goes straight to the server's folder dialog
and only offers the typed box when there is none. In the VS Code extension
that dialog is vscode.window.showOpenDialog: the Studio process asks the
extension host over its IPC channel and the answer opens the workspace, in a
remote window on the remote machine where the recipe folder is.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
…elds

The Record tab's field list is a drop target. A pill dragged from a Steps card
adds a field and its mapping, typed as its proposal would be (or a text field
named after it for a loop alias or a value already mapped). A selection staged
in the content pane, dragged by its chip, is appended to the steps as dropping
it on the Steps tab does and, once the recipe reloads, the values it reads
become fields. A pill dropped on a row's own source box still only maps that
row.

Holding a pill or a selection over the Record tab opens it, so the drag does
not need both tabs on screen at once.

The manual no longer says edits outside the JSON tab save themselves: the
Record tab keeps its own Save.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
…ect, in the e2e tests

The recipe list moved from a native select into Recipe ▾; the two e2e tests
that waited for its option now wait for the menu button naming the
auto-selected recipe.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01TjR6eM2tUwU3NGnKXsmEap
@russoedu russoedu changed the title feat(studio-ui): drag pills and selections onto the output to make fields feat(studio): organised toolbar, editor folder dialog, and drag-to-output (includes #258, #259) Oct 14, 2026
@russoedu
russoedu merged commit c9ae464 into main Oct 14, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant