Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 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
dc315cf
fix field noun bug + notes
icecrasher321 Aug 8, 2026
0c96eb4
fix(notes): let a note service the canvas actions the panel editor ca…
icecrasher321 Aug 8, 2026
31108a1
Merge remote-tracking branch 'origin/staging' into workflow-updates-v2
icecrasher321 Aug 8, 2026
7fdf6d1
feat(canvas): author sentences for Snowflake and Mintlify, repoint In…
icecrasher321 Aug 9, 2026
9c71860
Merge remote-tracking branch 'origin/staging' into workflow-updates-v2
icecrasher321 Aug 9, 2026
aa2139a
fix(canvas): keep the block-type tag naming its type after a rename
icecrasher321 Aug 9, 2026
41b6804
fix(deploy): compare edge handles by port, not by spelling
icecrasher321 Aug 9, 2026
066e18a
fix(deploy): stop counting the error flag twice in change detection
icecrasher321 Aug 9, 2026
7934df7
refactor(blocks): give the error-output flag a column instead of two …
icecrasher321 Aug 10, 2026
72c99ff
Merge remote-tracking branch 'origin/staging' into workflow-updates-v2
icecrasher321 Aug 10, 2026
701d23c
fix(canvas): realign the Snowflake and Dynatrace sentences with stagi…
icecrasher321 Aug 10, 2026
b6c007e
fix(api): drop the block-data error flag from the workflow contract
icecrasher321 Aug 10, 2026
3c29476
fix(deploy): compare edge handles by port, so a falsy one cannot read…
icecrasher321 Aug 10, 2026
5ece9f9
fix(deploy): keep ignoring the error flag's old home in block data
icecrasher321 Aug 10, 2026
f57b126
revert(deploy): stop tolerating a block-data shape that never shipped
icecrasher321 Aug 10, 2026
d4b3f87
improvement(canvas): retract bystander cards during a run, slant the …
icecrasher321 Aug 10, 2026
04d4676
improvement(canvas): fill the running sweep one way, and tighten its …
icecrasher321 Aug 10, 2026
bcf6013
improvement(canvas): fill the running bar once, edge to edge
icecrasher321 Aug 10, 2026
5971fdb
improvement(canvas): paint the running bar as right-leaning uprights
icecrasher321 Aug 10, 2026
aa695c8
improvement(canvas): pitch the running hatch to the row, not to one b…
icecrasher321 Aug 10, 2026
0b5bc4f
fix(canvas): paint the running hatch once across the row, not per slot
icecrasher321 Aug 10, 2026
377bc5c
improvement(canvas): close the running hatch's gaps
icecrasher321 Aug 10, 2026
08b621b
fix(emcn): drop the brand highlight from popover menus (#6506)
waleedlatif1 Aug 10, 2026
beeabd6
feat(executor): opt-in per-block retry (#6505)
waleedlatif1 Aug 10, 2026
dd9eab4
improvement(canvas): close the running fill to solid, slant its leadi…
icecrasher321 Aug 10, 2026
f1c3add
improvement(canvas): return the running fill to the squares' rhythm, …
icecrasher321 Aug 10, 2026
4c6ce13
fix(canvas): trim the running fill to the swell's tapered end
icecrasher321 Aug 10, 2026
a4169cb
fix(canvas): stop the handoff highlight pinning a bystander's toolbar…
icecrasher321 Aug 10, 2026
1263662
Merge branch 'workflow-updates-v2' of github.com:simstudioai/sim into…
icecrasher321 Aug 10, 2026
c4b8080
fix(realtime): refresh the error flag on a block upsert
icecrasher321 Aug 11, 2026
633944d
update loader animation
icecrasher321 Aug 11, 2026
4a4e2fc
change the loader
icecrasher321 Aug 11, 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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 numberDiff line numberDiff 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 DownExpand 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 DownExpand 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