# Changes ## v0.1.19 — 2026-06-17 - Stripped all meta-instructions (Avoid, Blend, Vary) from all 19 personas to prevent fourth-wall breaking - Rewrote prompts as pure character voice descriptions ## v0.1.18 — 2026-06-17 - Added defaultCustomPersona fallback when textarea is empty - Simplified persona resolution to single clean code path - Added example prompt in help_text with blockquote formatting - Fixed Yoda persona (removed, was an outlier) - Fixed /ai persona list to show dropdown display names - Fixed @-mention resetting conversation history to prevent context bleed ## v0.1.17 — 2026-06-17 - Replaced persona library with 19 juxtaposed pop-culture characters with role inversions - Added Dolphin-Llama-optimized descriptions (350-token cap, cliché kill-switch, 30/70 blend) - Switched CustomPersona config field from single-line text to multiline textarea - Changed default persona from `assistant` to `carlin` - Removed 16 legacy personas without career-path suffix - Bumped version to v0.1.17 ## v0.1.16 — 2026-06-16 - Fixed `resolvePersona()` to reject unknown persona IDs (misspellings now return "Unknown persona" instead of saving) - Updated Shakespeare persona to William Shakespeare himself with iambic pentameter - Removed `/ai model` commands (model selection is admin-only via System Console) - Removed persona description truncation in list output ## v0.1.15 — 2026-06-16 - Updated Shakespeare persona description ## v0.1.14 — 2026-06-16 - Removed model switching commands from help text and handler ## v0.1.13 — 2026-06-16 - Removed `/resetmatty` slash command (redundant with `/ai new`) - Wrapped persona list output in code block for proper Mattermost formatting ## v0.1.12 — 2026-06-16 - Rewrote help text with grouped sections (Chat, Personas, Other) - Updated title to "Matty -- forkless' annoying sidekick" ## v0.1.11 — 2026-06-16 - Fixed persona override bug — KV override value is now resolved through `resolvePersona()` before being used as the system prompt ## v0.1.10 — 2026-06-16 - Added `/ai persona ` command to switch personas (persisted to KV store) - Added `/ai persona` to show current active persona - Added `/ai persona list` to list all personas with descriptions - Added Debug Logging toggle (bool setting in System Console) - Wrapped all LogInfo calls with DebugLogging check - Added Ollama API call body logging (model, URL, full JSON payload) - Context trimming: Brevity now limits how much conversation history is sent - Token auto-calculation: Brevity auto-calculates `num_predict` for Ollama ## v0.1.9 — 2026-06-16 - Updated Trump persona with vocabulary of a 12 year old ## v0.1.8 — 2026-06-16 - Added context trimming based on Brevity setting (fewer sentences = less history) - Adjusted token auto-formula to `100 + brevity * 75` ## v0.1.7 — 2026-06-16 - Added Ollama API call logging (model, URL, full request body) - Fixed OllamaClient to accept log function from plugin API - Updated infomercial persona to remove conflicting "BUT WAIT THERE'S MORE" - Added `"Config loaded"` error logging on configuration failures ## v0.1.6 — 2026-06-16 - Stable persona IDs (short IDs like "trump", "carlin" — never change) - `resolvePersona()` map in server/persona.go - Full config logging per Chat request (13 fields) - General instructions added to all personas ## v0.1.5 — 2026-06-16 - Adjusted Brevity auto-token curve - Added "only respond to latest message" instruction to system prompt ## v0.1.4 — 2026-06-16 - Brevity now more tightly enforced - Added penalty fields (repeat_penalty, frequency_penalty) as ints divided by 10 ## v0.1.3 — 2026-06-16 - Added EngagementEngine (Sleep/Active states, 5-min timeout) - Added Persona dropdown with 18 personas + Custom Persona override - Added Model dropdown with 6 models from the user's Ollama server - Added Brevity dropdown (1, 2, 3, 5, 10, unlimited) - Added Repeat Penalty and Frequency Penalty number fields - Added `/resetmatty` slash command to clear context - Bot renamed to @matty (was @matterless) - Bot posts directly to channel (no thread replies) - Debug logging added (LogInfo for chat requests) - "Asleep" message when Ollama is unreachable ## v0.1.2 — 2026-06-16 - Fixed Brevity field type (string → int and back to string for dropdown compat) ## v0.1.1 — 2026-06-16 - Fixed config loading by changing RepeatPenalty/FrequencyPenalty from float64 to int - Added error logging to OnConfigurationChange() - Config loaded log now shows all settings on save ## v0.1.0 — 2026-06-16 - Project scaffolded: DESIGN.md, PROJECT.md, CHANGES.md, DECISIONS.md, README.md, .gitignore, Makefile - Plugin skeleton: main.go, plugin.go, configuration.go, command.go - Go module initialised with Mattermost SDK dependency - Ollama client with ChatCompletion and streaming - Conversation store with KV-backed context - Rate limiter with configurable requests/minute - Working @-mention detection via MessageHasBeenPosted - Slash command handler for /ai - Bot account auto-creation via API.CreateBot() - Stop word matching for natural disengagement - Streaming Ollama responses into channel posts - dev/docker-compose.yml with Mattermost 11.6.1 + PostgreSQL 16 - DESIGN.md with @-mention interaction model - go-standards skill created in skill tree