Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
794ab14
improvement(workflow): refine canvas interactions and rendering
andresdjasso Jul 24, 2026
67cf78d
fix(workflow): keep outputs on the right, focus newly created blocks
andresdjasso Jul 27, 2026
41452a3
fix(workflow): floor header-only card height, adopt brand tag palette
andresdjasso Jul 28, 2026
abf8385
improvement(workflow): polish workflow canvas interactions
andresdjasso Aug 1, 2026
1422c5c
fix(workflow): restyle loop drop target outline
andresdjasso Aug 1, 2026
3a8840e
fix(workflow): shorten human block catalog label
andresdjasso Aug 1, 2026
7f6cc9c
fix(workflow): canonicalize realtime edge handles
andresdjasso Aug 1, 2026
d3792c7
code cleanup
icecrasher321 Aug 2, 2026
2afb3e2
sizing fixes
icecrasher321 Aug 2, 2026
236d655
improvement(blocks): sentencify every block
icecrasher321 Aug 4, 2026
eec55e3
change tebse
icecrasher321 Aug 4, 2026
37b0e0f
improvement(workflow): land notes UI and execution progress, consolid…
icecrasher321 Aug 4, 2026
4691de6
improvement(workflow): reuse the platform markdown editor in notes
icecrasher321 Aug 5, 2026
67df2df
improvement(workflow): port canvas styling from workflow-updates
icecrasher321 Aug 5, 2026
4b9f07a
Merge branch 'staging' into workflow-updates-v2
icecrasher321 Aug 5, 2026
8abc89e
Merge branch 'staging' into workflow-updates-v2
icecrasher321 Aug 7, 2026
62676c1
Merge branch 'staging' into workflow-updates-v2
icecrasher321 Aug 7, 2026
b8f7626
Merge branch 'staging' into workflow-updates-v2
icecrasher321 Aug 7, 2026
958160d
feat(workflow): make the subflow Start swell a real connection source
icecrasher321 Aug 7, 2026
345b659
fix(notes): stop the field's prose classes recoloring bare-surface ed…
icecrasher321 Aug 7, 2026
0af65a5
fix(workflow): give the in-flight connection line contrast inside con…
icecrasher321 Aug 7, 2026
0445a00
fix(notes): match edit mode to the read view, and land the caret wher…
icecrasher321 Aug 7, 2026
1a9dc9b
fix(workflow): stop edges rendering behind top-level subflows
icecrasher321 Aug 7, 2026
2a7e738
feat(notes): paste and drop images through the workspace-file pipeline
icecrasher321 Aug 7, 2026
7a15b1e
improvement for notes, subflows
icecrasher321 Aug 8, 2026
537f7ca
fix(uploads): surface the server's message when a multipart upload is…
icecrasher321 Aug 8, 2026
4ee19ae
Merge branch 'staging' into workflow-updates-v2
icecrasher321 Aug 8, 2026
98b31bb
Merge remote-tracking branch 'origin/staging' into workflow-updates-v2
icecrasher321 Aug 8, 2026
9224584
Merge remote-tracking branch 'origin/staging' into workflow-updates-v2
icecrasher321 Aug 8, 2026
8927266
fix(notes): restore GFM in the note read view
icecrasher321 Aug 8, 2026
64fbf0d
refactor(canvas): drop dead markers and share the tile-brightness maths
icecrasher321 Aug 8, 2026
a2c2f09
refactor(canvas): share the z-scale, fix the preview's edge layering,…
icecrasher321 Aug 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
37 changes: 36 additions & 1 deletion .agents/skills/add-block/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ export const {ServiceName}Block: BlockConfig = {
// Auth mode
authMode: AuthMode.OAuth, // or AuthMode.ApiKey

// Card summary sentences — see "Canvas Sentences" below
canvasPresentation: {
defaultTitle: '{Default Operation}',
sentences: { byOperation: { /* one per operation dropdown option id */ } },
},

subBlocks: [
// Define all UI fields here
],
Expand Down Expand Up @@ -945,6 +951,35 @@ Derive templates from the service's real use cases. Each prompt should name a co
- **Ground every skill in operations the block actually exposes** — cross-check each skill's steps against `tools.access`. Never describe an action the integration cannot perform.
- **Derive skills from real, popular use cases found online — never invent them.** Web-search the service's documented use cases (vendor use-case/solutions pages, official docs describing the workflow, reputable "top automations for X" articles) and only add a skill you can source as something people genuinely do with the service. Do not hallucinate skills.

## Canvas Sentences

Every block declares a one-line prose summary that replaces its card's field rows:

```
Slack ← header (already names the block)
Posts ⟨Ship it 🚀⟩ to ⟨#eng⟩ ← the sentence; ⟨…⟩ are live value chips
```

Write one `byOperation` entry per operation dropdown option (or a single `default`
when the block has no operation dropdown).

**The full authoring contract — voice, structure, and the two mistakes that break
cards silently — is `apps/sim/blocks/AGENTS.md` → "Canvas sentences". Read it
before writing any.** The two failures worth repeating here, because both are
invisible at runtime:

1. A clause naming only one member of a `canonicalParamId` pair drops the sentence
for every advanced-mode user. List all members:
`field: ['channelSelector', 'manualChannel']`.
2. A clause referencing a subblock whose `condition` excludes that operation can
never render.

Validate before finishing:

```bash
bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}
```

## Generated artifacts

Adding a block on its own needs no **tool metadata** regeneration — a block references existing
Expand All @@ -963,7 +998,6 @@ bun run integration-catalog:check
The catalog check independently derives deployment metadata from the executable block registry and
compares it with the committed `apps/sim/lib/integrations/integrations.json`. Review the generated
diff and keep only intentional changes.

## Checklist Before Finishing

- [ ] `integrationType` is set to the correct `IntegrationType` enum value
Expand Down Expand Up @@ -991,6 +1025,7 @@ diff and keep only intentional changes.
- [ ] Exported `{Service}BlockMeta` with at least 7 templates
- [ ] `url` set on `{Service}BlockMeta` to the external service's verified homepage (omit only for first-party blocks with no external service)
- [ ] `skills` added to `{Service}BlockMeta`, each grounded in `tools.access` and sourced from a real online use case (not invented)
- [ ] `canvasPresentation.sentences` covers every operation, and `bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}` passes with 100% coverage

## Final Validation (Required)

Expand Down
37 changes: 36 additions & 1 deletion .claude/commands/add-block.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,12 @@ export const {ServiceName}Block: BlockConfig = {
// Auth mode
authMode: AuthMode.OAuth, // or AuthMode.ApiKey

// Card summary sentences — see "Canvas Sentences" below
canvasPresentation: {
defaultTitle: '{Default Operation}',
sentences: { byOperation: { /* one per operation dropdown option id */ } },
},

subBlocks: [
// Define all UI fields here
],
Expand Down Expand Up @@ -944,6 +950,35 @@ Derive templates from the service's real use cases. Each prompt should name a co
- **Ground every skill in operations the block actually exposes** — cross-check each skill's steps against `tools.access`. Never describe an action the integration cannot perform.
- **Derive skills from real, popular use cases found online — never invent them.** Web-search the service's documented use cases (vendor use-case/solutions pages, official docs describing the workflow, reputable "top automations for X" articles) and only add a skill you can source as something people genuinely do with the service. Do not hallucinate skills.

## Canvas Sentences

Every block declares a one-line prose summary that replaces its card's field rows:

```
Slack ← header (already names the block)
Posts ⟨Ship it 🚀⟩ to ⟨#eng⟩ ← the sentence; ⟨…⟩ are live value chips
```

Write one `byOperation` entry per operation dropdown option (or a single `default`
when the block has no operation dropdown).

**The full authoring contract — voice, structure, and the two mistakes that break
cards silently — is `apps/sim/blocks/AGENTS.md` → "Canvas sentences". Read it
before writing any.** The two failures worth repeating here, because both are
invisible at runtime:

1. A clause naming only one member of a `canonicalParamId` pair drops the sentence
for every advanced-mode user. List all members:
`field: ['channelSelector', 'manualChannel']`.
2. A clause referencing a subblock whose `condition` excludes that operation can
never render.

Validate before finishing:

```bash
bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}
```

## Generated artifacts

Adding a block on its own needs no **tool metadata** regeneration — a block references existing
Expand All @@ -962,7 +997,6 @@ bun run integration-catalog:check
The catalog check independently derives deployment metadata from the executable block registry and
compares it with the committed `apps/sim/lib/integrations/integrations.json`. Review the generated
diff and keep only intentional changes.

## Checklist Before Finishing

- [ ] `integrationType` is set to the correct `IntegrationType` enum value
Expand Down Expand Up @@ -990,6 +1024,7 @@ diff and keep only intentional changes.
- [ ] Exported `{Service}BlockMeta` with at least 7 templates
- [ ] `url` set on `{Service}BlockMeta` to the external service's verified homepage (omit only for first-party blocks with no external service)
- [ ] `skills` added to `{Service}BlockMeta`, each grounded in `tools.access` and sourced from a real online use case (not invented)
- [ ] `canvasPresentation.sentences` covers every operation, and `bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}` passes with 100% coverage

## Final Validation (Required)

Expand Down
37 changes: 36 additions & 1 deletion .cursor/commands/add-block.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,12 @@ export const {ServiceName}Block: BlockConfig = {
// Auth mode
authMode: AuthMode.OAuth, // or AuthMode.ApiKey

// Card summary sentences — see "Canvas Sentences" below
canvasPresentation: {
defaultTitle: '{Default Operation}',
sentences: { byOperation: { /* one per operation dropdown option id */ } },
},

subBlocks: [
// Define all UI fields here
],
Expand Down Expand Up @@ -939,6 +945,35 @@ Derive templates from the service's real use cases. Each prompt should name a co
- **Ground every skill in operations the block actually exposes** — cross-check each skill's steps against `tools.access`. Never describe an action the integration cannot perform.
- **Derive skills from real, popular use cases found online — never invent them.** Web-search the service's documented use cases (vendor use-case/solutions pages, official docs describing the workflow, reputable "top automations for X" articles) and only add a skill you can source as something people genuinely do with the service. Do not hallucinate skills.

## Canvas Sentences

Every block declares a one-line prose summary that replaces its card's field rows:

```
Slack ← header (already names the block)
Posts ⟨Ship it 🚀⟩ to ⟨#eng⟩ ← the sentence; ⟨…⟩ are live value chips
```

Write one `byOperation` entry per operation dropdown option (or a single `default`
when the block has no operation dropdown).

**The full authoring contract — voice, structure, and the two mistakes that break
cards silently — is `apps/sim/blocks/AGENTS.md` → "Canvas sentences". Read it
before writing any.** The two failures worth repeating here, because both are
invisible at runtime:

1. A clause naming only one member of a `canonicalParamId` pair drops the sentence
for every advanced-mode user. List all members:
`field: ['channelSelector', 'manualChannel']`.
2. A clause referencing a subblock whose `condition` excludes that operation can
never render.

Validate before finishing:

```bash
bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}
```

## Generated artifacts

Adding a block on its own needs no **tool metadata** regeneration — a block references existing
Expand All @@ -957,7 +992,6 @@ bun run integration-catalog:check
The catalog check independently derives deployment metadata from the executable block registry and
compares it with the committed `apps/sim/lib/integrations/integrations.json`. Review the generated
diff and keep only intentional changes.

## Checklist Before Finishing

- [ ] `integrationType` is set to the correct `IntegrationType` enum value
Expand Down Expand Up @@ -985,6 +1019,7 @@ diff and keep only intentional changes.
- [ ] Exported `{Service}BlockMeta` with at least 7 templates
- [ ] `url` set on `{Service}BlockMeta` to the external service's verified homepage (omit only for first-party blocks with no external service)
- [ ] `skills` added to `{Service}BlockMeta`, each grounded in `tools.access` and sourced from a real online use case (not invented)
- [ ] `canvasPresentation.sentences` covers every operation, and `bun run apps/sim/scripts/check-canvas-sentences.ts --block={service}` passes with 100% coverage

## Final Validation (Required)

Expand Down
Loading
Loading