Skip to main content

Changelog

Stay up to date with the latest features, improvements, and fixes in ContentMK.

Minor v0.6.0 February 24, 2026

Article Files & Per-Article Storage

Per-article file management with browsable folders on disk, a redesigned article edit page with persistent sidebar, and a new MCP tool for AI file access — now at 786 tests across 80 files.

Article Files

  • Per-article folders at ~/Documents/ContentMK/files/ — each article gets its own directory organized by site, with human-readable folder names ({wp_post_id}-{slug} for synced articles, _local-{id}-{slug} for local ones)
  • File browser UI in the article edit sidebar — browse, upload, rename, move, and delete files without leaving the editor
  • Drag-and-drop upload via the Files tab, or click to open a file picker. Files are automatically classified and routed to the correct subfolder.
  • 3-layer smart classification — uploads are auto-classified by name, type, and extension, then renamed with a date stamp and article context (e.g., report.csv becomes 2026-02-26-best-hiking-boots-report.csv). Optional AI fallback for files the rules can’t classify.
  • Rich toast UX — each upload shows a toast with the placement result, with undo, move, and rename actions inline
  • Subfoldersscreenshots/, photos/, imports/, and exports/ built in, with premium modules able to register their own (e.g., semrush/ for SEO reports, ahrefs/ for backlink data)
  • Auto-generated files from WordPress syncarticle.html (rendered content) and wp-blocks.html (raw block markup) written automatically on each sync, marked with an “auto” badge, protected from accidental deletion
  • Any file type accepted — images, PDFs, spreadsheets, code snippets, handoff documents, and more
  • OS trash for user deletes — deleted files go to macOS Trash or Windows Recycle Bin for easy recovery
  • Lazy folder rename — when a local article gains a wp_post_id after sync, the folder is renamed in place on next access without user action

Article Edit Page Redesign

  • Two-column layout with a persistent right sidebar that stays visible while editing article details and SEO fields
  • Three sidebar tabs — Files (file browser and upload), Notes (WordPress block-level notes from the WP Notes module), and Schema (structured data settings from Basic SEO)
  • Resizable divider between the main column and sidebar, with width remembered between sessions
  • Extracted sidebar content componentsFilesSidebarContent and NotesSidebarContent keep the sidebar tab contents modular and reusable

MCP Server Update

  • New tool: list_article_files — returns the file tree for any article, with SiteFilter enforcement for AI access control
  • 13 tools total (up from 12) plus 4 resources, all respecting per-site AI scoping

Migration 011

  • article_files table — tracks every file with article_id, site_id, filename, subfolder, file_type, file_size, content_hash, source (user or wp-sync), source_module, and is_auto flag. Unique constraint on (article_id, subfolder, filename). Cascading deletes tied to both articles and sites.
  • Schema version 11
Minor v0.5.0 February 18, 2026

WordPress Notes & Article Management

Two-way sync for WordPress 6.9 Notes, smarter article deletion, automatic REST API discovery, and continued hardening across the codebase — now at 665 tests across 71 files.

WordPress Notes Module

  • Two-way sync of WordPress 6.9 Notes — pull notes from WordPress, create and update them from ContentMK
  • NotesPanel UI — collapsible panel on the article edit page with thread view, status filtering (All/Open/Resolved), reply, resolve, and delete actions
  • MCP tool integration — query and manage notes from AI tools via the MCP server (now 12 tools total)
  • Diagnostic integration — note stats (total, by status, synced vs local) included in diagnostic reports
  • Migration 010article_notes table with threading, WP sync tracking, block context, and status fields. Schema version 10.

Article Deletion Improvements

  • WordPress Trash integration — when deleting an article linked to a WordPress post, optionally move the WordPress post to Trash at the same time
  • Graceful degradation — local delete always succeeds even if the WordPress trash operation fails
  • Sync state cleanup — deletion properly cleans up notes, sync state, and changelog entries

WordPress REST API URL Discovery

  • Automatic endpoint detection — ContentMK now auto-detects whether your WordPress site uses pretty permalinks (/wp-json/) or plain permalinks (?rest_route=). Sites with security plugins blocking /wp-json/ work out of the box.
  • Per-session caching — discovery result cached to avoid repeated HEAD requests
  • All WordPress API consumers updated (sync engine, import tools, notes, SEO, articles)

Codebase Hardening

  • 665 tests passing across 71 test files — up from 608 in the previous release
  • Schema version 10 — latest migration adds WordPress Notes support
  • Continued improvements to error handling, edge cases, and test coverage across all modules
Major v0.4.0 February 14, 2026

AI Integration & MCP Server

Full AI integration across four phases — structured exports, an MCP server for AI-native workflows, per-site access control, and a complete AI service layer.

Claude Code Module

  • 4 export types — JSON and Markdown formats optimized for AI prompt workflows. Export article inventory, health summary, SEO overview, and content gap analysis from Settings → AI Integration → Export for AI. Learn more →
  • Per-site AI access control — toggle which sites are visible to AI tools. Only exposed sites appear in MCP results. Default: no sites exposed (opt-in for token safety)

