Skip to content
Release history

Changelog

Every version of Surf, from the first commit to the stable release.

15 releases
MIT license
100% TypeScript
Legendfeatfixperfbreak
v0.5.0Minor
27 Mar 2026

Unified versioning โ€” all 10 packages harmonized to 0.5.0. New Vue and Svelte adapters.

  • feat@surfjs/vue โ€” Vue 3 adapter with SurfProvider, useSurf, useSurfChannel, useSurfState composables
  • feat@surfjs/svelte โ€” Svelte adapter with stores, actions, and context-based session management
  • featAll 10 packages now share unified 0.5.0 version
  • fixSurfBadge redesigned with consistent Surf blue color scheme
v0.3.12Patch
27 Mar 2026

New @surfjs/web package for local browser execution, CLI and dependency fixes.

  • feat@surfjs/web โ€” local/browser execution via window.surf dispatcher
  • featwindow.surf global registered by @surfjs/react on mount
  • fix@surfjs/cli baseUrl read from manifest execute field
  • fixReplaced workspace:* references with explicit semver ranges
v0.3.9Patch
26 Mar 2026

Version alignment, SurfBadge component, surfMiddleware for Next.js discovery.

  • featSurfBadge component โ€” holographic seal badge for Surf-enabled sites
  • featsurfMiddleware for @surfjs/next โ€” well-known discovery endpoint
  • fixAll packages aligned to 0.3.9
v0.3.8Patch
25 Mar 2026

Bug fixes: Zod 4 type detection, TS strict mode, circular ref guard, auth error handling, ESM WebSocket compat.

  • fix@surfjs/zod Zod 4 type detection โ€” all types no longer fall back to string
  • fix@surfjs/zod defineZodCommand() TS strict mode compatibility
  • fix@surfjs/core circular references in responses no longer crash server
  • fix@surfjs/core authVerifier exceptions return structured error instead of HTML 500
  • fix@surfjs/core wsHandler() now works in ESM modules (dynamic import instead of require)
v0.3.7Patch
24 Mar 2026

Dependency alignment and minor fixes.

  • fixPackage dependency alignment across all @surfjs packages
v0.3.6Patch
23 Mar 2026

Comprehensive bug fix release โ€” 11 issues resolved across session handling, security, and client robustness.

  • fixSession expiry now returns undefined instead of throwing โ€” prevents 500 errors on expired sessions
  • fixWebSocket rate limiting โ€” IP extraction from upgrade headers enables per-client rate limiting
  • fixClient retry logic only retries transient errors (429, 502-504), not application errors
  • fixResponse cache upgraded from FIFO to LRU eviction
  • fixXSS fix in browserScript() โ€” manifest JSON now sanitized against script injection
  • fixESM compatibility โ€” client WS transport uses dynamic import() instead of require()
  • feathonoAppSync() โ€” synchronous Hono adapter for Cloudflare Workers
  • featregenerateManifest() on SurfInstance for dynamic command changes
  • featProactive session cleanup every 60s with dispose() method
v0.3.5Patch
23 Mar 2026

Bug fixes for auth bypass, Fastify compatibility, and CORS preflight handling.

  • fixauth: true (boolean) on commands now correctly enforces authentication
  • fixFastify adapter: session/start no longer fails โ€” client sends empty JSON body
  • fixCORS preflight (OPTIONS) handlers added to all adapters
v0.3.4Patch
22 Mar 2026

Initial state delivery, React package docs, and documentation improvements.

  • fixSurf Live: initial state now delivered on channel subscribe
  • feat@surfjs/react added to README ecosystem section
  • featExpanded documentation with guides and API reference
v0.3.3Patch
22 Mar 2026

Adapter fixes and client improvements.

  • fixHidden commands no longer leak in Fastify/Hono manifests
  • fixHono adapter ESM compatibility fixed
  • fixSurfClient.commands getter now works correctly
v0.3.0Minor
21 Mar 2026

