v1.2.0 Latest
— 2026-07-25
Security hardening for the read-only query lookup, live model lists on every provider, and a fix for the Tools page not saving.
Security
- query_database: SQL comments are now stripped before the read-only check runs, so comment-separated variants of INTO OUTFILE / DUMPFILE (for example INTO/**/OUTFILE) can no longer slip past it. LOAD_FILE, SLEEP, BENCHMARK and GET_LOCK are blocked outright, and only one statement per call is accepted.
- query_database: password hashes, activation keys, session tokens and secret-shaped option values are redacted from result rows before they are sent to your AI provider. The row limit is now applied by the database rather than in PHP, so a large table cannot exhaust memory.
- The plugin no longer registers or grants capabilities it does not use. Its tools are read-only, so the file-editing and SQL-write capability gates now belong to the Pro add-on, which grants them on its own activation.
- File-deny rules are case-insensitive on macOS and Windows — wp-config.php, .env and key material cannot be read through a differently-cased path. .htpasswd and SQLite database files were added to the deny list.
- Chat attachments are stored with a neutral file extension, and the upload folder is protected with modern Apache 2.4 syntax (the previous 2.2 directives could fail open or 500 the folder).
Added
- Live model lists now cover every provider. OpenAI, DeepSeek, Grok, GitHub Models and Ollama join Anthropic, Gemini and OpenAI-compatible endpoints in querying the vendor for what your key can actually use — cached for six hours, refreshed automatically when you change a key or endpoint.
Fixed
- The Tools page now saves correctly. Switching a tool off previously had no effect: the saved list could only ever grow, because list values were being merged by position instead of replaced.
- Starting a conversation with a different provider no longer inherits the default provider's model (a Gemini conversation could be created pointing at a Claude model, and then fail on the first message). An unknown model can no longer be saved against a conversation.
- Provider and network errors are reported in the interface instead of being stored as assistant replies and replayed to the model on every later turn.
- The Anthropic connection test no longer reports an empty reply on a healthy key.
- The OpenAI-compatible connector now says so plainly when no base URL has been set, instead of failing with a generic invalid-URL error.
Changed
- The plugin description and admin screens describe what the assistant looks up, rather than listing tool names, and no longer reference capabilities this plugin does not contain.
- Two duplicate lookups that did the same thing under a second name were removed (21 tools, down from 23).
v1.1.0 — 2026-06-11
Live model catalogues, voice dictation, a far more reliable Ollama connector, security hardening, and a critical Pro-compatibility fix.
Added
- Live model catalogues for every hosted provider (Anthropic, OpenAI, Gemini, DeepSeek, Grok, GitHub Models, and custom OpenAI-compatible gateways): the model picker now lists what your API key can actually use — queried from the vendor, cached for six hours, refreshed automatically when you change a key or endpoint. New models appear without a plugin update.
- Voice dictation: a microphone button next to Send turns speech into text right in the composer (browsers with the Web Speech API — Chrome, Edge, Safari). Nothing is sent to your AI provider until you review the text and press Send.
- Ollama now talks to the native /api/chat endpoint with a 16k context window (filterable via seanosai_ollama_num_ctx) — long tool-calling conversations no longer get silently truncated mid-audit, and thinking models (gemma, deepseek-r1) keep their reasoning thread across tool rounds.
Fixed
- CRITICAL for Pro owners: Pro write tools silently failed to register whenever the Tools page had been saved (an argument-shape mismatch in the registration hook) — the assistant would claim it was read-only even with Seanos AI Pro active. Update Pro to 1.0.1 alongside this release.
- Ollama "invalid tool call arguments" error when a model called a tool with no parameters (the follow-up request re-encoded empty arguments as a JSON array instead of an object).
- OpenAI "-pro" tier models (gpt-5.5-pro, o1-pro, o3-pro) are excluded from the model picker — they only speak the Responses API and rejected every chat message with "This is not a chat model".
- query_database: EXPLAIN is restricted to SELECT statements (EXPLAIN ANALYZE executes the statement it plans on MySQL 8.0.32+, which could mutate data through the read-only gate) and SELECT … INTO OUTFILE/DUMPFILE is blocked.
- read_file: wp-config.php backup copies (wp-config.php.bak and friends) are now denied alongside the original — same database credentials inside.
- tail_log no longer loads the whole log into memory (a multi-gigabyte debug.log could exhaust PHP memory); it reads the final 512 KB.
- Uninstall now actually removes per-user OAuth tokens (the cleanup looked for the wrong meta-key names).
- get_component_params no longer surfaces the encrypted OAuth client secret alongside the (already-redacted) API keys.
- The assistant no longer references a Pro-only tool (import_chat_attachment) when Pro is not installed — attachment questions get an accurate answer instead of a "tool not found" error.
Changed
- The conversation provider dropdown only offers providers with a usable credential — unconfigured providers no longer appear as dead options.
- Model dropdowns sort flagship-family-first, newest-first, so the implicit default for a new conversation is the provider's current flagship.
- Dashboard: the "One-click audits" box was removed — both audits live at the top of the prompt library, where you can pick the provider and model before running.
- Readme and plugin description re-worded to state the read-only scope precisely (the AI's toolset is read-only; the plugin stores only its own settings, conversation history, and chat attachments).
- Verified on WordPress 6.9 with PHP 8.3 / 8.4; Tested up to 7.0.