Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
b7e377e
v0.5.91: docs i18n, turborepo upgrade
waleedlatif1 Feb 16, 2026
da46a38
v0.5.92: shortlinks, copilot scrolling stickiness, pagination
waleedlatif1 Feb 17, 2026
fdca736
v0.5.93: NextJS config changes, MCP and Blocks whitelisting, copilot …
waleedlatif1 Feb 18, 2026
15ace5e
v0.5.94: vercel integration, folder insertion, migrated tracking redi…
waleedlatif1 Feb 19, 2026
67aa4bb
v0.5.95: gemini 3.1 pro, cloudflare, dataverse, revenuecat, redis, up…
waleedlatif1 Feb 20, 2026
34d92fa
v0.5.96: sim oauth provider, slack ephemeral message tool and blockki…
waleedlatif1 Feb 21, 2026
115f04e
v0.5.97: oidc discovery for copilot mcp
waleedlatif1 Feb 21, 2026
0d86ea0
v0.5.98: change detection improvements, rate limit and code execution…
waleedlatif1 Feb 22, 2026
af59234
v0.5.99: local dev improvements, live workflow logs in terminal
waleedlatif1 Feb 23, 2026
67f8a68
v0.5.100: multiple credentials, 40% speedup, gong, attio, audit log i…
waleedlatif1 Feb 25, 2026
4fd0989
v0.5.101: circular dependency mitigation, confluence enhancements, go…
waleedlatif1 Feb 26, 2026
0d2e6ff
v0.5.102: new integrations, new tools, ci speedups, memory leak instr…
waleedlatif1 Feb 28, 2026
e07e3c3
v0.5.103: memory util instrumentation, API docs, amplitude, google pa…
waleedlatif1 Mar 2, 2026
f1ec5fe
v0.5.104: memory improvements, nested subflows, careers page redirect…
waleedlatif1 Mar 4, 2026
70c36cb
v0.5.105: slack remove reaction, nested subflow locks fix, servicenow…
waleedlatif1 Mar 5, 2026
3ce9475
v0.5.106: condition block and legacy kbs fixes, GPT 5.4
icecrasher321 Mar 6, 2026
6586c5c
v0.5.107: new reddit, slack tools
waleedlatif1 Mar 6, 2026
8c0a2e0
v0.5.108: workflow input params in agent tools, bun upgrade, dropdown…
icecrasher321 Mar 7, 2026
ecd3536
v0.5.109: obsidian and evernote integrations, slack fixes, remove mem…
waleedlatif1 Mar 9, 2026
1c2c2c6
v0.5.110: webhook execution speedups, SSRF patches
waleedlatif1 Mar 11, 2026
36612ae
v0.5.111: non-polling webhook execs off trigger.dev, gmail subject he…
icecrasher321 Mar 12, 2026
e9bdc57
v0.5.112: trace spans improvements, fathom integration, jira fixes, c…
waleedlatif1 Mar 12, 2026
4c12914
v0.5.113: jira, ashby, google ads, grain updates
icecrasher321 Mar 13, 2026
84d6fdc
v0.6: mothership, tables, connectors
waleedlatif1 Mar 17, 2026
4f3bc37
v0.6.1: added better auth admin plugin
waleedlatif1 Mar 17, 2026
4bd0731
v0.6.2: mothership stability, chat iframe embedding, KB upserts, new …
waleedlatif1 Mar 18, 2026
30f2d1a
v0.6.3: hubspot integration, kb block improvements
waleedlatif1 Mar 18, 2026
ff7b5b5
v0.6.4: subflows, docusign, ashby new tools, box, workday, billing bu…
waleedlatif1 Mar 19, 2026
9fcd02f
v0.6.5: email validation, integrations page, mothership and custom to…
waleedlatif1 Mar 19, 2026
1731a4d
v0.6.6: landing improvements, styling consistency, mothership table r…
waleedlatif1 Mar 20, 2026
19442f1
v0.6.7: kb improvements, edge z index fix, captcha, new trust center,…
waleedlatif1 Mar 21, 2026
c78c870
v0.6.8: mothership tool loop
Sg312 Mar 24, 2026
ed9a71f
v0.6.9: general ux improvements for tables, mothership
icecrasher321 Mar 25, 2026
7b572f1
v0.6.10: tour fix, connectors reliability improvements, tooltip gif f…
waleedlatif1 Mar 25, 2026
6bebbc5
v0.6.11: billing fixes, rippling, hubspot, UI improvements, demo modal
waleedlatif1 Mar 26, 2026
ca87d7c
v0.6.12: billing, blogs UI
waleedlatif1 Mar 26, 2026
e615816
v0.6.13: emcn standardization, granola and ketch integrations, securi…
waleedlatif1 Mar 27, 2026
14089f7
v0.6.14: performance improvements, connectors UX, collapsed sidebar a…
waleedlatif1 Mar 27, 2026
251046d
fix(import): dedup workflow name (#3813)
icecrasher321 Mar 27, 2026
f0adc5e
feat(concurrency): bullmq based concurrency control system (#3605)
icecrasher321 Mar 27, 2026
d944b47
fix(linear): add default null for after cursor (#3814)
icecrasher321 Mar 27, 2026
0d8f4cf
fix(knowledge): reject non-alphanumeric file extensions from document…
waleedlatif1 Mar 27, 2026
a74789e
fix(security): SSRF, access control, and info disclosure (#3815)
waleedlatif1 Mar 28, 2026
d7840e0
fix(worker): dockerfile + helm updates (#3818)
icecrasher321 Mar 28, 2026
879f0c9
update dockerfile (#3819)
icecrasher321 Mar 28, 2026
296fd89
fix dockerfile
icecrasher321 Mar 28, 2026
1da4b15
fix(security): pentest remediation — condition escaping, SSRF hardeni…
waleedlatif1 Mar 28, 2026
bed7091
improvement(worker): configuration defaults (#3821)
icecrasher321 Mar 28, 2026
a1b32d3
improvement(tour): remove auto-start, only trigger on explicit user a…
waleedlatif1 Mar 28, 2026
918c032
fix(mcp): use correct modal for creating workflow MCP servers in depl…
waleedlatif1 Mar 28, 2026
2f3d524
mock course
waleedlatif1 Mar 25, 2026
1e53b09
fix(db): use bigint for token counter columns in user_stats (#3755)
waleedlatif1 Mar 25, 2026
b382a8b
mock course
waleedlatif1 Mar 25, 2026
77ea8bc
updates
waleedlatif1 Mar 27, 2026
c038ff6
updated X handle for emir
waleedlatif1 Mar 27, 2026
59d161b
cleanup: audit and clean academy implementation
waleedlatif1 Mar 27, 2026
a5a2575
fix(academy): add label to ValidationRule, fix quiz gating, simplify …
waleedlatif1 Mar 27, 2026
7d20749
cleanup: remove unnecessary comments across academy files
waleedlatif1 Mar 27, 2026
c6354a4
refactor(academy): simplify abstractions and fix perf issues
waleedlatif1 Mar 27, 2026
85b19fa
perf(academy): convert course detail page to server component with cl…
waleedlatif1 Mar 27, 2026
feffd89
fix(academy): null-safe canAdvance, render exercise instructions, rem…
waleedlatif1 Mar 27, 2026
0f333ac
fix(academy): remove orphaned migration, fix getCourseById, clean up …
waleedlatif1 Mar 28, 2026
f92c181
chore(db): regenerate academy_certificate migration with drizzle-kit
waleedlatif1 Mar 28, 2026
60137a8
chore: include blog mdx and components changes
waleedlatif1 Mar 28, 2026
de7e232
fix(blog): correct cn import path
waleedlatif1 Mar 28, 2026
7f00749
fix(academy): constrain progress bar to max-w-3xl with proper padding
waleedlatif1 Mar 28, 2026
33ea55e
feat(academy): show back-to-course button on first lesson
waleedlatif1 Mar 28, 2026
8b846a2
fix(academy): force dark theme on all /academy routes
waleedlatif1 Mar 28, 2026
061fa58
content(academy): rewrite sim-foundations course with full 6-module c…
waleedlatif1 Mar 28, 2026
d9e2f16
fix(academy): correct edge handles, quiz explanation, and starter moc…
waleedlatif1 Mar 28, 2026
d42e08a
refine(academy): fix inaccurate content and improve exercise clarity
waleedlatif1 Mar 28, 2026
25a235f
fix(academy): remove double border on quiz question cards
waleedlatif1 Mar 28, 2026
52dc65e
fix(academy): single scroll container on lesson pages — remove nested…
waleedlatif1 Mar 28, 2026
7aec70e
fix(academy): remove min-h-screen from root layout — fixes double scr…
waleedlatif1 Mar 28, 2026
1c24949
fix(academy): use fixed inset-0 on lesson page to eliminate document-…
waleedlatif1 Mar 28, 2026
d4572aa
fix(academy): replace sr-only radio/checkbox inputs with buttons to p…
waleedlatif1 Mar 28, 2026
ba17684
improvement(academy): polish, security hardening, and certificate cla…
waleedlatif1 Mar 28, 2026
5907476
fix(academy): validate condition branch handles in edge_exists rules
waleedlatif1 Mar 28, 2026
7614865
fix(academy): address PR review — isHosted regression, stuck isExecut…
waleedlatif1 Mar 28, 2026
3f620f0
fix(auth): restore hybrid.ts from staging to fix CI type error
waleedlatif1 Mar 28, 2026
1d5243a
fix(academy): mark video lessons complete on visit and fix sign-in path
waleedlatif1 Mar 28, 2026
cf980c8
fix(academy): replace useEffect+setState with lazy useState initializ…
waleedlatif1 Mar 28, 2026
140bc2f
fix(academy): reset exerciseComplete on lesson navigation, remove unu…
waleedlatif1 Mar 28, 2026
38b51e2
fix(academy): useState for slug-change reset, cache() for cert page, …
waleedlatif1 Mar 28, 2026
17ff1f3
fix(academy): replace shadcn theme vars with explicit hex in LessonVi…
waleedlatif1 Mar 28, 2026
46880b3
fix(academy): reset completedRef on exercise change, conditional veri…
waleedlatif1 Mar 28, 2026
51b2147
fix(academy): type safety fixes — null metadata fallbacks, returning(…
waleedlatif1 Mar 28, 2026
db8d1f6
fix(academy): reset ExerciseView completed banner on nav; fix CourseP…
waleedlatif1 Mar 28, 2026
ee32c2a
fix(lightbox): guard effect body with isOpen to prevent spurious over…
waleedlatif1 Mar 28, 2026
5bd36e3
fix(academy): reset LessonQuiz state on lesson change to prevent stal…
waleedlatif1 Mar 28, 2026
5b313e3
fix(academy): course not-found metadata title; try-finally guard in m…
waleedlatif1 Mar 28, 2026
2888e2d
fix(academy): type safety, cert persistence, regex guard, mixed-lesso…
waleedlatif1 Mar 28, 2026
829ddc6
fix(academy): reset hintIndex when exercise changes
waleedlatif1 Mar 28, 2026
eaa4498
chore: remove ban-spam-accounts script (wrong branch)
waleedlatif1 Mar 28, 2026
ef473d4
fix(academy): enforce availableBlocks in toolbar; fix mixed exercise+…
waleedlatif1 Mar 28, 2026
c86bd3e
chore(academy): remove extraneous inline comments
waleedlatif1 Mar 28, 2026
d32bb1e
fix(academy): blank mixed lesson, quiz canAdvance flag, empty-array v…
waleedlatif1 Mar 28, 2026
79a76f5
prep for merge
waleedlatif1 Mar 28, 2026
32eb416
Merge remote-tracking branch 'origin/staging' into feat/academy
waleedlatif1 Mar 28, 2026
57a7867
chore(db): regenerate academy certificate migration after staging merge
waleedlatif1 Mar 28, 2026
b3d7432
fix(academy): disable auto-connect in sandbox mode
waleedlatif1 Mar 28, 2026
39a56de
fix(academy): render video in mixed lesson with no exercise or quiz
waleedlatif1 Mar 28, 2026
44c332d
fix(academy): mark mixed video-only lessons complete; handle cert ins…
waleedlatif1 Mar 28, 2026
74c5278
fix(canvas): add sandbox and embedded to nodes useMemo deps
waleedlatif1 Mar 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/docs/app/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export const metadata = {
metadataBase: new URL('https://docs.sim.ai'),
title: {
default: 'Sim Documentation — Build AI Agents & Run Your Agentic Workforce',
template: '%s',
template: '%s | Sim Docs',
},
description:
'Documentation for Sim — the open-source platform to build AI agents and run your agentic workforce. Connect 1,000+ integrations and LLMs to deploy and orchestrate agentic workflows.',
Expand Down
2 changes: 2 additions & 0 deletions apps/sim/app/(home)/components/footer/footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ const RESOURCES_LINKS: FooterItem[] = [
{ label: 'Blog', href: '/blog' },
// { label: 'Templates', href: '/templates' },
{ label: 'Docs', href: 'https://docs.sim.ai', external: true },
{ label: 'Academy', href: '/academy' },
{ label: 'Partners', href: '/partners' },
{ label: 'Careers', href: 'https://jobs.ashbyhq.com/sim', external: true },
{ label: 'Changelog', href: '/changelog' },
]
Expand Down
43 changes: 43 additions & 0 deletions apps/sim/app/(landing)/blog/components/blog-image.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
'use client'

import { useState } from 'react'
import NextImage from 'next/image'
import { cn } from '@/lib/core/utils/cn'
import { Lightbox } from '@/app/(landing)/blog/components/lightbox'

interface BlogImageProps {
src: string
alt?: string
width?: number
height?: number
className?: string
}

export function BlogImage({ src, alt = '', width = 800, height = 450, className }: BlogImageProps) {
const [isLightboxOpen, setIsLightboxOpen] = useState(false)

return (
<>
<NextImage
src={src}
alt={alt}
width={width}
height={height}
className={cn(
'h-auto w-full cursor-pointer rounded-lg transition-opacity hover:opacity-95',
className
)}
sizes='(max-width: 768px) 100vw, 800px'
loading='lazy'
unoptimized
onClick={() => setIsLightboxOpen(true)}
/>
<Lightbox
isOpen={isLightboxOpen}
onClose={() => setIsLightboxOpen(false)}
src={src}
alt={alt}
/>
</>
)
}
62 changes: 62 additions & 0 deletions apps/sim/app/(landing)/blog/components/lightbox.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
'use client'

import { useEffect, useRef } from 'react'

interface LightboxProps {
isOpen: boolean
onClose: () => void
src: string
alt: string
}

export function Lightbox({ isOpen, onClose, src, alt }: LightboxProps) {
const overlayRef = useRef<HTMLDivElement>(null)

useEffect(() => {
if (!isOpen) return

const handleKeyDown = (event: KeyboardEvent) => {
if (event.key === 'Escape') {
onClose()
}
}

const handleClickOutside = (event: MouseEvent) => {
if (overlayRef.current && event.target === overlayRef.current) {
onClose()
}
}

document.addEventListener('keydown', handleKeyDown)
document.addEventListener('click', handleClickOutside)
document.body.style.overflow = 'hidden'

return () => {
document.removeEventListener('keydown', handleKeyDown)
document.removeEventListener('click', handleClickOutside)
document.body.style.overflow = 'unset'
}
}, [isOpen, onClose])

if (!isOpen) return null

return (
<div
ref={overlayRef}
className='fixed inset-0 z-50 flex items-center justify-center bg-black/80 p-12 backdrop-blur-sm'
role='dialog'
aria-modal='true'
aria-label='Image viewer'
>
<div className='relative max-h-full max-w-full overflow-hidden rounded-xl shadow-2xl'>
<img
src={src}
alt={alt}
className='max-h-[75vh] max-w-[75vw] cursor-pointer rounded-xl object-contain'
loading='lazy'
onClick={onClose}
/>
</div>
</div>
)
}
Loading
Loading