-
Notifications
You must be signed in to change notification settings - Fork 42
migration comments ai scoring
Breaking. The "Score new comments with AI" feature is gone from OpenStation. The toggle, its option, its REST route, its two filters and the comment-save hooks that drove it have all been removed. Nothing in the plugin analyzes content in the background any more: every AI call OpenStation makes is one a user asked for.
Nothing here changes what the Comments window shows by default. Its spam-confidence column is heuristic and never depended on AI.
| Surface | Kind |
|---|---|
openstation_comments_ai_is_enabled |
filter |
openstation_comments_ai_toggled |
action |
GET / POST desktop-mode/v1/comments/ai-settings
|
REST route |
desktop_mode_comments_ai_moderation |
site option |
openstation_comments_ai_is_enabled(), openstation_comments_ai_provider_configured()
|
PHP functions |
OPENSTATION_COMMENTS_AI_OPTION |
constant |
| OpenStation Preferences → Features → "Score new comments with AI" | UI |
set_comments_ai |
MIO ability |
commentsAi, commentsAiUrl in the shell page config |
JS config keys |
The wp_insert_comment and edit_comment listeners are gone with them, so no comment is queued for analysis on save.
-
openstation_comments_window_spam_score— the Comments window's per-row spam confidence. It is computed by the heuristics inapps/comments/parts/spam-score.php, which never depended on AI. The filter, its signature and its 0–100 range are exactly as they were; only the AI moderation's own listener on it has been withdrawn. -
desktop-mode/analyze-comment— the ability that runs the spam/harm analysis for one comment on demand still exists, still returns{ topic, ai_summary, harmful, spam }, and is still gated onmoderate_comments. It was never offered to the model during a search turn and still is not. What changed is that nothing calls it automatically. -
_desktop_mode_ai_analysiscomment meta, and theopenstation_ai_comment_analyzedaction that fires when the ability writes it. - The AI assistant, its own Features toggle, and every
openstation_ai_*hook around the search loop.
Migration 8 runs on the next admin request and does two things:
wp_unschedule_hook( 'desktop_mode_ai_analyze_comment' );
delete_option( 'desktop_mode_comments_ai_moderation' );Queued analysis events would no-op anyway with the scheduler gone; clearing them keeps wp cron event list honest. Existing _desktop_mode_ai_analysis meta is left alone — it is hidden, harmless, and still the shape the ability writes.
If you read the option directly, stop: it no longer exists and no code consults it. If you filtered openstation_comments_ai_is_enabled to gate scoring by environment, that filter never fires now.
Everything the removed code did is still reachable from a plugin, which is why it left: it never needed to be in core.
-
Trigger:
wp_insert_commentandedit_comment, both Core hooks. -
Analysis:
wp_ai_client_prompt(), Core's AI Client, with credentials and model from Settings → Connectors. -
Surfacing:
openstation_comments_window_spam_score, which is unchanged. A listener that raises the score for its own stored verdict reproduces the column behaviour exactly.
A plugin doing that needs nothing private from OpenStation.
This wiki is generated from the docs/ directory — edits made here are overwritten by the next sync.
To change a page, open a pull request against docs/.
Guides
- Development guide
- Releasing openstation
- Agents security model
- API Index
- The App Framework — a window in one PHP file
- Architecture
- Bridge protocol — wiring overview
- <os-*> component reference
- Data model — where OpenStation keeps its data
- Native Desktop Host — Experimental
- Desktop themes
- Dock customization — two registries, one mental model
- The event-driven framework
- Files on the Desktop
- Folder sharing
- Getting Started
- Hooks Reference
- Icons
- JavaScript Reference
- The Living Tree — algorithm definition
- Window-scoped MIO
- Mio
- Mobile — the phone layer
- Multisite
- Native Windows & Framework Interop
- OpenStation Network
- Plugin compatibility layer
- Progressive Web App (PWA)
- Station Home
- Using openstation from your own plugin
- Workspaces
Migration notes
- Migration: built-in activity channels move to the os/ namespace
- Migration — Code Blue becomes an App Framework app
- Migration — AI comment scoring leaves core
- Migration: window, wallpaper and widget bundles load on demand
- Migration — Posts, Pages, Users, User Edit, Plugins and Comments become App Framework apps
- Migration — the navigation model
- Migration — OpenStation Preferences becomes an App Framework app
- Performance settings move to Extended options
- Presence storage migration
- Migration — the Recycle Bin becomes an App Framework app
- Migration — the shell boots from its own screen
- Migration — Station Home becomes an App Framework app
- Migration: a native window's tabs move to the window chrome
- Migration — WP Explorer becomes the my-wordpress app
- Migration — WordPress package globals are no longer ambient
More
All examples
- AI Agents — extend and invoke from a plugin
- wp.os.ai.ask() — programmatic AI Copilot
- Tune the AI model config
- App layout recipes
- Custom arrange-menu action
- Open a child window its owner can't cover
- Style a specific admin page inside the iframe
- Code Blue — register your plugin's log file
- Open a file in the Code editor (deep-link from any window)
- Connect to a window — title-bar button + iframe pub/sub
- Content changes — live-refresh every window listing your type
- Custom window chrome (Experimental)
- Register a custom unfocused-window effect
- Example: render a data table
- Real file storage — react to uploads, gate policy, share from PHP
- React to a window being set free onto the real desktop
- Cross-window devtools — instrumentation primitives
- Add a dock item with a badge
- Decorate the dock without forking the renderer
- Replace the dock rail entirely
- Retune the Drafts widget's AI writing assistant
- Gate OpenStation by role
- Iframe-initiated window opens
- Build a feed reader without the bookkeeping
- Inject data into openStationConfig
- Render a list without losing clicks — renderKeyedList()
- Example: layout primitives (body → panel → row → col)
- Use <os-*> components from a plugin that ships as a zip
- Restyle and drive Mio
- Repairable form edits with MIO
- Register a window companion
- Pin your app to the phone tab bar, and react to the mode
- Add an action that works on a whole selection
- WP Explorer — custom post types and their folder
- WP Explorer — add a column to the list view
- Add an action button to a WP Explorer preview pane
- Example: native Posts window
- Example: native window with tabs
- Native windows
- Customize note → post conversion
- Send a notification
- OAuth relay — connect to an external service
- Ship a window as an .os.php app
- OS-file drop
- <os-flyout> — window-scoped sliding card
- Plugins window — extras
- Track who's around — wp.os.presence
- Example: progress bar
- PWA install — surface your own button
- React to window events
- Example: extend the Trash
- Register a slash-command
- Register a desktop theme from a plugin
- Register a game
- Example: register a desktop icon (Jorvy)
- Register a wallpaper
- Register a widget
- Related entities — extend the title bar's "Related" menu
- The native-window render ctx
- Revisions in their own window — extend or redirect "View revisions"
- Programmatic folder sharing
- Share state across multi-bundle plugins — wp.os.createSharedStore()
- Example: loading spinner
- Add an opt-in card to Station Home
- Observe stored-file cleanup failures
- Accept drops on your desktop icon
- Give a tile two icons, one per state
- Add a row to a window's ⋯ menu
- Example: window activity & the status ring
- Window controls
- Subscribe to window lifecycle events
- Window links — relate windows and restyle the ties (Experimental)
- Window loading state — spinner overlay & ready signal
- Show a banner at the top of a window
- Pulse a window's icon — Window.requestAttention()
- Register a custom window reveal
- Window slots
- Window themes
- Native window with bundle-bound config
- Place something where the user can reach it — wp.os.workArea
- Ship a workspace template