Surf Live โ€” real-time state sync between AI agents and browser UIs via WebSocket.

  • featSurf Live: channel-based state sync with version deduplication
  • featWebSocket transport for full-duplex agent communication
  • feat@surfjs/react โ€” useSurfState() and useSurfEvent() hooks
  • featFastify adapter with full route registration
  • featHono adapter for edge runtimes (Cloudflare Workers, Deno Deploy)
  • feat@surfjs/next โ€” Next.js App Router catch-all handler
  • featSSE streaming for real-time command output
v0.2.0Minor
21 Mar 2026

Zod integration, CLI tooling, session management, and pipeline execution.

  • feat@surfjs/zod โ€” validate command params and returns with Zod schemas
  • feat@surfjs/cli โ€” test Surf-enabled sites from the terminal
  • featSession management โ€” stateful multi-step agent workflows
  • featPipeline execution โ€” batch multiple commands in a single request with $prev references
  • featRate limiting โ€” per-token, per-session, per-command limits
  • featAuth middleware โ€” Bearer token, API key, and custom auth per command
v0.1.4Minor
21 Mar 2026

DX improvements: command examples in manifest, namespace descriptions, better validation errors, standard error codes.

  • featCommand `examples` field โ€” show sample request/response pairs in the manifest for dramatically better agent accuracy
  • feat`about` field on config/manifest โ€” longer context for agents about what the site does
  • featNamespace `_description` โ€” describe what a command group does (e.g. what `cart.*` covers)
  • feat`NOT_FOUND` error code โ€” distinct from UNKNOWN_COMMAND for "valid command, missing resource"
  • featRate limit info exposed in manifest per command โ€” agents can plan batch operations
  • featCommand `tags` for categorization โ€” filter by intent (e.g. read-only, content, interactive)
  • fixValidation errors now include actual values โ€” `expected number, got string ("abc")` for agent self-correction
v0.1.2Patch
21 Mar 2026

Better documentation, improved CLI install guide, enhanced npm READMEs.

  • featCLI README: clearer global install vs npx instructions, PATH troubleshooting
  • featAll packages: npm READMEs with badges, ecosystem links, and intro copy
  • featWebsite: agent prompt copy section for coding agents
  • featWebsite: 4-package ecosystem grid with "when to use" guidance
  • featWebsite: "What agents are saying" testimonials section
  • featWebsite: Figma-like hero visualisation with switchable demo modes
  • fixGitHub README links to SPEC.md and CONTRIBUTING.md now resolve
v0.1.1Patch
21 Mar 2026

README improvements for npm pages with proper introductions and badges.

  • featAll npm packages now have proper intro sections explaining what they do
  • featAdded npm version, MIT license, and GitHub stars badges
  • featCross-references between packages for ecosystem navigation
v0.1.0Minor
20 Mar 2026

Initial public release. Ten packages, full protocol implementation, marketing website.

  • feat@surfjs/core โ€” server-side command registry, middleware, manifest generation
  • feat@surfjs/client โ€” agent-side SDK with discover, execute, pipeline, sessions
  • feat@surfjs/cli โ€” terminal tool: inspect, test, and ping Surf endpoints
  • feat@surfjs/devui โ€” interactive browser-based dev inspector
  • featProtocol spec v0.1.0 โ€” discovery, transports, auth, error codes
  • featFramework adapters: Express, Fastify, Hono, Next.js App Router
  • featPipeline execution โ€” chain commands in a single HTTP round-trip
  • featSSE streaming for long-running commands
  • featWebSocket transport for real-time bidirectional communication
  • featSession management with server-side state
  • featAuth: Bearer, API key, OAuth2 support with per-command auth levels
  • featRate limiting: global and per-command, by IP/session/auth/global
import { createSurf } from '@surfjs/core'

const surf = await createSurf({
  name: 'My Store',
  commands: {
    search: {
      description: 'Search products',
      params: { query: { type: 'string', required: true } },
      run: async ({ query }) => db.products.search(query),
    },
  },
})

app.use(surf.middleware())
// โ†’ /.well-known/surf.json + POST /surf/execute

Want to contribute or follow along? Surf is open source.