Commit Graph
15131 Commits
Author SHA1 Message Date
Diego ImbertandClaude Opus 5.5 9e5982769a feat: data upload opens on its inputs alone, works in sessions, with a prominent Upload data button
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 15:11:29 +02:00
Diego ImbertandClaude Opus 5.5 e96f6bcfae fix: deleting a pipeline clears it from open sessions so autosave cannot restore it
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 14:27:26 +02:00
Diego ImbertandClaude Opus 5.5 77d58bd7d7 fix: pipeline trigger lookups skip same-path flows; a failed trigger never hides its built node
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 14:27:26 +02:00
Diego ImbertandClaude Opus 5.5 46ec2995cc fix: session pipeline tools survive another tab taking the panel, reopening the editor on call
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 14:13:33 +02:00
Diego ImbertandClaude Opus 5.5 0b4fafc02e feat: AI gives every pipeline node a succinct summary
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 14:13:33 +02:00
Diego Imbert 494e1d6d00 Merge remote-tracking branch 'origin/improve-data-pipelines' into change-6607b937
# Conflicts:
#	frontend/src/routes/(root)/(logged)/pipeline/[folder]/+page.svelte
2026-10-01 13:55:16 +02:00
Diego ImbertandClaude Opus 5.5 28cb6704f3 feat: AI attaches trigger drafts to the pipeline nodes that declare them; materialize nodes keep no stale output
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 13:54:19 +02:00
Diego ImbertandClaude Opus 5.5 a7a6a05e07 fix: pipeline delete takes only its own triggers and discards draft-only nodes by storage key
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 13:54:19 +02:00
Diego Imbert a0808b5b3e Merge remote-tracking branch 'origin/enable-operator-ai-chat-nav' into improve-data-pipelines
# Conflicts:
#	frontend/src/lib/components/home/CreateActionsMenu.svelte
#	frontend/src/routes/(root)/(logged)/pipeline/[folder]/+page.svelte
2026-10-01 13:37:42 +02:00
Diego Imbert 6197cba556 fix: upward detour edges keep their gutter lane 2026-10-01 13:34:59 +02:00
Diego Imbert eb7443d846 feat: delete a data pipeline from the home list; pipeline rows match item rows 2026-10-01 13:34:59 +02:00
Diego Imbert 2d50f1f9b0 fix: pipeline tools callable right after open_preview; write_script refuses pipeline nodes in sessions 2026-10-01 13:34:59 +02:00
Diego Imbert 55fe18b09a docs: pipeline nodes ingest straight into DuckLake or data tables from Python/TS 2026-10-01 13:34:59 +02:00
Guilhem LemouelandClaude Opus 5 b9d17630ec docs: actionsFlexible covers both ways a row gives width back
It read as if a search field were the only way to earn it, which stopped being
true when the app and pipeline editors' rows started scrolling inside their own
box. Both are the same bargain — the box may shrink because its contents can —
and the flag is what the bar reads to allow it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 04:10:17 -07:00
Diego ImbertandClaude Opus 5.5 486de8f755 feat: gentler hover fade without flicker on click; implied trigger edges recede in the assets-only view
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 13:00:47 +02:00
Diego ImbertandClaude Opus 5.5 b91ecbe458 fix: hover fade eases edges too, through a stylesheet instead of new node objects
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 12:51:36 +02:00
Diego ImbertandClaude Opus 5.5 e3cfca6d99 feat: hovering a pipeline graph node fades everything outside its lineage
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 12:44:31 +02:00
Guilhem LemouelandClaude Opus 5 1dbe7bf9af fix: the widest action rows scroll, and the canvas toggles show only where they fit
Measuring the band instead of estimating it: with the canvas toggles shown the
app editor's actions are 826-911px and the trail with the summary another ~500,
so the row overflowed the bar at every width up to about 1470 — the 1100 I set
from an estimate was wrong, and the 1350 before it was too. The toggles come out
at 1500 now, and the menu entries are what keeps all three reachable below that
rather than merely out of the way.

The two widest rows — this editor's and the pipeline's — scroll inside their own
box, which is the escape the rows they replaced had (`overflow-x-auto
whitespace-nowrap`). That answers pi's finding and clears the last 23-40px of
band overflow at middling widths, which predated the conversion. Measured after:
zero horizontal overflow from 852px of bar to 1392.

From the CI round's other findings:
- The pen is offered when either the summary or the path is editable, not the
  path alone: a host that allowed one and refused the other could no longer edit
  the summary from the band. `PathEditPopover` takes `pathEditable` to match, and
  its label names whichever it is given.
