Changelog
- df23403 fix #186
- 32969cd all: fix formatting
- 4844be2 webui: convert sketch-terminal to SketchTailwindElement inheritance
- 882b1d1 Waxing lyrically in a TODO about avoding the repo layer.
- 983b58a Re-work Sketch's Docker setup.
- 2ca1f10 dockerimg: add commonly requested packages to Dockerfile.base and enable :latest tagging
- 7b00c2c all: add minimal GoReleaser configuration for nightly builds
- 9f5cb2e all: fix formatting
- 5450584 webui: convert sketch diff components to inherit from SketchTailwindElement
- 9556fcf all: fix formatting
- 6534c7a sketch: add patch callback hook to warm codereview cache
- 238c18f claudetool: add callback hook system to patch tool
- 26b6f9b claudetool/codereview: add caching in findRelatedFiles
- cb55726 browse: refactor tool responses to match claudetool patterns
- b3aff88 webui: display file copy status (vs modify/rename) in diff view
- cdb08a5 webui: convert sketch-todo-panel to SketchTailwindElement with comprehensive test suite
- 0470a8a webui: convert sketch-tool-calls to inherit from SketchTailwindElement
- a9710d7 sketch: proxy to ports via p.localhost Host headers
- fd67b01 sketch-timeline-message: fix commit message txt size
- 0accea1 webui: improve diff view comment box width and height handling
- c514748 webui: convert SketchTimelineMessage to TailwindElement with TypeScript demo module
- 26bc659 webui: add ESLint and eslint-typescript
- a14b018 sketch: make /debug use relative paths
- 467c396 Fix findGitRoot
- f2814ea Let MCP servers use env variables; pass along model key for /attach as well
- d5f0a3e Ignore sketch-named containers that don't expose 80 in bin/sk-ls
- 13e3856 sketch: update local_ssh.md to replace SSHTheater with LocalSSHimmer
- 5978995 Add ValidateSessionID
- 4a055c5 sketch: fix MCP server connection error in -unsafe mode by setting SKETCH_PUB_KEY environment variable
- e59a2e1 webui: convert SketchTimeline to use TailwindElement and Tailwind CSS classes
- 4337aa7 add sketch-app-shell demo fixture
- 6fc754f Remove httprr recording.
- 4201bde Replace skaband tools with a sketch.dev MCP client
- cad67b0 sketch: add git username attribution for user messages in timeline
- cebb03c Add cmd/mcp-tool command for testing MCP servers
- 2973271 Pin 'npx prettier' version
- 4ce9dca Bump down to 8-core github runners
- 9aa141a skaband: remove all manual input switching functionality from sessions page
- b01b150 Fix nil pointer dereference #432
- b379592 webui: convert sketch-call-status and sketch-chat-input to SketchTailwindElement with comprehensive demo support
- 659b983 webui: convert SketchCallStatus to Tailwind CSS with comprehensive demo support
- 4957749 sketch-container-status: fix long branch names
- d5c849d webui: convert SketchViewModeSelect to use SketchTailwindElement with Tailwind CSS
- 4b64468 webui: add compactPadding parameter to reduce message padding
- 07b7400 fix: prevent nil pointer panic in codereview compareTestResults
- 9aa7828 sketch: add -ignoresig flag to ignore SIGINT and SIGTERM
- 261c911 rm shadowRoot references from SketchAppShellBase
- a70dcc4 fix visibility and css breakpoits on todo panel
- 618bfb2 webui: implement modular demo system with TypeScript and shared fixtures
- 8b2bc8e fix stop/end button css breakpoints
- 3999593 webui: generate tailwind.css in esbuild.go, output to dist/
- 0635c77 webui: fix monaco diff editor jumping behavior
- cff0ff8 sketch: add /proc filesystem fallback for port monitoring when ss command unavailable
- 7e36a04 webui: convert sketch-container-status to use tailwind
- cb48b67 sketch-app-shell: add tailwind css to demo html
- 7735844 skaband: create forked app shell for /newsessions with shared base
- bf66a2f webui: convert sketch-app-shell to use tailwind
- 194bfa8 sketch: add MCP support
- ba351be all: fix formatting
- 5a85ffe webui: fix IDLE/WORKING indicator to ignore system messages
- d158f9d Remove noisy log line
- 29d689f dockerimg: rename ssh_theater to local_sshimmer
- ebbdee4 webui: fix copy button functionality for new branch creation
- 8105fe6 Removing noisy log line.
- dd6352a fix docker inspect for podman docker alias
- 23772f4 support building docker image with gemini
- 9ee498c .clabot: add d2orbc
- afbade2 .clabot: add lackhove
- 364b35a webui: improve/simplify commit selector in Monaco diff view
- 61a0f67 webui: add Jump to Bottom button for mobile and desktop chat views
- 3cde282 webui: improve comment functionality for Monaco diff editor by using gutter
- d183284 fix messages-viewer
- cfd0fe6 cleanup: remove unused functions and fix tests
- c540e8e webui: add missing codicon font reference to mobile app shell
- 037f316 github workflows: add working-directory input parameter
- be0da44 Minor docs change.
- f0f9af0 webui: remove unused sketch-diff-file-picker component
- 882e7ea loop: preserve cumulative usage across conversation compaction
- 1f8fe9c webui: fix Monaco editor initialization parentNode errors in diff view
- ffa94c6 webui: add print styles for full chat printing
- 5477736 webui: implement explicit initial render detection using State.message_count
- 65ff909 webui: preserve chat scroll position when switching tabs
- b774437 webui: add comprehensive unit tests for sketch-timeline incremental rendering
- e68613d webui: implement viewport-based message rendering in sketch-timeline
- e0a9f72 test_recipes: add Docker and gvisor installation guide
- a7e7fb6 Sketch: test thyself
- e086093 Re-enable monaco horizontal scroll bars.
- 963ae4b scripts: disable man-db auto-update in apt optimization script
- 2e3337d loop: add docker to the system prompt
- 0258add dockerimg: add docker to the sketch image
- 57162e0 codereview: add 1-minute timeout parameter with context propagation
- 92dcbf5 cmd: add -ska-band-addr as alias for -skaband-addr flag
- d5c8d71 loop: avoid deadlock when pushing to a checked out branch
- 2343f8a dockerimg: fix Docker image reuse for Dockerfile.sketch
- f964b50 all: fix formatting
- 28e39ac loop: remove unused waitForEnd parameter and endWaitGroup functionality
- 6b8b766 webui: add mobile diff view with Monaco inline diffing
- 7c1a687 webui: implement Mermaid code splitting with lazy loading
- d4eea22 Fix vet_error baseline?
- fe51d1d Further loosen browser timeouts.
- 64f6046 loop: add diff stats from sketch-base to HEAD in /state endpoint
- db8caa0 dockerimg: remove noisy debug log for missing tunnel removal
- 95594bb bin/sk-ls: add number of messages
- 7380a36 s/title/slug in bin/sk-ls
- 021231a add /dist/messages-viewer.js bundle output
- 2f8464c all: fix formatting
- 29c481c browser tests: further increasing timeouts
- c0a4459 webui: implement Monaco code splitting with external bundle loading
- 38499cc webui: restructure diff header layout for improved usability
- 8a290e5 Run workflows on bigger machine.
- 851d2bf webui: add tool calls display to mobile chat timeline
- 6255411 all: fix formatting
- 5c6d829 webui: invert diff view layout and improve file selector behavior
- 4cd0129 webui: bring back the old per-file diff view as an option
- 216d2fc webui: clean up diff view interface by removing unused features
- d4be7a2 feat: add subtrace-token flag for development tracing
- dba26b5 webui: fix Monaco editor horizontal scrollbar from border width overflow
- ad15b6c all: fix formatting
- f00c7b1 webui: disable Monaco diff editor overview ruler
- e2954ce webui: fix diff view scrollbar visibility and resize handling
- dbca897 webui: improve diff view header layout and compactness
- 9abf803 all: fix formatting
- 26f3f34 webui: implement multi-file diff view with continuous scrolling
- 938d2dc webui: add URL parameters for diff view from/to commit selection
- 7351cd9 webui: fix Monaco fonts
- a35de5f Using GH actions provided Chrome for test speedup (#149)
- 46be096 ci: optimize APT package installation by skipping documentation
- c013134 Fail to speed up CI by not installing Chrome.
- c886ac5 loop: add special instruction field
- 1bd636c dockerimg: add seccomp filter to protect PID 1 from kill syscalls
- c7c2cc1 webui: fix repository name parsing for names containing dots
- 83c5be6 cmd/genwebuizip
- e8da7af fix: correct SSH connection string format for VS Code remote SSH
- d2ba10c Speed up formatter workflow.
- 1417b69 Fixing git checkout after retrying hooks.
- 8773e68 feat: add ssh-connection-string option for container SSH access
- 542bda3 browser: rename browser_read_image to read_image and auto-send screenshots to LLM
- 225e966 webui: remove deprecated @types/dompurify dependency
- 6d3de48 feat: add -link-to-github flag with Octocat icon for GitHub branch linking
- a1762b9 cmd/sketch: add -dump-dist internal flag to extract embedded filesystem
- 57d28bc webui: fix white text visibility in pre-compaction message view
- 8bc681b webui: fix mobile UI displaying subconversations
- 0d09284 webui: fix HTML escaping in markdown code blocks
- 4168263 webui: fix mobile error message styling to display in red
- 209ea91 test: fix unicode filename testdata causing Go module packaging issues
- 4c1cea8 Fix up sketch-wip handling when --commit is not specified.
- 0113be5 webui: add skaband navigation link with image to desktop and mobile
- 8ad17ba dockerimg: improve git config error messages for user guidance
- f1e517d claudetool/onstart: add comprehensive tests for non-ASCII filename handling
- de19aca analyze: use git ls-files -z
- c139982 github: prevent discord webhook from running on forks
- f825e69 all: fix formatting
- 7375708 webui: add image paste functionality to mobile chat input
- 5f77894 webui: add markdown rendering to mobile chat messages
- c3ecabb github: fix discord webhook payload truncation for long commit messages
- e08c7ff webui: add mobile interface with URL parameter switching
- ba15aeb Port forwarding: delete noisy log line
- 6c5beff Disable pager in post commit hook we install.
- 715b8d9 loop: always use branch sketch-wip in innie
- cecba06 browser: add SKETCH_BROWSER environment variable support
- c17ffe3 sketch: add session history tools using markdown table API
- 2a32f01 go.mod: bump to Go 1.24.4
- 3d040bd all: fix formatting
- 19969a9 all: s/title/slug/, adjust branch handling
- 44f847a webui: move cost display to popup info panel and hide when zero
- 0337623 termui: only display money when non-zero
- 068f4bb loop: remove pointless fmt.Sprintf
- d27921f dockerimg: prioritize Dockerfile.sketch over Dockerfile
- 5c654f6 all: fix formatting
- 664404e cmd/sketch: add -upstream flag for git branch management
- a9fd88f dockerimg: detect more dockerfiles
- 59bb27d llm: get costs from server
- 883e758 .clabot: add jonfriesen
- 2758545 Adding dependabot to have signed the CLA.
- 2037241 git_tools: improve commit range selection when fewer than 10 commits exist
- 95632c8 claudetool/codereview: fix runGenerate to filter pre-existing modified files
- a727f70 claudetool/codereview: stabilize related files list
- cf19190 claudetool/codereview: add go generate support
- 272c4a9 claudetool/codereview: nudge agent to call codereview after each round
- 008f958 .github: don't notify Discord from dev queue (sigh)
- 9236cce .github: download gofumpt instead of installing go
- 7e5fe3c all: fix formatting
- 3fef3ca build(deps): bump tar-fs from 3.0.8 to 3.0.9 in /webui
- be7802a loop: add configurable branch prefix option
- 2abd467 cmd/sketch: expand ~ in host path in mounts
- 322dae9 dear_llm: simplify, shorten
- 43448c6 loop: nudge agent towards less bouncy emoji babble
- 53ab245 webui: implement DOMPurify sanitization for markdown security
- 1609893 loop/webui: remove end session feedback survey functionality
- e6c294d budget: remove num-iterations and wall clock time limits
- 2f0eb69 Capture git origin before replacing it.
- 0df32aa loop: change state transition logging from INFO to DEBUG
- 222bf41 loop: replace sketch-host remote with origin remote in agent.Init()
- c898abf dockerimg: restrict git fetch to upload-pack service requests only
- a347b17 cmd/sketch: remove -initial-commit flag configuration option
- 7a85235 cmd/sketch: separate user-visible and internal flags using flagsets
- 59e1c16 loop: fix branch naming increment and add user notification for conflicts
- 138ec24 loop: automatic host/container ssh port tunneling
- 457dfd1 all: fix formatting
- bd52faf webui: add TODO item comment functionality similar to diff comments
- fea9e27 loop: restrict git hooks installation to inner instances only
- d1bd519 llm/oai: add (recent) deepseek-r1
- 5fe419f loop: enable parallel tool calling
- f75ba2c Stop installing hooks when running innie outside of a container.
- b8a8f35 loop: implement comprehensive conversation compaction system
- b573940 Add end session user feedback survey with skaband client coordination
- 364f741 loop: add periodic port monitoring to container processes
- 6cad861 webui: fix multiple choice to append instead of replace chat content
- 33032d3 cmd/sketch: fix budget propagation from host to container
- a3e28fb llm/conversation: fix duplicate tool results in insertMissingToolResults
- 15cc2e7 cmd/sketch: add -p flag as synonym for -prompt
- e84d5c7 loop/server: enable SSH reverse port forwarding
- 7871e2f all: fix formatting
- 855afff claudetool: don't attempt to install zero tools
- 67b4c77 claudetool: minor auto-install cleanup
- bf381a7 claudetool/browse: block port 80 access in browser tools
- b421a24 all: remove anthropic edit tool support
- 00bcaef webui: remove unused diff2html-based diff view
- c7cdd77 dockerimg: add emoji fonts to base image
- 495c1fa claudetool: add just-in-time tool installation for bash commands
- b6bc113 dockerimg: improve docs on how to publish a new image
- 71c73b5 all: fix formatting
- bcc1c41 git_tools: add rename detection and proper handling of moved files
- dee39e0 webui: fix chat timeline scrolling to reach exact bottom
- 2d08119 webui: add comprehensive browser tool cards and termui support
- 991164f webui: add specialized tool card for keyword_search tool
- 112b923 loop: add todo checklist
- d203b7d loop: encourage e2e testing
- b509a5d loop: ensure proper blank line before git commit trailers
- 7fbc8e4 browse: set default viewport to 1280x720 (16:9 widescreen)
- 57893c2 all: fix formatting
- 4d90f34 webui: add cmd+s keyboard shortcut to Monaco diff editor
- d9b1eb4 dear_llm.md: more hints about how to take screenshots
- 9500617 dockerimg: fix Chromium support with multi-stage Docker build
- e89b308 webui: comprehensive diff view improvements
- 7ad1c7a all: fix formatting
- 444f7f0 webui: expand Monaco comment selections to full lines for better context
- b34b8b3 webui: add line numbers to Monaco diff view comment auto-inserted text
- efa8f43 claudetool: strengthen the "no trailers" commit message guidance
- 90993a0 loop: install hooks relative to repo root, not working dir
- 7027307 webui: replace hardcoded Monaco language map with dynamic detection
- 837699b github: fix Discord notification to handle multiple commits in queue push
- c5848f3 loop: use repo root instead of working directory for git diff support
- 6e46360 github: add Discord notification to commit queue workflow
- 77bac8c webui: make diff loading error message more useful
- d85e97d webui: remove unused language property from Monaco editor
- a442ce3 dockerimg: change base container image to ubuntu 24.04 with go 1.24.3
- 574eda8 skabandclient: fix typos
- fa30677 .github/scripts: include commit body, cut pointless title, repo
- 217e987 Revert "webui: fix diff view failing when added file doesn't exist in working directory"
- f178755 github: fix Discord webhook notification User-Agent rejection
- a9948c0 Remove CI=1 requirement for discord_notify.
- a09d638 empty commit for testing
- 9e3c867 github: add Discord webhook notification for main branch commits
- 3d2eff0 sketch: avoid using tty when termui is false.
- ab6a811 all: update tests for claude 4
- 83b2d35 claudetool/codereview: expand on when to commit vs revert
- 3b733a5 loop: add some coding guidelines
- 586ecb1 claudetool: fix sha command formatting
- 0efb29d llm/ant: switch default to Claude 4 sonnet
- 78e7cf9 dear_llm.md: help prevent industrial accidents
- dbfd36a claudetool/bashkit: add validation to reject blind git add commands
- afeafea webui: change Monaco editor comment submit button from Submit to Add
- 4c7865b webui: fix diff view failing when added file doesn't exist in working directory
- ed17fdf loop: fix data race in Agent.CurrentStateName()
- 160fb06 claudetool: improve error message when all search terms match too much
- 0e8073a llm/ant: add Claude 4 sonnet/opus
- 3e6a4c4 dockerimg: mount Go caches for faster Docker race builds
- f4f929a dockerimg: fix VCS stamping error when building with race detector
- 3b5646f llm/ant: prevent httprr cache misses from being retried
- 12989b0 fix: read API key from environment in host mode when not using skaband
- 4acf006 dockerimg: Add race detector support to sketch binary build
- 9bca61e feat: enhance UI with commit pulsing animation and improved copy icon
- 75bd37d loop: auto-commit changes when saving in diff view
- 8c3b53a all: fix formatting
- 456d5f9 Remove "restart conversation" backend functionality
- 14fe75d webui: Remove restart conversation button and modal component
- f287299 Refactor agent git state into its own struct to tease apart its locking a bit.
- 716bfee Fix agent init of git repo from recent change.
- bc8c8dc sketch main: migrating things from /init into cmdline flags
- 1a648f3 llm/oai: add entry for Mistral Devstral model
- 3841199 llm/oai: retry more on failure
- 0f1a3f8 loop: strengthen guidance file wording a bit
- ac761c9 cmd/sketch: add mount flag for container volumes
- e10f0e6 claudetool: ignore trailers in git commit style analysis
- 5640431 loop: attempt some sycophancy reduction
- 6f041f5 claudetool/onstart: support .github/copilot-instructions.md as inject file
- 6e35332 all: remove testify
- 8d8b7ac Add buildinfo to /debug on Sketch http
- 35c72bc loop: send modified over-budget message
- 7ce7b02 claudetool: draw attention to commit message capitalization and punctuation
- 9daa518 experiment: remove llm_review experiment and associated code
- 55c87e3 webui: Fix cursor jumping during image uploads
- 9d7f0cc loop/server: fix race condition in SSE stream iterators
- da514fc Update dockerfile tests.
- 9df94b5 dockerimg: Extract base Dockerfile to separate file
- fbe6478 docker: Add lsof and ss to base docker image
- d6d12d1 Fail clearly when repo has no commits. (#109, #84)
- e9eaf6c Add skaband heartbeat support.
- cabfa55 Pass -verbose flag to innie to see logs.
- 397871d webui: Add End button to shutdown container
- a832220 loop: only do in-docker git init if connected to host git
- 87d29ef docker: use consistent ephemeral port for SSH
- 8c46362 all: fix formatting
- 5e35702 webui: Update status indicators
- 272a90e Add Monaco diff-view, the saga ...
- d3ac112 git_tools: Implement git diff and show API
- 8bdf627 Playwright: don't use junit inside Sketch.
- 0ead54d cmd/sketch: move NewSessionID function
- 5eccd68 cmd/sketch: invert bool to fix open flag default behavior
- 044a62e webui: Prevent sending messages while uploads are in progress
- 276f460 all: read agent.md files too
- a4500c9 llm/ant: retry more on failure
- 613c0f5 logging: make -verbose -termui=false log to stdout
- bd7b625 webui: reposition working/idle banner over lightbulb/wrench icons
- e3c2f22 skabandclient: fix handling of empty skaband-addr
- 956626d termui: add branch delete command
- f163e9e claudetool/codereview: stop checking string iteration patterns
- de5f744 claudetool: ignore some gopls (/vet) checks
- fbbf83b webui: tweak done tool card emojis
- a4092d2 loop: make about_sketch not experimental
- 74d690e claudetool: remove knowledge base, focus on about sketch
- 039fc34 loop/agent: add git commit hooks when running inside container
- 6ada85d ci: fix checkout reference in formatting workflow
- f7bebdd loop: attempt to stop sketch from bouncing around between branches
- 124c942 Improve Discord badge
- 339b56e webui: Implement drag-and-drop file upload in chat window
- 75f93a1 codereview: Filter out non-existent files from related files suggestions
- a10f151 webui: add copy button to markdown code blocks
- 6525d82 claudetool/kb: Prompt engineering to get sketch to more readily use kb
- 9007dd9 readme: Beautify GitHub README with improved formatting
- 3321939 Explaining relative paths to my dear llm.
- f84e88c webui: Add file paste upload support
- da79654 sketch: default -open=false when SSH_CONNECTION is set, improve help
- 7bb1bf0 claudetool/kb: add kb info about sharing sketches
- 0e5b8c6 experiment: make memory (dear_llm.md) always enabled
- 64f2aa8 loop: make multiplechoice tool calls end the turn
- b81d7d4 loop: strengthen guidance around suggested additions to dear_llm.md
- a5c971e loop: make multiplechoice tool just a var
- 7013e9e ssh: use local CA, add mutual container/host auth
- 0044241 Log host URL in verbose mode.
- 7c58b02 dockerimg: Use temp dir for temporary Dockerfile
- 2044abb cmd/sketch: increase default budget from to 0
- c0a1e53 claudetool: remove telemetry endpoint and related functions
- 436655e experiment: support SKETCH_EXPERIMENT to set default sketch experiments
- c488f22 loop: encourage completion of repetitive or tedious tasks
- 49edc92 agent: move "sketch-base" into git
- 52eeb15 .clabot: add maruel
- 7231839 webui: add agent state and status banner
- eab12de loop: Add StateTransitionIterator and stream state updates
- 8a1b89a claudetool/bash: include partial output in error message for timeouts
- ec398cb test: use 'any' instead of 'interface{}'
- 064f8ae claudetool/bash: include partial output when command times out
- 208938f bash: Shorten bash tool default timeout to 10s.
- 3e9d80c dockerimg: update SSHTheater to use Ed25519 keys
- 84a8ae6 tool cards: add TODO
- 18e3368 browser: Add console log capture tools
- 34bb09a webui: fix client-side nav back button
- 848572d webui: Add documentation explaining sketch-tool-card component architecture
- c31e296 dockerimg: print LLM output in verbose mode
- 7fb3499 all: fix formatting
- 17b1094 loop: tell the agent that it is powering sketch
- 44d1f1a loop: instruction the agent not to make new branches
- 385da54 dear_llm: point out the meta
- 31785ae loop: add knowledge_base tool for on-demand information
- 5c7f957 all: fix formatting
- 8dff12f loop: emphasize directory guidance
- 6d4c7ea dear_llm: update
- 98b64d1 webui: switch to chat view when user sends a message
- 39ed5a5 readme: take a quick editing pass
- 53b02a6 dockerimg: more exacting prompt for building a dockerfile
- ff2df6a dockerimg: improve errors if dockerfile fails to build
- 39bcf01 Added FAQ about no space left.
- e577ef7 all: fix formatting
- 7a11362 loop: on git fetch or checkout failure, retry without hooks
- a9a786b dockerimg: Fix development version detection when run with -C flag
- e31d2a9 webui: Fix message bubbles and tool calls overflow issues in timeline
- 04e778c webui: name:sketch-webui, export web-components
- 0522484 browser: add window resize tool with chromedp
- 80b488d Browser tools: initialize lazily and add timeouts.
- 6458e7c README: Add instructions about connecting to Sketch container
- 5ebdbb8 Adding User Guide to README.md
- 72252cb llm and everything: Update ToolResult to use []Content instead of string for multimodal support
- 7ce5fb7 Revert "llm: add service.ModelName"
- 022b363 llm: add service.ModelName
- a997be6 claudetool/onstart: add codebase analysis tool and basic memory support
- dce8d84 claudetool: remove mention of go doc
- f59df72 claudetool: don't list out available binaries in bash tool
- 113e205 git: add retry logic for checked out branch conflicts
- e97a8e5 git: Make "git fetch sketch-host" update origin refs as well.
- 51e8e2b dockerimg: Run git fetch when .git/info/refs is requested
- d03318d sketch: Introduce versions for sketch state
- 8236cbc llm/oai: add several more models
- d74572d docs: add DEAR_LLM.md with repository context for AI agents
- 078e85a ssh_theater: only edit conf if host doesn't resolve
- 15c9528 ssh_theater: ask the user before editing config
- 220a36d experiment: remove not_done experiment
- 9320265 loop: update git commit instruction to use --trailer, add Change-ID
- 4d54493 all: support hiding subconvo output
- a4ad8af webui: Streamline playwright reporter config
- 3b279a5 README.md: De-emphasize Go a bit.
- b9e62fd loop: remove some Go-specific language from system prompt
- b529e73 loop: disable multiple choice tool in oneshot mode
- d2f54c2 loop: improve update_tests.sh reliability
- f392251 go.mod: bump to Go 1.24.3
- fa66703 llm/oai: add Mistral Medium 3 to oai models
- 6aaf6af experiment: make precommit always on
- 6ab6fce .dockerignore: add
- 1ed1cc4 codereview: only run go mod tidy when go.mod has changed
- 85de37e loop: encourage smaller diffs
- a2a3150 loop: split title tool into title and precommit tools
- c3c2023 webui, termui: use 〰️ for tool call failures
- 924a770 claudetool: improve commit message guidance in precommit tool
- 4936de3 all: make update_tests.sh scripts location-independent
- 593ca64 claudetool: disable prompt caching for one-shot subconvos
- a23587b cmd/sketch: make browser flag default behavior conditional on one-shot mode
- 07e98cc docs: Update CONTRIBUTING and README for WebUI development server setup and usage
- 7ac5ed0 webui: Roll back broken changes (ef58e06 and 47fbca6)
- 47fbca6 all: fix formatting
- ef58e06 webui: Refactor tool calls
- 5e8aead webui: Simplify tool call rendering code
- c575fd7 webui: Fix demo page
- b6d6d38 claudetool: Add SKETCH=1 to bash tool environment
- 31f1524 dockerimg: always show build output
- 4962f15 all: fix formatting
- 8b43ffb Install chromium for tests
- 33d282f Add browse tool support.
- a9d87aa llm/gem: remove unused field
- df6d7b4 README: skip discord application process
- 37aaf08 Fix terminal not loading when first tabbed to.
- e01ea0e experiment: fix more dumb bugs
- 085f74c experiment: fix Flag.Set
- b1cca6f dockerimg: pass -x flag to inner sketch to enable experimental features
- 29fea84 llm/ant: replace fmt.Printf with slog in retry logic
- 5cca56f loop: migrate system prompt to Go templates
- 4fcde4a loop: clarify tool-ends-turn logic
- 36a5cc1 loop: don't rename title tool, even with precommit experiment
- d42577f experiment: actually enable experiments when using -all
- 8fdf753 termui: remove git ref beautification for cherry-pick commands
- c72ceb2 claudetool: add go mod tidy check to codereview
- bfebfd1 go.mod: tidy
- a70246a claudetool/codereview: add readme.md
- f4047bb claudetool/codereview: new package extracted from claudetool
- e750ec9 webui: change tool call failure icon to be less alarming
- 3659d87 all: more gemini key plumbing
- 021557a Allow multiplechoice tool to end the model turn
- 5a7b369 cmd/sketch, dockerimg: more gemini key plumbing
- f53875f remove errant console log
- 923a3ba .github/workflows: run tests with GOEXPERIMENT=synctest
- 4d4e807 loop: use stringer for State.String, use String in slogs
- 6f446fa experiment: don't panic when Enabled called with unknown name
- 3871a09 Update agent_user_cancel_test.go to use new package structure
- 961cc9e skabandclient: send model name on start of session
- c5b8ed4 Add -termui=false flag to prevent panic in non-TTY environments
- d7970e6 claudetool: change title tool to precommit, add commit style guidance
- e2518e5 claudetool: add experimental LLM reviewer stage
- 503b5e3 loop: add not_done experiment
- d7e5638 loop: pull done tool description out into a constant
- c6a2c24 loop: clean up whitespace
- b478214 experiment: add simple way to toggle experimental features
- f396a00 Explaining how to use -docker-args to facilitate some additional sketch inception.
- 1dc2137 Add docker-args flag to pass arguments to docker create command
- 8fd5104 dockerimg: do not include tmp-sketch-dockerfile in image
- a4b19f8 termui: always call ui.updatePrompt
- 9957046 dockerimg: remove configurability from open browser request
- 50608b1 dockerimg: fix typo in SSHTheater name
- b7a0663 dockerimg: update tests for last commit
- b2064de dockerimg: more Dockerfile robustness
- 66cf74e dockerimg: do not allocate a TTY in one-shot mode
- 93fec60 termui: export TermUI
- b5f6a00 dockerimg: use --progress=quiet to always show docker build failure
- 5a23406 ll/gem: implement Gemini Pro 2.5 support
- 3b4d2b8 gemini: basic gemini API wrapper
- bdfb126 sshserver: s/log/slog
- cf291fa sshserver: add scp support
- d0a3cd6 browser: switch printf to slog
- 4bdd9aa dockerimg: simplify pushdockerimg by requiring it run on linux
- c7e7796 dockerimg: remove tmp-sketch-binary-linux
- ca53558 dockerimg: set http.postBuffer for git inside container
- 99231ba dockerimg: be more robust to http connection errors
- ab50e9b cmd/sketch: remove colima check
- 16fa8b4 Overhaul UI with chat-like interface
- 66439b0 llm/oai: remove unused parameter
- 11c97f2 browser: don't open empty URLs
- e114af5 Minor update to CONTRIBUTING.md
- 2d4c48f Remove Charts tab and related Vega components from Sketch
- 88a6efc ant: delete
- 485afc6 tool_use: add multiplechoice support to Agent
- 6234a8d Sketch inception wiring: make it easier to run unsafe sketch inside Sketch
- 25f6ff1 Implement Server-Sent Events (SSE) for Real-time Agent Communication
- d01d134 Default to CI=1 for "npm test"
- 3e21308 llm/oai: add together.ai Qwen3 support
- 4f84ab7 all: support openai-compatible models
- 44f9b4c all: fix formatting
- 1c81423 webui: add average dollars per hour to Dollar Usage Over Time chart
- dc372f3 loop: the end of a subconvo is not an End of Turn
- 6c2bb84 webui: add Escape key handler to dismiss empty line comments
- 21cbc45 ant: add missing sleep during backoff (oops!)
- d72563a cmd/main: don't send slogs to stdout, ever
- c8e4ab0 Restructure main.go to separate host and container code
- fa67fe5 dockerimg: remove buildx dependencies from Dockerfile
- a352ca6 .clabot: remove recheck comment, doesn't seem to work
- 4e14f6c .clabot: fix json, explicit recheck comment
- b5cb954 readme: add pkg.go.dev badge (#46)
- 6e7fe9b .clabot: add crawshaw
- 2e3290c .clabot: add
- 78f6c40 termui: add remote to fetch
- 2fde465 claudetool: redact initial commit hash in test fixtures
- 2bdc953 termui: add git fetch --prune before calculating cherry-pick refs
- 495cb96 sketch-app-shell: fetch "cancel" not "/cancel"
- 4d5e997 all: make tests accept OUTER_SKETCH_ANTHROPIC_API_KEY
- 2772f63 dockerimg: add support for passing env vars to Docker via git config
- e2c7f72 webui: make input box focus on page load
- a3dcd86 ant: improve encapsulation
- 8da3d45 readme: use non-expiring discord invite
- 9373c07 Update tests for agent's new iterator implementation
- b7c5875 agent plumbing: convert outbox to subscribers and an iterator
- 5228b58 dockerimg: add SKETCH=1 to sketch container
- a1e0e49 loop/agent.go: don't panic on nil toolResp
- 76ccdfd Add git fetch prune to improve Docker container initialization
- 453a62f termui: fix output for keyword search terms
- b1e8157 termui: use explicit coordination for clean shutdown
- a687c1b termui: check sketch-host remote when formatting cherry-pick command
- 6866c79 webui: Finish removing aria snapshot testing
- c76a392 dockerimg: restore sketch_context docker label
- bc4947e cmd/go2ts: fix typo
- d9d4581 webui: add current Agent state to call-status tooltip
- 48c84c9 .github/workflows: remove vibe-coded nonsense
- 936ba62 .github/workflows: thread formatted HEAD commit to test sub-actions
- 88c61bd .github/workflows: fail if go generate creates a diff
- 3e2111b all: support popping a browser from termui
- e54b00a browser: simplify API
- 93bb66a .github: don't run workflows on queue-dev-* either
- 40ffb84 .github: let my autoformatter muck with the quotes
- 4c1015a .github: delete extraneous whitespace
- d33ee13 webui: tweak welcome screen wording
- 78707d6 browser: small new package
- 96b60dd Add StateMachine tracking to Agent control flow
- bce3a13 Modernize and streamline Sketch top bar UI
- 2a5bd6d dockerimg: switch to a debian base image
- 3201133 Amend notification logic to only show for end-of-turn messages without parent_conversation_id
- efda396 .github/workflows: add a dev queue for GitHub Actions hacking
- db5e9b4 Implement notifications feature with toggle and focus handling
- 2c4db09 Restart conversation support.
- b74b526 .github/workflows: further parameterize
- 1048973 .github/workflows: delete unnecessary 'git config' calls
- 9f4b808 agent.go: don't panic on nil initialResp
- bc6b629 Add browser notifications for agent messages with EndOfTurn=true
- f830c9d all: fix formatting
- 8506894 termui: add a line to the help menu telling the user to chat
- e81233f Add gentle pulsing animation to activity notification icons
- 250348e all: mild prompt engineering
- eb5166a Shrink title text to reduce truncation in header
- 3cae7d9 cmd/sketch: make -open default to true
- e634d26 webui: add go2ts go:generate line
- 42f7a7c loop: enforce rather than fix branch formatting
- 23b6a2d termui: remove path from prompt
- 2978ab2 termui: fix up emoji spacing a little
- c2d2610 termui: turn the user from a faceless gray menace into a superhero
- 81eacc4 all: fix formatting
- 3a89ba8 build(deps-dev): bump vite from 6.3.2 to 6.3.4 in /webui
- d01f67c ci: amend single commits when auto-formatting queue-main branches
- 7910eef ci: amend single commits when auto-formatting queue-main branches
- d20ded5 webui: Don't auto-expand last message
- abc093c Left-align 'How to use Sketch' paragraphs
- cf57096 all: fix formatting
- 47b71c9 Display last commit in UI top bar
- edc88dc Rename cancelInnerLoop to cancelTurn to match refactored naming
- 885a16a Refactor loop/agent.go to reduce complexity
- 0d95d3a Improve SSH config file safety in dockerimg/ssh_theater.go
- 9c0fc89 fmt
- c796e7f ssh_theater: fix tests
- 78520f5 loop: update test fixture
- 3b0795b ssh_theater: auto-add Include to ~/.ssh/config
- 74b0121 ssh_theather: use ~/.config/sketch not ~/.sketch
- fff269b Update title tool to reject branch names that already exist
- 47b1936 Display branch name alongside title in termui and webui
- 0137a7f Improve git cherry-pick display with abbreviated SHA/branch references
- d499fd6 Add permission callback to Bash tool to enforce title setting before git commits
- dae1907 Add WillRunGitCommit function to bashkit
- a9b3822 Add branch_name parameter to title tool
- 1ae976b loop: fiddle with titleToBranch
- e2d24ab dockerimg: add 'apk add grep'
- dbe0230 loop: extract system prompt into a separate file
- 2b2090e claudetool: add missing json schema field
- c72fff5 Add SSH connection information to web UI
- d3906e2 Add @click handler to stopButton in sketch-app-shell.ts
- 7b60449 bin/sk-ls.sh: Show currently running sketches in Docker and what they're up to
- dc507a3 all: fix formatting
- 5cf4926 Add welcome box with usage instructions to empty chat window
- 570c3f8 all: fix formatting
- c2b6bdf Improve status bar icons for LLM and tool calls
- 1b47aa2 Add initial-commit CLI flag for specifying git reference
- 2dc86b9 Update codereview tool UI to show different icons based on result content
- 50a1d62 loop: don't panic when LLM API call fails
- 5fabc74 webui: make tool call failures less "error"-y
- d4b1cc7 Sort git rev-list by time and limit results for related files
- 15272c1 claudetool: add two more "related files" todos
- 9c07e1d loop: prevent panic on double Agent.Init
- ffecb1e claudetool: add "related files" detection to codereview tool
- ffb58a3 webui: show more summary-text in tool cards
- fa40c41 webui: +sketch-tool-card-multiple-choice
- ea3fc20 dockerimg: fix vscode:// links
- 015b882 webui: fix 'build' and 'dev' npm scripts
- 22bd8eb sshserver: fix env for ssh pty sessions
- 0dcebe1 Add support for passing prompt without -one-shot
- fefde57 webui: Tweak prettier setup
- d6d2c69 webui: Add missing step to make install
- e66db3e Redesign Sketch top bar with tab-based interface
- 99a9a02 Implement tracking of outstanding LLM and Tool calls
- f98d730 webui: supress mermaid error msgs
- dded2d6 all: fix formatting
- 8d93e36 webui: Add Mermaid diagram support to markdown
- d8adbba all: fix formatting
- 5bff650 fix oddball formatter complaints
- 1112949 dockerimg: use a default image from a public registry
- 5fdd024 Sketch "inception" support.
- b74c4f6 make -one-shot command line work with both -unsafe and regular
- 833a0f8 claudetool: improve codereview
- 0cbd976 rename a file that was driving me crazy
- 33f7172 all: fix formatting
- 2cba695 Add unit tests for dockerimg/sshtheater.go with refactoring for testability
- 6f2bf8a sketch: fix double space in SSH warning
- 5c70bfe all: fix formatting
- eda2a8c Simplify and fix GitHub workflow push to main
- 5b8ab1f webui: intentionally break formatting
- c3391a9 Fix autoformatting push to main in GitHub workflow
- a0801ad Add comma formatting to input and output token displays
- df2d3dc dockerimg: add extra space for terminals that render emojis wide
- 6e42f32 .github/workflows: let prettier format yml files
- 15a4db7 .github/workflows: improve autoformatter commit message
- ae77226 Try again to fix GitHub Actions permission issues
- 4de8a91 webui: Add aria snapshot testing
- ddc8142 Fix GitHub Actions permissions for pushing to main
- e7c9a44 webui: Add test for sketch-app-shell component
- 46fff97 webui: More minor css tweaks
- bd6c168 autofix formatting during queue-main pushes
- 8b00db1 Add run-formatters.sh script and update GitHub workflow
- 9b999b0 Update window title to show 'sk: <title>' and add disconnection indicator
- 176a510 Add force-rebuild flag to allow user to rebuild docker container explicitly.
- 6bc2eb2 Fix: Prevent diff2html anchor links from resetting view
- 3588997 all: only display total input tokens
- f5e28f6 sshtheater: check for Include line in ~/.ssh/config
- faa39be cmd/sketch: only show structured logs printf if --unsafe
- 01ed5be sshserver: enable ssh port forwarding
- 7d5a630 SSHTheater: fix known_hosts update issue
- 4854c65 dockerimg: +SSHTheater, auto-configures local ssh
- 53786ef dockerimg: use emoji in container debug info
- f91095a termui: remove Initial Commit startup message
- b1fe3c8 readme.md: remove pending invite step
- 094e4d2 cmd/sketch, dockerimg: remove unhelpful initial debug messages
- 1d06132 sshserver: add direct-tcpip channel, allow non-pty
- 6a50b18 ant: fix subconvo url
- e923bb3 webui: Add empty conversation demo
- 4097e53 webui: Cleanup css and fix layout
- 563d6b3 webui: Tweak mock
- c6aabfa webui: Remove some debug logging
- ac96b09 webui: Don't allow launch to accidentally use wrong server
- 26daff7 webui: Fix demo css
- 7b43662 Only print skaband connection messages when verbose flag is set
- 75ec6bb loop: add email address to Co-Authored-By trailer
- 08951fb CONTRIBUTING.md: point folks towards update_tests.sh
- 56ac605 claudetool: add some cleanup TODOs to bash background execution
- 7660e4e dockerimg: use more modern APIs
- fe3e9f7 fix possible nil dereference
- b9ac849 Fix css mime type
- 8cac59a feat: integrate Mock Service Worker (MSW) for API mocking and testing
- bbca240 Move DEVELOPMENT.md => CONTRIBUTING.md
- 6ed6adb Fix -open to point to skaband addr when configured for the container case
- 5d6af87 Only print Dockerfile in verbose mode
- 2032b1c Move webui from /loop/webui to /webui
- 4f50a68 Optimize Playwright installation to only use Chromium
- 6c1f34f Enhance GitHub workflow to use gotestsum for better test visualization
- b4c7e1b Removing LLM-generated skipped test
- d43e572 Adding DEVELOPMENT.md with some tips
- b60f0f2 Add background execution capability to bash tool
- cc3ba22 sketch: Add python3 to our container image
- 18532b2 Rename Host/Runtime hostname fields to Outside/Inside pattern
- d013131 Use bufio.Scanner instead of strings.Split for line iteration
- e4fa0e3 sketch: print Dockerfile contents
- ae3480f allow random (ephemeral) host ports for ssh server
- 5544d14 dockerimg: clean up linux binary
- 73db605 sketch: another attempt at chat/diff fixes.
- 8d50d7b gofumpt.
- 72682df Prettier.
- 4de80d2 Add formatting workflow with prettier and gofumpt v0.8.0
- 9a66cad sketch: simplify sketch-chat-input and diff comment handling
- 10a7ac1 Fix chat input resize test by waiting for animation frame
- af2d7e3 sketch: diff commenting: avoid re-sending old messages
- baa2b59 sketch: initial container ssh support (#15)
- 97188fc style: Don't stretch Send button on input grow
- 7be879f Fix WebUI tests for sketch-timeline-message component
- e2a8c2f webui: Improve dx
- d140295 sketch: Propagate host vs. runtime OS/WorkingDir/Hostname
- 37dc4cf Enhance commit display in UI
- a4674b1 Revert "Fix Docker container initialization with branchless git hooks"
- ecba7c7 Fix Docker container initialization with branchless git hooks
- a54c6a3 Update bash command results to use dark-on-light-grey theme
- 9f6a998 dockerimg: clean up password matching code
- 5cef9db README.md: say linux is supported
- 000c1f7 sketch: fix utf8 issues in terminal
- a0f68fa webui: save test output on ci runs
- d0ac1ea sketch: "git add remote sketch-host"
- 5e227dd sketch: Linux support
- e8d6b80 Add GitHub workflow to run tests for changes under loop/webui/... (#7)
- 5164eee webui: run format, ignore src/types.ts
- 2deac84 webui: add 'open' status, elapsed time to tool-cards
- 07b3e39 Make textarea in sketch-chat-input user-resizable
- 8a89e1c sketch: support Linux with -unsafe
- 176de79 sketch: compress JS and CSS
- d9f1337 webui: auto-generate types.ts from go structs
- db8c5ab README.md: add missing comma
- fae1757 dockerimg: unset GOBIN when installing
- 64d3299 README.md: some basic info
- 2c5bba4 webui: mv scroll behavior to sketch-timeline
- 43664f6 termui: print newline before branch name
- b29f891 webui: Migrate from @open-wc/testing to Playwright
- ec3ad1a webui: split sketch-tool-card into per-tool cards
- 71941bd loop/webui: add prettier
- 9abbf92 .github/workflows: use ubuntu-latest (#2)
- 86b5686 loop/webui: swtich to web components impl (#1)
- f5bb3d3 dockerimg: make sure webui build exists before copying it
- 8a617cb dockerimg: reuse a cached gopath for cross compiling
- 8bff16a webui, dockerimg: store the webui assets in a zip and cp them into the container
- be10fa9 dockerimg: mkdir .cache in the base template and rebuild when the template changes
- b9eaef5 dockerimg: set GOTOOLCHAIN=auto for cross compiling
- 993a3fc dokerimg: clean up temp dir
- 69c6731 dockerimg: fix cross compile command
- 2e463fb Initial commit