MCP Server

  • 12 tools + 4 resources exposed via Model Context Protocol — Claude Code, Cursor, and other AI tools connect directly to query articles, update statuses, add ideas, and run analysis
  • esbuild pipeline for optimized MCP server builds
  • Environment variable override for power users who want all sites exposed

AI Service Layer

  • Multi-provider support — Claude and OpenAI with bring-your-own-key (BYOK) configuration
  • Credit tracking — per-operation cost transparency showing API token usage
  • Foundation for premium AI modules — Pinterest Pin Creator and other AI-powered features build on this service layer
Minor v0.3.0 January 31, 2026

Basic SEO, Backups & Status Page

SEO metadata tracking with automatic WordPress plugin detection, a comprehensive backup system, and a new status page for monitoring everything at a glance.

Basic SEO Module

  • Per-article keyword tracking with target keyword, search volume, and keyword difficulty (0-100). Learn more →
  • WordPress SEO plugin auto-detection — automatically detects Yoast SEO, Rank Math, SEOPress, and AIOSEO during sync. Pulls SEO titles, meta descriptions, canonical URLs, Open Graph data, robots directives, and schema markup
  • Schema markup tracking — auto-detection from JSON-LD blocks in article content. Coverage dashboard with per-type breakdown (FAQ, HowTo, Article, Review, Product, Recipe, etc.)
  • SEO completeness indicator — colored badge showing field completion. “Missing SEO data” and “Missing schema” filters in the article list
  • Source tracking — every SEO field shows where its data came from (manual entry, Yoast, SEMrush, etc.). Manual edits always take priority
  • Foundation for premium modules — SEMrush, Ahrefs, and Google Search Console modules enrich this same data layer

Backup System

  • Automatic snapshots before every sync operation — named with timestamps for easy identification
  • Manual snapshots on demand from the Backups page
  • One-click restore with a safety snapshot created automatically before restore
  • Export with automatic WordPress Application Password stripping for security
  • Configurable retention — set maximum snapshot count per site, oldest auto-pruned. Learn more →

Status Page Enhancements

  • Core Services card showing health of database, API server, and sync engine
  • Diagnostic report export for troubleshooting
Major v0.2.0 January 14, 2026

WordPress Sync & Per-Site Experience

Two-way WordPress sync and a complete redesign of the per-site experience — each site now feels like its own app within ContentMK.

WordPress Sync Engine

  • Full two-way synchronization with WordPress via the REST API — pull articles, tags, categories, and SEO data automatically. Learn more →
  • Encrypted credential storage — WordPress Application Passwords stored securely via Electron safeStorage, never transmitted to our servers
  • Rate-limited batch operations — 300ms pause every 10 requests to keep your hosting provider happy
  • Conflict detection — modified-since comparison between local and WordPress timestamps. Four sync states: Synced, Local Ahead, WP Ahead, and Conflict
  • Field selection_fields= parameter on all GET requests to minimize API payload
  • Silent batch mode — one summary notification instead of per-item alerts during bulk operations
  • Sync changelog — timeline of all sync changes with per-item revert capability

Per-Site Redesign

  • Each site now has its own Dashboard, Articles, Planning, Sync, Backups, and Settings sections
  • Sidebar switches between “All Sites” overview and per-site hub
  • Module activation is now per-site — enable different modules for different sites

Import Tools Module

  • WordPress REST API import — connect to any WordPress site, pull public or private posts with progress tracking and duplicate detection. Learn more →
  • Sitemap crawl — auto-detects sitemaps from robots.txt and common paths, handles sitemap index files
  • CSV upload — drag-and-drop with fuzzy column header matching, preview before import, duplicate handling
  • All methods share URL-based duplicate detection and import undo
Major v0.1.0 December 31, 2025

Initial Scaffold & Core Features

The foundation of ContentMK — the Electron desktop app, SQLite database, and core content tracking features that everything else builds on.

Application Scaffold

  • Electron + Vite application with HMR, hiddenInset titlebar on macOS, and dark mode by default
  • Express API server running locally on port 3001 — no cloud dependency
  • SQLite database with WAL mode at ~/ContentMK/data.db — your data stays on your machine
  • Migration runner with automatic backup before every schema change
  • Site management — create, edit, and delete sites with custom color coding for visual identification

Article Tracking

  • TanStack Table with sortable columns, inline editing, and client-side search starting at 3 characters
  • Content health scores — 0-100 adaptive scoring based on freshness (40%), SEO completeness (25%), internal links (20%), and social signals (15%). Scores adapt when modules are toggled. Learn more →
  • Auto-status detection — articles automatically flag as “Needs Review” or “Out of Date” based on configurable per-site freshness thresholds
  • Dedicated article edit page with SEO metadata, schema markup tracking, and inline save confirmation

Search & Export

  • Full-text search powered by SQLite FTS5 — search titles, URLs, notes, categories, and body text in milliseconds
  • Data export in JSON, CSV, PDF, and HTML formats — always available, even if your subscription lapses. Learn more →