- The four editors' comments called the summary read-only, which stopped being
  true when the pen beside it started editing it.
- The pipeline's "centre group" comment described a layout it no longer has.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 03:43:31 -07:00
Diego ImbertandClaude Opus 5.5 549f0427f1 revert: pipeline graph edges back to bezier curves, detours curved too
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 12:42:04 +02:00
Guilhem LemouelandClaude Opus 5 72e678a923 fix: the app canvas controls stay reachable, and an unnamed item says so
Codex found the app editor's canvas controls unreachable on an ordinary laptop:
the owning route collapsed at 1350px, and a 1440 window with the rail out leaves
1232, so the width, theme and breakpoint toggles were hidden with nothing in the
menu to replace them — and the breakpoint is the only way onto the mobile layout.
Measured on the band, the toggles are 240px beside 334 of other actions and a
~430 trail, so they fit to about 1050: the threshold is 1100 now, and below it
each of the three keeps a menu entry rather than disappearing.

An item with no summary read as a bare `·` with an invisible pen after it, since
the plain text replaced a field that had a placeholder. It now reads "Add a
summary..." in the italic SummaryPathDisplay uses for the same state, and the pen
stops hiding when there is nothing to hover.

Three more from the review:
- `actionsFlexible` says "these actions can give width back", which is true of the
  Runs filter row and not of the pipeline's row of fixed buttons.
- `pathSnapshot ?? (newEditedPath || …)` keeps the `||` chain the five rename
  sites read and the declaration documents; `??` had made the rest unreachable,
  since `newEditedPath` is a string that is never undefined.
- The band bridged `contexts` onto the actions alone, while the pen that decides
  whether a path is the caller's to change renders in `summaryContent`. The
  breadcrumb's `afterName` and the summary are bridged the same way now, so that
  permission check reads the tree that registered it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 03:00:12 -07:00
Diego ImbertandClaude Opus 5.5 0cbfc83366 fix: retry the leftover draft save with what failed, never an empty draft
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 11:45:26 +02:00
Guilhem LemouelandClaude Opus 5 24223ef9cd feat: the pipeline page fills the band
Found by sweeping every route under the band: the pipeline editor drew its own
row beneath it, 48px of a second header, while the band named only the section.
Its name is the band's now, the folder it is open on sits with that name — the
switcher is how you change pipelines, so it belongs to the name rather than to
the actions — and the mode switch, deploy-all, activity, refresh and overflow
menu are the bar's actions. The arrow back to the list stays: nothing else on the
page points there, and the sidebar does not list pipelines.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 02:41:35 -07:00
Diego ImbertandClaude Opus 5.5 4b5bdd2aec fix: review round — incremental crossing search and cached routes, retry the leftover draft save, drop the pipeline row when its last draft goes
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 11:31:36 +02:00
Diego ImbertandClaude Opus 5.5 8167cadbdf feat: pipeline graph edges merge by shared end, enter nodes by the side, keep fewest crossings
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 11:12:27 +02:00
Guilhem LemouelandClaude Opus 5 f37d878580 feat: the agent editor fills the band too
It was the last editor route drawing its own header row under the band, and the
band named it "Agents" — `navPageFor`'s first-segment fallback, because nothing
on the route registered an item. The agent's path is the breadcrumb now, its
version badge reads after that name, the sentence that was the row's second line
became the hint beside it, and the Chat/Form switch, Settings, Evals, version
history and Deploy are the band's actions.

No trail levels in the registration: this layout opens settings in a drawer and
evals over the page, so unlike the dialog it never stands on a level — `trail` is
its root alone here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 02:03:48 -07:00
Guilhem LemouelandClaude Opus 5 d7c7abbccf feat: the pen renames the item and its summary
The pen opened the path alone, which left the summary with nowhere to be edited
from the band. It carries a Summary field above the path now — the item's name
first, the address it lives at below — and the band's text follows it as the user
types.

`TextInput` with a label rather than the bar's inline field: `EditableInput`'s own
docs rule itself out inside a popover, and it wraps this same input in its edit
mode, so the field, the "Add a summary..." placeholder and the trim on commit are
the behaviour that was there, in the shape the deploy drawer's Summary field
already uses. The keydown stops at the field because every editor binds keys of
its own and a summary is prose.

