-
Notifications
You must be signed in to change notification settings - Fork 3.7k
docs: builder-first IA reorganization of the English docs #4896
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
ouiliame
wants to merge
99
commits into
simstudioai:staging
Choose a base branch
from
ouiliame:feat/docs-reorg
base: staging
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 18 commits
Commits
Show all changes
99 commits
Select commit
Hold shift + click to select a range
18cee3d
docs: reorganize into topic/ontology IA with a builder-first rewrite
ouiliame ce5b32e
feat(docs): spec-driven BlockPreview for block reference heroes
ouiliame 2a9230d
fix(docs): correct stale navigation and removed-feature references
ouiliame 841e73c
fix(docs): repair broken /docs-prefixed enterprise links
ouiliame 099d14e
fix(docs): refresh stale workflow-preview example blocks
ouiliame bdba6bd
fix(docs): align BlockPreview input/output handles to the card edge
ouiliame 1260685
docs(blocks): rewrite Agent reference to match the current block
ouiliame 0913574
docs(blocks): rewrite API reference to match the current block
ouiliame 8df8e46
docs(blocks): rewrite Condition reference to match the current block
ouiliame 5d214ba
docs(blocks): restore Best Practices + multi-example workflows on Con…
ouiliame b06228e
docs(blocks): restore Best Practices on Agent reference
ouiliame 4b11b8d
docs(blocks): restore Best Practices on API reference
ouiliame 3feeefc
docs(blocks): rewrite Function reference to match the current block
ouiliame 83c025a
docs(blocks): rewrite Router reference to match the current block
ouiliame 3dbcc8b
docs(blocks): restore the classify and lead-qual examples on Router
ouiliame bd9d87f
docs(blocks): rewrite Response reference to match the current block
ouiliame e771efe
docs(blocks): rewrite Variables reference to match the current block
ouiliame 9ecfebf
docs(blocks): rewrite Wait reference to match the current block
ouiliame 7aa2d80
docs(blocks): polish Credential reference (frontmatter, fold redundan…
ouiliame 7d411eb
docs(blocks): render the shared-credential example + icon fallback fo…
ouiliame d2acb94
docs(blocks): rewrite Evaluator reference to match the current block
ouiliame 00f2614
docs(blocks): render the Credential route-by-logic example too
ouiliame 553e8b5
docs(blocks): render Guardrails examples + light accuracy pass
ouiliame 557cb35
docs(blocks): render Human-in-the-Loop examples + frontmatter
ouiliame 135cdd4
docs(blocks): render Webhook examples + frontmatter
ouiliame aebf100
docs(blocks): add example + pageType to Workflow block reference
ouiliame 47d6a7b
docs(blocks): container rendering for Loop/Parallel + render the Loop…
ouiliame 0d058ea
docs(blocks): fix the Loop container's Start-pill connector
ouiliame 19c309f
docs(blocks): render the Parallel example + frontmatter (last core bl…
ouiliame a79cf1a
docs(blocks): prose glow-up for Guardrails to match the agent/conditi…
ouiliame 227b0aa
docs(blocks): prose glow-up for Loop to match the agent/condition voice
ouiliame 20ca934
docs(blocks): prose glow-up for Parallel to match the agent/condition…
ouiliame c7b6fa5
docs(blocks): prose glow-up for Human-in-the-Loop
ouiliame 1a2f40b
docs(blocks): re-enrich Loop prose (fuller, explanatory — not terse)
ouiliame 6e1f266
docs(blocks): re-balance Parallel prose to the Agent/Condition register
ouiliame f4089cd
docs(blocks): restore the Notification channel detail on HITL
ouiliame 645bbcc
docs(blocks): builder-voice polish on the Credential intro
ouiliame cc32437
docs(triggers): rewrite Start trigger in the builder voice
ouiliame a59cb88
docs(triggers): rewrite Schedule trigger in the builder voice
ouiliame 5e635b2
docs(triggers): refocus Webhook trigger on the generic (native) trigger
ouiliame ea4b1e9
docs(triggers): builder-voice glow-up for RSS
ouiliame 82d625c
docs(triggers): rewrite Table trigger off the auto-generated card
ouiliame 22a8eab
docs(triggers): frame the index around native triggers + separate the…
ouiliame f037c73
docs: promote Core Blocks + Core Triggers into the Workflows area
ouiliame 1405f79
docs: merge block/trigger overviews into the Workflows overview; Core…
ouiliame 5f886b4
docs: split integration triggers into their own Reference accordion
ouiliame ab1dd37
docs(workflows): trim the overview back to an introduction
ouiliame 88e7912
docs: relocate email-polling + trigger-priority out of the overview
ouiliame 5ebd28e
docs: spec for per-service integration pages (block index, triggers b…
ouiliame d90c668
feat(docs-gen): emit per-service integration pages (actions + Trigger…
ouiliame 151576c
feat(docs): unify tools + triggers into per-service /integrations pages
ouiliame f99ff92
fix(docs): recover the hand-written manual-content intros on integrat…
ouiliame aa9bf0d
docs(scripts): rewrite the generator README for the integrations model
ouiliame e09059b
Merge remote-tracking branch 'origin/staging' into feat/docs-reorg
ouiliame 33cc459
docs: regenerate integration docs from staging-synced apps/sim
ouiliame 64c68de
fix(docs-gen): don't let stale-doc cleanup delete hand-written integr…
ouiliame fd58363
fix(docs-gen): stop cleanup/writer filter mismatch from eating manual…
ouiliame d1f51a1
fix(docs): recover staging's enriched Table doc + never drop manual c…
ouiliame 215f3e9
docs(workspaces): de-philosophize the fundamentals prose
ouiliame a9026c3
fix(docs): restore #blocks and #triggers anchors on the workflows ove…
ouiliame 6769487
docs: restore the genuinely useful reference bits the rewrite dropped
ouiliame d80d7f9
docs(blocks): rework the Agent intro — encyclopedia register
ouiliame 033b74d
docs(integrations): add the HubSpot setup guide for the Marketplace l…
ouiliame 8357027
docs(integrations): rewrite the Integrations guide for the sidebar flow
ouiliame 19a75a7
docs: move Building agents directly after Workflows in the sidebar
ouiliame 2c1161a
docs: fill the visual slots coverable by existing components
ouiliame 8ca47c7
docs(components): run-inspector OutputBundle + lightbox with block in…
ouiliame a4f62f0
Merge remote-tracking branch 'origin/staging' into feat/docs-reorg
ouiliame f6a1868
docs: regenerate after staging merge — AppConfig joins integrations/
ouiliame 46e75dc
docs: redirect the retired tools/ and trigger URLs to integrations/
ouiliame 367912b
docs(getting-started): rewrite — current UI, cut the post-tutorial pa…
ouiliame f037f6e
docs: de-fluff the Tier-1 heavy pages (logging, mcp, passing-files, p…
ouiliame b6db2a1
docs: tier-2 fluff trims (costs, enterprise, mailer, skills)
ouiliame 8f6cf81
docs(skills): update to the Skills tab on the Integrations page + doc…
ouiliame 08385f0
docs(building-agents): render the lead-scorer running example on choo…
ouiliame 31570d1
docs: visuals manifest — every screenshot and walkthrough, with status
ouiliame 6ba31fb
docs(tables): rewrite workflow columns around the real lead-scoring e…
ouiliame 641a281
Merge remote-tracking branch 'origin/staging' into feat/docs-reorg
ouiliame e7f242a
docs: regenerate after staging merge — Slack trigger update + file bl…
ouiliame 54e9c4e
docs(tables): playbook prose pass on workflow columns + restore File …
ouiliame c3688ba
docs(tables): per-row execution inspection on workflow columns
ouiliame 2240b3e
docs(workflows): drop the confusing 'order by hand' sentence
ouiliame f081750
docs(workflows): fix the over-claim about independent blocks
ouiliame b90b3db
docs(workflows): accuracy audit of how-it-runs against the executor
ouiliame d2b215d
docs(logs): real captures on the overview + prose matched to the UI
ouiliame 5da5a25
docs(workflows): one reference syntax, named sources — untangle varia…
ouiliame 03a433e
docs(workflows): verify the reference model against the resolver; fix…
ouiliame d4a0245
docs(building-agents): workflow-as-tool is agent-decided, not the Wor…
ouiliame 979506a
docs: theme-aware previews + enrichments vs workflow groups split
ouiliame ba8b465
docs(tables): don't enumerate the enrichment catalog; don't assert a …
ouiliame f7c0b49
docs(components): per-branch source handles — conditions and routers …
ouiliame 55056de
docs(components): inspector shows branch rows
ouiliame dedd5bb
docs(components): branch handle ids match the app's workflow represen…
ouiliame f1e56fa
Merge remote-tracking branch 'origin/staging' into feat/docs-reorg
ouiliame fde93de
docs: agent skills mint /integrations/ docs links and describe the ne…
ouiliame 774d3a7
docs(workflows): execution semantics, not simultaneity
ouiliame 45f4c58
docs(workflows): errors are execution semantics — own section on how-…
ouiliame 41bdc46
Merge remote-tracking branch 'origin/staging' into feat/docs-reorg
ouiliame 9469bc4
docs: data-driven additions from the platform-metrics read
ouiliame File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| import type { DocsPageType } from '@/lib/source' | ||
| import { cn } from '@/lib/utils' | ||
|
|
||
| const CONFIG = { | ||
| tutorial: { label: 'Tutorial', className: 'text-[#33c482] border-[#33c482]/30 bg-[#33c482]/10' }, | ||
| guide: { | ||
| label: 'Guide', | ||
| className: 'text-blue-600 border-blue-500/30 bg-blue-500/10 dark:text-blue-400', | ||
| }, | ||
| reference: { | ||
| label: 'Reference', | ||
| className: 'text-violet-600 border-violet-500/30 bg-violet-500/10 dark:text-violet-400', | ||
| }, | ||
| concept: { | ||
| label: 'Concept', | ||
| className: 'text-amber-600 border-amber-500/30 bg-amber-500/10 dark:text-amber-400', | ||
| }, | ||
| } as const satisfies Record<DocsPageType, { label: string; className: string }> | ||
|
|
||
| interface PageTypeBadgeProps { | ||
| type: DocsPageType | ||
| className?: string | ||
| } | ||
|
|
||
| /** | ||
| * Small label that tells the reader which Diátaxis mode a page is — learning, | ||
| * task, lookup, or understanding. Rendered only when a page declares `type`. | ||
| */ | ||
| export function PageTypeBadge({ type, className }: PageTypeBadgeProps) { | ||
| const config = CONFIG[type] | ||
| if (!config) return null | ||
|
|
||
| return ( | ||
| <span | ||
| className={cn( | ||
| 'inline-flex items-center rounded-full border px-2 py-0.5 font-medium text-[11px] uppercase tracking-[0.04em]', | ||
| config.className, | ||
| className | ||
| )} | ||
| > | ||
| {config.label} | ||
| </span> | ||
| ) | ||
| } |
209 changes: 209 additions & 0 deletions
209
apps/docs/components/workflow-preview/block-display-specs.ts
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,209 @@ | ||
| /** | ||
| * A hand-authored block, described as what the builder canvas displays. | ||
| * | ||
| * - `rows` are the visible sub-block rows; use `'-'` for an empty/unset field (the canvas | ||
| * shows a dash), or a representative value where the field has a default. | ||
| * - `branches` render one output handle per entry (Condition's if/else-if/else, Router's | ||
| * routes); when set, also set `hideSourceHandle: true` so the single output is replaced. | ||
| * - `showError: true` adds the bottom `Error` row + red handle (action blocks, not triggers). | ||
| * - `hideTargetHandle: true` for triggers (entry points — no input). | ||
| * - `bgColor` is the resolved hex; the Agent uses Sim green `#33C482` (`var(--brand)`). | ||
| */ | ||
| export interface BlockDisplaySpec { | ||
| name: string | ||
| /** Block type — drives the header icon (see `BLOCK_ICONS`). */ | ||
| type: string | ||
| /** Resolved brand color (hex). */ | ||
| bgColor: string | ||
| rows: Array<{ title: string; value: string }> | ||
| branches?: string[] | ||
| showError?: boolean | ||
| hideTargetHandle?: boolean | ||
| hideSourceHandle?: boolean | ||
| } | ||
|
|
||
| /** | ||
| * Display specs for the block reference previews — one per block, edited to match exactly | ||
| * what the builder canvas shows. Source of truth for the `<BlockPreview>` heroes. | ||
| */ | ||
|
|
||
| export const BLOCK_DISPLAY_SPECS: Record<string, BlockDisplaySpec> = { | ||
| agent: { | ||
| name: 'Agent', | ||
| type: 'agent', | ||
| bgColor: '#33C482', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Messages', value: '-' }, | ||
| { title: 'Model', value: 'claude-sonnet-4-6' }, | ||
| { title: 'Files', value: '-' }, | ||
| { title: 'Tools', value: '-' }, | ||
| { title: 'Skills', value: '-' }, | ||
| { title: 'Memory', value: 'None' }, | ||
| { title: 'Response Format', value: '-' }, | ||
| ], | ||
| }, | ||
| api: { | ||
| name: 'API', | ||
| type: 'api', | ||
| bgColor: '#2F55FF', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'URL', value: '-' }, | ||
| { title: 'Method', value: 'GET' }, | ||
| { title: 'Query Params', value: '-' }, | ||
| { title: 'Headers', value: '-' }, | ||
| { title: 'Body', value: '-' }, | ||
| ], | ||
| }, | ||
| condition: { | ||
| name: 'Condition', | ||
| type: 'condition', | ||
| bgColor: '#FF752F', | ||
| showError: true, | ||
| hideSourceHandle: true, | ||
| rows: [], | ||
| branches: ['if', 'else if', 'else'], | ||
| }, | ||
| credential: { | ||
| name: 'Credential', | ||
| type: 'credential', | ||
| bgColor: '#6366F1', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Operation', value: 'Select Credential' }, | ||
| { title: 'Credential', value: '-' }, | ||
| ], | ||
| }, | ||
| evaluator: { | ||
| name: 'Evaluator', | ||
| type: 'evaluator', | ||
| bgColor: '#4D5FFF', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Evaluation Metrics', value: '-' }, | ||
| { title: 'Content', value: '-' }, | ||
| { title: 'Model', value: 'claude-sonnet-4-6' }, | ||
| ], | ||
| }, | ||
| function: { | ||
| name: 'Function', | ||
| type: 'function', | ||
| bgColor: '#FF402F', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Language', value: 'JavaScript' }, | ||
| { title: 'Code', value: '-' }, | ||
| ], | ||
| }, | ||
| guardrails: { | ||
| name: 'Guardrails', | ||
| type: 'guardrails', | ||
| bgColor: '#3D642D', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Content to Validate', value: '-' }, | ||
| { title: 'Validation Type', value: 'Valid JSON' }, | ||
| ], | ||
| }, | ||
| response: { | ||
| name: 'Response', | ||
| type: 'response', | ||
| bgColor: '#2F55FF', | ||
| showError: true, | ||
| hideSourceHandle: true, | ||
| rows: [ | ||
| { title: 'Response Data Mode', value: 'Builder' }, | ||
| { title: 'Response Structure', value: '-' }, | ||
| { title: 'Status Code', value: '-' }, | ||
| { title: 'Response Headers', value: '-' }, | ||
| ], | ||
| }, | ||
| router: { | ||
| name: 'Router', | ||
| type: 'router', | ||
| bgColor: '#28C43F', | ||
| showError: true, | ||
| hideSourceHandle: true, | ||
| rows: [{ title: 'Context', value: '-' }], | ||
| branches: ['route 1'], | ||
| }, | ||
| variables: { | ||
| name: 'Variables', | ||
| type: 'variables', | ||
| bgColor: '#8B5CF6', | ||
| showError: true, | ||
| rows: [{ title: 'Variable Assignments', value: '-' }], | ||
| }, | ||
| wait: { | ||
| name: 'Wait', | ||
| type: 'wait', | ||
| bgColor: '#F59E0B', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Wait Amount', value: '-' }, | ||
| { title: 'Unit', value: 'Seconds' }, | ||
| ], | ||
| }, | ||
| webhook: { | ||
| name: 'Webhook', | ||
| type: 'webhook', | ||
| bgColor: '#10B981', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Webhook URL', value: '-' }, | ||
| { title: 'Payload', value: '-' }, | ||
| { title: 'Signing Secret', value: '-' }, | ||
| { title: 'Additional Headers', value: '-' }, | ||
| ], | ||
| }, | ||
| workflow: { | ||
| name: 'Workflow', | ||
| type: 'workflow', | ||
| bgColor: '#6366F1', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Select Workflow', value: '-' }, | ||
| { title: 'Input Variable', value: '-' }, | ||
| ], | ||
| }, | ||
| human_in_the_loop: { | ||
| name: 'Human in the Loop', | ||
| type: 'human_in_the_loop', | ||
| bgColor: '#10B981', | ||
| showError: true, | ||
| rows: [ | ||
| { title: 'Display Data', value: '-' }, | ||
| { title: 'Notification', value: '-' }, | ||
| { title: 'Resume Form', value: '-' }, | ||
| ], | ||
| }, | ||
| schedule: { | ||
| name: 'Schedule', | ||
| type: 'schedule', | ||
| bgColor: '#6366F1', | ||
| hideTargetHandle: true, | ||
| rows: [ | ||
| { title: 'Run frequency', value: 'Every X Minutes' }, | ||
| { title: 'Interval (minutes)', value: '-' }, | ||
| ], | ||
| }, | ||
| rss: { | ||
| name: 'RSS Feed', | ||
| type: 'rss', | ||
| bgColor: '#F97316', | ||
| hideTargetHandle: true, | ||
| rows: [{ title: 'Feed URL', value: '-' }], | ||
| }, | ||
| webhook_trigger: { | ||
| name: 'Webhook', | ||
| type: 'webhook', | ||
| bgColor: '#10B981', | ||
| hideTargetHandle: true, | ||
| rows: [ | ||
| { title: 'Webhook URL', value: '-' }, | ||
| { title: 'Require Authentication', value: '-' }, | ||
| { title: 'Input Format', value: '-' }, | ||
| ], | ||
| }, | ||
| } |
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Page subtitle no longer renders
Medium Severity
The layout no longer renders
DocsDescription, so frontmatterdescriptionvalues added on rewritten reference pages never appear in the page body. Metadata and structured data still usedata.description, but readers only see the title and optional page-type badge.Additional Locations (1)
apps/docs/app/[lang]/[[...slug]]/page.tsx#L175-L176Reviewed by Cursor Bugbot for commit f081750. Configure here.