All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.7.4 - 2026-02-25
- Configurable keys overhaul: Array type support (admin_ids, allow_from, group_allow_from), labels and option labels on all keys, new keys for Telegram rate limits, Deals params, Embedding model, Cocoon port, Agent base_url
- ArrayInput component: Tag-style input for managing array config values in the dashboard
- Memory sources browser: List indexed knowledge sources with entry counts, expand to view individual chunks with line ranges
- Workspace image preview: Serve raw images with correct MIME type, 5MB limit, SVG sandboxing
- Tool RAG persistence: RAG config (enabled, topK, alwaysInclude, skipUnlimitedProviders) now persists to YAML
- Tasks bulk clean: Clean tasks by terminal status (done, failed, cancelled) instead of just done
- GramJS bot session persistence: Save/load MTProto session string to avoid re-auth on restart
- Remove "pairing" DM policy: Simplified to open/allowlist/disabled — pairing was unused
- Dashboard Config page reorganized with Telegram settings section, Cocoon port panel, extended Tool RAG controls
- Setup wizard flow reordered, wallet and modules steps cleaned up
- Dashboard and Config pages restructured for better UX
- Soul editor textarea fills available height
- Select dropdown renders via portal (z-index stacking fix)
- Model selection moved into Provider step (no longer separate Config step)
- Async log pollution during CLI setup suppressed
- Telegram commit notification extra blank lines removed
- owner_id auto-syncs to admin_ids on save
0.7.3 - 2026-02-24
- Claude Code provider: Auto-detect OAuth tokens from local Claude Code installation (~/.claude/.credentials.json on Linux/Windows, macOS Keychain) with intelligent caching and 401 retry
- Reply-to context: Inject quoted message context into LLM prompt when user replies to a message
- Fragment auth: Support Telegram anonymous numbers (+888) via Fragment.com verification
- 7 new Telegram tools (66 → 73): transcribe-audio, get/delete-scheduled-messages, send-scheduled-now, get-collectible-info, get-admined-channels, set-personal-channel
- Voice auto-transcription: Automatic transcription of voice/audio messages in handler
- Gated provider switch: Dashboard provider change requires API key validation before applying
- Shared model catalog: 60+ models across 11 providers, extracted to
model-catalog.ts(eliminates ~220 duplicated lines)
- TEP-74 encoding: Correct jetton transfer payload encoding and infrastructure robustness
- Replace deprecated
claude-3-5-haikuwithclaude-haiku-4-5 - Seed phrase display in CLI setup
- Bump pi-ai 0.52 → 0.54, hono 4.11.9 → 4.12.2, ajv 8.17.1 → 8.18.0
0.7.2 - 2026-02-23
- Plugins route: WebUI now reflects runtime-loaded plugins instead of static config
0.7.1 - 2026-02-23
- Agent Run/Stop control: Separate agent lifecycle from WebUI — start/stop the agent at runtime without killing the server. New
AgentLifecyclestate machine (stopped/starting/running/stopping), REST endpoints (POST /api/agent/start,/stop,GET /api/agent/status), SSE endpoint (GET /api/agent/events) for real-time state push,useAgentStatushook (SSE + polling fallback), andAgentControlsidebar component with confirmation dialog - MCP Streamable HTTP transport:
StreamableHTTPClientTransportas primary transport for URL-based MCP servers, with automatic fallback toSSEClientTransporton failure.mcpServerslist is now a lazy function for live status. Resource cleanup (AbortController, sockets) on fallback. Improved error logging with stack traces
- WebUI setup wizard: Neutralize color accent overuse — selection states, warning cards, tag pills, step dots all moved to neutral white/grey palette; security notice collapsed into
<details>; "Optional Integrations" renamed to "Optional API Keys"; bot token marked as "(recommended)" - Jetton send: Wrap entire
sendJettonflow in try/catch for consistentPluginSDKErrorpropagation; removeSendMode.IGNORE_ERRORS(errors are no longer silently swallowed); fix||→??on jetton decimals (prevents0decimals being replaced by9)
0.7.0 - 2026-02-21
- WebUI Setup Wizard: 6-step guided onboarding flow (Welcome, Provider, Telegram, Config, Wallet, Connect) with shared Shell sidebar layout, React context state management, server-side validation mirror, and "Start Agent" button with seamless setup-to-dashboard transition
- Local LLM Provider: New "local" provider for OpenAI-compatible servers (Ollama, vLLM, LM Studio, llama.cpp) with auto-model discovery from
/modelsendpoint, CLI--base-urloption, and WebUI provider card getEffectiveApiKey()helper for consistent API key resolution across all LLM call sites- ASCII banner for
teleton setup --uimatchingteleton start - 86 setup route tests + 39 validation tests (898 total tests)
- Security audit remediation (27 fixes): MCP env var blocklist, sendStory symlink-safe path validation (realpathSync), DB ATTACH/DETACH proxy for plugin isolation, BigInt float precision (string-based decimals), debounce clamp, SendMode.IGNORE_ERRORS removed, URL quote escaping, wallet JSON validation, pino redact, and more
fetchWithTimeout(10s) + http/https scheme validation on local model discovery- Model array capped to 500 entries to prevent unbounded growth
- Early exit when provider=local but
base_urlmissing - Non-interactive onboarding: relaxed
--api-keyfor local/cocoon providers - WebUI UX: CSS specificity fixes, bot token inline field, wallet address prominent display, TonAPI/Tavily as plain optional fields
Git history rewritten to fix commit attribution (email update from tonresistor@github.com to the account owner's actual email). All commit hashes changed; code, dates, and messages are identical. Tags re-pointed to new hashes. Force-pushed to origin. No code or functionality was affected.
0.6.0 - 2026-02-20
- Cocoon Network proxy-only LLM provider with XML tool injection
- Moonshot (Kimi K2.5 / K2 Thinking) LLM provider
- Mistral LLM provider
- Pino structured logging — migrated from console.* across entire codebase
- MCP client support with CLI management commands (
teleton mcp add/remove/list) - Plugin Marketplace with secrets management and download functionality
- WebUI: Config + MCP pages, custom Select component, centralized CSS
- WebUI: accordion UI, dashboard settings
- Tool RAG, web tools, and admin enhancements
- Type safety overhaul: reduced
as anyfrom 135 to 32 instances - Setup wizard migrated to
@inquirer/promptswith auto-resolve owner - All dependencies upgraded to latest versions
- Data integrity and cleanup from full audit
0.5.2 - 2026-02-16
- Auto-install npm dependencies for plugins on load
- Robust local embedding model loading (ONNX cache dir fix for global installs)
- Dead dependencies from package.json
- Obsolete TGAPI.md documentation file
0.5.1 - 2026-02-16
- CI/CD pipelines for SDK, WebUI, and Docker builds
0.5.0 - 2026-02-16
- Data-bearing tool categories with strict DB row types
- Plugin event hooks:
onMessageandonCallbackQuery - WebUI: inline dropdown task details with overflow fix
- WebUI: auth system, dashboard, tool config, plugins page, and documentation pages
- Plugin SDK expansion to 53 methods
- RAG rebalancing for improved search relevance
- Core hardening and open-source cleanup
- Plugin SDK extraction to standalone package
- Key caching, transaction reliability, debouncer, and market extraction
0.4.0 - 2026-02-14
- Plugin SDK with namespaced services (
sdk.ton,sdk.telegram,sdk.db) - DeDust prices and token-info tools
/taskadmin command connected to scheduled task system- Local embeddings with hybrid vector search (sqlite-vec + FTS5)
- Casino extracted as external plugin
- DEX tools reorganized by provider with scope security enforcement
- Memory init deduplicated, using
isVectorSearchReady() - System prompts hardened with memory size management
- Crypto-safe
randomIdused across codebase
- sqlite-vec startup logs no longer print before ASCII banner
- ChatId validation prevents entity resolution crashes on display names
DELETE+INSERTfor vec0 tables (upsert is unsupported)- Auto-migrate legacy plugin data from
memory.dbon first startup - Plugin SDK hardened: escape hatch removed, timeouts and cleanup added
- Sender ID always included for unambiguous user identification
- Built-in casino module (replaced by external plugin)
0.3.0 - 2026-02-13
- Local ONNX embeddings (
Xenova/all-MiniLM-L6-v2) - Hybrid vector + FTS5 search for RAG
- Docker image name corrected in README
- Guard against undefined model from
pi-ai getModel() - Bot messages ignored in DMs to prevent bot-to-bot loops
0.2.5 - 2026-02-12
- Per-group module permissions with
/modulesadmin command - Swap tools allowed in groups with module level display
/clearcommand crashing on missing vec0 table- Post-audit hardening: timeouts, seqno race, cached endpoints
- Bot token made mandatory when deals module is enabled
- Unused
@tonkite/highload-wallet-v3dependency
0.2.4 - 2026-02-10
- Memory database properly closed on shutdown
- Atomic deal state guards prevent race conditions
0.2.3 - 2026-02-10
- MarketPriceService crash on fresh installs
0.2.2 - 2026-02-10
- Peer cache used in
bridge.getMessagesfor reliable entity resolution
0.2.1 - 2026-02-10
- Tool registration decentralized into co-located
ToolEntryarrays
- Cached peer entity used in get-history for reliable channel resolution
- Mention detection fallback and duplicate message guard
0.2.0 - 2026-02-10
- Deals and market extracted into standalone modules
- Gemini schema sanitizer for Google provider compatibility
- Casino extracted into self-contained plugin module
- Dead casino files (game-executor, validators)
0.1.21 - 2026-02-09
- Prompt injection defense and tool context scoping
clearHistoryorder, cached endpoint, tasks indexinstall.shreads from/dev/ttyand uses lowercase Docker image name
- Jackpot system removed entirely
0.1.20 - 2026-02-09
getTonPrice()caching with 30-second TTL- Completed deals logged to business journal
- Transcript files older than 30 days cleaned up at startup
- Shallow copy returned from
getTonPricecache
0.1.19 - 2026-02-08
- Folder IDs start at 2 (IDs 0-1 reserved by Telegram)
GetDialogFiltersreturning object instead of arrayDialogFiltertitle wrapped inTextWithEntitiesfor GramJS layer 222+- Atomic status preconditions added to deal verify-payment
0.1.18 - 2026-02-08
- Optimized runtime logs and TonAPI rate limiting
0.1.17 - 2026-02-08
/bootadmin command for agent bootstrap
- Deals and Market merged into single module option
- Imperative placeholders removed from MEMORY.md template
0.1.16 - 2026-02-08
- Agent empty response when
memory_writeis the only tool call - @ston-fi bundled with all transitive deps via external blacklist
0.1.15 - 2026-02-08
- @ston-fi bundled with all transitive dependencies
0.1.10 - 0.1.14 - 2026-02-08
- Repeated @ston-fi bundling and dependency resolution fixes
postinstallscript removed to avoid preinstall blocker
0.1.9 - 2026-02-08
- @ston-fi/api bundled to avoid pnpm-only install blocker
0.1.8 - 2026-02-08
scripts/directory copied in Dockerfile build stage
0.1.7 - 2026-02-08
- Docker build issues resolved
0.1.6 - 2026-02-08
- First public npm release with Docker support
- Docker build failing due to husky in production install
- Docker tags lowercased, release decoupled from Docker
0.1.4 and earlier - 2026-02-08
- Initial release of Teleton Agent
- Autonomous Telegram AI agent with TON blockchain integration
- Multi-provider LLM support (Anthropic, OpenAI, Google, xAI, Groq, OpenRouter)
- Deals system with inline bot, payment verification, and auto-execution
- Styled inline buttons and custom emoji via MTProto layer 222 patch
- Interactive setup wizard with wallet safety and model selection
- Admin commands:
/model,/policy,/pause,/resume,/wallet,/stop,/loop - TonAPI key support for higher rate limits
- Professional distribution (npm, Docker, CI/CD)
- Pre-commit hooks and linting infrastructure