- GRACEPRESS-PUBLIC-PLUGIN-STANDARDS.md - PUBLIC-PLUGIN-WORKFLOW.md - WORDPRESS-ORG-REQUIREMENTS.md - WORDPRESS-PUBLIC-CONVENTIONS.md - design/dark-mode-admin-v1.1.0-spec.md - plugins/bible-reference-tooltips/CHANGELOG.md - plugins/bible-reference-tooltips/bible-reference-tooltips.php - plugins/bible-reference-tooltips/readme.txt
13 KiB
Dark Mode Competitor and Feature Matrix
Date: 2026-08-22 Scope: Phase 2 research only Target: Dark Mode by GracePress Source changes: none
Name clarification
No current WordPress.org plugin listing named "Vampire Dark Mode" was found. The likely intended reference is Dracula Dark Mode. Dracula is retained here only as a historical feature and support-case reference because its WordPress.org listing is closed. ProWritingAid also calls its own application theme "Vampire Mode," but that is not a WordPress plugin.
Comparison set
WP Dark Mode by WPPOOL
- Current version observed: 5.3.9.
- Active installations observed: 20,000+.
- Current strengths: mature frontend/admin product, OS preference, persistence, blocks, Elementor, presets, media tuning, device visibility, custom triggers, caching awareness, and broad compatibility work.
- Useful lessons: placement flexibility, accessibility repair history, caching awareness, and compatibility testing.
- Poor fit for GracePress: analytics, social sharing, AI preset generation, extensive commercial upsell surfaces, telemetry SDK complexity, and broad feature sprawl.
- Source: https://wordpress.org/plugins/wp-dark-mode/
Darkify
- Current version observed: 2.0.1.
- Active installations observed: 600+.
- Current strengths: modern sectioned admin, live site preview, settings search, section/all reset, backup/restore, independent frontend/admin/editor controls, mobile controls, selected menu placement, Gutenberg block, and zero frontend output when disabled.
- Useful lessons: information architecture, preview workflow, independent surfaces, bounded reset, and no-output disabled state.
- Caution: very large breadth, React build complexity, many commercial features, and a much larger maintenance surface than GracePress currently needs.
- Source: https://wordpress.org/plugins/darkify/
Dark Mode Toggle by ScriptsTown
- Current version observed: 1.7.5.
- Active installations observed: 2,000+.
- Tested through WordPress 7.1.
- Current strengths: lightweight activation, persistent user choice, basic switch sizing/position, simple exclusions, and a small administration surface.
- Useful lesson: the free plugin's value proposition is simplicity.
- Public review cautions: limited customization, image inversion complaints, and mobile visibility complaints.
- Source: https://wordpress.org/plugins/dark-mode-toggle/
Dark Mode for WP Dashboard by Naiche
- Current version observed: 1.3.4.
- Active installations observed: 3,000+.
- Current strengths: per-user Light/Dark/Auto preference, instant toolbar toggle, block editor and Site Editor support, CSS custom-property design tokens, developer filters, and no settings-page bloat.
- Useful lessons: admin preference belongs to each user, editor behavior should be separable, and a stable public body class gives integrations a clean hook.
- Current support caution: third-party screens and editor canvases still need ongoing compatibility work.
- Source: https://wordpress.org/plugins/dark-mode-for-wp-dashboard/
Dracula Dark Mode, historical reference
- Current status: closed on WordPress.org.
- Useful historical features: frontend/admin mode, menu and floating controls, custom CSS, and extensive styling options.
- High-value caution cases: dark elements active after admin mode was disabled, preference resetting between pages, visual regression after updates, image degradation, editor/media incompatibility, scrollbar changes, excessive toggle z-index, and collisions with browser dark-mode extensions.
- The admin-disable complaint closely matches a defect already confirmed in Dark Mode by GracePress.
- Source: https://wordpress.org/support/plugin/dracula-dark-mode/
Feature decision matrix
| Feature | Evidence | Decision | Complexity | GracePress direction |
|---|---|---|---|---|
| Reliable visitor preference | All maintained competitors | ADOPT | Low | Define and document deterministic precedence across URL override, manual choice, OS preference, schedule, and default. |
| Per-user admin preference | Dashboard plugin | ADOPT | Moderate | Store Light/Dark/Auto in user meta rather than forcing one site-wide admin state. |
| Enforced frontend/admin enable switches | Darkify and competitor bug reports | ADOPT | Low | Disabled must mean no corresponding CSS, JS, toolbar control, or output. |
| Independent block/classic editor controls | Darkify and Dashboard plugin | ADAPT | Moderate | Separate editor-canvas behavior from general wp-admin after the base admin setting is repaired. |
| Configurable schedule range | Darkify and WP Dark Mode | ADOPT | Moderate | Replace fixed 6 PM to 6 AM with start/end controls and explicit site-timezone behavior. |
| Cache-safe schedule evaluation | WP Dark Mode caching feature | ADAPT | Moderate | Do not control caching plugins. Emit stable configuration and calculate current mode safely at runtime. |
| Live preview | Darkify | ADOPT | Moderate | Preview representative text, links, forms, media, toggle, and transition in desktop/mobile frames. |
| Settings section navigation | Darkify | ADOPT | Low | Use native server-rendered tabs or sidebar sections; React is unnecessary for the current scale. |
| Settings search | Darkify | REJECT FOR NOW | Moderate | Eighteen settings do not justify command-palette complexity. Revisit only if the surface grows materially. |
| Section reset and reset-all | Darkify | ADOPT | Low | Make scope explicit, add confirmation, and preserve unrelated settings. |
| Unsaved-change indication | Modern settings behavior | ADOPT | Low | Show dirty state, save success, and validation errors clearly. |
| Import/export settings | Darkify | INVESTIGATE LATER | Moderate | Useful for agencies, but not required for the first public candidate. |
| Clean uninstall option | Darkify | ADOPT | Low | Add an explicit retention/removal policy and an opt-in cleanup choice. |
| Device visibility controls | WP Dark Mode and Darkify | ADOPT | Low | Desktop/mobile visibility is sufficient; avoid unreliable user-agent dependence. |
| Floating offsets and safe z-index | Competitors and Dracula support | ADOPT | Low | Add horizontal/vertical offsets and use a documented, non-aggressive stacking level. |
| Dozens of switch styles | Commercial competitors | REJECT | High maintenance | Keep three or four accessible, distinctive, fully tested controls. |
| Switch color customization | WP Dark Mode and Darkify | ADAPT | Moderate | Offer a small palette and accessible custom accent, not unrestricted style sprawl. |
| Selected-menu placement | Darkify and Dracula | ADAPT | Moderate | Replace automatic injection into every menu with an explicit block/menu-item placement model. |
| Shortcode placement | Existing GracePress feature | KEEP | Low | Preserve shortcode compatibility and improve accessible output. |
| Gutenberg toggle block | WP Dark Mode and Darkify | INVESTIGATE | Moderate | Valuable public-ecosystem integration, but schedule after the core engine and admin redesign stabilize. |
| Elementor widget | WP Dark Mode and Darkify | REJECT FOR FIRST RELEASE | High | Shortcode and block cover the immediate need without vendor-specific maintenance. |
| Custom CSS selector trigger | WP Dark Mode | INVESTIGATE | Moderate | Potentially useful for existing buttons; requires a safe, understandable binding model. |
| Page/post picker exclusions | Darkify and DarkMySite | ADAPT | Moderate | Replace comma-separated IDs with searchable WordPress content selection plus a validated advanced fallback. |
| Element exclusions | All broad competitors | KEEP AND REPAIR | Moderate | Validate bounded selectors, report invalid entries, and provide common presets. |
| Allow-only mode | DarkMySite/Darkify | INVESTIGATE | Moderate | Useful for difficult sites but can complicate the mental model. |
| Color presets | WP Dark Mode and Darkify | INVESTIGATE | High | Our inversion engine does not naturally map to theme palettes; this implies an engine-level design decision. |
| Manual background/text/link colors | Darkify | INVESTIGATE | High | Do not bolt palette controls onto an inversion engine without a coherent rendering model. |
| Image brightness/contrast/grayscale | Darkify, DarkMySite, WP Dark Mode | ADAPT | Low | Replace the ambiguous media-opacity slider with clearer image/media controls and safe defaults. |
| Image/video replacement | Commercial competitors | REJECT | High | Media-library mapping and responsive source handling are disproportionate for this plugin. |
| Scrollbar styling | Darkify | REJECT BY DEFAULT | Low | It creates browser inconsistency and was a Dracula support complaint; allow custom CSS instead. |
| Reduced-motion support | Accessibility requirement | ADOPT | Low | Disable pulse and veil motion under prefers-reduced-motion unless the user explicitly opts back in. |
| Descriptive ARIA and pressed state | WP Dark Mode repair history | ADOPT | Low | Use native buttons with accessible names, aria-pressed, focus styles, and keyboard operation. |
| Custom keyboard shortcut recorder | Darkify | REJECT | Moderate | Prefer no global shortcut by default; if retained, make it optional and ignore typing/editor contexts. |
| Stable public CSS class and filters | Dashboard plugin | ADOPT | Low | Publish a stable root class and a small documented filter/action contract. |
| Full Site Editor support | Dashboard plugin | ADAPT | Moderate | Add to compatibility testing and repair scope rather than claiming universal support immediately. |
| Third-party plugin compatibility packs | Dashboard plugin | INVESTIGATE LATER | Ongoing | Begin with WordPress core surfaces; add integrations only from reproducible issues. |
| Analytics and usage counters | WP Dark Mode | REJECT | Privacy/maintenance | No tracking or usage analytics belongs in the first public GracePress plugin. |
| AI color generation | WP Dark Mode | REJECT | High/external | Unnecessary external-service, privacy, cost, and review complexity. |
| Social sharing | WP Dark Mode | REJECT | Unrelated | Outside the dark-mode product boundary. |
| Remote fonts/images/CDN assets | Historical competitor cleanups | REJECT | Privacy | Keep every runtime/admin visual asset local and license-compatible. |
| Premium comparison/upsell panels | Commercial competitors | REJECT | Product policy | The public GracePress interface should remain focused and non-spammy. |
Recommended 1.1.0 product scope
The first redesigned candidate should remain bounded to these changes:
- Repair and actually enforce frontend and admin enable settings.
- Move admin preference to per-user Light, Dark, or Auto behavior.
- Establish and document mode precedence.
- Replace fixed schedule behavior with configurable start/end times evaluated safely at runtime.
- Reorganize the admin page into Overview, Behavior, Toggle, Rendering, Advanced, and Help sections.
- Build a representative live preview with desktop/mobile width controls.
- Add visible dirty, saving, saved, and validation states.
- Add section reset and reset-all with explicit scope.
- Add desktop/mobile toggle visibility and safe floating offsets.
- Keep a small set of accessible toggle styles and add accent-color control.
- Replace automatic all-menu injection with a deliberate placement explanation; preserve shortcode support.
- Repair page/element exclusions and provide clearer validation.
- Replace media opacity language with image/media brightness, contrast, and grayscale controls where technically coherent.
- Add reduced-motion behavior.
- Repair button semantics, labels, state, keyboard behavior, and shortcut conflicts.
- Emit no frontend assets when frontend mode is disabled and no admin engine when admin mode is disabled.
- Remove private logging/routing remnants and publish only a small stable integration contract.
- Add explicit data-retention and clean-uninstall policy.
Deferred candidates
- Gutenberg block.
- Import/export.
- Custom existing-element triggers.
- Allow-only rendering.
- Color-preset or native recoloring engine.
- Third-party compatibility packs.
- Multisite network policy UI.
Explicitly rejected direction
- Analytics or telemetry.
- AI-generated themes.
- Social-sharing features.
- Remote runtime assets.
- Large premium-style upsell surfaces.
- Dozens of decorative switches.
- Image/video replacement.
- Vendor-specific page-builder widgets in the first release.
- React solely for the settings page.
- Claims of universal theme/plugin compatibility without a maintained test matrix.
Phase 2 conclusion
The strongest product opportunity is not matching commercial feature count. It is a smaller, trustworthy dark-mode plugin with deterministic behavior, a much better native admin experience, accessible controls, cache-safe scheduling, no telemetry, and disciplined compatibility claims.
The next phase should convert the recommended 1.1.0 scope into an admin information-architecture specification and visual direction before source edits begin.