`summaryEditable` carries the hosts' `customUi.topBar.editableSummary` through,
and the editors' own bar passes it false: that bar keeps its inline field, and
`hidePath` would take the pen with it, leaving a condensed session pane no way to
name the item at all.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 01:47:37 -07:00
Diego ImbertandClaude Opus 5.5 1bf5333a90 feat: route pipeline graph edges orthogonally with spread ports, separate tracks and lanes
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 10:45:26 +02:00
Diego ImbertandClaude Opus 5.5 69e8445b2c feat: a session's pipeline tab opens node details in a modal, as the flow editor does
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 10:38:51 +02:00
Guilhem LemouelandClaude Opus 5 4f3804cf11 feat: the editors name their item in the band, and a pen renames it
The band showed each editor's summary as an inline field, which put editing
where the page names what it is working on. The summary is text there now, with
its `title` for one the band truncates, and the pen that opens the path for
editing sits after it — the same popover the editors' own bar carries, at the end
of the name it renames. Every editor already has a field for the summary itself:
the script's settings, the flow's Settings tab, and both app editors' deploy
drawer.

The popover moves into `PathEditPopover` rather than being written out four more
times. It owns the open state and hands back the path as it was when it opened:
the band's trail reads that while the popover is open, so a path growing under
the pointer does not drag the pen — and floating-ui the popover — along with it.
`EditorHeader` renders the same component, so the session pane and the band
cannot drift apart.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 01:38:15 -07:00
Diego ImbertandClaude Opus 5.5 83ef6ce56d fix: review round — failed bundle save fails the deploy, removing a draft records no change
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 10:33:42 +02:00
Guilhem LemouelandClaude Opus 5 522e5ce096 Revert "fix: the file sidebar's toggle leaves the band"
This reverts commit 1da8d16740.

A folded file sidebar renders nothing of its own, so the toggle on the bar is the
only way back short of knowing ⌘B.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 01:24:45 -07:00
Guilhem LemouelandClaude Opus 5 97834677c5 fix: the scroll edge stops measuring, and the comments describe the code
The band's edge listener captures every scroller in the app — Monaco, the audit
table, a run's logs — about once a frame while any of them moves, and it took two
`getBoundingClientRect()` reads before looking at `scrollTop`. It now answers from
`scrollTop` first and only measures when that answer differs from what the band
draws, which is the transition rather than the steady state. The rect check still
authorizes every change, so a scroller that does not start at the content's top
still cannot claim the edge.

The two agent routes main just added size themselves to the viewport, which is
44px more than the box the band leaves them. They measure 856 either way — the
layout's `min-h-0` column clamps them — so this is the sweep the rest of the
branch already had, making the height follow the box rather than depend on a
parent's clamp.

Six comments described the conversion rather than the code, which AGENTS.md calls
out by name. Each now states the constraint a reader could break: why the summary
keeps its popover here, why the audit hint is `afterName` and not an action, why a
run registers a `section` rather than an item, why the Runs filters are
`actionsFlexible`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 01:16:35 -07:00
Diego ImbertandClaude Opus 5.5 26c08e9e95 fix: review round — exact pipeline scripts in the fork mask, refuse a failed hand-off flush, deploy guard before awaits
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 10:15:42 +02:00
Diego ImbertandClaude Opus 5.5 e6458540c7 fix: a masked pipeline preselects only the scripts and triggers of its folder
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 10:00:53 +02:00
Guilhem LemouelandClaude Opus 5 1da8d16740 fix: the file sidebar's toggle leaves the band
The band is the workspace's header, not the raw editor's layout controls. ⌘B
still folds the file sidebar, and the editor's own bar keeps the button where it
draws one — a session pane.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 00:50:56 -07:00
Guilhem LemouelandClaude Opus 5 5ffb103856 fix: an item the picker files under no kind keeps its name in the band
The merge brought main's agents detail page, which reaches DetailPageHeader with
no `errorHandlerKind` — and the band's item required one. `WorkspaceItemKindIcon`
falls through to the script glyph for anything it does not know, so defaulting
would have labelled an agent a script; the kind is optional now and the trail
names the item without claiming it is one of the three.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 00:50:56 -07:00
Guilhem Lemouel d8f67de87c Merge remote-tracking branch 'origin/main' into enable-operator-ai-chat-nav
# Conflicts:
#	frontend/src/lib/components/details/DetailPageHeader.svelte
2026-10-01 00:46:05 -07:00
Guilhem LemouelandClaude Opus 5 de42171f93 fix: the band names the path Deploy will create, and keeps the summary readable
A brand-new app is parked at a `draft_<uuid>` placeholder, and the band named
that rather than the path its Deploy will create — `newEditedPath` refuses the
placeholder for exactly this reason, and the editor's own bar read it. Both app
editors register it now. Verified: the trail reads `u/admin/gentle_app` while the
URL is still the draft.

