Repository navigation
Conversation
Removes the `shadow-xs` class from 6 form primitive components (Input, Textarea, Select, NativeSelect, Combobox, InputGroup). This flattens the inputs to match the visual direction that the upcoming source-config refactor builds on. ## Stack role First PR in the `source-detail-refactor` stack (12 PRs total). The overall goal is to rewrite the source-detail page against a new set of reusable building blocks (KeyValueList, SourceConfig, SourceOperations, RunOperationPanel). This PR is purely cosmetic and unblocks nothing — it only lands here so the shipping PR (PR 08) isn't reviewed simultaneously with a global style change. ## Changes - Remove `shadow-xs` from Input, Textarea, Select, NativeSelect, Combobox, InputGroup className strings. 12 LOC, no behaviour change. ## Relationship to neighbours - Previous: none (stack base). - Next (PR 02 — lucide-react + shell icon swap): unrelated chore; kept separate so reviewers of either don't have to reason about the other.
Adds `lucide-react` as a dependency of both `@executor/cloud` and `@executor/local`, and migrates the shell chrome to import icons from `lucide-react` instead of the hand-maintained `@executor/react/components/icons` module. Also folds in minor shell-level styling tweaks that came in the same sweep (text-xs → text-sm on source list rows, drop redundant `transition-colors`, align CheckIcon). PR 02 of 12 in the `source-detail-refactor` stack. Unrelated to the refactor's load-bearing work, but splits cleanly so reviewers of either this PR or the later ones aren't reading icon import changes mixed with component rewrites. - `apps/cloud/package.json` + `apps/local/package.json`: add `lucide-react@^1.7.0`. - `apps/cloud/src/web/shell.tsx` + `apps/local/src/web/shell.tsx`: import `CheckIcon`, `ChevronDownIcon`, `MenuIcon`, `XIcon` from `lucide-react`; remove local icon re-exports at call sites; minor text-size + transition tweaks. - `bun.lock`: regenerated for the new dep. - Previous (PR 01 — shadow-xs drop): unrelated styling chore. - Next (PR 03a — secret-picker/AddSecretDialog): first PR that adds new `packages/react` primitives. Imports `lucide-react` icons which this PR makes available in the apps.
…etDialog
Adds an `AddSecretDialog` component and wires the `SecretPicker`
popover to offer "+ New secret" inline. Also adds two opt-in
styling props to `SecretPicker` (`showChevron`, `invalid`) that the
upcoming `SourceConfig` primitive relies on to make the picker
visually consistent with a select/input.
PR 03a of 12. This is the first of the new shared primitives the
source-detail refactor is built on. Purely additive — existing
callers get no behaviour change because both new props default to
the old behaviour. Lets PR 03b (KeyValueList) and PR 04a
(SourceConfig) reuse inline secret creation without re-implementing
the dialog.
- NEW `packages/react/src/plugins/add-secret-dialog.tsx`: small,
self-contained dialog that creates a secret via the
`setSecret` mutation atom and refreshes `secretsAtom`.
- `packages/react/src/plugins/secret-picker.tsx`:
- Add `showChevron` prop — renders a dropdown chevron affordance.
- Add `invalid` prop — applies a destructive-ring style.
- Add a separator + "New secret" entry in the Command popover
that opens `AddSecretDialog`.
- Auto-selects the newly-created secret via the dialog's onCreated
callback.
- Previous (PR 02 — lucide-react + shell): supplies the icon package
the new lucide imports resolve against in the apps that consume
`@executor/react`. packages/react already had lucide-react as a
dep, so no dep change here.
- Next (PR 03b — KeyValueList): uses the enhanced `SecretPicker`
(with `invalid`) for rows whose value type is `secret`.
…r PRs)
Introduces a new `key-value-list` primitive: a generic list where
each row has a `key`, a `value`, and a `type` of `"text" | "secret"`.
When the row is of secret-type, the value renders as a `SecretPicker`.
Each row has a stable `id` so React's reconciliation never loses
input focus across re-orders/removes.
## Stack role
PR 03b of 12. This is the load-bearing replacement for the existing
`headers-list` + `secret-header-auth` primitives, which are still in
use on main. This PR is purely additive — the old files stay for now
and are deleted in PR 07c once every call site has migrated.
## Changes
- NEW `packages/react/src/plugins/key-value-list.tsx`:
- `KeyValueEntry` type (stable `id`, `key`, `value`, `type`).
- `newKeyValueEntry()` helper that mints a fresh `id` — the preferred
constructor so callers don't forget to assign one (losing focus on
re-render otherwise).
- `KeyValueList` component: renders an `Input` for `key`, a
`NativeSelect` for `type`, and either an `Input` (text) or
`SecretPicker` (secret) for `value`.
- Empty-state prop, customisable placeholders.
## Relationship to neighbours
- Previous (PR 03a — SecretPicker/AddSecretDialog): provides the
enhanced picker used by `type === "secret"` rows.
- Next (PR 04a — SourceConfig): the SourceConfig component consumes
`KeyValueList` / `KeyValueEntry` for its "Headers" and
"Query params" sections.
Adds the `SourceConfig` component — the central source-authoring
surface used by every Add/Edit flow — and extends
`SourceIdentityFields` / `useSourceIdentity` with the props needed
to support it (endpoint row, hints, custom labels, prepend slot).
## Stack role
PR 04a of 12. Purely additive: no call sites migrate to it yet.
PRs 07a/07b/07c wire Add/Edit flows in the graphql, mcp, and
openapi plugins onto this primitive; PR 08 uses it in the
source-detail page's edit card.
## Changes
- NEW `packages/react/src/plugins/source-config.tsx`: builds on
`KeyValueList` + `SecretPicker` to render Name/Namespace/Endpoint
+ Auth (none/basic/apikey/bearer/oauth) + Headers + Query params
in a single `CardStack`. Exposes the `AuthMode` union type.
- `packages/react/src/plugins/source-identity.tsx`:
- `useSourceIdentity`: add `userProvidedName` /
`userProvidedNamespace` booleans so callers know whether the
current value is user-entered (avoids clobbering user intent
when a fallback later becomes available).
- `SourceIdentityFields`: add `endpoint` / `onEndpointChange` /
`endpointLabel` / `endpointPlaceholder` / `endpointHints` /
`endpointLabelAction` / `endpointExtra` / `prepend` props so the
component can render the endpoint row and plugin-specific rows
without the caller stitching its own CardStack.
- Default name label changed from "Display Name" → "Name".
## Relationship to neighbours
- Previous (PR 03b — KeyValueList): SourceConfig consumes
`KeyValueList` + `KeyValueEntry` for Headers and Query params.
- Next (PR 04b — SourceOperations / RunOperationPanel /
OperationDetail / SourceHeader): the remaining building blocks
that combine with SourceConfig to power the rewritten source
detail page in PR 08.
…urceHeader Adds the remaining reusable primitives the rewritten source-detail page and the migrated Add/Edit flows need: - `SourceOperations` — operation/tool tree with filterable sidebar. - `RunOperationPanel` — form-driven invocation panel using the new `executeCode` mutation atom. - `OperationDetail` — schema / TypeScript / run tabs for an operation. - `SourceHeader` — favicon + title header used across source pages. Also exposes a new `executeCode` mutation atom in `packages/react/src/api/atoms.tsx` so the run panel can invoke operations without each caller wiring its own client. ## Stack role PR 04b of 12. Together with PR 04a (SourceConfig), this completes the set of new primitives the source-detail rewrite (PR 08) relies on. Still purely additive — no call sites migrate yet. ## Changes - NEW `packages/react/src/plugins/source-operations.tsx` (199 LOC): `OperationEntry` type + tree component. - NEW `packages/react/src/plugins/run-operation.tsx` (435 LOC): `RunOperationPanel`, form generated from operation inputSchema. - NEW `packages/react/src/components/operation-detail.tsx` (99 LOC): combines `SchemaExplorer` + `ExpandableCodeBlock` + `FilterTabs`. - NEW `packages/react/src/components/source-header.tsx` (22 LOC): thin favicon + title wrapper for reuse across source pages. - `packages/react/src/api/atoms.tsx`: add `executeCode` mutation atom bound to the executions.execute endpoint. All four new files reuse existing primitives (SchemaExplorer, ExpandableCodeBlock, CardStack, FilterTabs, Tabs, SourceFavicon). ## Relationship to neighbours - Previous (PR 04a — SourceConfig + SourceIdentity extensions): completes the "configure a source" UI. This PR completes the "operate on a source" UI. - Next (PR 05 — OpenAPI SDK schema/oauth2/probe-rename): SDK-side contract changes so the OpenAPI plugin's Add/Edit (migrated in PR 07c) and source-detail (PR 08) have the data they need (inputSchema / outputSchema on PreviewOperation; oauth2 update support).
2 tasks done
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.
Adds the remaining reusable primitives the rewritten source-detail
page and the migrated Add/Edit flows need:
SourceOperations— operation/tool tree with filterable sidebar.RunOperationPanel— form-driven invocation panel using the newexecuteCodemutation atom.OperationDetail— schema / TypeScript / run tabs for anoperation.
SourceHeader— favicon + title header used across source pages.Also exposes a new
executeCodemutation atom inpackages/react/src/api/atoms.tsxso the run panel can invokeoperations without each caller wiring its own client.
Stack role
PR 04b of 12. Together with PR 04a (SourceConfig), this completes
the set of new primitives the source-detail rewrite (PR 08) relies
on. Still purely additive — no call sites migrate yet.
Changes
packages/react/src/plugins/source-operations.tsx(199 LOC):OperationEntrytype + tree component.packages/react/src/plugins/run-operation.tsx(435 LOC):RunOperationPanel, form generated from operation inputSchema.packages/react/src/components/operation-detail.tsx(99 LOC):combines
SchemaExplorer+ExpandableCodeBlock+FilterTabs.packages/react/src/components/source-header.tsx(22 LOC):thin favicon + title wrapper for reuse across source pages.
packages/react/src/api/atoms.tsx: addexecuteCodemutationatom bound to the executions.execute endpoint.
All four new files reuse existing primitives (SchemaExplorer,
ExpandableCodeBlock, CardStack, FilterTabs, Tabs, SourceFavicon).
Relationship to neighbours
completes the "configure a source" UI. This PR completes the
"operate on a source" UI.
contract changes so the OpenAPI plugin's Add/Edit (migrated in
PR 07c) and source-detail (PR 08) have the data they need
(inputSchema / outputSchema on PreviewOperation; oauth2 update
support).