clacky-ai--openclacky
138 KiB
138 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
[1.3.11] - 2026-07-12
Added
- Delete button for unpublished local extensions in ext-studio
- Extension install count shown in marketplace
- Update badge and installed version shown in marketplace list
Improved
- Extension version history styled with markdown rendering
Fixed
- Preserve user data on extension update (overwrite instead of replace)
- Extension install timeout increased to 300s (was too short for large extensions)
- Installed tab search and loading state in extension store
- Prevent license loss from non-atomic brand.yml writes
- Extension detail page content no longer cut off or unscrollable
- Extension author label position corrected to end of title row
[1.3.10] - 2026-07-09
Added
- Extension author shown inline in title row on extension cards
- Version input in publish modal — writes back to
ext.yml, shows friendly Chinese error on version conflict - Local extensions now included in the installed extensions list
Improved
- Published extensions list in publish panel — better style and UX
- Publishing state, success label, and done button added to publish modal flow
- OSS CDN prioritized for latest version check (faster upgrade detection)
Fixed
- Agent card description clamped to 2 lines; author hidden for built-in agents
- New-session scrollbar centering — use padding calc instead of max-width
file://links with spaces and non-ASCII paths now render correctly (#350)- Invalid API key error message improved to cover expired key case
- Local extension card in ext-studio now correctly appends action buttons
- Navigate back to list when extension detail fails to load
- Page reloads correctly after install/enable/disable/uninstall extension
- Enriched installed extensions with market data; shows unlisted badge
[1.3.9] - 2026-07-08
Added
- Installed filter tab in extension marketplace toolbar — quickly view only installed extensions
- Extension detail page UI improvements with better uninstall behavior
send_datahelper for API extensions to return binary file responses
Improved
- Extension marketplace upload flow reworked —
originfield removed, cleaner package structure - Publish modal redesigned with meta block, improved layout, size, and animation
- Debug panel verify result now shown inline in action bar with auto-hide and friendly hint
Fixed
- Zero-byte zip download when exporting extensions — binary responses now handled correctly
- Filter tab bottom padding adjusted for better underline spacing
- New-session advanced panel margin-top adjusted
- Debug panel detail no longer shows origin field and this project adheres to Semantic Versioning.
[1.3.8] - 2026-07-07
Added
- Shell hook
type:rewriteprotocol withupdatedInputsupport — hooks can now rewrite the command before execution - Support for
AGENTS.mdworkspace rules — agent reads project-level rules from AGENTS.md automatically - Avatar support in Web UI
- Open first tab automatically on session start
Improved
- New-session page UI humanized with improved layout and discoverability
- Session bar slot support for extension customization
- Extension description metadata in ext-studio
Fixed
- Mobile new-session page layout uses fixed positioning correctly
- Weekly stats period now starts from Monday instead of a rolling 7-day window
- i18n translations updated and UI refreshes immediately on language change
- Extension market toolbar layout and back button styling
- Skeleton screen rendering in ext-studio and extension market
- Trash skeleton screen restored on loading state
- Media usage logging now passes session_id correctly for image/video generation
- Billing writes in tests isolated via
CLACKY_BILLING_DIRenv var - Meeting panel no longer overrides aside-panel container class
[1.3.7] - 2026-07-06
Added
- Extension ecosystem: install, manage, and publish extensions with Creator Studio
- Brand extension and brand badge support for extension agents
- Hook/profile extension type for intercepting and customizing agent behavior
- Extension upload CLI for publishing extensions from the command line
- New session page with improved layout and discoverability
- Session auto-cleanup hint, skeleton loading, and type filter in trash panel
- Renew button on brand warning bar for expiring subscriptions
- i18n tooltips for header theme toggle and trash toolbar buttons
- Refresh button in header to reload sessions
- xhigh reasoning effort level for supported models
- i18n file upload error messages
Improved
- Merge Creator Center into ext-studio as a unified extension hub
- Extension developer experience: scaffold template improvements, badge and author metadata support
- Share modal UI polish — theme dots on hover, close button hover effect, layout refinement
- Unify Clacky.* JS namespace and single-segment extension architecture
- Migrate default agents to default extensions with unified panel visibility
Fixed
- Ctrl+C now works properly in TUI auto-answer mode
- Show-system-skills toggle persists correctly and uses theme accent color
- Cron display handles every-N-hours with weekdays pattern correctly
- New-session dropdown arrow button responds to both click and keyboard
- New cron virtual entry inserts at the correct position relative to pinned sessions
- File upload error messages use i18n consistently
[1.3.6] - 2026-06-30
Added
- Cron task session isolation with independent pagination and stable task count
- Backup/restore UI in settings with WebSocket reconnect refresh and WSL open-folder support
Fixed
- Rewrite human-readable cron parser to handle comma-separated lists, hour ranges, and
*/1normalization - Setup submit button hover color follows accent theme variable
- Settings button no longer navigates away when already on settings page
- Use Unix epoch for old thread timestamps to avoid date parsing issues
[1.3.5] - 2026-06-29
Added
- Run agent inside meeting sessions; launch new meetings directly from session context
- Long video generation support
- Show raw LLM error message in error card with collapsible detail
- Fake tool call detector to catch hallucinated tool invocations
- Accent color customization for Web UI theme
Improved
- Refine auto-confirm wait TUI display
- Improve split button UX and billing period tab hover behavior
Fixed
- Terminal: adaptive GBK/UTF-8 decoding for PTY output to fix garbled text on Windows
- Resolve vision model detection against the actual request model
- Fix FrozenError when pressing Ctrl+U to clear text in modal
- Detect scrollbar-drag correctly to prevent unwanted auto-scroll in chat
- Fix split button dropdown closing when clicking inside button wrap area
- Show success toast when saving profile or memory
- Preserve single line breaks in profile/memory preview
- Make text selection visible in profile/memory editor
- Preserve memory card expand state across re-render
- Refresh time machine on task completion
- Re-check version on WebSocket reconnect so upgrade badge updates
- Harden DashScope TTS routing and error handling
[1.3.4] - 2026-06-25
Added
- Skill edit UI with brand skill theme colors
- WebUI language preference propagated to backend for localized error messages
- Edit message resend with confirmation modal and localStorage key normalization
- Duplicate model card action
- i18n support for aside tab labels (files/git/time-machine)
- File picker defaults to workspace with mkdir/rename support and hardened validation
- API extensions and EPIPE rebuild client handling
- Ruby Rich enhancement and refactoring (runtime dependency added)
Improved
- Default aside panel to collapsed; sidebar widths aligned to 16rem
- Onboarding manual config UX and spacing improvements
- Fixed positioning for modal model/baseurl dropdowns to avoid overflow clipping
- Disable transition during aside resize drag
- Rename resetAfterUnbind to resetBrandState to avoid view/store collision
Fixed
- Edit tool performs literal replacement (C-5682)
- Shield code spans before math extraction to prevent LaTeX rendering (C-5635)
- Preserve updated_at on idle compression and session eviction; fix Today/Yesterday display bug
- Remove media output dir UI setting — always use session workspace
- Test: stub req.path and req.request_method in check_access_key loopback bypass spec
[1.3.3] - 2026-06-23
Added
- Profile editor with CodeMirror for editing agent SOUL/USER files
- Inline editing for memory cards
- Workspace file preview, plus "copy path" in the context menu and a close button in the code editor
- Time Machine: browse and restore previous workspace states via git
- Image editing support in media generation
- Copy and edit actions on user/assistant message bubbles
- Media output directory configuration in settings
- Web UI extension support
- Health check endpoint and signal logging
Improved
- Differentiated icons and reordered buttons in the context menu and memory card
- Removed the standalone preview panel for a cleaner workspace layout
- Throttle duplicate inbound channel messages
- Session bar labels no longer wrap
- Added Japanese README (README_JA.md)
Fixed
- Lock the default-model checkbox when only one model exists (C-5677)
- Jump to a session that is not yet loaded in the sidebar (C-5679)
- Workspace panel now uses overlay mode on mobile
- Clarified that
include_sessionsapplies to auto-backup only (UI) - Removed extra padding from model cards in the grid
- Moved profile fetch into the store and fixed the architecture spec
[1.3.2] - 2026-06-18
Added
- Right-click context menu on workspace file tree with "Reveal in Finder" support (macOS/Linux/WSL)
- Resizable workspace panel with a drag handle
- Expandable task prompt preview — click a task card to view the full prompt
Improved
- Skill cards now show a delete button, with shimmer skeleton loading while fetching
Fixed
- Every-N-hours cron schedule label now renders correctly (e.g.
0 */2 * * *) - Billing sessions list now shows all rows instead of being clipped
- Session replay skips reasoning-only assistant messages to match the live view
- Set-as-default button in settings aligned to the footer row with the top-up link
[1.3.1] - 2026-06-17
Added
- Delete skills directly from the Web UI
Improved
- Sidebar is now draggable to resize, with width persisted across sessions
- Sidebar scrollbar only appears while scrolling for a cleaner look
- Billing page UI polish and mobile adaptation
- Default openclacky image model switched to Nano Banana 2
Fixed
- Onboarding device-login window no longer gets blocked as a popup
[1.3.0] - 2026-06-17
Added
- Complete Web UI overhaul: skeleton loading, task card layout, new session dialog, onboarding flow, inline image preview, and redesigned session bar
- Multimedia generation: video generation, text-to-speech (TTS), and OCR via vision models
- IM channel management UI — bind and unbind channels directly in Web UI
/modelcommand in terminal UI for quick model switching- AI-key device login flow
- Session sharing and backup support
Improved
- Terminal output auto-collapses on completion with normalized result display
- Billing page mobile layout, global tooltip, and logo animation polish
- Live chat history API replaces group buffer polling for real-time sync
Fixed
- Sidebar scrolling back to active session on content updates
- Channel key missing arbitration on session restore
- Race condition in model switching
- Channel keys and info out of sync on bind/unbind
[1.2.18] - 2026-06-13
Added
- Alibaba DashScope (Qwen-Image) as a new image generation backend
- "Always show" toggle for media-gen and skill-creators default skills, keeping them visible in all sessions
Fixed
- Brand skill files not accessible outside their initial session context
/modelcommand
More
- Brand skills page now auto-refreshes on enter
[1.2.17] - 2026-06-12
Added
- Session sharing to Web UI — share any session via a shareable link with billing integration
- Share telemetry tracking
Fixed
- Markdown rendering in certain edge cases
- Image blocks not detected in replay round counting, potentially causing history truncation
- History images served as base64 causing replay lag, now proxied through server
- WSL kernel repair getting stuck in infinite loop on pending state
- WeChat QR login fallback showing false stale-session errors
More
- Background color styling update
[1.2.16] - 2026-06-10
Added
- Claude Fable 5 model support
Fixed
- Model test failed when using saved API key
- Windows WSL install success rate
[1.2.15] - 2026-06-10
Added
- Proxy configuration support
- Optional sound notification on task completion in Web UI
Fixed
- Prevent scheduler thread from dying on tick exception
More
- Tool diff CSS refinement
[1.2.14] - 2026-06-08
Added
- OCR support for scanned PDFs (optical character recognition)
- VLM-based PDF parser for improved document understanding
Improved
- PDF OCR processing quality
Fixed
- PDF processing not appearing in session history
- Stale progress indicator that wouldn't dismiss
More
- Document Bing smoke test anti-scrape failure handling in gem-release
[1.2.13] - 2026-06-08
Added
- Session forking capability (Fork any message to a new session)
- Gemini Flash 3.5 support and MIMO model pricing
- Web search content capability and search skill LRU caching
- Token usage visibility after tool calls
- Subagent UI formatting for better readability
Improved
- Web search performance using Bing race search strategy
- Input box automatically clears when switching sessions
- Skill evolution info display simplified
- TUI adds an extra progress bar for better visual feedback
Fixed
- Dir-picker path input synchronization on directory navigation
- Thinking mode silent retries
- IME (Input Method Editor) input check issues
- WebUI reflect bug
- Upstream JSON loading stability
- Prevent skill evolution when the last message is incomplete
[1.2.12] - 2026-06-05
Fixed
- Remove ruby_rich C extension dependency that caused installation failures
[1.2.11] - 2026-06-05
Added
- Logo branding in sidebar footer with link to official website
- Onboarding charge tips for new users to understand billing
- WebUI tool panel expand/collapse toggle for better space management
- Region parameter for CDN and install script switching (CN vs global)
- Automated Feishu app creation via OAuth device flow — no more manual App ID/Secret entry
- Feishu group chat history with sender name identification
- Cron job entry sorting by enabled status and running state indicator
- Quick switch model selector: show only active model name in card, rename sub-model
- API server now binds to non-local IP by default for LAN access
Improved
- Sequential image generation now shows tips when generation is slow
- Startup time reduced significantly
- Clear GEM_HOME during Ruby 3 installation to avoid gem conflicts
Fixed
- Uninstall crashes when brand.yml has no product_name configured
- Tool calls go stale after channel interrupt, causing silent failures
- Sanitize tool names to prevent invalid characters
- Completion summary now accumulates correctly across supplementary message relays
- WSL install exit code 2 (network unreachable) now propagates properly
- Recycled sessions now sorted by deletion time instead of creation time
- Idle status now updates correctly after server restart
[1.2.10] - 2026-06-03
Added
- Compressor concurrency config and Ollama context size auto-detection
- Channel sessions auto-rebind on server restart
- Disk space check (4 GB minimum) on Windows install
- WSL network connectivity pre-check before installation
- MiniMax M3 provider with vision support and pricing
- One-click exchange rate update in settings
- Rich TUI controller (experimental, enable with
--ui rich) for terminal interaction
Improved
- WebUI working directory selector UX
- Qwen pricing table: official rates, promo discounts, clean up stale models
Fixed
- Directory picker interaction and indentation issues
- File upload for PDF and Excel files
- Session soft-delete: count-based cleanup and never evict pinned sessions
- Usage tooltip total value showing unreadable blue background
- Workspace file list now collapses on session switch
- Install script network errors use exit code 2 for better error handling
[1.2.9] - 2026-06-01
Added
- Image generation support via model tool calls
- Startup telemetry now reports launch source for better usage analytics
Improved
- Feishu channel setup simplified with Agent App flow — fewer manual steps and no redirect URL config needed
Fixed
- Network region detection hardened with CDN fallback to handle edge cases and improve reliability
[1.2.8] - 2026-06-01
Added
- Extensibility framework: patching, shell hooks, and channel user adapter plugins — customize Clacky behavior without modifying core code
Improved
- Billing session list now shows session names, merged deleted sessions, and standardized token breakdown with cache hit/miss color coding
Fixed
- Streaming LLM responses automatically retry when connection drops instead of silently truncating
More
- Extend openclacky skill with additional extension points
[1.2.7] - 2026-06-01
Added
- Session workspace file explorer — browse and download files in Web UI sidebar
- Channel manager: new, clear, and skill commands
- Top-up link in Web UI under billing section
- Sub-model switching within active sessions
- Claude 4.8 model support
- Connection test improvements for custom Claude models
Fixed
- Nil error in compress top match parsing
- Empty 0-token responses causing agent stalls (close #218)
- Brand config built-in skills loaded without MANIFEST.enc.json (C-5627)
- Terminal .exe stdin isolation at command-wrap on WSL (close #221)
- Overly verbose builtin skills installed message during onboarding
More
- Add Docker installation section to README
[1.2.6] - 2026-05-29
Added
- WPS format support for document processing
--jsonflag support with-moption
Improved
- Billing UI and model filtering experience
- Brand skill download now retries on failure
- DeepSeek compatibility handling within OpenRouter provider
Fixed
- Claude
tool_use.iderror when switching between models - Browser page navigation pageid bug
- Browser IIFE execution issue
- WSL UTF-8 command encoding bug
- File preview path directory resolution
More
- Remove list/undo/redo task tool
- Clean up legacy provider code
- Improve platform error messages for easier diagnostics
[1.2.5] - 2026-05-28
Fixed
- Bash tool stream output not rendering in real-time
- Multi-line shell output being incorrectly stripped
More
- Remove WSL2 network doctor script for better compatibility
[1.2.4] - 2026-05-27
Added
- Browser/agent snapshot now supports
with_pagefor paginated results - Prefer WSL1 over WSL2 for better compatibility
Fixed
- Feishu post message type and WeCom mixed message type not handled properly
- WeChat stale QR code session not detected when reconfiguring channel
- Channel adapter using stale reference after reconfiguration
- Benchmark terminated early by 10-second outer request timeout
- Model card action buttons overflowing on narrow viewports
- Save button staying disabled when reopening model edit modal
- WSL pipe breaking when
redirect_exe_stdinappends</dev/null - MCP registry not hot-reloading after writing config
- MCP server breaking from bashrc PS1 customization
- Terminal realtime output not streaming correctly
- PowerShell UTF-8 encoding issues
- WSL bashrc not loading in non-interactive shells
- Qwen 3.7 Max incorrectly treated as vision-capable model
More
- Log service start failure reason for easier diagnostics
[1.2.3] - 2026-05-27
Added
- Qwen 3.7 model support
- WSL network doctor PowerShell script
- Limit on glob/grep file walker to prevent excessive traversal
Fixed
- Terminal single-line mode issue
- Terminal execution hang
- apt try logic
[1.2.2] - 2026-05-25
More
- Add telemetry for task cost and model tracking
[1.2.1] - 2026-05-25
Fixed
- MCP server UI display issue in Web UI
[1.2.0] - 2026-05-24
Added
- MCP (Model Context Protocol) support with HTTP server transport
- MCP management skill for adding, listing, probing, and reconfiguring MCP servers
- Settings panel restructure with new "UI" and "About" tabs
- Advanced settings toggles for compression, prompt caching, and memory update
- Session recycle bin with soft-delete, restore, and bulk-empty operations (#172)
- Billing system with USD/CNY currency settings (#166)
- Configurable default working directory (#170)
- Model ID select for switching between configured model IDs
- Sequential image naming with upload order guarantee in Web UI (#188)
- Browser link tips in agent output
- Fallback URL support for model providers
- ROADMAP.md outlining four focus areas
Improved
- Browser tool reliability and ergonomics
- Idle compression interval increased to 314s for fewer interruptions
- Removed dead WeChat split_message and markdown_to_plain code paths (#187)
Fixed
- Brand setting persistence
- Interactive feedback card now restored during history replay (C-5599) (#190)
- Model switcher disabled while agent is responding (C-5559) (#189)
- Stale function call no longer breaks interrupt handling
- Trash tool now supports directory deletion (#173)
- Command suggestions dropdown scrolling (#157)
- Comprehensive mobile Web UI fixes (#165)
- WSL_UTF8=1 vs OutputEncoding=Unicode conflict in Test-UbuntuInstalled (#164)
- USR1 hot-reload session info drop bug (#142)
More
- DeepSeek price update
- Contributors list and contributing readme
- Session translation polish
[1.1.6] - 2026-05-22
Added
- Fold cron sessions into a collapsible group in session list sidebar
Fixed
- Free skill hints display issue
[1.1.5] - 2026-05-22
Fixed
- Async free skills handling
[1.1.4] - 2026-05-22
Added
- Thinking level control for AI models, configurable per provider
- Free brand customization support
- Syntax highlighting and per-block copy button for code blocks in Web UI (#152)
- Font size setting (small/medium/large) with proportional UI scaling in Web UI (#147)
- Chinese README documentation (#148)
Improved
- Unify POST /api/file-action with download support for remote deployments (#153)
- Hover interaction polish across Web UI
Fixed
- Upgrade hot reload no longer leaves stale process (#143)
[1.1.3] - 2026-05-20
Added
- Qwen3.6 (qwen3.6) model provider
- Provider dropdown auto-focuses when opening model config in onboarding and settings
- Dockerfile for containerized deployment
- Debian apt mirror support for CN users, with refactored mirror configuration
Fixed
- History file parsing incorrectly handles certain message formats
- DeepSeek model pricing and token counting
- Compression progress bar display during message compression
- DingTalk: markdown message rendering, file/image delivery failures, and inbound file message type handling
[1.1.2] - 2026-05-20
Added
- Streaming response with real-time token display in WebUI
- Stream thinking progress indicator during agent reasoning
- Time-to-first-token (TTFT) display in WebUI
- LaTeX rendering support in WebUI
- Cache hit rate display in WebUI
Fixed
- Reasoning content properly passed as
<think>tags to WebUI - User-set session name no longer overwritten by auto-rename (#136)
- Server command now supports
--help/-h/--bind/-band-palias for--port(#135) - WSL.exe output encoding and premature WSL1 fallback detection (#130)
- Hide edit/delete model options when no models are configured (#133)
- BrowserManager MCP process cleanup on agent exit in CLI mode (#132)
- Windows-native OpenClaw config detection on WSL during onboarding (#129)
More
- Updated Windows installation docs and added GitHub star history
[1.1.1] - 2026-05-17
Added
- WeChat SendQueue with batching, throttling, and retry. Messages sent to multiple WeChat official account users are now queued, batched (up to 100 recipients per call), throttled to 1 batch/second, and automatically retried on failure — preventing 45007 rate-limit errors during broadcasts. (#127)
- Session ID in TUI session bar. The terminal UI session bar now displays the session ID alongside the session name, making it easy to identify sessions when cross-referencing with logs or Web UI.
- TUI todo clean-up on task completion. Completed todos are now removed from the terminal display when a task finishes, keeping the TUI uncluttered. (#94)
Improved
- Brand skills persist across same-brand upgrades. Brand skills are no longer removed and re-downloaded when the brand stays the same after an upgrade — eliminating unnecessary network calls and keeping skill state stable.
- Ruby 2.6 install reliability. The installer now pre-installs rouge 3.30.0 before
gem installand retries with a pinned version on Ruby 2.6, avoiding dependency resolution failures on older macOS system Ruby.
Fixed
- TUI progress bar flicker. The progress bar in terminal mode no longer flashes when updating rapidly, providing a smoother visual experience.
- Xcode command auto-install loop. The agent no longer gets stuck in a loop trying to auto-install missing Xcode command-line tools.
- Brand license warning after 3-day idle. Fixed a spurious license warning that appeared on startup after the server had been idle for 3 days.
[1.1.0] - 2026-05-15
Added
- DingTalk channel adapter. New IM channel adapter connects openclacky to DingTalk via Stream Mode WebSocket. Includes DingTalk API client for text/markdown messages, Device Flow QR setup script, and full Web UI integration with channel config, HTTP server routes, and i18n strings. (#112)
- Feishu channel-manager skill setup & onboard improvements. Channel-manager now includes a dedicated Feishu skills installation flow (
install_feishu_skills.rb) and updated setup instructions. Skill installation is serialized for reliability. (#122) - Custom datepicker component with i18n support. New reusable datepicker component with CSS variable theming and full English/Chinese localization, replacing browser-native date inputs. (#119)
- Rename sessions via modal dialog. Session rename now uses a proper modal dialog with i18n support instead of inline editing, for a cleaner UX. (#113)
- Channel enable/disable toggle. Configured channels can now be individually enabled or disabled from the Channels page without removing credentials. Distinguishes "disabled" from "not configured" in badge and hint text. (#108)
- Provider promo hint for OpenClacky. When OpenClacky is selected as provider, a contextual promo hint appears below the dropdown on both settings and onboarding pages, with dark mode support and localized copy. (#109)
- Running config for concurrent agent limits. New
AgentConfigrunning configuration andSessionRegistryconcurrency controls to limit the number of simultaneously active agents, preventing resource exhaustion on busy servers.
Improved
- Channel page and sidebar nav polish. Visual refinements to the Channels page layout and sidebar navigation styling.
- Telegram group chat skill guidance. Channel-setup skill now clarifies Privacy Mode requirements for Telegram group chats, preventing common misconfiguration. (#117)
Fixed
- Channel skill trigger matching. Renamed
channel-setuptochannel-managerso the agent's send-message intent matches the correct skill more reliably. (C-5584, #120) - Markdown image overflow in chat bubbles. Images in assistant messages are now width-constrained to fit within the message bubble instead of overflowing. (C-5585, #118)
- Channel image rewriting scoped to Web UI. Local image URL rewriting is now applied only in the Web UI context; IM channel messages use the file basename as attachment name instead. (C-5590, #115)
- Discord file upload. Added multipart middleware to the Discord Faraday connection so file attachments upload correctly. (C-5589, #116)
- File walk respects ignore patterns. Fixed glob/walk to apply ignore patterns before traversal, resolving cases where ignored files were still visited. (#102)
- Server restart kills stale PIDs. Improved process cleanup on restart with better PID management and user-facing hints when restart fails.
- Device ID persistence. Device ID is now persisted in
BrandConfiginstead of being regenerated, ensuring stable telemetry identity across restarts. - Terminal markdown rendering on Ruby 4.0. Fixed compatibility issue with Ruby 4.0's stricter method dispatch that broke terminal markdown output. (#99)
[1.0.5] - 2026-05-12
Added
- Telegram channel adapter. New IM channel adapter that connects openclacky to Telegram via the Bot API. Setup is just a bot token from @BotFather — no browser automation, no QR. Mirrors the existing Feishu / WeCom / Weixin contract: HTTPS long-poll inbound,
sendMessage/sendPhoto/sendDocumentoutbound, photo + document download routed through the standard FileProcessor + vision pipeline, group@-mentionfiltering andallowed_userswhitelist.base_urlis configurable to support self-hosted Bot API servers (https://github.com/tdlib/telegram-bot-api) for networks whereapi.telegram.orgis unreachable. Frontend Channels panel,channel-setupskill, English/Chinese i18n, andapp.csslogo class added. 32 new specs inspec/clacky/server/channel/adapters/telegram/. - Discord channel adapter. Full Discord integration via REST API + Gateway (WebSocket), with channel-setup support, Web UI Channels panel entry, and i18n strings. Connect Clacky to Discord servers for bot interactions through slash commands and message events.
- OpenRouter curated model list. The OpenRouter provider now ships with a curated dropdown of mainstream Claude and GPT models (Sonnet, Opus, Haiku, GPT-5.5/5.4), so users can pick from the list instead of typing model IDs manually. Full catalogue still accessible by typing any model ID.
- OpenRouter lite model pairing. Subagents on OpenRouter now automatically get a sensible cheap/fast sidekick — Claude family pairs with Haiku, GPT family pairs with the mini variant — matching the behavior already available on the native OpenAI and OpenClacky providers.
- MiMo 2.5 Pro (Xiaomi) model support. Added
mimo-v2.5-proto the MiMo provider preset alongside existing MiMo models. - AI key setup guide link. New users and those configuring API keys now see a "New to AI keys? See the guide →" link on both onboarding and settings pages, pointing to the official documentation.
Improved
- Default model upgraded to claude-sonnet-4-6. The OpenClacky provider now defaults to the latest Claude Sonnet model for better performance out of the box.
Fixed
- Linux server restart stability. Fixed an inherited socket cleanup bug where WEBrick's shutdown would propagate
SHUT_RDWRto the shared kernel socket, breaking subsequentaccept()calls on Linux. The server now detaches inherited sockets before shutdown so worker restarts work reliably. - Upgrade failure recovery UI. When an in-app upgrade restart fails, the UI now shows both tray icon and CLI recovery paths (
gem update ...) instead of leaving users stranded. Also added branded CLI command info to the version check API for white-label builds.
[1.0.4] - 2026-05-11
Added
persist-memorysubagent skill — agents can now save things to long-term memory. New built-inpersist-memoryskill (forked subagent, auto-summarized, no web tools) handles file naming, topic merging, frontmatter, and size limits when writing to~/.clacky/memories/. The memory updater and skill manager now route persistence requests through this subagent for cleaner separation of concerns. Covered by new specs inmemory_updater_spec.rbandskill_manager_memories_spec.rb.- System prompts aligned with Claude Code behavioral rules. Rewrote
base_prompt.mdand the coding/general system prompts with 6 new sections (Code Style, File Modification Rules, Response Style, Git Safety Protocol, Error Handling, Task Tracking). Internal benchmark on 5 tasks showed −40% response verbosity, −24% task duration, and qualitative improvement on 4/5 tasks with no regression in completion rate. (#96) - Local image proxy via
GET /api/local-image(C-5523). New HTTP server endpoint exposes local images (e.g. screenshots written by tools) to the Web UI through a controlled proxy, with newFileProcessorutilities backing it. 86 new specs infile_processor_spec.rb. (#93) - Kimi Code (Coding Plan) provider preset. New first-class provider entry for Moonshot's Kimi Code coding plan, with proper Anthropic-format cache headers (
cache_creation_input_tokens/cache_read_input_tokens) wired through the client so prompt caching actually lands on the backend. Verified end-to-end against a paid account with 14336 cached tokens hit on the second turn. (#89) - Opt-in Feishu CLI install & auth step in channel setup.
channel-setupskill now offers an optional Feishu CLI install + auth step and ships animport_lark_skills.rbhelper that imports Lark-related skills on demand. (#98) - Ruby 4.0 added to CI matrix. GitHub Actions main workflow now runs the test suite against Ruby 4.0 in addition to existing versions, catching forward-compat issues early.
Fixed
- Session bar correctly attributes cost & skill reflection in subagents. Fixed
cost_trackerandskill_reflectorso the parent session's bar no longer mis-counts subagent activity, giving accurate per-session cost and skill stats when forked subagents (likepersist-memory) run.
More
- Updated onboarding skill copy.
[1.0.3] - 2026-05-09
Added
- Channel send command — push messages from CLI/agent to IM channels. New
clacky channel sendCLI command and full outbound channel pipeline. The agent can now actively reach out to users on Feishu/WeCom/WeChat (e.g. for cron tasks or background completions) instead of only replying. Includes a newChannelManagerfor routing, multi-master server discovery, and properchat_idextraction for outbound messages. (#73) --modelflag to override the model per invocation. Run any one-off command with a different model without changing config:clacky --model gpt-4o-mini "...". Useful for quick comparisons or routing specific tasks to cheaper/faster models. (#76)- Fuzzy tool-name resolution for cross-model compatibility. When a model emits a slightly off tool name (e.g.
read_filevsfile_reader, case mismatches, or hyphen/underscore differences), the agent now resolves it to the closest registered tool instead of erroring out. Significantly improves reliability when switching between Claude, GPT, and other providers. (#78) - Context overflow auto-recovery. When an upstream LLM call hits a context-length error, the agent now detects it via
LlmCaller's error classification and automatically compresses message history to retry — instead of bubbling a hard error to the user. Backed by 175 new error-detection and 169 new recovery specs. - Refined session list UI with SVG icons. Reworked sidebar session list with crisp SVG icons and tightened styling for a more polished look. (#83)
Fixed
- EPIPE crashes when stdout/stderr is closed. Wrapped server I/O in
EpipeSafeIOso the master/web server no longer crashes when its output stream goes away (e.g. terminal closed, pipe broken). Covered by 193 new specs. - Duplicate
$in CLI completion line. Removed the stray dollar sign that appeared at the end of completed commands. (C-5583, #86) - Session list scroll jump on "load more". The list no longer snaps back to the top when older sessions are paginated in. (C-5568, #85)
- Reverted an earlier message line-wrap change (#74) that caused regressions; will be revisited. (#84)
[1.0.2] - 2026-05-07
Added
- Multi-region provider endpoints. Providers can now expose multiple endpoint variants (e.g. global vs. CN-optimized Anthropic), and you can switch between them from both the onboarding flow and the Settings page. Bundled with updated model pricing data so cost estimates stay accurate across regions. (#67)
- Pre-installed platform-recommended skills during onboarding. New users get a curated set of skills automatically during onboard — downloaded concurrently with dual-host fallback and a hard deadline so onboarding never hangs on a slow mirror. (#68)
- Builtin skills served via platform API. Recommended skills are now fetched through
/api/v1/skills/builtin, making the list easier to update without shipping a new gem. (#72) - Feishu group chats: respond only when @-mentioned. The Feishu adapter now parses the mentions array and ignores group messages that don't @ the bot, so the bot no longer replies to every message in a busy group. Sessions are also isolated per (chat, user) pair by default (
:chat_userbinding mode), preventing context leaks between DMs and groups. (#71)
Fixed
- Recover from truncated upstream tool calls. When an upstream LLM response cuts off mid tool-call, the agent now detects the truncation and recovers automatically instead of getting stuck. Covered by extensive new tests.
- Feedback option click now sends the message. Clicking a suggested feedback option previously set the input text but silently failed to send (due to a
sendMessagevs_sendMessagescope bug). Now it dispatches immediately as expected. (#69) - Sidebar footer and input area heights aligned. Introduced a shared
--footer-heightCSS variable (56px) and reworked the stop button to use a pseudo-element square for pixel-perfect centering — both columns now line up cleanly. (#70) - Feishu bot fails closed on API outage. If
/open-apis/bot/v3/infofails andbot_open_idcan't be resolved, the adapter now drops group messages (with a warning) instead of spamming every group message as a fallback. preview.mdno longer pollutes user project directories. Preview files are written to the system tmpdir, and plain text formats (md/log/csv) skip preview generation entirely since they're already readable as-is.
More
- Added agent stop logging to make interrupt / stop chains easier to debug.
[1.0.1] - 2026-05-06
Added
- OpenRouter Anthropic API support. You can now route Claude model requests through OpenRouter, giving access to Anthropic models via a single OpenRouter API key — useful when Anthropic direct access is limited in your region.
- GPT provider support. Direct GPT provider configuration is now available alongside other providers, making it easier to switch between different OpenAI-compatible endpoints.
- OCR-powered PDF reading. PDF files that contain scanned images (non-text PDFs) are now readable via OCR, allowing the agent to extract content from scanned documents, invoices, and image-heavy PDFs.
- Terminal output size control. The agent now limits terminal output to a configurable size, preventing token overflows when running commands that produce very long output.
- Memories & Trash manager in Web UI. A new management panel lets you browse, review, and delete agent memories and trashed files directly from the Web UI.
- Watchdog for interrupt messages. A background watchdog ensures interrupt signals reliably stop the agent even when it's deep in a tool execution loop.
- Skill import with category directory scanning. When importing skills from openclaw packages, nested category directories are now scanned automatically, so all skills in a category bundle are imported at once.
Improved
- Deploy skill simplified. The deploy skill now uses Railway CLI directly without custom helper tools, making deployments more reliable and the codebase significantly lighter.
- Fix double-render of progress indicators. Progress spinners and status lines no longer render twice in quick succession, keeping the Web UI output clean.
- Session idle status tracking and file descriptor cleanup. Sessions now correctly report idle state when the agent finishes, and open file descriptors are properly closed to avoid resource leaks.
- GPT-4.1 and GPT-5 pricing added. Model cost tracking now includes the latest GPT-4.1 and GPT-5 pricing tiers.
Fixed
- UTF-8 encoding error in file preview. Opening files with non-UTF-8 characters no longer crashes the preview — they are now handled gracefully.
- Expand
~in openfile path. The "open file in editor" API endpoint now correctly expands~to the user's home directory.
[1.0.0] - 2026-04-30
Added
- Speed test tool in Web UI. Test API response latency for different models and providers directly from the settings panel, making it easy to find the fastest endpoint for your region.
- History chunk loading. Previously compressed conversation chunks can now be loaded back into the session when needed, so long-running conversations don't lose context.
- Default model changed to 4.5. New default model provides better balance of speed, quality, and cost for most tasks.
Improved
- Thinking indicator now visible for more steps. The "thinking..." indicator stays visible longer during complex operations, giving better feedback about what the agent is doing.
- Message timestamps display correctly in Web UI. User message times now show properly without layout issues, and the scroll behavior is smoother.
Fixed
- Scroll position no longer jumps unexpectedly in the Web UI when loading session history.
[1.0.0.beta.6] - 2026-04-30
Fixed
- Compression chunk indexing now uses disk-based discovery. Chunk files are no longer incorrectly overwritten after the second compression. Previously, chunk index was counted from compressed_summary messages in history — which caps at 1 after rebuild — causing chunk-2.md to be overwritten on every subsequent compression. Now uses durable disk-based chunk discovery via SessionManager, ensuring all compressed chunks are preserved.
- Skill evolution no longer creates duplicate skills. The reflect and auto-create scenarios in skill evolution are now mutually exclusive: when a skill was just used, only reflection runs; when no skill was used, only auto-creation is considered. This prevents near-duplicate "auto-*" skills from being extracted from tasks already served by an existing skill.
Improved
- Slash commands no longer misinterpret filesystem paths. Pasted paths like
/Users/alice/fooor/tmp/barare no longer mistaken for slash commands, avoiding confusing "skill not found" notices.
[1.0.0.beta.5] - 2026-04-29
Added
- WSL2 mirrored networking mode for localhost access. Windows users running under WSL2 can now configure mirrored networking, allowing the Clacky server to be reached at
localhostfrom the Windows host instead of needing to look up the WSL IP address. - Message compressor preserves chunk order. Compression chunks are now consistently ordered with
chunk-nnnaming, making it easier to browse and understand compressed conversation history. - Session model is now saved. The currently active model selection is persisted in session data, so it survives page refreshes and server restarts.
- Feedback button styling in Web UI. The feedback interface now has improved CSS styling for a better user experience.
Improved
- Fewer LLM turns for common tool operations. The file reader, security tool, and todo manager have been optimized to require fewer round-trips with the AI model, making tasks faster and cheaper.
- Terminal now supports mise-based Node.js. The terminal tool correctly resolves Node.js when installed through
miseversion manager, not justnvmor system paths.
Fixed
- Browser MCP connection recovers from crashes. The browser tool's MCP daemon handles process restarts more gracefully, and stale Node.js detection code has been cleaned up.
- Brand configuration no longer crashes on empty data. When brand config data is empty or missing, the system now handles it gracefully instead of raising an error.
- Kimi K2.5 and K2.6 models now show correct pricing. These models are now in the pricing table, so cost tracking reflects actual usage costs.
- Feishu messages with images no longer silently dropped. Image markdown syntax in Feishu messages is now sanitized before sending, preventing the Feishu API from silently rejecting them.
- Onboarding model selector and provider presets fixed. The model combobox in the onboarding flow now works correctly, and provider presets are properly updated.
- File reader now works correctly with OpenAI provider. Files attached to sessions are now properly read and processed when using the OpenAI API format.
- Image URLs with special tokens no longer mis-handled. The message formatter no longer mis-handles image URLs containing special tokens (e.g.,
bong).
Changed
run_projecttool removed. This deprecated tool has been removed. Use the terminal tool to run commands in projects instead.
More
- Improved WSL2 detection on Windows PowerShell installer
- Minor test and documentation fixes
[1.0.0.beta.4] - 2026-04-28
Fixed
- Fix: onboard.js was calling defunct
POST /api/config→ now callsPOST /api/config/models
[1.0.0.beta.3] - 2026-04-28
Added
- File attachments now support Markdown, plain text, and
.tar.gzarchives. When you attach.md,.txt, or.tar.gzfiles to a session, the agent can read and reason over their contents directly. - Image type auto-detection. Image files are now correctly identified by their binary content (magic bytes), not just their file extension — preventing misclassified images from causing upload or vision errors.
Improved
- Settings page fully revamped. The Web UI Settings panel now saves configuration correctly and exposes a richer set of options for managing providers, models, and API keys.
- Skills no longer have a 50-item cap. The skill loader previously limited the results list to 50 entries; that cap has been removed so all available skills show up.
- Cost tracking no longer requires a hard-coded price list. Model pricing is now resolved dynamically, so new models show real cost figures instead of falling back to a default.
Fixed
- Terminal tool no longer crashes on non-UTF-8 output. Commands that emit binary or non-UTF-8 bytes (e.g. compiled output, legacy scripts) no longer raise an encoding error in the terminal tool.
[1.0.0.beta.2] - 2026-04-27
Added
- New session creation supports model & working-directory options. The Web UI "new session" dialog now lets you pick the model and starting directory up front, instead of having to adjust them after the session opens.
Fixed
- System prompt now refreshes when you switch models. Previously the system prompt captured at session start stuck around even after model switches, which could leave model-specific instructions out of sync. The agent now re-injects the correct system prompt on every model change.
- Port 7070 properly released when the terminal tool exits. A lingering listener on port 7070 could block subsequent runs; the terminal tool now cleans it up on shutdown.
- Windows installer uses
[IO.Path]::GetTempPath()for the temp directory (#58) — more reliable than$env:TEMPon systems where the env var is unset or points to a non-ASCII path.
[1.0.0.beta.1] - 2026-04-26
Added
- Vision support — agents can now "see" images. When you attach image files (PNG, JPG, GIF, WebP), the agent can analyze them visually with vision-capable models. Non-vision models automatically fall back to disk references instead of breaking.
- DeepSeek V4 (Clacky-DS) provider. New
deepseekv4provider preset with native DeepSeek API endpoint, supportingdsk-deepseek-v4-proanddsk-deepseek-v4-flashmodels with accurate pricing. - Memory subagent. Long-term memory management now runs as a dedicated background subagent — writes memories when the task reaches meaningful completion, instead of on every turn.
- Usage telemetry. Anonymous usage data collection helps us understand how the product is used and prioritize improvements. No personal or conversation data is collected.
- Brand configuration auto-refresh. White-label brand settings now refresh automatically when the WebUI starts up, no manual restart needed.
Improved
- Progress handles revamped. Nested progress handles now hide/show automatically, ticker threads keep animations smooth, and fast-completing tasks no longer flash a pointless "done" message.
- Todo manager tool upgrades. Batch add/remove multiple todos at once, and completed todos auto-clear when you add new ones.
- Model switching more robust. CLI slash commands (/config) now work seamlessly, server-side routing handles dynamic endpoints correctly, and switching between all provider types is more reliable.
Fixed
- Access key now persists via cookies. The WebUI login key was stored only in
localStorage, causing WebSocket connections to lose authentication. Now also written to aclacky_access_keycookie for consistent auth across all connection types. - MiniMax → DeepSeek switch error. Switching models from MiniMax to DeepSeek no longer fails due to mismatched message format handling.
- Bedrock truncated tool call recovery. When AWS Bedrock truncates a tool call mid-argument, the agent now detects the error, sends feedback, and successfully retries on the next turn.
- Sidebar "Load More" scroll jump. Clicking "Load More" at the bottom of the session list no longer jerks the sidebar back to the active session — scroll position is now preserved.
- Double-render regression. An output buffer lifecycle bug that occasionally caused duplicate content in the terminal UI has been fixed.
- DeepSeek V4 message content extraction. Compression no longer mishandles DeepSeek V4's user message content format.
[0.9.38] - 2026-04-24
Fixed
- Access key now persists correctly via cookie. When the Web UI server was configured with
--access-key, the key entered at login was stored only inlocalStorage— but WebSocket connections and some API requests read the key from cookies. This mismatch caused authenticated sessions to sporadically lose access (e.g. WebSocket falling back to unauthorized). The auth flow now writes the key to bothlocalStorageand aclacky_access_keycookie, and probes the server using the cookie. Incorrect keys are cleared from both stores before retry. Up to 3 attempts are allowed before giving up.
More
- Auth prompt input field now uses
type="password"while the user is typing (reverts to text after), preventing shoulder-surfing
[0.9.37] - 2026-04-24
Fixed
- Critical: pinned sessions could silently disappear from the sidebar ("the pinned one isn't showing, and refreshing sometimes fixes it"). Root cause: the backend
listendpoint only sorted bycreated_atand appliedlimitblindly, so a pinned session older than the first page's rows was cut off entirely — the frontend'sbyPinnedAndTimesort never saw it. "Refreshing sometimes worked" only if the pinned session happened to be recent enough to land in the first 20 rows. Fix:SessionRegistry#listnow partitions results and always returns ALL matching pinned sessions on the first page regardless oflimit, followed by up tolimitnon-pinned sessions. Thebeforecursor applies only to the non-pinned section, so "load more" pages never re-send or duplicate pinned rows./api/sessions'shas_moreis now computed from non-pinned overflow only. FrontendloadMorecursor also excludes pinned rows so pagination jumps correctly. Regression specs cover: (a) an old pinned session still appears whenlimit=3, (b) multiple pinned sessions all fit on page one withlimit=1, (c) pinned sessions never duplicate intobefore-cursor pages. - Critical: saving one model in Web UI Settings silently wiped other models' API keys. The 0.9.36 index→id refactor (commit
b61e22e) rebuilt each model hash from scratch on save ("api_key" => api_key.to_s), dropping the oldexisting["api_key"] = api_key if api_keyguard. Combined with/api/configreturning onlyapi_key_masked(neverapi_key), every non-edited row in the POST body arrived withapi_key: undefined— the backend then rewrote those rows' keys to"". Nowapi_save_confighas three explicit cases for resolvingapi_key: (1) masked placeholder → keep stored key, (2) missing/blank on an existing row → keep stored key (this fix), (3) otherwise use incoming value. Brand-new models (noid) still create with an empty key as before. - Critical: in-app upgrade no longer falsely reports failure. The 0.9.36 upgrade flow shared a PTY helper (
run_shell) with the new unified Terminal tool, which — by design — returns early with asession_idwhen command output stays quiet for 3 seconds. Long-runninggem installoperations routinely hit this during dependency resolution, causing the Web UI to show✗ Upgrade failed.even when the gem installed successfully.run_shellnow delegates to a newTerminal.run_syncRuby API that polls until the command truly completes, andfinish_upgradeadditionally re-checks the installed gem version as a defensive fallback. - Critical: "历史记录获取失败 (500: source sequence is illegal/malformed utf-8)" when opening a session. When
file_reader/edit/grep/globencountered a file with non-UTF-8 bytes (e.g. GBK-encoded text or a Chinese Windows-exported CSV), the dirty bytes flowed through tool results into the agent history and session chunks on disk. Later, whenGET /api/sessions/:id/messagesreplayed that history,JSON.generatewould blow up on the invalid byte sequence and return 500. Now every IO source point scrubs invalid bytes to U+FFFD (�) at read time:file_reader(both content and directory entry names),edit,grep(File.foreach+ contextreadlines),glob(Dir.globpath strings),session_serializer(chunk md replay), andtool_executor(diff preview). A defense-in-depth layer inMessageHistory#append/#replace_allrecursively sanitizes every string that enters the message tree — so even a future tool that forgets to scrub cannot poison the session.
Added
- New
Terminal.run_syncinternal API for Ruby callers that need synchronous command capture (drop-in replacement forOpen3.capture2e, but using the same PTY + login-shell + Security pipeline as the AI-facing tool). - DeepSeek V4 provider preset. New
deepseekv4entry inClacky::Providers(positioned right afteropenrouter) with default modeldeepseek-v4-proand models listdeepseek-v4-flash,deepseek-v4-pro, plus the deprecated-aliasesdeepseek-chat/deepseek-reasoner(to be removed on 2026-07-24). Uses the OpenAI-compatible endpointhttps://api.deepseek.com; for Anthropic-format usage, pointbase_urlathttps://api.deepseek.com/anthropicand switchapitoanthropic-messages. - DeepSeek V4 pricing. Added
deepseek-v4-flash($0.14 in / $0.28 out / $0.028 cache-hit per MTok) anddeepseek-v4-pro($1.74 in / $3.48 out / $0.145 cache-hit per MTok) toClacky::ModelPricing::PRICING_TABLE. Legacy aliasesdeepseek-chatanddeepseek-reasonernormalize todeepseek-v4-flash. DeepSeek has no separate cache-write charge, so cache writes are billed at the cache-miss (input) rate. Prices sourced from the official pricing page (USD per 1M tokens).
[0.9.36] - 2026-04-24
Fixed
- Session deletion now works correctly: fixed disk-based session deletion that was failing with proper error handling in the Web UI (C-9d1ea93)
- Model switching improved: better model ID validation and normalization when switching models in Web UI — handles various ID formats correctly (C-b61e22e)
- Terminal tool word wrapping: fixed terminal output word wrapping issues that could break long command outputs (C-5989d02)
- Heartbeat mechanism stability: improved async heartbeat logic in server mode for more reliable connection status tracking (C-5989d02)
Improved
- UI polish: removed session topbar clutter and added empty state messages for better first-time user experience (C-003d613)
- Cleaner logging: reduced noisy debug logs in skill manager for quieter operation (C-c27bbec)
[0.9.35] - 2026-04-23
Added
- Unified Terminal tool: merged the old
safe_shellandshelltools into a singleterminaltool with persistent PTY sessions — the agent can now keep a shell session alive across tool calls, send input to running prompts, poll long-running commands, and safely interrupt them (Ctrl+C/Ctrl+D). Replaces 1000+ lines of duplicated shell-handling logic with a cleaner, better-tested implementation. - Access key authentication for server mode: start the Web UI server with
--access-key <key>(orCLACKY_ACCESS_KEYenv var) to require a login before anyone can open sessions — safe to expose the Web UI over the network or to share a running instance - Session debug download: from the Web UI you can now download a full session bundle (messages, tool calls, config) as a zip for debugging or sharing — useful for bug reports and post-mortems
- Scheduler now saves session state: scheduled/cron tasks now persist their session after each run, so you can inspect what the scheduled task actually did from the Web UI just like a normal session
- Web UI visual redesign: substantial redesign of the sidebar, session list, settings panel, and theme — cleaner spacing, better contrast in both light and dark modes, smoother transitions
- Web UI & channel message interrupt: you can now cancel an in-progress agent reply from the Web UI or from an IM channel (Feishu/WeCom/WeChat) mid-flight instead of waiting for it to finish
- Terminal tool UI tips: the Web UI now surfaces helpful inline tips when the agent is running a terminal command (e.g. "waiting for input", "process still running"), making long-running commands easier to follow
Improved
- Smaller tool descriptions: trimmed the system-prompt footprint of
terminal,browser, andtodo_managertool descriptions by ~40% — fewer tokens burned on every API call, slightly faster startup, and meaningfully cheaper sessions over time - Download fallback for skills & brand assets: when the primary platform download host is unreachable (common in certain regions), the client now automatically falls back to a secondary URL — skill installs and brand asset fetches succeed in more network environments
- Session cost shows "N/A" for unknown-price models: instead of displaying
$0.00when a model's pricing isn't registered, sessions now show "N/A" so you can tell the difference between "free call" and "we don't know the cost" - Faster, more accurate progress updates: removed a delay in the progress spinner so the "Agent is thinking..." and tool-running indicators update immediately on state changes instead of a second later
- No Claude-specific skill auto-loading: removed legacy logic that special-cased loading
.claude/skills at startup — skill loading is now uniform regardless of provider, reducing surprise behavior and confusing "unknown skill" errors
Fixed
file://links now render and open correctly (C-5552, C-5553): file:// links are no longer stripped during streaming in the Web UI, and clicking them now opens the file via the backend (including proper foreground focus on WSL viacmd.exe /c start). Also fixes silent drop offile://links in the CLI.- Idle
Ctrl+Cno longer crashes the CLI: pressing Ctrl+C while the CLI is idle (no task running) now exits cleanly instead of raising an error - Session pinned status persists correctly (C-5556): pinning a session in the Web UI now survives server restarts and is correctly restored from disk
- Brand skill names follow language switch: brand-supplied skill names in the Web UI sidebar now update immediately when you toggle the UI language (previously stuck in the initial language until reload)
- New sessions get the default model: fixed a case where newly created sessions could end up on a different model than the configured default; the "lite UI" mode is no longer automatically forced either
More
- Large refactor of the UI2
LayoutManager+ newOutputBufferfor cleaner CLI output line handling - Agent progress-emission refactor for more consistent spinner/tool state reporting across Web, CLI, and channel UIs
- Removed the
safe_shell_specandshell_specsuites; replaced with a single, comprehensiveterminal_spec(500+ lines of coverage)
[0.9.34] - 2026-04-21
Added
- Model switcher in Web UI: switch AI models mid-session from a dropdown in the settings panel — previously required restarting the session
- Advanced session creation options: when creating a new session in Web UI, you can now configure permission mode, thinking verbosity, disable skills/tools, and choose specific models — no need to reconfigure after the session starts
- Session pinning: pin important sessions to the top of the session list in Web UI for quick access — pinned sessions stay at the top regardless of recent activity
- Session error retry: when a session encounters an error (network, API issue, etc.), a retry button now appears in Web UI so you can resume without restarting the entire session
Improved
- Error message clarity: all LLM API errors now prefixed with
[LLM]to distinguish AI service issues from local tool errors — makes debugging faster - Skill auto-creator trigger logic: skill auto-creation now only triggers after user task iterations (not slash commands or skill invocations) — reduces unnecessary skill creation attempts for one-off commands
Fixed
- System prompt injection for slash commands: fixed system prompt duplication bug where invoking a skill via slash command (e.g.,
/code-explorer) could inject the system prompt twice, causing prompt bloat
[0.9.33] - 2026-04-20
Fixed
- Skill evolution targets only user skills: auto-evolution (skill auto-creation and skill reflection) now skips default and brand skills — only user-created skills in
~/.clacky/skills/or.clacky/skills/are eligible for improvement - Skill auto-creation and reflection run in isolated subagents: these background analysis tasks no longer inject messages into the main conversation history; they now fork a dedicated subagent that runs fully independently, preventing any interference with the current session
- User feedback prompt no longer interrupts agent flow: removed stray
STOP.prefix from the in-conversation user-feedback message, allowing the agent to handle feedback naturally without halting unexpectedly
[0.9.32] - 2026-04-20
Added
- Skill auto-evolution system: after completing a complex task (12+ iterations) without an existing skill, the agent automatically analyzes whether the workflow is worth capturing as a reusable skill and creates one via
skill-creatorif it meets the criteria - Skill reflection: after executing a skill via slash command, the agent reflects on whether the skill's instructions could be improved and updates it automatically if concrete improvements are found
Improved
- Shell tool output management: shell tool now uses
LimitStackfor output buffering — per-line character limits, total character budgets, and rolling-window line caps are all enforced in a single, well-tested utility, replacing ad-hoc truncation logic - Progress display: cleaned up progress/spinner lifecycle — all UIs (Web, CLI, UI2, channel) now use a unified
show_progress donepattern instead of a separateclear_progresscall, eliminating stale spinners
Fixed
- Thinking state bleed across sessions: in the Web UI, a "thinking" indicator from a previous session no longer bleeds into a freshly opened session
- Token truncation reliability: improved agent token-limit handling — context trimming now uses a cleaner single-pass approach and removes the dependency on per-message character counting in
MessageHistory - Skill auto-creation crash: fixed
nil.to_aerror inSkillAutoCreatorwhen conversation history contained messages without tool calls
More
- Updated platform HTTP client fallback host for improved connectivity reliability
[0.9.31] - 2026-04-18
Added
- GLM (智谱) model provider support — select GLM models directly from the provider settings
- Claude Opus 4.7 model option in the built-in provider list
- Skill Creator UI — create and edit skills from the Web interface with a visual editor
- Interactive feedback cards —
request_user_feedbacknow renders as a styled interactive card in all UIs (Web, UI2, plain), instead of plain text - Brand deactivation — white-label brand can now be toggled on/off from the settings page
- Empty skill placeholder — shows a friendly message when no skills are installed yet
Improved
- Shell tool large output handling — when a shell command waits for input or times out with large output, the output is now properly truncated and saved to temp files so the agent can still read the full content
- Chinese UI translations expanded with new thinkverbose labels
Fixed
- Bedrock streaming truncation recovery — when a tool call's arguments are truncated by the API, the broken assistant message is now retracted from history and the agent retries cleanly instead of crashing
- First session scroll position in the Web UI sidebar
- Idle status indicator in UI2
- Channels page spacing and skill creator label alignment in Web UI
[0.9.30] - 2026-04-16
Added
- OpenClacky provider support: new built-in provider preset for OpenClacky API (https://api.openclacky.com) with Claude Opus 4.6, Sonnet 4.6/4.5, and Haiku 4.5 models
- Session chunk index system: compressed conversation chunks now include a searchable index with topics and turn counts — the agent can selectively load only relevant historical context instead of re-reading all compressed messages, dramatically reducing token usage in long sessions
- Provider availability indicator: Web UI now shows a real-time status badge (Available/Unavailable) next to each provider in the settings modal, helping users quickly identify which services are reachable
Improved
- Progress streaming UX: API call progress messages (e.g., "Agent is thinking...", compression updates) are now streamed incrementally to the Web UI with better visual feedback and reduced latency
- Brand name localization: brand skill metadata now includes configurable Chinese names (
name_zh) for better display in localized UIs - Idle timer reliability: fixed a race condition where old idle timers from previous CLI sessions could continue running after restarting, causing premature auto-saves
Fixed
- Prompt caching in subagents: subagent tool calls (e.g., skills invoked via
invoke_skill) now correctly inherit and propagate prompt caching behavior from the parent agent, reducing redundant API costs - WeChat Work Ruby 3.1 compatibility: fixed
Queue.empty?crash on Ruby < 3.2 in WeCom channel WebSocket client (method was added in Ruby 3.2.0) - WeChat markdown stripping: incoming messages from WeChat (Weixin) now preserve original text content when stripping markdown decorators, fixing message corruption where text was accidentally removed
[0.9.29] - 2026-04-15
Added
- Rails deployment skill: full end-to-end deploy workflow — create Railway project, provision Postgres, set environment variables, and deploy in one conversation
- Skill Chinese names: skills can now declare a
name_zhfield; the Web UI shows the localized name when the language is set to Chinese - Skill name with underscores: skill identifiers now support underscores (e.g.
my_skill), not just hyphens
Improved
- LLM request timeout: increased from 120 s to 300 s, reducing timeouts when models output large responses or run slowly
- Message compressor: compressor no longer runs when the agent is idle, avoiding unnecessary token consumption
- Socket reliability: improved WebSocket and browser socket handling to prevent dropped connections under load
- Word (.doc) file parsing: Linux/WSL now uses
antiwordas fallback whenstringsis unavailable, improving compatibility
Fixed
- Session name badge clipping: long session names in the sidebar no longer overflow or get clipped
- Browser setup:
install_browser.shis now automatically executed when Node.js is missing during browser setup - Feishu channel setup: retry login check up to 3 times before falling back to manual setup; fixed tab-closed error on entry; browser tool API timeout raised to 30 s
- Language switch rendering: skill cards and session list now re-render correctly after switching UI language
- File path arguments: argument parser now correctly handles paths with spaces and edge-case formats
- Agent working directory: base prompt now reliably sets the correct working directory for all operations
- Feishu WebSocket reconnect: improved reconnection logic for long-lived Feishu channel connections
[0.9.28] - 2026-04-10
Added
- Creator menu: new creator-focused UI for managing brand skills and customizations
- Provider fallback system: automatic fallback to secondary AI providers when primary provider fails
- Chinese localization: full UI translation for skill descriptions and session lists
- Session scroll improvements: better session navigation and scrolling behavior in Web UI
- Brand logo support: custom logos and icons for white-label deployments
Improved
- Browser setup skill: enhanced browser-setup SKILL with more detailed instructions and error handling
- Browser port detection: more robust detection logic for Chrome/Edge debugging port
More
- Test suite improvements and fixes
[0.9.27] - 2026-04-07
Added
- Image understanding in file_reader: the agent can now read and analyse images (PNG, JPG, GIF, WebP) by sending them to the vision API — just attach or reference an image file
- Image auto-resize before upload: large images are automatically resized to fit within model limits (max 5 MB base64), so vision requests no longer fail on high-resolution files
- Rails project installer script: new
install_rails_deps.shscript sets up a complete Ruby on Rails development environment (Ruby, Bundler, Node, Yarn, PostgreSQL) in one command - Uninstall script: new
scripts/uninstall.shto cleanly remove the openclacky gem and its associated files - Shell script build system:
scripts/build/now contains a template compiler (.sh.cc→.sh) with dependency checking — install scripts are generated from composable library modules - stdout streaming in Web UI: agent tool output and shell results are now streamed live to the browser as they arrive, rather than waiting for a full response
- Ctrl+O shortcut in CLI: pressing Ctrl+O in the terminal UI opens a file/output viewer for the current session
Improved
- Smart error recovery on 400 responses: the agent now rolls back its message history when an API request is rejected as malformed (BadRequestError), preventing the same bad message from being replayed on every subsequent turn
- Brand skill reliability: brand skills now auto-retry on transient failures and fall back gracefully if the remote skill is temporarily unavailable
- Shell tool RC file loading: shell commands now correctly source
.bashrc/.zshrcso user-defined aliases and environment variables are available inside tool executions - Shell UTF-8 encoding: fixed a warning about character encoding when shell output contains non-ASCII characters
Fixed
- Shell UTF-8 warning suppression: eliminated noisy encoding warnings that appeared in shell tool output on some macOS setups
More
- Lite mode configuration groundwork for clackyai platform
- Rails new-project skill updated with improved environment checker
newskill improvements: http_server integration and tool category support
[0.9.26] - 2026-04-03
Added
- Long-running shell output streaming: shell commands that run for a long time now stream output progressively to the Web UI instead of waiting until completion — no more blank screen for slow commands
Fixed
- Session rename for non-active sessions: renaming a session that isn't currently active now updates immediately in the sidebar (previously required a page refresh)
- Feishu channel setup timeout: increased timeout to 180s to prevent setup failures on slow networks
- WSL browser setup tip: improved browser-setup skill instructions for WSL environments
- ARM install mirror: install scripts now correctly use the Aliyun mirror on ARM machines
[0.9.25] - 2026-04-02
Added
- CSV file upload support: you can now upload
.csvfiles in the Web UI — agent can read and analyse tabular data directly - Browser install tips: when a browser-dependent command fails, the agent now shows a clear install tip with instructions to set up Chrome/Edge, rather than a cryptic error
- Auto-focus on file upload dialog: the file input field is now auto-focused when the upload dialog opens, improving keyboard UX
- Session ID search in Web UI: you can now search sessions by session ID in addition to session name
Fixed
- WeChat (Weixin) file upload: fixed a bug where file attachments sent via WeChat were not correctly forwarded to the agent
- WeChat without browser: WeChat channel now works even when no browser tool is configured — falls back gracefully
- API message timeout: fixed a race condition in message compression / session serialisation that could cause API requests to time out mid-conversation
- Session chunk replay: fixed a bug where streaming (chunk-based) messages were incorrectly replayed when restoring a session
Improved
- Shell tool robustness:
pkillcommands are now scope-limited to prevent accidental process kills; server process cleans up properly when the terminal is closed - Broken pipe handling: improved error handling in the HTTP server and shell tool to avoid noisy broken-pipe errors on abrupt connection close
More
- Updated product-help skill with new session search and CSV upload documentation
- Updated channel-setup skill with improved WeChat non-browser setup guide
[0.9.24] - 2026-04-02
Added
- New session list & search in Web UI: sidebar now shows full session history with real-time search — find any past conversation instantly
- Session type indicators: sessions are labeled by type (chat / agent) so you can see at a glance what kind of interaction it was
- Image lightbox: click any image in the chat to expand it full-screen with a clean overlay viewer
- Session history replay for streaming messages: chunk-based (streaming) messages are now fully replayed when revisiting a past session
- Xiaomi AI provider: added Xiaomi as a supported AI provider
- Chinese Bing web search: web search now uses cn.bing.com for users in China, improving search relevance and reliability
- Auto-install system dependencies script: agent can now automatically install missing system packages (Node, Python, etc.) via a bundled
install_system_deps.shscript - User message timestamps: each user message now displays the time it was sent
Fixed
- Bedrock file attachments & partial cost tracking: fixed file handling and cost accumulation for AWS Bedrock sessions
- Session name timestamp: fixed incorrect timestamp display on session names
- New session scroll: new sessions now correctly scroll to the latest message
- Feishu WebSocket client crash: fixed a nil-reference error that caused the Feishu WS client to crash on reconnect
[0.9.23] - 2026-04-01
Improved
- API client model parameter propagation: the Client class now accepts and uses an explicit model parameter, enabling better model detection and API routing across all client instantiation points (CLI, agent, subagent)
- Bedrock API detection: improved detection of Bedrock Converse API usage by checking both API key prefix (ABSK) and model prefix (abs-), providing more robust handling of Bedrock models
Fixed
- CLI -c option model initialization: fixed a bug where the CLI command with -c option was not passing the model name to the client, causing routing failures for certain providers
More
- ClackyAI provider updated to use the latest model name format (abs- prefix)
[0.9.22] - 2026-03-31
Added
- ClackyAI provider (Bedrock with prompt caching): added
clackyaias a first-class provider — uses AWS Bedrock under the hood with prompt caching enabled, normalising token usage to Anthropic semantics so cost calculation works correctly - Browser auto-install script:
browser-setupskill can now detect the Chrome/Edge version and automatically download and run the install script, reducing manual setup steps
Fixed
- Feishu setup timeout:
navigatemethod was usingopen(new tab) instead ofnavigate(current tab), causing intermittent timeouts on macOS when opening feishu.cn - Cron task schedule YAML format: fixed a YAML serialisation bug in the scheduler that produced invalid schedule files
[0.9.21] - 2026-03-30
Fixed
- Feishu channel setup compatibility with v2.6: fixed Ruby 3.1 syntax incompatibility in the Feishu setup script that caused failures on newer Feishu API versions
Improved
- skill-creator YAML validation: added frontmatter schema validation for skill files, catching malformed skill definitions before they cause runtime errors
More
- Removed
install_simple.sh(consolidated intoinstall.sh)
[0.9.20] - 2026-03-30
Added
- SSL error retry: LLM API calls now automatically retry on SSL errors (same as other network failures — up to 10 retries with 5s delay)
Fixed
- Brand wrapper not found under root: the install script now places the brand command wrapper in the same directory as the
openclackybinary, so it is always on PATH regardless of whether running as root or a normal user
Improved
- Cron task management refactored to API: cron task CRUD operations now go through the HTTP API instead of running ad-hoc Ruby scripts, making the scheduler more reliable and easier to maintain
- UTF-8 encoding fix for browser tool on Windows: browser command output with non-ASCII characters no longer causes encoding errors
More
- Installer no longer adds
~/.local/binto PATH (wrapper now colocated with gem binary, making the extra PATH entry unnecessary) - Brand install tips in Windows PowerShell installer
[0.9.19] - 2026-03-29
Added
- Bing search engine support: the web search tool now supports Bing in addition to DuckDuckGo and Baidu — improves search coverage and fallback reliability
- WSL1 fallback for Windows installer: the PowerShell installer now automatically falls back to WSL1 when WSL2/Hyper-V is unavailable, ensuring installation succeeds on older or constrained Windows machines
- Upgrade via OSS (CN mirror): the upgrade flow now downloads new gem versions from Tencent OSS, making upgrades faster and more reliable for users in China
Fixed
- WeChat (Weixin) context token refresh: the WeChat channel adapter now correctly refreshes the access token when it expires, preventing message delivery failures
- DOCX parser UTF-8 encoding bug: parsing
.docxfiles with non-ASCII content no longer causes encoding errors - WSL version detection broadened: installer now correctly handles old inbox
wsl.exe(exit code -1) in addition to "feature not enabled" (exit code 1) - Ctrl+C handling in UI: Ctrl+C now correctly interrupts the current operation without leaving the UI in a broken state
- Layout scrollback double-render: fixed a UI rendering issue that caused the scrollback buffer to render twice
More
- Support custom brand name in Windows PowerShell installer
- Redesigned Windows registration flow; removed Win10 MSI dependency
[0.9.18] - 2026-03-28
Fixed
- Brand skill config now reloads from disk on every
load_all: brand skills installed or activated after the initial startup were previously invisible until restart — the skill loader now refreshesBrandConfigeach time it loads skills, so newly installed brand skills take effect immediately
More
- Remove
privatekeyword from all internal classes to improve Ruby 2.6 compatibility - Rename
install.sh→install_full.sh; promoteinstall_simple.sh→install.shas the default entry point
[0.9.17] - 2026-03-27
Added
- Browser screenshots now saved to disk: every screenshot action automatically saves both the original full-resolution PNG and the compressed (800px) version to disk — the agent reports both file paths so you can reference, open, or pass the screenshots to other tools
- Provider "Get API Key" links in onboarding: the setup wizard now shows a direct link to the provider's website when you select a provider that has a
website_url— making it easier to sign up and get your API key without leaving the flow
Fixed
- WebSocket auto-reconnect for Feishu and WeCom channels: the WebSocket clients for Feishu and WeCom now automatically retry the connection after failures — channels stay online without manual intervention after a network hiccup
- Brand command in simple install script: the
clackybrand command was incorrectly invoked ininstall_simple.sh— now fixed so the post-install branding step runs correctly - Windows WSL2 and Hyper-V detection in PowerShell installer: improved detection logic for WSL2 and Hyper-V environments in
install.ps1, reducing false negatives on Windows machines with non-standard configurations
[0.9.16] - 2026-03-27
Fixed
- Skill templates now expand
${ENV_VAR}placeholders: skill SKILL.md files can reference environment variables like${CLACKY_SERVER_HOST}and${CLACKY_SERVER_PORT}— they are now automatically substituted at load time (unknown variables are left as-is) - gemrc restored to default when switching from CN to global network: the install script now correctly restores the system gemrc when the user switches from China mirror mode to the global network, preventing stale mirror configuration from persisting
[0.9.15] - 2026-03-27
Improved
- CN install now downloads gem from OSS mirror: Chinese users no longer hit RubyGems.org or GitHub during installation — the install script fetches the
.gemfile directly fromoss.1024code.comand installs dependencies via Aliyun mirror, making installs faster and more reliable in mainland China
[0.9.14] - 2026-03-27
Fixed
- rubyzip Ruby 2.6 compatibility: replaced
if RUBY_VERSION >= "3.0"conditional in gemspec (evaluated at build time, ineffective at install time) with~> 2.4.1pin — RubyGems now correctly selects rubyzip 2.4.1 when installing on Ruby 2.6
[0.9.13] - 2026-03-27
Added
- Ruby 2.6 compatibility: the gem now installs cleanly on Ruby 2.6 (including macOS system Ruby 2.6.x) — dependency version constraints for
faradayandrougeare now capped so RubyGems automatically selects compatible versions on older Ruby environments
Fixed
- WebSocket pure-Ruby replacement: replaced the native WebSocket dependency with a pure-Ruby implementation to improve cross-platform compatibility
- Ctrl+C warning in UI suppressed: fixed a spurious warning printed to the terminal when pressing Ctrl+C in the interactive UI
- Parser stderr pollution from Bundler warnings filtered: Ruby/Bundler version warnings no longer contaminate parser error messages
[0.9.12] - 2026-03-27
Added
- Improved Anthropic prompt cache hit rate (2-point caching): the last 2 eligible messages are now marked for caching instead of 1, so Turn N's cached prefix is still a hit in Turn N+1 — significantly reducing API costs for long sessions
Improved
- Ruby 2.6+ and macOS system Ruby compatibility: the gem now works with the macOS built-in Ruby (2.6) and LibreSSL — includes polyfills for
filter_map,File.absolute_path?,URI.encode_uri_component, and a pure-Ruby AES-256-GCM fallback for LibreSSL environments where native OpenSSL GCM is unavailable - Install script streamlined for China: the installer is now significantly simplified and more reliable for users in China — direct Alibaba Cloud mirror for RubyGems, plus a dedicated CN-optimized install path
- Compression no longer crashes when system prompt is frozen: fixed a bug where message compression would raise
FrozenErrorby mutating the shared system prompt object — it now safely duplicates the string before modification
Fixed
- Compression crash on frozen system prompt:
MessageCompressornow calls.dupon the system prompt before injecting the compression instruction, preventingFrozenErrorin long sessions
[0.9.11] - 2026-03-25
Added
- Network-aware installer mirrors: the install script now automatically detects whether you're in China and picks the fastest mirror (RubyGems China mirror, GitHub, etc.) — no manual configuration needed
- Shell rc-file loading: the shell tool now sources your
.zshrc/.bashrcso commands that depend on environment variables or aliases set in your shell profile work correctly
Improved
- Browser tool
evaluatetargets active page: JavaScript evaluation now automatically targets the currently active browser tab instead of the last opened one, soevaluatealways runs in the right context - Browser MCP process cleaned up on server shutdown: the
chrome-devtools-mcpnode process is now stopped when the server shuts down, preventing orphaned processes that held onto port 7070 - Server worker process isolation: workers are now spawned in their own process group, ensuring grandchild processes (e.g. browser MCP) are fully cleaned up during zero-downtime restarts
- Channel status via live API:
channel statusnow queries the running server API instead of reading~/.clacky/channels.ymldirectly, so it reflects the actual runtime state - Idle compression timer race fix: the compression thread is now registered inside a mutex before starting, eliminating a race where
cancel()could miss an in-flight compression and leave history in an inconsistent state - Compression token display accuracy: the post-compression token count now uses the rebuilt history estimate instead of the stale pre-compression API count
- Shell process group signals:
SIGTERM/SIGKILLare now sent to the entire process group (-pgid) instead of just the child PID, ensuring backgrounded subprocesses are also killed on timeout
Fixed
- Task error session save: sessions are now correctly saved to disk even when a task ends with an error, preventing session loss on agent failures
- History load and model load bugs: fixed crashes when loading sessions with missing or malformed history/model fields
- Default model updated to Claude claude-sonnet-4-6: bumped the default Gemini model reference from
gemini-2.5-flash→gemini-2.7-flash
More
- Renamed gem references from
open-clackytoopenclackyacross docs, gemspec, and scripts
[0.9.10] - 2026-03-24
Added
- One-click gem upgrade in Web UI: a new "Upgrade" button in the Web UI lets you update Clacky to the latest version without touching the terminal
- WebSocket connection status tips: the Web UI now shows a clear indicator when the WebSocket connection is lost or reconnecting, so you always know if the server is reachable
- Master/worker server architecture: the server now runs in a master + worker process model, enabling zero-downtime gem upgrades — the master restarts workers seamlessly after an upgrade
Fixed
- Relative paths in write/edit tools: paths like
./foo/bar.rbare now correctly resolved relative to the working directory instead of the process root, preventing unexpected file placement
[0.9.9] - 2026-03-23
Added
- Real-time skill loading in Web UI: the
/skillautocomplete now fetches the live skill list on every trigger, so newly installed or updated skills appear immediately without a page reload - Skill source type in autocomplete: each skill in the autocomplete now carries its source type (default / user / project / brand), making it easy to see where a skill comes from
- Browser configure API: a new
POST /api/browser/configureendpoint writesbrowser.ymland hot-reloads the browser daemon — the browser-setup skill now configures the browser in one step without manual file editing - Brand skill path confidentiality: temporary script paths used by encrypted brand skills are now hidden from the agent's output and never disclosed to the user
Improved
- Stale brand skills cleared on license switch: activating a new license now automatically removes encrypted skill files from the previous brand, preventing decryption errors and stale skill behaviour
- Brand skill confidentiality enforcement: the system prompt and per-skill injection both include an explicit notice that internal script paths are runtime details and must never be shown to the user
- Rebind license confirmation: re-binding a license in Settings now shows a confirmation dialog before proceeding, preventing accidental license changes
Fixed
- HTTP server spec stability: fixed flaky test assertions in
http_server_spec.rbthat caused intermittent CI failures
More
- Updated
gem-releaseskill with improved CHANGELOG writing guidelines
[0.9.8] - 2026-03-23
Added
- Real browser automation via CDP: the browser tool now drives a real Chromium browser using the Chrome DevTools Protocol — structured action schemas, snapshots, screenshots, and full page interaction are all supported
- Browser DevTools MCP integration: the browser connects to Chrome's DevTools via MCP, enabling deeper inspection and control beyond standard WebDriver capabilities
- Browser manager in Web UI: a new browser management panel lets you start, stop, restart, and monitor the connected browser session directly from the Web UI
- WeChat (Weixin) channel support: the agent can now receive and reply to messages via WeChat, including sending and receiving images
- Feishu Docs integration: the agent can now read and process Feishu (Lark) documents directly as context
- PDF preview in Web UI: PDFs attached to a conversation now render inline in the chat interface
- Session source tracking: sessions now track where they originated (Web UI, Feishu, WeCom, WeChat, CLI) and display the source in the sessions list
- Sessions list in Web UI: a dedicated sessions UI shows all your recent conversations with source badges and load-more pagination
- Setup session type: a special onboarding session type is available to guide new users through initial configuration
- Personal website skill: a built-in skill that generates and publishes a personal profile page (linktree-style) from your user profile
- Sub-directory
.clackyrulesloading: project rules files in subdirectories are now discovered and merged automatically - Self-improving response parser: the parser now repairs itself when it encounters malformed tool-call sequences, improving reliability with all models
- UJK format support: the agent can now handle UJK-encoded content in file and channel inputs
- Browser toggle in Web UI: a toggle in the settings sidebar lets you enable or disable browser control without restarting
- Logo and QR code on homepage: the Web UI homepage now displays the product logo and a shareable QR code
- Clear thinking in channel: channel messages now strip internal
<thinking>blocks before sending the reply to the user
Fixed
invoke_skilltool-call sequence: skill invocations via tool call now correctly follow the expected request/response order, preventing out-of-sequence tool results- URI parsing for edge cases: fixed a crash when parsing certain malformed or unusual URIs
- Doc reader parsing: fixed an issue where some document formats were not correctly parsed by the doc reader tool
- Zip skill location discovery: fixed skill loading from zip files installed in non-standard locations
- Install script compatibility: the install script now explicitly uses bash to avoid failures on systems where
/bin/shis not bash
More
- Rename
working→thinkingin agent status display - Channel and Web UI now sync session state in real time
- Cost usage display improvements
[0.9.7] - 2026-03-20
Added
- AWS Bedrock support: the agent can now use Claude models hosted on AWS Bedrock (including the Japan region
bedrock-jpprovider withjp.anthropic.claude-sonnet-4-6andjp.anthropic.claude-haiku-4-6) - Brand skill confidentiality protection: when a brand skill is injected, the agent is now instructed to never reveal, quote, or paraphrase the skill's proprietary instructions — keeping white-label content secure
- Slash command guard in skill injection: skills invoked via
/skill-namecommands now include a system notice that prevents the agent from callinginvoke_skilla second time for the same request - "Show system skills" toggle in Web UI: the Skills settings page now has a checkbox to show or hide built-in system skills, making it easier to find your own custom skills in a long list
Fixed
- Shell commands with non-UTF-8 output no longer crash: output from commands that produce GBK, Latin-1, or binary bytes (e.g. some
cator legacy tool output) is now safely transcoded to UTF-8 instead of raising an encoding error - Task interruption no longer duplicates or garbles output: a non-blocking progress-clear path ensures the user's message appears immediately on screen when a task is interrupted, without leaving stale progress lines behind
- Terminal inline content resize no longer overflows into the fixed toolbar area: when an inline block grows past the available output rows, the terminal now scrolls correctly instead of writing into the status bar region
- Brand skills always show the latest version: the skills list in the Web UI now correctly reflects the most recent version of a brand skill after an update
More
- Rename brand skill
slugfield tonamefor consistency across the codebase - Rename
brandname→productnamein brand config internals - Unify skill injection into a shared
inject_skill_as_assistant_messagemethod - Update built-in skill definitions
[0.9.6] - 2026-03-18
Added
- Environment-aware context injection: the agent now automatically detects your OS, desktop environment, and screen info and includes it in every session — so it can give OS-specific advice without you having to explain your setup
- File attachments via IM channels: you can now send images and documents directly through Feishu or WeCom to the agent, which processes them just like files sent via the Web UI
- Unified file attachment pipeline for Web UI: images and Office/PDF documents can now be attached in the web chat interface with automatic image compression before upload
- Skills can now be installed from local zip files:
skill-addnow accepts a local file path (not just a URL), so you can install skills from a downloaded zip without hosting it anywhere - Skill import bar in Web UI: the Skills settings page now has an import bar where you can paste a URL or upload a local zip file directly — no terminal needed to install new skills
$SKILL_DIRavailable in skill instructions: skill files can now reference$SKILL_DIRto get the absolute path to their own directory, making it easy to reference supporting files with correct pathsproduct-helpbuilt-in skill: the agent can now answer questions about Clacky's own features, configuration, and usage through a dedicated built-in skill
Fixed
- PDF and Office files now appear in glob results: file discovery tools no longer skip
.pdf,.docx, and other document formats — they show up correctly in file listings - Chat history visible after message compression: sessions where all user messages were compressed no longer show a blank history — prior conversation is now correctly replayed
- Stale message reference in task history: an internal bug (
@messagesvs@history) that could cause incorrect task history in compressed sessions is fixed - File-only messages handled correctly in channel UI: sending a file without text via IM channels no longer causes a display issue in the channel UI
- WeCom WebSocket client stability: fixed async dispatch and frame acknowledgment in the WeCom WS client to reduce dropped messages and connection issues
- Session serializer variable fix: corrected a stale variable reference in session replay that could cause errors when restoring sessions
web_fetchcompatibility improved: better request headers make web page fetching more reliable across more sites- Reasoning content preserved in API messages:
reasoning_contentfields are no longer stripped from messages, fixing potential issues with reasoning-capable models
More
- Markdown links in chat now open in a new tab
- Removed public skill store tab from the Skills panel (store content is now integrated differently)
- Reduce WebSocket ping log noise in HTTP server
- Centralize message cleanup logic in
MessageHistory
[0.9.5] - 2026-03-17
Added
- License activation now navigates directly to Brand Skills tab: after entering a valid license key, the UI automatically opens the Brand Skills settings tab — no extra steps needed to find and load your skills
- Version badge always clickable: clicking the version number in the sidebar now always works regardless of update state; when already on the latest version, a small "up to date" popover appears and auto-dismisses
Improved
- MessageHistory domain object: agent message handling is now encapsulated in a dedicated
MessageHistoryclass, making the codebase cleaner and message operations (compression, caching, transient marking) more reliable and testable - Brand skill isolation via transient message marking: brand skill subagent calls no longer spin up a separate isolated agent; instead, messages are marked as transient and stripped after the call — simpler architecture with the same isolation guarantees
- License activation flow simplified: the
activate-licenseskill is replaced with direct in-UI navigation and settings highlighting, reducing round-trips and making activation feel more native
Fixed
- Tilde (
~) in file paths now expanded correctly: tool preview checks now expand~to the home directory before checking file existence, so paths like~/Documents/file.txtno longer falsely report as missing - Subagent with empty arguments no longer crashes: when a skill invocation passes empty arguments, a safe placeholder message is used instead of raising an error
- Version popover shows "up to date" state: clicking the version badge when already on the latest version now shows a friendly confirmation instead of silently falling through to open the settings panel
More
- Simplify error messages in brand config decryption
- Update test matchers to match simplified error messages
[0.9.4] - 2026-03-16
Fixed
- Prompt cache strategy reverted to simple last-message anchoring: the experimental assistant-message-anchored cache strategy introduced in v0.9.3 was causing regressions; caching is now restored to a simpler, proven approach where the last message is used as the cache breakpoint
[0.9.3] - 2026-03-16
Added
- Brand logo banner on web server startup: a styled block-font logo now displays in the terminal when
clacky serverlaunches, giving a polished startup experience - BlockFont renderer replaces artii dependency: the gem now ships its own high-quality block-font engine for rendering large ASCII logos, removing the external
artiidependency and enabling full offline use - Hover-to-expand token usage and session info bar: hovering over the token usage line or session info bar in the WebUI now expands it to show full details, keeping the UI compact by default
- Redesigned setup panel with Back button and Custom provider support: the model setup flow now includes a Back button for navigation and a dedicated "Custom provider" path, making it easier to configure non-standard API endpoints; also fixes a dropdown re-entry bug
- License activation via non-blocking top banner: the brand activation flow no longer blocks the entire UI with a full-screen panel — it now shows a slim top banner, and activation is handled through a dedicated skill
startSoulSessionexposed on Onboard public interface: third-party integrations can now trigger soul session initialization directly from the onboard module
Improved
- Browser tool simplified and config-driven: the browser tool setup is now handled through a unified config object, removing ~250 lines of complex auto-restart logic and making the tool more predictable and maintainable
- Prompt caching more stable: cache anchoring now uses the last assistant message as the stable boundary, reducing cache misses caused by system prompt variations; caching is correctly restored for both Anthropic and OpenRouter paths
- Message format extracted to dedicated modules: OpenAI and Anthropic message formatting now live in separate modules (
Clacky::MessageFormat::OpenAIandClacky::MessageFormat::Anthropic), making the client code easier to read and test - WeCom channel reliability: auth failure handling is improved with proper reconnection logic; the
channel-setupskill guidance is also updated for clarity - Install script and license expiry handling: the install script is streamlined, license-expired states are handled gracefully, and encrypted skills are decrypted at load time
Fixed
- Prompt cache stability across turns: cache was occasionally invalidated between turns due to message boundary drift; now anchored reliably to the last assistant message
request_user_feedbackmissing from session history replay: feedback prompts sent during a session were not rendered when replaying history in the WebUI; they now appear correctly as assistant messages- Brand activation banner not shown when API key is missing: the banner now correctly appears even when no API key is configured, with a translated skip warning
- Zip extraction security: zip files are now read in chunks with size verification, preventing potential zip-bomb or oversized-file issues
More
- Remove browser tool auto-restart logic that was causing instability in headless environments
- Add security design documentation
[0.9.2] - 2026-03-15
Fixed
- Version upgrade button now appears reliably: the new version check now queries RubyGems directly instead of relying on local gem mirror sources (which often lag behind by hours or days), so the upgrade badge shows up promptly when a new version is available. Falls back to the local mirror if RubyGems is unreachable.
- Edit confirmation diff output restored: the file diff was not displaying correctly when the input area paused during an edit confirmation prompt; this is now fixed.
[0.9.1] - 2026-03-15
Added
- Session context auto-injection: the agent now automatically injects the current date and active model name into each conversation turn, so it always knows what day it is and which model it's running — helpful for time-sensitive tasks and multi-model setups
- Kimi/Moonshot extended thinking support: reasoning content is now preserved and echoed back correctly in message history, fixing HTTP 400 errors when using Kimi's extended thinking API
Improved
- Browser tool install UX: the
agent-browsersetup flow has been redesigned with a dedicated install script and clearer guidance, making first-time setup smoother
[0.9.0] - 2026-03-14
Added
- Version check and one-click upgrade in WebUI: a version badge in the sidebar shows when a newer gem is available; clicking it opens an upgrade popover with a live install log and a restart button — no terminal needed
- Upgrade badge state machine: the badge cycles through four visual states — amber pulsing dot (update available), spinning ring (installing), orange bouncing dot (restart needed), green check (restarted successfully)
- Markdown rendering in WebUI chat: assistant responses are now rendered as rich markdown — headings, bold, code blocks, lists, and inline code are all formatted properly instead of displayed as raw text
- Session naming with auto-name and inline rename: sessions are automatically named after the first exchange; users can double-click any session in the sidebar to rename it inline
- Session info bar with live status animation: a slim bar below the chat header shows the session name, working directory, and a pulsing animation while the agent is thinking or executing tools
- Restore last 5 sessions on startup: the WebUI now reopens the five most recent sessions on startup instead of just the last one
- Image and file support for Feishu and WeCom: users can now send images and file attachments through Feishu and WeCom IM channels; the agent reads and processes them like any other input
- Idle compression in WebUI: the agent now compresses long conversation history automatically when the session has been idle, keeping context efficient without manual intervention
Improved
- Glob tool recursive search: bare pattern names like
controllerare now automatically expanded to**/*controller*so searches always return results across all subdirectories - Onboard flow: soul setup is now non-blocking; the confirmation page is skipped for a faster first-run experience; onboard now asks the user to name the AI first, then collects the user profile
- Token usage display ordering: the token usage line in WebUI now always appears below the assistant message bubble, not above it
- i18n coverage: settings panel dynamically-rendered fields are now translated correctly at render time
Fixed
- Upgrade popover stays open during install and reconnect: the popover is now locked while a gem install or server restart is in progress, preventing accidental dismissal that would leave the badge stuck in a spinning state
- Session auto-name respects default placeholders: session names are now assigned based on message history only, not the agent's internal name field, so placeholder names like "Session 1" no longer block the auto-naming logic
- Token usage line disappears after page refresh: token usage data is now persisted in session history and correctly re-rendered when the page is reloaded
- Shell tool hangs on background commands: commands containing
&(background operator) no longer cause the shell tool to block indefinitely - White flash on page load: the page is now hidden until boot completes, preventing a flash of unstyled content or the wrong view on startup
- Theme flash on refresh: the theme (dark/light) is now initialized inline in
<head>so the correct colours are applied before any content renders - Onboard flash on reload: the onboard panel no longer briefly appears when a session already exists during soul setup
More
- Rename channels "Test" button to "Diagnostics" for clarity
- Default-highlight the first item in skill autocomplete
[0.8.8] - 2026-03-13
Added
- i18n system with zh/en runtime switching: WebUI now supports Chinese and English; all UI text is served through an
I18nmodule and switches instantly without a page reload - Onboard language selection step: first-time setup now opens with a language picker (中文 / English) before any configuration, so the entire onboard experience is conducted in the user's chosen language
- Onboard "what's your name" step: onboard flow now asks for the user's preferred name early on and addresses them by name throughout the rest of the setup
- Chinese SOUL.md default: when a user onboards in Chinese and skips the soul-setup conversation, a Chinese-language SOUL.md is written automatically so the assistant responds in Chinese by default
Fixed
- Onboard WS race condition: fixed a bug where the first auto-triggered
/onboardcommand was silently lost — the WebSocketsession_listevent arrived before the session view was active and redirected the UI to the welcome screen, hiding the agent's response
[0.8.7] - 2026-03-13
Added
- PDF file upload and reading: users can now upload PDF files directly in the WebUI chat; the agent reads and analyzes the content via the built-in
pdf-readerskill - WebUI favicon and SVG icons: browser tab now shows the Clacky icon
- Public skill store install: skills from the public store can be installed directly via the WebUI without a GitHub URL
- Auto-kill previous server on startup: launching
clacky servenow automatically kills any previously running instance via pidfile, preventing port conflicts
Improved
- Brand skill loading speed: loading brand skills no longer triggers a network decryption request — name and description are now read from the local
brand_skills.jsoncache, making New Session significantly faster - Memory update UX: memory update step now shows a spinner and info-style message instead of a bare log line
- Browser snapshot output: snapshot output is compressed to reduce token cost when the agent uses browser tools
- Subagent output: subagent task completion now shows a brief info line instead of a full "Task Complete" block, reducing noise in the parent agent's context
Fixed
- Subagent token delta on first iteration: subagent now inherits
previous_total_tokenscorrectly, fixing an inflated token count on the first tool iteration - Chrome DevTools inspect URL: updated the remote debugging URL to include the
#remote-debuggingfragment for correct navigation - Shell output token explosion: long lines in shell output are now truncated to prevent excessive token usage
More
- Binary file size limit lowered from 5 MB to 512 KB to reduce accidental token cost
kill_existing_serverlogic moved from CLI intoHttpServerfor cleaner separation- Browser tool prefers
snapshot -ioverscreenshotfor lower token cost - Cross-platform PID file path using
Dir.tmpdirinstead of hardcoded/tmp
[0.8.6] - 2026-03-12
Added
- Channel system with Feishu & WeCom support: integrated IM platform adapters — agents can now receive and reply to messages via Feishu (WebSocket) and WeCom channels
- Skill encryption (brand skills): brand skills can be distributed as encrypted
.encfiles, decrypted on-the-fly using license keys; includes a full key management and manifest system - Cron task creator & skill creator default skills: two new built-in skills for creating scheduled tasks and new skills directly from chat
- Image messages in session history restore: session restore now correctly replays image-containing messages, including thumbnail display in the UI
- Skill auto-upload to cloud: skills can be uploaded to the cloud store from within the UI
Improved
- WeCom setup flow: improved step-by-step WeCom channel configuration UX (#11)
- Skill autocomplete UI: enhanced slash-command autocomplete interaction — better keyboard navigation, input behavior, and visual feedback (#6)
- Chrome setup UX: simplified Chrome installation flow with improved error messages and progress indicators (#8)
- WebUI colors and layout: polished light/dark mode colors, sidebar alignment, and badge styles for a more consistent look
- Test suite speed:
CLACKY_TESTguard prevents brand skill network calls during tests — suite now runs ~60× faster per example
Fixed
- Duplicate user bubble on skill install: prevented an extra chat bubble appearing when installing a skill from the store
- Image thumbnails in session replay: restored missing image thumbnails when replaying historical sessions
- WebUI permission mode: Web UI sessions now correctly use
confirm_allpermission mode - Feishu WS log noise: removed emoji characters from WebSocket connection log messages
More
- Subagent memory update disabled to reduce noise
- Ping request
max_tokensbumped from 10 to 16 - WebUI updated to use new cron-task-creator and skill-creator skills
[0.8.5] - 2026-03-11
Fixed
- SSL connection on mise/Homebrew Ruby: disabled SSL certificate verification in Faraday HTTP client to fix
SSL_connecterrors that affected users who installed Ruby viamise+ Homebrew on macOS (where the system CA bundle is not linked automatically) - ChannelManager startup crash: fixed
NoMethodErrorfor undefinedClacky.logger— now correctly callsClacky::Logger
[0.8.4] - 2026-03-10
Added
- License verify & download skills: brand distribution can now push skills to clients via license heartbeat — skills are downloaded and installed automatically on activation and heartbeat
- Web UI theme system: dark/light mode toggle with full CSS variable theming, persistent across sessions; all UI components (sessions, tasks, settings) updated to use theme variables
Improved
- Skill loader default agent:
SkillLoadernow applies a sensible default agent value, simplifying skill configuration for common cases - Web UI modernized: redesigned session and task lists with active indicators, improved hover effects, and inline SVG icons (removed Lucide CDN dependency)
Fixed
- UTF-8 input handling: invalid UTF-8 bytes in terminal UI input and output are now scrubbed cleanly instead of raising encoding errors
- UI thread deadlock: progress and fullscreen threads now stop gracefully on shutdown, preventing rare deadlocks
- IME composition input: slash
/command button is now disabled during IME composition (e.g. Chinese input), preventing double-submit on Enter - CLI
clearcommand: fixed a regression that broke theclacky clearcommand
More
- Refactor: rename
set_skill_loadertoset_agentinUiControllerfor clarity - Chore: update onboard skill default AI identity wording
- Fix: append user shim after skill injection for Claude API compatibility
[0.8.3] - 2026-03-09
Added
- Slash command skill injection: skill content is now injected as an assistant message for all
/skill-namecommands, giving the agent full context of the skill instructions at invocation time - Collapsible
<think>blocks in web UI: model reasoning enclosed in<think>…</think>tags is rendered as a collapsible "Thinking…" section instead of raw text
Improved
- Web UI settings panel: refined layout and styles for the settings modal
- Session state restored on page refresh: "Thinking…" progress indicator and error messages are now restored from session status after a page reload instead of disappearing
Fixed
- AgentConfig shallow-copy bug: switching models in Settings no longer pollutes existing sessions —
deep_copy(JSON round-trip) is now used everywhere instead ofdupto prevent shared@modelshash mutation across sessions
[0.8.2] - 2026-03-09
Added
- Skill count limits: two-layer guard to keep context tokens bounded — at most 50 skills loaded from disk (
MAX_SKILLS) and at most 30 injected into the system prompt (MAX_CONTEXT_SKILLS); excess skills are skipped and a warning is written to the file logger
Improved
- Skill
agentfield is now self-declared in eachSKILL.mdinstead of being listed inprofile.yml— makes skill-to-profile assignment portable and removes the need to edit profile config when adding skills - Slash command autocomplete in the web UI now filters by the active session's agent profile, so only relevant skills appear
Fixed
- CLI startup crash:
ui: nilkeyword argument now correctly passed toAgent.new
[0.8.1] - 2026-03-09
Added
- Agent profile system: define named agent profiles (
--agent coding|general) with custom system prompts and skill whitelists viaprofile.yml; built-incodingandgeneralprofiles included - Skill autocomplete dropdown in the web UI: type
/in the chat input to see a filtered list of available skills - File-based logger (
Clacky::Logger): thread-safe structured logging to~/.clacky/logs/for debugging agent sessions - Session persistence on startup: server now restores the most recent session for the working directory automatically on boot
- Long-term memory update system: agent automatically updates
~/.clacky/memories/after sessions using a whitelist-driven approach; memories persist across restarts and are injected into agent context on startup - recall-memory skill with smart meta injection: the
recall-memoryskill now receives a pre-built index of all memory files (topic, description, last updated) so the agent can selectively load only relevant memories without reading every file - Compressed message archiving: older messages are compressed and archived to chunk Markdown files to keep context window manageable
- Network pre-flight check: connection is verified before agent starts; helpful VPN/proxy suggestions shown on failure
- Encrypted brand skills: white-label brand skills can now be shipped as encrypted
.encfiles for privacy
Improved
- Memory update logic tightened: whitelist-driven approach, raised trigger threshold, and dynamic prompt — reduces false writes and improves reliability
- Slash commands in onboarding (
/create-task,/skill-add) now use the pending-message pattern so they work correctly before WS connects - Sidebar shows "No sessions yet" placeholder during onboarding
- Session delete is now optimistic — UI updates immediately without waiting for WS broadcast, and 404 ghost sessions are cleaned up automatically
- Tool call summaries from
format_callare now rendered in the web UI for cleaner tool output display - Agent error handling and memory update flow stabilized
Fixed
- Create Task / Create Skill buttons during onboarding now correctly send the command after WS connects (previously messages were silently dropped)
- Pending slash commands are now queued until the session WS subscription is confirmed
working_dir: niladded to all toolexecutesignatures to fix unknown keyword errors
More
clackyinstall script robustness and UX improvements- Disabled rdoc/ri generation on gem install for faster installs
- Strip
.git/.svn/.hgdirectories from glob results
[0.8.0] - 2026-03-06
Added
- Browser tool: AI agent can now control the user's Chrome browser via Chrome DevTools Protocol (CDP) — click, fill forms, take screenshots, scroll, and interact with pages using the user's real login session
- White-label brand licensing system: customize the web UI with your own name, logo, colors, and skills via
brand_config.yml - Brand skills tab in the web UI with private badge, shown only when brand skills are configured
- Slash command prompt rule: skill invocations (e.g.
/skill-name) are now expanded inside the agent at run time, enabling mid-session skill triggering
Improved
- Server-side brand name rendering eliminates the first-paint brand name flash in the web UI
- Collapsible tool call blocks in the web UI — long tool outputs are now grouped and collapsed by default
safe_shellnow catchesArgumentErrorin addition toBadQuotedStringfor more robust command parsing- Eliminated
Dir.chdirglobal state in session handling, fixing race conditions in concurrent sessions
Fixed
- Skill slash commands are now expanded inside
agent.runso that/onboardand similar commands work correctly when triggered mid-session - Observer state machine handles
awaitingstate transitions properly
More
- Disabled ClaudeCode
ANTHROPIC_API_KEYenvironment variable fallback inAgentConfigfor cleaner env isolation - Updated gemspec, lockfile, and install script
- Added web asset syntax specs and brand config specs
[0.7.9] - 2026-03-07
Added
- Cursor-paginated message history in web UI for large session navigation
confirm_allpermission mode for WebUI human sessions- Re-run onboard entry in settings panel
Fixed
- Expand
~in file system tools path arguments (file_reader, glob, grep, write, edit) - Sort sessions newest-first with scheduled sessions at bottom
- Tasks and skills sidebar items now static — no longer disappear on scroll
- Delete task now also removes associated schedules
More
- Add frontmatter (
name,description,disable-model-invocation,user-invocable) to onboard skill
[0.7.8] - 2026-03-06
Added
- Skills panel in web UI: list all skills, enable/disable with toggle, view skill details
- Hash-based routing (
#session/:id,#tasks,#skills,#settings) with deep-link and refresh support - REST API endpoints for skills management (
GET /api/skills,PATCH /api/skills/:name/toggle) disabled?helper onSkillmodel for quick enabled/disabled state checks
Improved
- Centralized
Routerobject in web UI — single source of truth for all panel switching and sidebar highlight state - Web UI frontend split further:
skills.jsextracted as standalone module - Ctrl-C in web server now exits immediately via
StartCallbacktrap override - Skill enable/disable now writes
disable-model-invocation: false(retains field) instead of deleting it
Fixed
- Sidebar highlight for Tasks and Skills stuck active after navigating away
- Router correctly restores last view on page refresh via hash URL
Changed
- Removed
plan_onlypermission mode from agent, CLI, and web UI
[0.7.7] - 2026-03-04
Added
- Web UI server with WebSocket support for real-time agent interaction in the browser (
clacky serve) - Task scheduler with cron-based automation, REST API, and scheduled task execution
- Settings panel in web UI for viewing and editing AI model configurations (API keys, base URL, provider presets)
- Image upload support in web UI with attach button for multimodal prompts
- Create Task button in the task list panel for quick task creation from the web UI
create-taskdefault skill for guided automated task creation
Improved
- Web UI frontend split into modular files (
ws.js,sessions.js,tasks.js,settings.js) for maintainability - Web session agents now run in
auto_approvemode for unattended execution - Session management moved to client-side for faster, round-trip-free navigation
- User message rendering moved to the UI layer for cleaner architecture
- No-cache headers for static file serving to ensure fresh asset delivery
Fixed
DELETE/PUT/PATCHHTTP methods now supported via custom WEBrick servlet- Task run broadcasts correctly after WebSocket subscription; table button visibility fixed
- Mutex deadlock in scheduler
stopmethod when called from a signal trap context splitused instead ofshellsplitfor skill arguments to avoid parsing errors
More
- Add HTTP server spec and scheduler spec with full test coverage
- Minor web UI style improvements and reduced mouse dependency
[0.7.6] - 2026-03-02
Added
- Non-interactive
--message/-mCLI mode for scripting and automation (run a single prompt and exit) - Real-time refresh and thread-safety improvements to fullscreen UI mode
Improved
- Extract string matching logic into
Utils::StringMatcherfor cleaner, reusable edit diffing - Glob tool now uses force mode in system prompt for more reliable file discovery
- VCS directories (
.git,.svn, etc.) defined asALWAYS_IGNORED_DIRSconstant
Fixed
- Subagent fork now injects assistant acknowledgment to fix conversation structure issues
- Tool-denial message clarified; added
action_performedflag for better control flow
More
- Add memory architecture documentation
- Minor whitespace cleanup in
agent_config.rb
[0.7.5] - 2026-02-28
Fixed
- Tool errors now display in low-key style (same as tool result) to avoid alarming users for non-critical errors the agent can retry
- Session list now shows last message instead of first message for better context
- Shell tool uses login shell (
-l) instead of interactive shell (-i) for proper environment variable loading
Improved
- Shell tool now reliably loads user environment (PATH, rbenv, nvm, etc.) on every execution
- Session list shows resume tip (
clacky -a <session_id>) to help users continue previous sessions
More
- Add GitHub Release creation step to gem-release skill
- Remove debug logging from API client
[0.7.4] - 2026-02-27
Added
- Real-time command output viewing with Ctrl+O hotkey
- GitHub skill installation support in skill-add
- Rails project creation scripts in new skill
- Auto-create ~/clacky_workspace when starting from home directory
Improved
- System prompt with glob tool usage guidance
- Commit skill with holistic grouping strategy and purpose-driven commits
- Theme color support for light backgrounds (bright mode refinements)
- Shell output handling and preview functionality
- Message compressor optimization (reduced to 200)
Fixed
- UI2 output re-rendering on modal close and height changes
- Double render issue in inline input cleanup
- Small terminal width handling for logo display
- Extra newline in question display
More
- Commented out idle timer debug logs for cleaner output
[0.7.3] - 2026-02-26
Fixed
- Modal component validation result handling after form submission
- Modal height calculation for dynamic field count in form mode
Improved
- Provider ordering prioritizes well-tested providers (OpenRouter, Minimax) first
- Updated Minimax to use new base URL (api.minimaxi.com) and M2.5 as default
- Updated model versions: Claude Sonnet 4.6, OpenRouter Sonnet 4-6, Haiku 4.5
- Minimax model list now includes M2.1 and M2.5 (removed deprecated Text-01)
[0.7.2] - 2026-02-26
Added
- Cross-platform auto-install script with mise and WSL support
- Built-in provider presets for quick model configuration
- Terminal restart reminder after installation
- More bin commands for improved CLI experience
- Shields.io badges to README
Improved
- Install script robustness and user experience
- Code-explorer workflow with forked subagent mode explanation
- README with features, usage scenarios, and comparison table
- Installation section with clearer instructions
Fixed
- Binary file detection using magic bytes only (prevents false positives on multibyte text)
- Display user input before executing callback in handle_submit
- Install script now uses gem-only approach (removed homebrew dependency)
More
- Minor formatting fixes in install script and README
- Removed skill emoji for cleaner UI
- Removed test-skill
- Updated install script configuration
[0.7.1] - 2026-02-24
This release brings significant user experience improvements, new interaction modes, and enhanced agent capabilities.
🎯 Major Features
Subagent System
- Deploy subagent for parallel task execution
- Subagent mode with invoke_skill tool and code-explorer skill integration
- Environment variable support and model type system
Command Experience
- Tab completion for slash commands
- Ctrl+O toggle expand in diff view
- JSON mode for structured output
- Streamlined command selection workflow with improved filtering
Agent Improvements
- Idle compression with auto-trigger (180s timer)
- Improved interrupt handling for tool execution
- Preview display for edit and write tools in auto-approve mode
- Enable preview display in auto-approve mode
Configuration UI
- Auto-save to config modal
- Improved model management UI
- Better error handling and validation
Added
- Quick start guides in English and Chinese
- Config example and tests for AgentConfig
Improved
- Refactored agent architecture (split agent.rb, moved file locations)
- Simplified thread management in chat command
- Dynamic width ratio instead of fixed MAX_CONTENT_WIDTH
- API error messages with HTML detection and truncation
- Help command handling
Changed
- Removed deprecated Config class (replaced by AgentConfig)
- Removed confirm_edits permission mode
- Removed keep_recent_messages configuration
- Removed default model value
Fixed
- Use ToolCallError instead of generic Error in tool registry
- Handle AgentInterrupted exception during idle compression
- Handle XML tag contamination in JSON tool parameters
- Prevent modal flickering on validation failure
- Update agent client when switching models to prevent stale config
- Update is_safe_operation to not use removed editing_tool? method
More
- Optimize markdown horizontal rule rendering
- Add debug logging throughout codebase
[0.7.0] - 2026-02-06
This is a major release with significant improvements to skill system, conversation memory management, and user experience.
🎯 Major Features
Skill System
- Complete skill framework allowing users to extend AI capabilities with custom workflows
- Skills can be invoked using shorthand syntax (e.g.,
/commit,/gem-release) - Support for user-created skills in
.clacky/skills/directory - Built-in skills: commit (smart Git helper), gem-release (automated publishing)
Memory Compression
- Intelligent message compression to handle long conversations efficiently
- LLM-based compression strategy that preserves context while reducing tokens
- Automatic compression triggered based on message count and token usage
- Significant reduction in API costs for extended sessions
Configuration Improvements
- API key validation on startup with helpful prompts
- Interactive configuration UI with modal components
- Source tracking for configuration (file, environment, defaults)
- Better error messages and user guidance
Added
- Request user feedback tool for interactive prompts during execution
- Version display in welcome banner
- File size limits for file_reader tool to prevent performance issues
- Debug logging throughout the codebase
Improved
- CLI output formatting and readability
- Error handling with comprehensive debug information
- Test coverage with 367 passing tests
- Tool call output optimization for cleaner logs
Changed
- Simplified CLI architecture by removing unused code
- Enhanced modal component with new configuration features
Fixed
- Message compression edge cases
- Various test spec improvements
[0.6.4] - 2026-02-03
Added
- Anthropic API support with full Claude model integration
- ClaudeCode environment compatibility (ANTHROPIC_API_KEY support)
- Model configuration with Anthropic defaults (claude-3-5-sonnet-20241022)
- Enhanced error handling with AgentError and ToolCallError classes
- format_tool_results for tool result formatting in agent execution
- Comprehensive test suite for Anthropic API and configuration
- Absolute path handling in glob tool
Improved
- API client architecture for multi-provider support (OpenAI + Anthropic)
- Config loading with source tracking (file, ClaudeCode, default)
- Agent execution loop with improved tool result handling
- Edit tool with improved pattern matching
- User tip display in terminal
Changed
- Refactored Error class to AgentError base class
- Renamed connection methods for clarity (connection → openai_connection)
Fixed
- Handle absolute paths correctly in glob tool
[0.6.3] - 2026-02-01
Added
- Complete skill system with loader and core functionality
- Default skill support with auto-loading mechanism
- Skills CLI command for skill management (
clacky skills list/show/create) - Command suggestions UI component for better user guidance
- Skip safety check option for safe_shell tool
- UI2 component comprehensive test suite
- Token output control for file_reader and shell tools
- Grep max files limit configuration
- File_reader tool index support
- Web fetch content length limiting
Improved
- File_reader line range handling logic
- Message compression strategy (100 message compress)
- Inline input wrap line handling
- Cursor position calculation for multi-line inline input
- Theme adjustments for better visual experience
- Skill system integration with agent
- Gem-release skill metadata standardization
- Skill documentation with user experience summaries
Fixed
- Skill commands now properly pass through to agent
- Session restore data loading with -a or -c flags
- Inline input cursor positioning for wrapped lines
- Multi-line inline input cursor calculation
[0.6.2] - 2026-01-30
Added
--themeCLI option to switch UI themes (hacker, minimal)- Support for reading binary files (with 5MB limit)
- Cost color coding for better visibility
- Install script for easier installation
- New command handling improvements
Improved
- User input style enhancements
- Tool execution output simplification
- Thinking mode output improvements
- Diff format display with cleaner line numbers
- Terminal resize handling
Fixed
- BadQuotedString parsing error
- Token counting for every new task
- Shell output max characters limit
- Inline input cursor positioning
- Compress message display (now hidden)
Removed
- Redundant output components for cleaner architecture
[0.6.1] - 2026-01-29
Added
- User tips for better guidance and feedback
- Batch TODO operations for improved task management
- Markdown output support for better formatted responses
- Text style customization options
Improved
- Tool execution with slow progress indicators for long-running operations
- Progress UI refinements for better visual feedback
- Session restore now shows recent messages for context
- TODO area UI enhancements with auto-hide when all tasks completed
- Work status bar styling improvements
- Text wrapping when moving input to output area
- Safe shell output improvements for better readability
- Task info display optimization (only show essential information)
- TODO list cleanup and organization
Fixed
- Double paste bug causing duplicate input
- Double error message display issue
- TODO clear functionality
- RSpec test hanging issues
Removed
- Tool emoji from output for cleaner display
[0.6.0] - 2026-01-28
Added
- New UI System (UI2): Complete component-based UI rewrite with modular architecture (InputArea, OutputArea, TodoArea, ToolComponent, ScreenBuffer, LayoutManager)
- Slash Commands:
/help,/clear,/exitfor quick actions - Prompt Caching: Significantly improved performance and reduced API costs
- Theme System: Support for multiple UI themes (base, hacker, minimal)
- Session Management: Auto-keep last 10 sessions with datetime naming
Improved
- Advanced inline input with Unicode support, multi-line handling, smooth scrolling, and rapid paste detection
- Better terminal resize handling and flicker-free rendering
- Work/idle status indicators with token cost display
- Enhanced tool execution feedback and multiple tool rejection handling
- Tool improvements: glob limits, grep performance, safe shell security, UTF-8 encoding fixes
Fixed
- Input flickering, output scrolling, Ctrl+C behavior, image copying, base64 warnings, prompt cache issues
Removed
- Legacy UI components (Banner, EnhancedPrompt, Formatter, StatusBar)
- Max cost/iteration limits for better flexibility
[0.5.6] - 2026-01-18
Added
- Image Support: Added support for image handling with cost tracking and display
- Enhanced Input Controls: Added Emacs-like Ctrl+A/E navigation for input fields
- Session Management: Added
/clearcommand to clear session history - Edit Mode Switching: New feature to switch between different edit modes
- File Operations: Support for reading from home directory (
~/) and current directory (.) - Image Management: Ctrl+D hotkey to delete images functionality
Improved
- Cost Tracking: Display detailed cost information at every turn for better transparency
- Performance: Test suite speed optimizations and performance improvements
- Token Efficiency: Reduced token usage in grep operations for cost savings
Fixed
- Fixed system Cmd+V copy functionality for multi-line text
- Fixed input flickering issues during text editing
- Removed unnecessary blank lines from image handling
[0.5.4] - 2026-01-16
Added
- Automatic Paste Detection: Rapid input detection automatically identifies paste operations
- Word Wrap Display: Long input lines automatically wrap with scroll indicators (up to 15 visible lines)
- Full-width Terminal Display: Enhanced prompt box uses full terminal width for better visibility
Improved
- Smart Ctrl+C Handling: First press clears content, second press (within 2s) exits
- UTF-8 Encoding: Better handling of multi-byte characters in clipboard operations
- Cursor Positioning: Improved cursor tracking in wrapped lines
- Multi-line Paste: Better display for pasted content with placeholder support
0.5.0 - 2026-01-11
Added
- Agent Mode: Autonomous AI agent with tool execution capabilities
- Built-in Tools:
safe_shell- Safe shell command execution with security checksfile_reader- Read file contentswrite- Create/overwrite files with diff previewedit- Precise file editing with string replacementglob- Find files using glob patternsgrep- Search file contents with regexweb_search- Search the web for informationweb_fetch- Fetch and parse web pagestodo_manager- Task planning and trackingrun_project- Project dev server management
- Session Management: Save, resume, and list conversation sessions
- Permission Modes:
auto_approve- Automatically execute all toolsconfirm_safes- Auto-execute safe operations, confirm risky onesconfirm_edits- Confirm file edits onlyconfirm_all- Confirm every tool executionplan_only- Plan without executing
- Cost Control: Track and limit API usage costs
- Message Compression: Automatic conversation history compression
- Project Rules: Support for
.clackyrules,.cursorrules, andCLAUDE.md - Interactive Confirmations: Preview diffs and shell commands before execution
- Hook System: Extensible event hooks for customization
Changed
- Refactored architecture to support autonomous agent capabilities
- Enhanced CLI with agent command and session management
- Improved error handling and retry logic for network failures
- Better progress indicators during API calls and compression
Fixed
- API compatibility issues with different providers
- Session restoration with error recovery
- Tool execution feedback loop
- Safe shell command validation
- Edit tool string matching and preview
0.1.0 - 2025-12-27
Added
- Initial release of Clacky
- Interactive chat mode for conversations with Claude
- Single message mode for quick queries
- Configuration management for API keys
- Support for Claude 3.5 Sonnet model
- Colorful terminal output with TTY components
- Secure API key storage in
~/.clacky/config.yml - Multi-turn conversation support with context preservation
- Command-line interface powered by Thor
- Comprehensive test suite with RSpec
Features
clacky chat [MESSAGE]- Start interactive chat or send single messageclacky config set- Configure API keyclacky config show- Display current configurationclacky version- Show version information- Model selection via
--modeloption