Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
09fd8b8
feat(fonts): season replacing geist
emir-karabeg Oct 2, 2025
5cdbfa0
feat(emcnn): created emcn
emir-karabeg Oct 2, 2025
ca59cc8
feat(sidebar): created new sidebar with header and workflow list
emir-karabeg Oct 2, 2025
8cd0ec8
improvement(sidebar): expanded workflow/folder item text sizing and a…
emir-karabeg Oct 2, 2025
299c3ed
feat(sidebar): added search UI, updated workflows styling
emir-karabeg Oct 4, 2025
d645deb
improvement: globals styling with antialiased in dark mode only
emir-karabeg Oct 4, 2025
ac11006
feat(sidebar): blocks and triggers ui/ux updated
emir-karabeg Oct 6, 2025
71f4ded
refactor(sidebar): moved logic into hooks
emir-karabeg Oct 7, 2025
ce2b571
feat(sidebar): improved workflow/folder dragging UI/UX; refactored lo…
emir-karabeg Oct 7, 2025
fcc7420
improvement(sidebar): adjusted triggers/blocks padding for header
emir-karabeg Oct 7, 2025
08df9c8
improvement(sidebar): dragging hover handler; closed folders by defau…
emir-karabeg Oct 7, 2025
9985223
improvement(sidebar): panel resize logic
emir-karabeg Oct 7, 2025
01553b8
improvement(sidebar): blocks and triggers expanded indicator
emir-karabeg Oct 7, 2025
25c1650
feat(tooltips): new emcn component emerged
emir-karabeg Oct 14, 2025
cf1a62a
feat(sidebar): workflow list handling updated
emir-karabeg Oct 17, 2025
d6fadb2
refactor: added cursorrules
emir-karabeg Oct 19, 2025
c987738
feat(panel): new panel layout
emir-karabeg Oct 19, 2025
ab7d94b
improvement(workspaces): firname's workspace instead of fn ln's works…
emir-karabeg Oct 19, 2025
bbf49f4
feat(platform): panel header, new emcn icons, more button variants, r…
emir-karabeg Oct 19, 2025
b03ab81
improvement(emcn): added button variants
emir-karabeg Oct 19, 2025
4f409a6
feat(panel): tab system
emir-karabeg Oct 19, 2025
a81ec74
feat(copilot): refactor, adjusted welcome and user-input UI/UX
emir-karabeg Oct 23, 2025
72d944d
feat(copilot): baseline user-input ui/ux improvement
emir-karabeg Oct 23, 2025
ef254fb
feat(emcn): badge outline variant
emir-karabeg Oct 23, 2025
bbcde83
fix: build errors
emir-karabeg Oct 24, 2025
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
19 changes: 19 additions & 0 deletions .cursorrules
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Role

You are a professional software engineer. All code you write MUST follow best practices, ensuring accuracy, quality, readability, and cleanliness. You MUST make FOCUSED EDITS that are EFFICIENT and ELEGANT.

## Logs

ENSURE that you use the logger.info and logger.warn and logger.error instead of the console.log whenever you want to display logs.

## Comments

You must use TSDOC for comments. Do not use ==== for comments to separate sections.

## Globals styles

You should not update the global styles unless it is absolutely necessary. Keep all styling local to components and files.

## Bun

Use bun and bunx not npm and npx
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ sim-standalone.tar.gz
next-env.d.ts

# cursorrules
.cursorrules
# .cursorrules

# docs
/apps/docs/.source
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(auth)/components/social-login-buttons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { type ReactNode, useEffect, useState } from 'react'
import { GithubIcon, GoogleIcon } from '@/components/icons'
import { Button } from '@/components/ui/button'
import { client } from '@/lib/auth-client'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'

