From 9b1090b61413425abe78a6239659952df2efd9d1 Mon Sep 17 00:00:00 2001 From: Oleks Date: Sun, 14 Jun 2026 14:06:48 +0300 Subject: [PATCH] style: auto-format from pre-push hooks --- app/seed/seed.json | 2064 ++++++++++++++++++++++---------------------- 1 file changed, 1026 insertions(+), 1038 deletions(-) diff --git a/app/seed/seed.json b/app/seed/seed.json index 418301b..421354e 100644 --- a/app/seed/seed.json +++ b/app/seed/seed.json @@ -1,1040 +1,1028 @@ { - "$schema": "https://emdashcms.com/seed.schema.json", - "version": "1", - "meta": { - "name": "CMS plugins catalog", - "description": "WordPress → Emdash plugin parity catalog, seeded with kotkanagrilli.fi entries", - "author": "oleks" - }, - "settings": { - "title": "CMS plugins catalog", - "tagline": "WordPress → Emdash plugin parity, one entry at a time" - }, - "collections": [ - { - "slug": "cmses", - "label": "CMS platforms", - "labelSingular": "CMS platform", - "urlPattern": "/cms/{slug}", - "supports": [ - "search", - "seo" - ], - "fields": [ - { - "slug": "title", - "label": "Name", - "type": "string", - "required": true, - "searchable": true - }, - { - "slug": "website", - "label": "Website URL", - "type": "string" - }, - { - "slug": "description", - "label": "Description", - "type": "text", - "searchable": true - } - ] - }, - { - "slug": "plugins", - "label": "Plugins", - "labelSingular": "Plugin", - "urlPattern": "/plugins/{slug}", - "supports": [ - "drafts", - "search", - "seo" - ], - "fields": [ - { - "slug": "title", - "label": "Plugin name", - "type": "string", - "required": true, - "searchable": true - }, - { - "slug": "purpose", - "label": "Purpose", - "type": "text", - "searchable": true, - "description": "One-line description of what the plugin does." - }, - { - "slug": "source_cms", - "label": "Source CMS", - "type": "string", - "required": true, - "searchable": true, - "description": "Name of the CMS this plugin runs on today (e.g. WordPress)." - }, - { - "slug": "target_cms", - "label": "Target CMS", - "type": "string", - "searchable": true, - "description": "Name of the CMS we're porting to, if applicable." - }, - { - "slug": "category", - "label": "Category", - "type": "string", - "description": "e-commerce, SEO, content, performance, etc." - }, - { - "slug": "status", - "label": "Migration status", - "type": "select", - "required": true, - "defaultValue": "proposed", - "searchable": true, - "options": [ - { - "value": "port", - "label": "Port" - }, - { - "value": "built-in", - "label": "Built-in" - }, - { - "value": "saas", - "label": "SaaS" - }, - { - "value": "drop", - "label": "Drop" - }, - { - "value": "gated", - "label": "Gated" - }, - { - "value": "done", - "label": "Done" - }, - { - "value": "proposed", - "label": "Proposed" - } - ] - }, - { - "slug": "source_repo_url", - "label": "Source repo URL", - "type": "string" - }, - { - "slug": "target_repo_url", - "label": "Target repo URL", - "type": "string" - }, - { - "slug": "notes", - "label": "Migration notes", - "type": "portableText", - "searchable": true - } - ] - }, - { - "slug": "pages", - "label": "Pages", - "labelSingular": "Page", - "urlPattern": "/{slug}", - "supports": [ - "drafts", - "revisions", - "search", - "seo" - ], - "fields": [ - { - "slug": "title", - "label": "Title", - "type": "string", - "required": true, - "searchable": true - }, - { - "slug": "content", - "label": "Content", - "type": "portableText", - "searchable": true - }, - { - "slug": "excerpt", - "label": "Excerpt", - "type": "text" - } - ] - } - ], - "content": { - "cmses": [ - { - "id": "wordpress", - "slug": "wordpress", - "data": { - "title": "WordPress", - "website": "https://wordpress.org", - "description": "PHP/MariaDB CMS with the largest plugin ecosystem. Source platform for the kotkanagrilli.fi migration." - } - }, - { - "id": "emdash", - "slug": "emdash", - "data": { - "title": "Emdash", - "website": "https://github.com/emdash-cms/emdash", - "description": "TypeScript/Astro/SQLite CMS positioned as a spiritual successor to WordPress. Target platform for the kotkanagrilli.fi migration." - } - } - ], - "pages": [ - { - "id": "about", - "slug": "about", - "data": { - "title": "About this catalog", - "excerpt": "What this catalog is and how it's organized.", - "content": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "This catalog tracks plugins from one CMS and how they map to another. The seeded entries come from the kotkanagrilli.fi WordPress → Emdash migration, where ~30 third-party and custom plugins needed to be classified before the rebuild." - } - ] - }, - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Each entry has a migration status (port, built-in, saas, drop, gated, done, proposed) and free-form notes. New entries can be added through the Emdash admin at /_emdash/admin." - } - ] - } - ] - } - } - ], - "plugins": [ - { - "id": "woocommerce", - "slug": "woocommerce", - "data": { - "title": "WooCommerce", - "purpose": "E-commerce / order management for WordPress.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "e-commerce", - "status": "gated", - "source_repo_url": "https://wordpress.org/plugins/woocommerce/", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Fate depends on the kotkanagrilli WooCommerce decision gate: (a) keep WP on a subdomain for ordering, (b) build an Emdash orders+SumUp plugin, (c) outsource to an ordering SaaS." - } - ] - } - ] - } - }, - { - "id": "woocommerce-payments", - "slug": "woocommerce-payments", - "data": { - "title": "WooCommerce Payments", - "purpose": "WC native payment gateway.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "e-commerce", - "status": "gated", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Tied to the WooCommerce decision." - } - ] - } - ] - } - }, - { - "id": "sumup-payment-gateway-for-woocommerce", - "slug": "sumup-payment-gateway-for-woocommerce", - "data": { - "title": "SumUp Payment Gateway for WooCommerce", - "purpose": "SumUp checkout integration for WC.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "e-commerce", - "status": "gated", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Tied to WC decision. SumUp REST API is callable directly from a custom Emdash plugin if option (b) is chosen." - } - ] - } - ] - } - }, - { - "id": "fluid-checkout", - "slug": "fluid-checkout", - "data": { - "title": "Fluid Checkout", - "purpose": "Improved WooCommerce checkout UX.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "e-commerce", - "status": "gated" - } - }, - { - "id": "woo-checkout-field-editor-pro", - "slug": "woo-checkout-field-editor-pro", - "data": { - "title": "Woo Checkout Field Editor Pro", - "purpose": "Custom checkout fields for WooCommerce.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "e-commerce", - "status": "gated" - } - }, - { - "id": "woocommerce-customizer", - "slug": "woocommerce-customizer", - "data": { - "title": "WooCommerce Customizer", - "purpose": "Miscellaneous WooCommerce tweaks.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "e-commerce", - "status": "gated" - } - }, - { - "id": "woc-open-close", - "slug": "woc-open-close", - "data": { - "title": "WooCommerce Open/Close", - "purpose": "Show/hide the store as open or closed.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "e-commerce", - "status": "port", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Reimplement as a small Emdash plugin or Astro middleware reading a business-hours config. Not actually WC-coupled despite the name." - } - ] - } - ] - } - }, - { - "id": "google-listings-and-ads", - "slug": "google-listings-and-ads", - "data": { - "title": "Google Listings & Ads", - "purpose": "Merchant Center feed for WooCommerce.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "marketing", - "status": "gated" - } - }, - { - "id": "polylang", - "slug": "polylang", - "data": { - "title": "Polylang", - "purpose": "FI/EN translation for WordPress.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "i18n", - "status": "port", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Native Emdash collections + locale routing in Astro (src/pages/[lang]/...) replaces Polylang." - } - ] - } - ] - } - }, - { - "id": "connect-polylang-elementor", - "slug": "connect-polylang-elementor", - "data": { - "title": "Connect Polylang for Elementor", - "purpose": "Glue between Polylang and Elementor.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "i18n", - "status": "drop", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Dropped together with Elementor." - } - ] - } - ] - } - }, - { - "id": "elementor", - "slug": "elementor", - "data": { - "title": "Elementor", - "purpose": "Visual page builder for WordPress.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "page-builder", - "status": "drop", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Rebuild pages as Astro components / Emdash portable-text blocks." - } - ] - } - ] - } - }, - { - "id": "cafe-eatery", - "slug": "cafe-eatery", - "data": { - "title": "Cafe Eatery", - "purpose": "WordPress block theme (parent of the kotkanagrilli child theme).", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "theme", - "status": "drop", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Rebuild as an Astro theme (Phase 2)." - } - ] - } - ] - } - }, - { - "id": "autoptimize", - "slug": "autoptimize", - "data": { - "title": "Autoptimize", - "purpose": "Asset minification + concatenation.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "performance", - "status": "built-in", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Astro/Vite handles bundling natively." - } - ] - } - ] - } - }, - { - "id": "jetpack-boost", - "slug": "jetpack-boost", - "data": { - "title": "Jetpack Boost", - "purpose": "Performance hints for WordPress.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "performance", - "status": "built-in", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Astro + Cloudflare handle this." - } - ] - } - ] - } - }, - { - "id": "ewww-image-optimizer", - "slug": "ewww-image-optimizer", - "data": { - "title": "EWWW Image Optimizer", - "purpose": "Image optimization for WordPress media.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "performance", - "status": "built-in", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Astro Image integration + responsive styles already wired in astro.config.mjs." - } - ] - } - ] - } - }, - { - "id": "jetpack", - "slug": "jetpack", - "data": { - "title": "Jetpack", - "purpose": "Stats, hardening, related-posts, and more.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "ops", - "status": "saas", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Replaced by Cloudflare analytics + WAF." - } - ] - } - ] - } - }, - { - "id": "redis-cache", - "slug": "redis-cache", - "data": { - "title": "Redis Object Cache", - "purpose": "PHP object cache for WordPress.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "performance", - "status": "drop", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "No PHP, no need; Astro + Emdash memoryCache provider already wired." - } - ] - } - ] - } - }, - { - "id": "wp-mail-smtp", - "slug": "wp-mail-smtp", - "data": { - "title": "WP Mail SMTP", - "purpose": "Outbound mail via external SMTP.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "mail", - "status": "saas", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "External SMTP configured at the platform layer, or via an Emdash mailer plugin." - } - ] - } - ] - } - }, - { - "id": "cb-change-mail-sender", - "slug": "cb-change-mail-sender", - "data": { - "title": "CB Change Mail Sender", - "purpose": "Override the sender address on outgoing mail.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "mail", - "status": "port", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Handled by the same Emdash mailer plugin that replaces wp-mail-smtp." - } - ] - } - ] - } - }, - { - "id": "wpforms-lite", - "slug": "wpforms-lite", - "data": { - "title": "WPForms Lite", - "purpose": "Contact form builder.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "forms", - "status": "port", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Small Astro form action posting to a server endpoint, or a Cloudflare Worker on the CF target." - } - ] - } - ] - } - }, - { - "id": "wp-google-maps", - "slug": "wp-google-maps", - "data": { - "title": "WP Google Maps", - "purpose": "Map embed for posts/pages.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "content", - "status": "port", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Static iframe embed in the theme — trivial port." - } - ] - } - ] - } - }, - { - "id": "sticky-chat-widget", - "slug": "sticky-chat-widget", - "data": { - "title": "Sticky Chat Widget", - "purpose": "Floating WhatsApp/chat button.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "content", - "status": "port", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Static component in the theme — trivial port." - } - ] - } - ] - } - }, - { - "id": "shortcodes-ultimate", - "slug": "shortcodes-ultimate", - "data": { - "title": "Shortcodes Ultimate", - "purpose": "Shortcode library for the WP editor.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "content", - "status": "drop", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Astro components / portable-text block types replace it." - } - ] - } - ] - } - }, - { - "id": "tinymce-advanced", - "slug": "tinymce-advanced", - "data": { - "title": "TinyMCE Advanced", - "purpose": "Editor enhancement for WordPress.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "editor", - "status": "drop", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Emdash has its own editor." - } - ] - } - ] - } - }, - { - "id": "lara-google-analytics", - "slug": "lara-google-analytics", - "data": { - "title": "Lara Google Analytics", - "purpose": "GA4 tag for WordPress.", - "source_cms": "WordPress", - "target_cms": "Emdash", - "category": "analytics", - "status": "port", - "notes": [ - { - "_type": "block", - "style": "normal", - "children": [ - { - "_type": "span", - "text": "Static