All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Added cron-based job scheduling system. Supports two job types: "script" (runs a Starlark script) and "agent" (starts a new AI session with a prompt). Jobs are managed via MCP tools (
schedule_list,schedule_create,schedule_update,schedule_delete,schedule_enable,schedule_disable), admin API endpoints (/api/schedules), and a new Schedules page in the admin UI. Jobs can optionally send output to a chat channel. Persists tosecure/data/schedules.json. - Added
run_onceoption for schedules — one-off jobs that auto-disable after execution. Supported across the store, scheduler, MCP tools, admin UI, and API. - Added rendering of Markdown, and code block in to the "/sessions" page of the admin UI
- Added MCP tools so the AI can help the user switch the default model used. It list all available models, and will switch it for them when requested.
- Added a settings page in the Admin area to switch the default model used in new sessions.
- Added the ability to additionally fetch tools as part of the streaming messages in the admin UI. Tools by default aren't streamed, and only appear in the history once a page is refreshed.
- Added full streaming of text and tools with updates from the AI into the session pages.
- Added
/contextcommand to the admin UI chat, displaying context window usage (model, tokens, cost, cache stats) for the current session. - Added Discord detail mode slash commands (
/mode-simple,/mode-thinking,/mode-tools,/mode-full) to control the level of detail shown in Discord responses. Thinking blocks appear as purple embeds, tool calls as orange embeds. Mode is persisted per-channel tochannel_modes.json. - Added admin API endpoints (
GET/PUT /api/providers/:name/mode) for remote control of per-channel detail modes.
- Updated the MCP server from a local standalone server triggered by OpenCode to an endpoint in the orchestrator, and passed it as a remote MCP server with auth token to OpenCode.
- Cleared the default opencode agent prompt that were causing a "persona conflict" _as described by the llm) with the OpenPact assistant's own prompt.
- Disabled additional OpenCode built-in tools (
question,task,todowrite) that were still available to the AI outside of OpenPact's MCP security boundary.
- Thinking/reasoning blocks (and tool/file/snapshot blocks) not displayed when loading historical messages on the sessions page. The Go
MessagePartstruct was dropping all fields excepttypeandtextduring deserialization — replaced withjson.RawMessageto pass OpenCode API responses through unmodified. - Invalid JSON scheme was being passed for tools. Gemini ignored it, but Claude was stricter.
- Added full
tooland MCP usage and information into the admin UI session logs. - Fixed code block width in the admin UI to prevent overflow and horizontal scrolling.
- Version file and version number displayed in admin UI and Docker output
- Discord typing indicator when waiting for AI response
- Auto-discovery of MCP binary (no longer requires manual config)
- Daily memory files are now group readable/writable; context auto-refreshes when new memories arrive
- First blog post and image zoom plugin for docs site
- Providers (Discord, Slack, Telegram) moved into
internal/providers/, excluded from coverage - OpenCode engine restructured to start as root and drop to unprivileged
openpact-aiuser - Admin UI session view overhauled and theme aligned with YummyAdmin
/contextslash command updated to unwrap information correctly- Homepage banner updated from "Coming Soon" to "Beta — open for testing"
- GitHub links now point directly to the public repository
- Security hardening: environment variables discarded after use, basic tools disabled for AI
- Docker folder permissions for volume mounts
- Docker build permissions
- Increased timeout for long-running AI tasks
- Initial Build
[Deployment] Notes for deployment [Added] for new features. [Changed] for changes in existing functionality. [Deprecated] for once-stable features removed in upcoming releases. [Removed] for deprecated features removed in this release. [Fixed] for any bug fixes. [Security] to invite users to upgrade in case of vulnerabilities. [YANKED] Note the emphasis, used for Hotfixes