The band's summary gets the `title` the editor's own bar had, so one the bar
truncates can still be read on hover.

The wrapper that hid AppExportButton on a phone never hid anything:
the component draws no trigger — it is the export drawer, which portals to
`body` — so the class toggle was inert in both states and the comment read as if
something moved. Dropped from both app editors.

Two comments corrected: `NAV_PAGES`' `icon` does reach the breadcrumb for all
eleven entries (`NavBreadcrumb` renders `routePage.icon`), so only `operatorKey`
goes unread for the four the sidebar groups separately; and the raw editor's
phone note described folding that does not happen — the file-sidebar toggle stays
in the band, Jobs and the export are already in the menu, and AI is what stands
down.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 00:42:11 -07:00
Guilhem LemouelandClaude Opus 5 379858a97d fix: pin holds the first slot, and the nav table says what it shares
Pinning brings the sidebar's handle back, and from behind it the unpin button sat
one slot over from where the pin had just been clicked — so a second click in the
same place opened the sidebar instead. An operator is detached by default, which
makes that the default state of the feature rather than an edge case.

`NAV_PAGES` claimed one table stops a page being called one thing in the nav and
another in the header, which holds for the seven entries the sidebar's main group
is built from and not for the four grouped separately — `/routes` was "Triggers"
in the header and "HTTP" in the nav. The comment now says which is which, and
that entry is named for the page rather than its group.

`sidebarPageAllowed` gets a table test: it decides what an operator sees, and its
`=== true` is what a future `Option`-style default would silently change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 00:27:21 -07:00
Guilhem LemouelandClaude Opus 5 f2768de00c fix: keep the folders a half-typed path already names
The trailing-separator guard gave up on `f/demo/` entirely, which dropped the
whole trail to the kind chip and brought `f/demo` back on the first character of
the name. The levels the path does name come back now; only the leaf waits.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 00:27:21 -07:00
Guilhem LemouelandClaude Opus 5 1d2e032224 feat: the raw app editor fills the band like the other three
It was the one editor route still rendering its own bar under the band, so it
showed two header rows and the band named the app "Apps raw" — `navPageFor`'s
first-segment fallback, because nothing on the route registered an item. Its top
bar now becomes the page header the way the script, flow and low-code app
editors' do: the path and summary are the breadcrumb's, the file-sidebar toggle,
autosave cloud, presence mark, menu, Diff, Jobs, export, AI and Deploy are the
header's actions, and the path is a plain label since this editor renames from
its deploy drawer.

The actions render under the band, outside the subtree `RawAppEditor` declares
the operating workspace in, and `OpenInSessionButton` asks that context who the
acting user is — so the workspace travels with them.
`operatingWorkspaceContextEntry()` hands it over without exporting the key.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-01 00:27:09 -07:00
Ruben FiszelandClaude Opus 5.5 6fe992aebe make RunForm schedule props optional and expect 403 for operator drafts (#11449)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-01 07:03:53 +02:00
Diego ImbertandClaude Opus 5.5 7e7f36315a feat: pipelines in the chat's listing and the preview picker; session tab shares the page's asset prefetch
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:44:36 +02:00
Diego ImbertandClaude Opus 5.5 dedffeb046 feat: deploy and discard a session's pipeline edits as one changes-list row
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:39:57 +02:00
Diego Imbert 76d1bd2465 Merge remote-tracking branch 'origin/improve-data-pipelines' into change-6607b937 2026-09-30 20:24:40 +02:00
Diego ImbertandClaude Opus 5.5 a25f9cf199 feat: pipelines in AI sessions with several folders open at once
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:24:40 +02:00
Diego ImbertandClaude Opus 5.5 8f6118c0e1 fix: Archive button for archive-only deletes, single delete doc, inert Multiple triggers label in View
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:19:05 +02:00
Diego ImbertandClaude Opus 5.5 ccfb259080 fix: no trigger delete for flow-built assets; Multiple triggers chip shows the one being edited
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:10:25 +02:00
Diego Imbert 6464224c1a Merge remote-tracking branch 'origin/improve-data-pipelines' into improve-data-pipelines 2026-09-30 20:08:30 +02:00
Diego ImbertandClaude Opus 5.5 3be851e4ab fix: iterate NodeLists with Array.from so svelte-check passes
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-30 20:08:19 +02:00