Tags: plugpressco/saddle
Tags
chore: bump to 0.9.0 — the closed-loop release (#34) verify-page, render-node, get-preview-url, the a11y lint rules, and the companion style-accessor interface (PRs #28–#32), verified live on a WP 7.0 Studio site (evidence on #22). Suite 300 green. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Activity page: inspect everything the AI does through MCP A dedicated fifth tab replacing the squint-at-Home-card experience: - Day-grouped timeline (Today / Yesterday / dates) of every executed change and every blocked attempt, newest first, with action chips, acting user, and exact-time tooltips - Filter pills (Everything / Changes / Blocked) backed by a new server- side type filter on Saddle_Log::query (meta_query treats legacy rows without the type meta as executed); paged "Show more" against the existing audit-log endpoint - States for both empty cases; the page says plainly that reads are never logged - Home's Recent activity card gains a "View all" link into the tab Verified live: 25 rows across 3 day groups, Blocked filter returns only denied rows server-side, zero console errors. 139 PHPUnit tests green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Admin UI revamp: app shell, dark mode, one apply bar, credential tran… …sparency Saddle now feels like a product, not a settings page (plan: revamp-idea-for-admin — monochrome identity is now decided, not a placeholder; DESIGN-ALIGNMENT.md updated). Shell (scoped to body.toplevel_page_saddle, nothing leaks): - Full-height calm canvas (--s-canvas), wp-admin frame padding zeroed, wp footer hidden on this screen only - Foreign admin notices captured server-side (ob_start on admin_notices priority 1 → flush at all_admin_notices) into a hidden container the app surfaces behind a quiet "N notices from other plugins" disclosure; nodes are moved, not re-rendered, so dismiss buttons keep working; buffer-level checks degrade to today's behavior if a plugin misbehaves; Saddle's own notices print at priority 0 - Real brand mark: stirrup-arch SVG as the admin menu icon (base64, svg-painter-recolorable) and <BrandMark /> in TopBar/Onboarding Dark mode: - Token layer restructured as s-palette-light/dark mixins emitted on the body + .saddle-app; system preference by default, per-user override in user meta (saddle_admin_theme) via POST /settings, server-rendered body class so an explicit choice never flashes; sun/moon/auto toggle in the top bar; code panels stay deliberately dark in both themes; Modal, notices, form fields, headings and links all follow the tokens (wp-admin hardcodes light-theme heading/link colors — overridden in scope) Permissions: - The two competing sticky apply bars merged into one pending-changes bar: level + individual tool changes save together (Promise.allSettled over the existing endpoints); a failed half stays dirty and says so Credential transparency (the app-password UX gap): - Wizard says the key appears only once and that Saddle keeps only its name + last four characters; done step points to Connect for management - Connected apps rows show "key ····last4" (captured at issuance into user meta — core stores only a hash; four chars of a 24-char secret enable nothing; removed on revoke, purged on uninstall) plus a footnote linking Users → Profile → Application Passwords - Home hero statement promoted; card titles follow theme Verified: 139 PHPUnit tests green (new theme + hint suites); headless- Chrome matrix on the Studio site — light/system-dark/manual-dark × Home/Permissions/Connect, quarantine captures a planted foreign notice (0 stray), merged bar renders one bar with a combined summary, manual dark persists server-side under a light system, zero console errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>