interface SocialLoginButtonsProps {
githubAvailable: boolean
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(auth)/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export default function AuthLayout({ children }: { children: React.ReactNode })
}, [])
return (
<AuthBackground>
<main className='relative flex min-h-screen flex-col font-geist-sans text-foreground'>
<main className='relative flex min-h-screen flex-col text-foreground'>
{/* Header - Nav handles all conditional logic */}
<Nav hideAuthButtons={true} variant='auth' />

Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(auth)/login/login-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import { getBaseUrl } from '@/lib/urls/utils'
import { cn } from '@/lib/utils'
import { SocialLoginButtons } from '@/app/(auth)/components/social-login-buttons'
import { SSOLoginButton } from '@/app/(auth)/components/sso-login-button'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'

const logger = createLogger('LoginForm')
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(auth)/reset-password/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import Link from 'next/link'
import { useRouter, useSearchParams } from 'next/navigation'
import { createLogger } from '@/lib/logs/console/logger'
import { SetNewPasswordForm } from '@/app/(auth)/reset-password/reset-password-form'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'

const logger = createLogger('ResetPasswordPage')
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(auth)/reset-password/reset-password-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button'
import { Input } from '@/components/ui/input'
import { Label } from '@/components/ui/label'
import { cn } from '@/lib/utils'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'

interface RequestResetFormProps {
email: string
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(auth)/signup/signup-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { createLogger } from '@/lib/logs/console/logger'
import { cn } from '@/lib/utils'
import { SocialLoginButtons } from '@/app/(auth)/components/social-login-buttons'
import { SSOLoginButton } from '@/app/(auth)/components/sso-login-button'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'

const logger = createLogger('SignupForm')
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(auth)/sso/sso-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { quickValidateEmail } from '@/lib/email/validation'
import { env, isFalsy } from '@/lib/env'
import { createLogger } from '@/lib/logs/console/logger'
import { cn } from '@/lib/utils'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'

const logger = createLogger('SSOForm')
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(auth)/verify/verify-content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { Button } from '@/components/ui/button'
import { InputOTP, InputOTPGroup, InputOTPSlot } from '@/components/ui/input-otp'
import { cn } from '@/lib/utils'
import { useVerification } from '@/app/(auth)/verify/use-verification'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'

interface VerifyContentProps {
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/(landing)/components/footer/footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
LinkedInIcon,
xIcon as XIcon,
} from '@/components/icons'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'

const blocks = [
'Agent',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as Icons from '@/components/icons'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'

// AI models and providers
const modelProviderIcons = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {
import { useRouter } from 'next/navigation'
import { createLogger } from '@/lib/logs/console/logger'
import { cn } from '@/lib/utils'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import {
ENTERPRISE_PLAN_FEATURES,
PRO_PLAN_FEATURES,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'

interface LandingTemplatePreviewProps {
previewImage: string
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import LandingTemplatePreview from './components/landing-template-preview'

// Mock data for templates
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import { useEffect, useState } from 'react'
import Image from 'next/image'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'

interface Testimonial {
text: string
Expand Down
4 changes: 3 additions & 1 deletion apps/sim/app/api/workspaces/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,9 @@ export async function POST(req: Request) {

// Helper function to create a default workspace
async function createDefaultWorkspace(userId: string, userName?: string | null) {
const workspaceName = userName ? `${userName}'s Workspace` : 'My Workspace'
// Extract first name only by splitting on spaces and taking the first part
const firstName = userName?.split(' ')[0] || null
const workspaceName = firstName ? `${firstName}'s Workspace` : 'My Workspace'
return createWorkspace(userId, workspaceName)
}

Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/changelog/components/changelog-content.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { BookOpen, Github, Rss } from 'lucide-react'
import Link from 'next/link'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'
import ChangelogList from './timeline-list'

Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/changelog/components/timeline-list.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import React from 'react'
import ReactMarkdown from 'react-markdown'
import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'
import type { ChangelogEntry } from './changelog-content'

Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/changelog/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Nav from '@/app/(landing)/components/nav/nav'

export default function ChangelogLayout({ children }: { children: React.ReactNode }) {
return (
<div className='min-h-screen bg-background font-geist-sans text-foreground'>
<div className='min-h-screen bg-background text-foreground'>
<Nav />
{children}
</div>
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/chat/components/auth/email/email-auth.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { quickValidateEmail } from '@/lib/email/validation'
import { createLogger } from '@/lib/logs/console/logger'
import { cn } from '@/lib/utils'
import Nav from '@/app/(landing)/components/nav/nav'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'

const logger = createLogger('EmailAuth')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Label } from '@/components/ui/label'
import { createLogger } from '@/lib/logs/console/logger'
import { cn } from '@/lib/utils'
import Nav from '@/app/(landing)/components/nav/nav'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'

const logger = createLogger('PasswordAuth')
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/chat/components/error-state/error-state.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { useRouter } from 'next/navigation'
import { Button } from '@/components/ui/button'
import { useBrandConfig } from '@/lib/branding/branding'
import Nav from '@/app/(landing)/components/nav/nav'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'
import { soehne } from '@/app/fonts/soehne/soehne'

interface ChatErrorStateProps {
Expand Down
2 changes: 1 addition & 1 deletion apps/sim/app/chat/components/header/header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import Image from 'next/image'
import Link from 'next/link'
import { GithubIcon } from '@/components/icons'
import { useBrandConfig } from '@/lib/branding/branding'
import { inter } from '@/app/fonts/inter'
import { inter } from '@/app/fonts/inter/inter'

interface ChatHeaderProps {
chatConfig: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,45 +35,45 @@ export default function MarkdownRenderer({
const customComponents = {
// Paragraph
p: ({ children }: React.HTMLAttributes<HTMLParagraphElement>) => (
<p className='mb-1 font-geist-sans text-base text-gray-800 leading-relaxed last:mb-0 dark:text-gray-200'>
<p className='mb-1 font-sans text-base text-gray-800 leading-relaxed last:mb-0 dark:text-gray-200'>
{children}
</p>
),

// Headings
h1: ({ children }: React.HTMLAttributes<HTMLHeadingElement>) => (
<h1 className='mt-10 mb-5 font-geist-sans font-semibold text-2xl text-gray-900 dark:text-gray-100'>
<h1 className='mt-10 mb-5 font-sans font-semibold text-2xl text-gray-900 dark:text-gray-100'>
{children}
</h1>
),
h2: ({ children }: React.HTMLAttributes<HTMLHeadingElement>) => (
<h2 className='mt-8 mb-4 font-geist-sans font-semibold text-gray-900 text-xl dark:text-gray-100'>
<h2 className='mt-8 mb-4 font-sans font-semibold text-gray-900 text-xl dark:text-gray-100'>
{children}
</h2>
),
h3: ({ children }: React.HTMLAttributes<HTMLHeadingElement>) => (
<h3 className='mt-7 mb-3 font-geist-sans font-semibold text-gray-900 text-lg dark:text-gray-100'>
<h3 className='mt-7 mb-3 font-sans font-semibold text-gray-900 text-lg dark:text-gray-100'>
{children}
</h3>
),
h4: ({ children }: React.HTMLAttributes<HTMLHeadingElement>) => (
<h4 className='mt-5 mb-2 font-geist-sans font-semibold text-base text-gray-900 dark:text-gray-100'>
<h4 className='mt-5 mb-2 font-sans font-semibold text-base text-gray-900 dark:text-gray-100'>
{children}
</h4>
),

// Lists
ul: ({ children }: React.HTMLAttributes<HTMLUListElement>) => (
<ul
className='mt-1 mb-1 space-y-1 pl-6 font-geist-sans text-gray-800 dark:text-gray-200'
className='mt-1 mb-1 space-y-1 pl-6 font-sans text-gray-800 dark:text-gray-200'
style={{ listStyleType: 'disc' }}
>
{children}
</ul>
),
ol: ({ children }: React.HTMLAttributes<HTMLOListElement>) => (
<ol
className='mt-1 mb-1 space-y-1 pl-6 font-geist-sans text-gray-800 dark:text-gray-200'
className='mt-1 mb-1 space-y-1 pl-6 font-sans text-gray-800 dark:text-gray-200'
style={{ listStyleType: 'decimal' }}
>
{children}
Expand All @@ -84,10 +84,7 @@ export default function MarkdownRenderer({
ordered,
...props
}: React.LiHTMLAttributes<HTMLLIElement> & { ordered?: boolean }) => (
<li
className='font-geist-sans text-gray-800 dark:text-gray-200'
style={{ display: 'list-item' }}
>
<li className='font-sans text-gray-800 dark:text-gray-200' style={{ display: 'list-item' }}>
{children}
</li>
),
Expand All @@ -112,7 +109,7 @@ export default function MarkdownRenderer({
return (
<div className='my-6 rounded-md bg-gray-900 text-sm dark:bg-black'>
<div className='flex items-center justify-between border-gray-700 border-b px-4 py-1.5 dark:border-gray-800'>
<span className='font-geist-sans text-gray-400 text-xs'>
<span className='font-sans text-gray-400 text-xs'>
{codeProps.className?.replace('language-', '') || 'code'}
</span>
</div>
Expand Down Expand Up @@ -149,7 +146,7 @@ export default function MarkdownRenderer({

// Blockquotes
blockquote: ({ children }: React.HTMLAttributes<HTMLQuoteElement>) => (
<blockquote className='my-4 border-gray-300 border-l-4 py-1 pl-4 font-geist-sans text-gray-700 italic dark:border-gray-600 dark:text-gray-300'>
<blockquote className='my-4 border-gray-300 border-l-4 py-1 pl-4 font-sans text-gray-700 italic dark:border-gray-600 dark:text-gray-300'>
{children}
</blockquote>
),
Expand All @@ -167,7 +164,7 @@ export default function MarkdownRenderer({
// Tables
table: ({ children }: React.TableHTMLAttributes<HTMLTableElement>) => (
<div className='my-4 w-full overflow-x-auto'>
<table className='min-w-full table-auto border border-gray-300 font-geist-sans text-sm dark:border-gray-700'>
<table className='min-w-full table-auto border border-gray-300 font-sans text-sm dark:border-gray-700'>
{children}
</table>
</div>
Expand Down Expand Up @@ -211,7 +208,7 @@ export default function MarkdownRenderer({
const processedContent = content.trim()

return (
<div className='space-y-4 break-words font-geist-sans text-[#0D0D0D] text-base leading-relaxed dark:text-gray-100'>
<div className='space-y-4 break-words font-sans text-[#0D0D0D] text-base leading-relaxed dark:text-gray-100'>
<ReactMarkdown remarkPlugins={[remarkGfm]} components={customComponents}>
{processedContent}
</ReactMarkdown>
Expand Down
File renamed without changes.
Binary file added apps/sim/app/fonts/season/SeasonSans-Bold.woff
Binary file not shown.
Binary file added apps/sim/app/fonts/season/SeasonSans-Bold.woff2
Binary file not shown.
Binary file not shown.
Binary file added apps/sim/app/fonts/season/SeasonSans-Heavy.woff2
Binary file not shown.
Binary file added apps/sim/app/fonts/season/SeasonSans-Light.woff
Binary file not shown.
Binary file not shown.
Binary file added apps/sim/app/fonts/season/SeasonSans-Medium.woff
Binary file not shown.
Binary file added apps/sim/app/fonts/season/SeasonSans-Medium.woff2
Binary file not shown.
Binary file added apps/sim/app/fonts/season/SeasonSans-Regular.woff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
17 changes: 17 additions & 0 deletions apps/sim/app/fonts/season/season.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import localFont from 'next/font/local'

/**
* Season Sans variable font configuration
* Uses variable font file to support any weight from 300-800
*/
export const season = localFont({
src: [
// Variable font - supports all weights from 300 to 800
{ path: './SeasonSansUprightsVF.woff2', weight: '300 800', style: 'normal' },
],
display: 'swap',
preload: true,
variable: '--font-season',
fallback: ['system-ui', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', 'Noto Sans'],
adjustFontFallback: 'Arial',
})
Binary file added apps/sim/app/fonts/temp/SeasonSansBold.otf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansBold.ttf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansBold.woff2
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansBoldItalic.otf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansBoldItalic.ttf
Binary file not shown.
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansHeavy.otf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansHeavy.ttf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansHeavy.woff2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansLight.otf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansLight.ttf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansLight.woff2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansMedium.otf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansMedium.ttf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansMedium.woff2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansRegular.otf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansRegular.ttf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansRegular.woff2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansSemiBold.otf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansSemiBold.ttf
Binary file not shown.
Binary file added apps/sim/app/fonts/temp/SeasonSansSemiBold.woff2
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading