github kortix-ai/suna v0.8.27
v0.8.27 — Channels v2, unified plugin system, design system overhaul, and file preview refresh

7 hours ago

Channels v2, unified plugin system, design system overhaul, and file preview refresh

Massive release spanning 96 commits across 588 files. Replaces the old Chat SDK channels service with lightweight CLI-based Telegram and Slack integration (ktelegram, kslack, kchannel). Consolidates 15+ separate sandbox plugins into a single kortix-system entry point with orchestrator/worker agent architecture and project-scoped task management. Overhauls the entire design system to a Linear-inspired language (232 files, 10 button variants, 11 badge variants, unified border radius). Adds grid-style file previews with syntax-highlighted thumbnails, a public URL share system with token-based TTL, server-side default model preferences, mobile/tablet responsive layout, and legacy credit account migration. Removes the unused opencode-web service saving ~350MB RAM per sandbox.

Changes

  • feature: Channels v2 — complete rewrite replacing the 3,300-line Chat SDK service with CLI tools (ktelegram, kslack, kchannel, kpipedream, kconnectors), webhook bridges on :8099/:8098, SQLite-backed channel config, and per-channel agent/model/instructions settings with bridge commands (/status /model /agent /name /instructions /enable /disable)
  • feature: Unified kortix-system plugin — consolidate 15+ separate plugin directories into a single entry point with orchestrator (Kortix) + worker architecture, project-scoped agent_spawn/message/stop/status, declarative ensureSchema() for self-healing SQLite migrations, and filesystem-based handoffs between orchestrator and workers
  • feature: Public URL share system — token-based TTL share links for sandbox ports via GET /kortix/share/:port (default 1h, max 7d), auto-prune expired tokens, share proxy at /s/{token}/*, and Public Access Links UI on the API Keys page
  • feature: Server-side default model — preferences API (GET/PUT /kortix/preferences/model), onboarding persists model choice to server, useModelHydration hook loads server default on mount, resolution order: per-session > per-agent > global default
  • feature: Grid-style file preview overhaul — GridFileCard with FileThumbnail, shiki syntax highlighting for code/JSON thumbnails, SandboxImage component resolving sandbox paths to blob URLs, 30+ code extensions, custom error boundary pages (dashboard, home, global, not-found)
  • feature: Legacy user credit migration — lazy migration for kortix.credit_accounts, drizzle fallback for resetExpiringCredits and claim-computer, backward-compatible check against old public.credit_accounts for legacy tier detection
  • feature: Shorter onboarding flow targeting ~5 minutes for first-run setup
  • feature: GitHub-style project page with sandboxed file explorer, rootPath constraint, inline editing for project name/description, responsive auto-fill grid, and About sidebar
  • feature: Agent tool UI upgrade — notification cards for agent_completed/failed/stopped, click-to-open file preview on ReadTool, collapsible Result sections on agent_spawn with cleaned markdown output, monochrome Kortix/Vercel-style tool chips
  • feature: Channel session persistence — SQLite channel_sessions table survives master restarts, /sessions shows all real OpenCode sessions with titles, /session accepts partial ID matching, single-session continuity preserved per chat
  • feature: Inject migration notice into converted legacy chat sessions pointing users to /workspace/legacy/{threadId}/ for their files
  • improvement: Design system overhaul across 232 files — Button (10 variants × 8 sizes, rounded-full default), Badge (11 variants × 2 sizes), unified border radius (pill for interactive targets, 2xl for containers, xl for interiors), ~130 raw buttons → Button component, 164 transition-all → transition-colors, 2100+ line Brand page showcase
  • improvement: Mobile and tablet responsive layout overhaul — Sheet drawer sidebars on mobile, lower breakpoint from 1024px to 768px, 44px touch targets, compact tab bar with hidden close/pin on mobile, min(85vw, 400px) sidebar width
  • improvement: Unified page-level UI — new PageSearchBar component replacing 8 different inline implementations, standardized h-9 filter bars, all CTA buttons using consistent pill sizing, FilterBar/FilterBarItem components for tab-like bars
  • improvement: Channels page UX — compact horizontal cards grouped by platform, settings dialog with agent/model/instructions editing, agent/model selection in Telegram and Slack setup wizards, share-based public URLs replacing ngrok
  • improvement: Tab bar — browser-style close navigation, minimal design, compact tabs on mobile
  • improvement: Sub-session sidebar — inline +N badge and border-l indent replacing chevron tree arrows
  • improvement: Connectors page — FilterBar component replacing ad-hoc filter, kconnectors CLI replacing plugin with 339 → 100 line wrapper
  • improvement: Remove unused opencode-web service (port 3111) — saves ~350MB RAM per sandbox
  • improvement: Global error page with actual Kortix symbol SVG, support email, and clean navigation
  • improvement: Proper 404 handling for non-existent files with shared BreadcrumbSegments component
  • fix: Race condition where session history was missing during active streaming — SSE stub messages caused the REST fetch to be skipped, now always fetches on mount and merges safely
  • fix: Route sandbox tool traffic (web_search, image_search, scrape_webpage) through API proxy for local-docker provider — adds FIRECRAWL_API_URL to all providers and whitelists Firecrawl v2 routes in proxy-services
  • fix: Autowork keyword auto-activation removed — was falsely triggering on any message containing 'autowork', now only activates via /autowork command or KORTIX_AUTOWORK marker
  • fix: Enable tool-input-delta streaming in opencode binary — rewritten patch supports both old-style (v1.2.x) and new-style (v1.3.x) processor layouts with auto variable detection
  • fix: File upload bugs — SandboxImage rendering, dashboard race condition where sessionStorage was written after tab navigation, pending prompt reliability with 5-attempt retry loop
  • fix: Static file server /workspace prefix in all URL construction points (show-content-renderer, file-thumbnail, OcShowUserToolView) so HTML previews resolve correctly
  • fix: URL path detection no longer breaks clickable links — skip file paths inside URLs, don't recurse into URL components, fix hash navigation in static-web via injected base tag script
  • fix: CMD+K command palette centered in viewport and uses authenticatedFetch to fix 401 on service reload
  • fix: 72 inputs missing type='text' and 18 search inputs missing autoComplete='off' — prevents browser autofill in search/filter fields
  • fix: Radio group indicator dot centered using flexbox instead of broken absolute positioning
  • fix: CommandPopover modal by default so ModelSelector/AgentSelector work inside dialogs without losing focus
  • fix: Channels — filter bot's own file_shared events preventing Slack feedback loop, instruct agent to acknowledge immediately via CLI instead of silently blocking on sync agent_spawn
  • fix: Stabilize workspace auth-backed dashboard queries — gate background queries on settled auth state, sync cached Supabase token to prevent repeated 401s
  • fix: Thread-id-scoped previous chat migrations, drizzle fallback for monthly credit renewal, claim button visibility for old subscribed users, auto topup option on signup

How to Update

Pull the new Docker image and recreate your container:

docker pull kortix/computer:0.8.27

Or click Update in the Kortix sidebar.

Don't miss a new suna release

NewReleases is sending notifications on new releases.