James Long

James Long · Launch Video Breakdown: Hook, Pacing & Motion Design

more and more work is moving into coding agents, I don't live in my editor anymore but you gotta keep an eye on these little goblins, they write bad code. so we built a diff viewer in opencode! ava…

Developer ToolsLaunchMay 22, 2026@jlongster
0:00 · The Hook · AI Agent Code Review
0:00 / 0:00

Scene-by-scene timeline & spoken transcript

  1. The Hook

    AI Agent Code Review

    “more and more work is moving into coding agents, I don't live in my editor anymore but you gotta keep an eye on these little goblins, they write bad code.”

    On screen
    Thought: Finalizing the response. 1.00 Implemented smarter GPT-5 sorting. Changed: - Provider.sort now ranks stronger/newer GPT-5 models ahead of mini, nan - Added test coverage to ensure gpt-5.5 sorts above gpt-5-mini, and mini Verified: - bun test test/provider/provider.test.ts - bun typecheck Build · GPT-5.5 · 2m 36s /diff Open diff viewer /diff Build · GPT-5.5 OpenAI · medium
    Camera
    Static shot of a terminal interface, then a slight zoom into the command line.
    Motion
    Text typing animation, command line interaction simulation, subtle UI element highlighting.
  2. Product Reveal

    Introducing OpenCode Diff Viewer

    “so we built a diff viewer in opencode! ava…”

    On screen
    Diff working tree packages/opencode src agent.ts agent.ts cli/cmd debug agent.ts tui config keybind.ts feature-plugins diff-viewer-f. M diff-viewer-h. M diff-viewer-l. M diff-viewer-m. M diff-viewer-r. M diff-viewer-tr. M diff-viewer-util.ts diff-viewer.ts diff-viewer.test.tsa X installation index.ts project vcs.ts provider provider.ts pty.ts public.ts session prompt.ts skill.ts test cli/tui diff-viewer-file-tr. M diff-viewer-file-tr. M diff-viewer-test.tsx A 27 files OC:diff readonly list: O => Effect.Effect<Info> readonly defaultInfo: O => Effect.Effect<Info> readonly defaultAgent: O => Effect.Effect<string> readonly generate: (input: { modelID: ProviderID; modelID: ModelID }) => Effect.Effect<string> }) => Effect.Effect<string> identifier: string whenToUse: string systemPrompt: string } Provider ModelNotFound Error Provider DefaultModel Error type State = Omit<Interface, "generate"> } export class Service extends Context.Service<Interface> { ()"opencode/Agent") {} } export const useService = useService(Service) export const Layer = Layer.effect({ Service, Effect.gen(function* () { }) }) packages/opencode/src/cli/cmd/debug/agent.ts import { EOL } from "os" import { Effect } from "@effect/effect" import { Agent } from "../agent/agent" import { Provider } from "@/provider/provider" import { Session } from "@/session/session" import { MessageV2 } from "@/session/message-v2" import { MessageID, PortID } from "@/project/project" import { ToolRegistry } from "@/tool/registry" import { Permission } from "../../../../permission" 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 1 2 3 4 5 6 7 8 9 10 readonly list: O => Effect.Effect<Info> readonly defaultInfo: O => Effect.Effect<Info> readonly defaultAgent: O => Effect.Effect<string> readonly generate: (input: { modelID: ProviderID; modelID: ModelID }) => Effect.Effect<string> }) => Effect.Effect<string> identifier: string whenToUse: string systemPrompt: string } Provider DefaultModel Error type State = Omit<Interface, "generate"> } export class Service extends Context.Service<Interface> { ()"opencode/Agent") {} } export const useService = useService(Service) export const Layer = Layer.effect({ Service, Effect.gen(function* () { }) }) +1 -1 packages/opencode/src/cli/cmd/debug/agent.ts import { EOL } from "os" import { Cause, Effect } from "@effect/effect" import { Agent } from "../agent/agent" import { Provider } from "@/provider/provider" import { Session } from "@/session/session" import { MessageV2 } from "@/session/message-v2" import { MessageID, PortID } from "@/project/project" import { ToolRegistry } from "@/tool/registry" import { Permission } from "../../../../permission" +30 -3 tab focus File tree n next file p previous file d switch source m mark reviewed ? all
    Camera
    Static wide shot of the diff viewer, with the camera panning and zooming to highlight different code sections.
    Motion
    Smooth camera pan and zoom, code highlighting, line-by-line diff animation, file tree navigation.
  3. Call to Action

    OpenCode Logo Reveal

    “(No spoken dialogue — The track features a classic hip-hop beat with prominent 808s and a driving sub-bass. The instrumentation includes a synth melody that provides a dark, atmospheric feel. The track maintains a consistent, head-nodding groove throughout.)”

    On screen
    opencode
    Camera
    Static shot of the 'opencode' logo centered on a black background.
    Motion
    Text reveal with a subtle metallic gradient and pixelated edge effect.

Related Developer Tools Product Launches

Explore all Developer Tools launches →
SpaceXAI
Hook 8.9204.0M
SpaceXAIDeveloper Tools

xAI opens voice cloning on its API: build a custom voice in about two minutes or pick from 80+ voices in 28 languages.

@SpaceXAI
Claude
Hook 9.178.3M
ClaudeDeveloper Tools

Claude can now operate your Mac, opening apps, browsing and filling spreadsheets, as a research preview in Cowork and Claude Code.

@claudeai
xAI
Hook 8.873.2M
xAIDeveloper Tools

Agentic CLI for coding, building apps, and automating workflows.

@SpaceXAI