Rocket Launcher
Version 1.4.0
Full Page Caching Support (Fixes #12)
Cache-Compatible Front-end Launcher
- NEW: Bootstrap approach for front-end launcher that works with Blitz, Varnish, Cloudflare CDN, and other full-page caching solutions
- NEW: Lightweight bootstrap script injected into pages calls action endpoint for per-user authorization
- NEW: Action endpoints bypass page caches, ensuring each user gets proper permission checks even on cached pages
- NEW: Silent 204 response for unauthorized users prevents information leakage on cached pages
Front-end Deployment Options
- NEW: Three deployment modes in admin settings: Disabled (default), Twig Tag, Auto-Inject
- NEW: Twig tag deployment:
{{ craft.launcher.bootstrap() }}for selective page inclusion - NEW: Context-aware Twig tag:
{{ craft.launcher.bootstrap({ context: entry }) }}for "edit this page" functionality - NEW: Auto-inject mode automatically adds bootstrap script to all front-end HTML pages
Front-end Search Filters
- NEW: Search filter preferences stored in browser localStorage on front-end for cache compatibility
- NEW: Visual indicator in filter panel shows "Filters are saved in your browser only" for front-end users
- IMPROVED: Control panel filters continue to sync to user account across devices
Security Enhancements
- ADDED: Rate limiting for bootstrap requests (60 per minute per user)
- ADDED: Bot detection via empty user agent filtering
- ADDED: Fresh CSRF token provided in bootstrap response for subsequent requests
- IMPROVED: Silent denial (204 No Content) reveals no information about launcher existence
Documentation
- UPDATED: README now documents full cache compatibility (previously warned "not tested")
- UPDATED: User account preferences explain CP vs front-end filter storage differences
- IMPROVED: Admin settings include detailed explanations for each deployment mode
Technical Details
- ADDED: BootstrapController for handling
/actions/launcher/bootstrapendpoint - ADDED:
launcher-bootstrap.jsminimal script for cache-compatible initialization - IMPROVED: Response::EVENT_BEFORE_SEND used for reliable HTML injection on front-end
- REMOVED: Debug console.log statements from settings page JavaScript
Cache Compatibility: This release makes the front-end launcher fully compatible with static file caching solutions like Blitz. The bootstrap approach ensures each user gets proper authorization while pages remain cacheable. Closes #12. Thanks to @SETU-WEB (Brian Hackett) for reporting this issue and providing detailed analysis.
Version 1.3.0
New Features
Gmail-Style Search Filters
- NEW: Filter icon in search box opens dropdown panel for refining results
- NEW: Toggle filters: Include Drafts, Include Disabled, Include Nested Entries
- NEW: Section and Entry Type filtering with collapsible checkbox lists
- NEW: Filters persist per-user via Craft's user preferences
- NEW: Admin settings control which filter options are visible to users
- NEW: Filters apply immediately when toggled (no submit button needed)
Admin User Management
- NEW: Admins can view and edit other users' launcher preferences
- NEW: Rocket Launcher tab appears on user profile pages for users with launcher permission
- IMPROVED: Proper URL routing for viewing other users' launcher settings
Security Enhancements
Comprehensive Permission Checks
- FIXED: Non-admin users no longer see admin-only items in search results
- ADDED: Sections, Entry Types, Fields, Plugins, Asset Volumes - admin only
- ADDED: Category Groups - admin only
- ADDED: Static Settings pages - admin only
- ADDED: Utilities - checks specific
utility:<handle>permissions - ADDED: Globals - checks
editGlobalSet:<uid>permission per global - ADDED: Commerce Customers - checks
commerce-manageCustomerspermission - ADDED: Commerce Products - checks
commerce-manageProductspermission - ADDED: Commerce Orders - checks
commerce-manageOrderspermission
Bug Fixes
Nested Entries Search
- FIXED: Nested entries now appear in search results when "Include Nested Entries" is enabled
- FIXED: Nested entries have
sectionId=nullso section filters no longer exclude them - FIXED: Proper status filtering for nested entries (respects Include Disabled toggle)
Documentation
- ADDED: Warning about full page caching compatibility (Blitz, Cloudflare CDN, Varnish) for front-end launcher
Major Update: This release adds powerful Gmail-style search filters, comprehensive permission checks for all searchable content types, and the ability for admins to manage other users' launcher preferences.
Version 1.2.0
New Features
Launcher Suite Extensibility
- NEW: Unified tabbed modal interface allowing addon plugins (like Astronaut) to integrate seamlessly
- NEW: AddonService for registering addon plugins, hotkeys, and modal tabs
- NEW: DrawerService for extensible tips and resources panel with addon content support
- NEW: Event system for addon registration (RegisterAddonPluginsEvent, RegisterHotkeysEvent, RegisterModalTabsEvent)
Diagnostic Tools
- NEW: Diagnostic Report Generator utility to download troubleshooting reports with system info, content counts, and plugin settings (no personal data included)
UI Enhancements
- NEW: Airstrike font for "ROCKET LAUNCHER" title in the popup
- NEW: Resizable dialog with drag handle
- IMPROVED: Extended drawer highlight animation to 15 seconds
- IMPROVED: Click-outside-drawer-to-close behavior
Bug Fixes
Permission System (Fixes #11)
- FIXED: Non-admin users can now use Rocket Launcher when granted the "Access Rocket Launcher" permission
- FIXED: Removed duplicate permission registration that caused the permission to appear in multiple locations
- IMPROVED: Now uses Craft's auto-generated
accessPlugin-launcherpermission consistently
Entry Types Search (Fixes #13)
- FIXED: Entry Types toggle now appears in the Searchable Content Types settings as documented
- FIXED: Entry Types are now properly searchable when enabled
Nested Entries (Fixes #10)
- NEW: Global setting to hide nested/child entries from search results (default: enabled)
- NEW: Per-user preference override with options: "Use System Setting", "Always Show", "Always Hide"
- IMPROVED: Nested entries no longer appear as "Unknown Section" in search results when hidden
Security Improvements
- ENHANCED: Search results now respect user permissions - non-admin users only see content they have permission to edit
- IMPROVED: Entries, Categories, and Assets use
editable(true)filter for non-admin users - IMPROVED: Users only shown in results if the current user has
viewUserspermission
Technical Improvements
- ADDED: Admin index page for Rocket Launcher CP section
- ADDED: Support for CP nav items from addon plugins
- IMPROVED: Better separation of core launcher functionality and addon extensions
Major Update: This release introduces the Launcher Suite extensibility system, enabling addon plugins like Astronaut to integrate seamlessly. It also fixes critical permission issues for non-admin users and restores Entry Types search functionality.
Version 1.1.2
Critical Fixes
Production Environment Support
- FIXED: Project config read-only mode errors in staging/production environments
- FIXED: Circular project config writes when applying external changes
- IMPROVED: Added read-only check to setSettings() method to prevent writes in production
- IMPROVED: Updated handleProjectConfigChange() to use parent::setSettings() avoiding circular writes
Technical Improvements
- ENHANCED: Better handling of project config synchronization across environments
- IMPROVED: Plugin now properly respects Craft's read-only project config mode
- ADDED: Defensive checks to prevent project config modifications during initialization
Critical Patch: This release fixes errors that occur when running
craft upin staging/production environments where project config is read-only. The plugin now properly handles read-only mode without attempting to write back to project config.
Version 1.1.1
Documentation Updates
Plugin Store Description
- UPDATED: Featured new plugin integration framework in store listing
- ADDED: Direct links to Blitz and View Count plugins
- ENHANCED: Highlighted front-end launcher capabilities
- IMPROVED: Better description of extensibility features for plugin developers
Changelog
- CLEANED: Removed references to deleted releases for accuracy
- CONSOLIDATED: All fixes from removed versions now properly documented in v1.1.0
- IMPROVED: Clearer release history showing only published versions
Documentation Release: This release updates the plugin store description and changelog to accurately reflect the current state of the plugin and highlight the new integration framework features.
Version 1.1.0
New Features
Plugin Integration Framework
- NEW: Extensible integration system allowing third-party plugins to add contextual information to search results
- NEW: Event-based registration system (EVENT_REGISTER_INTEGRATIONS) for plugin integrations
- NEW: Complete developer API with LauncherIntegrationInterface and BaseIntegration helper class
- NEW: Comprehensive documentation for creating custom integrations
Built-in Integrations
- NEW: Blitz Cache integration - shows cache status and provides clear cache actions
- NEW: View Count integration - displays view statistics for elements
- NEW: Dynamic element ID resolution from CP URLs for frontend-tracked items
- NEW: Support for custom admin panel paths (respects cpTrigger configuration)
Critical Fixes
Settings Management
- FIXED: Settings page crash on fresh installations caused by unregistered Twig variable
- IMPROVED: Added LauncherVariable class to properly expose plugin services to templates
- ENHANCED: Settings page now properly displays database table status diagnostics
Frontend Integration
- FIXED: Launcher keyboard shortcut not working on website frontend
- FIXED: "Open Front-end Links in New Tab" preference not being respected
- FIXED: Integration display on frontend results
- IMPROVED: Corrected PHP heredoc syntax for boolean preferences
Production Environment Support
- FIXED: Welcome screen persistence in production environments with read-only settings
- IMPROVED: Created InterfaceService for UI state management separate from plugin configuration
- ADDED: Database table for UI state management (launcher_interface_settings)
Database & Migrations
- FIXED: Migration class name conflicts during plugin updates
- FIXED: Migration failures when launcher_user_history table doesn't exist
- IMPROVED: Idempotent migrations that can be run multiple times safely
- ENHANCED: Better error handling for partial plugin installations
User Experience Improvements
- FIXED: Welcome screen showing repeatedly after dismissal
- IMPROVED: Integration display across all contexts (popular, recent, search, frontend)
- ENHANCED: Element ID extraction from CP URLs
- IMPROVED: Better handling of items without direct element IDs
Technical Improvements
- ENHANCED: Logging throughout integration system for better debugging
- IMPROVED: Error handling and debugging capabilities
- ADDED: Multi-step element lookup chain for robust ID resolution
- IMPROVED: Support for dynamic CP trigger configuration (security improvement)
- ENHANCED: Better separation of configuration vs. state data
- IMPROVED: More robust welcome screen experience with proper state management
Major Update: This release introduces a powerful plugin integration framework that allows Blitz, View Count, and other plugins to display contextual information directly in Launcher search results. It also consolidates several critical fixes for settings management, frontend functionality, and production deployments.
Version 1.0.6.2
Fixed
- CRITICAL: Fixed null reference error when entry sections are missing or deleted
- IMPROVED: Added defensive null checks for
getSection()calls in SearchService and SearchController - ENHANCED: Entry search now gracefully handles entries with missing section relationships
- ADDED: Fallback "Unknown Section" display for entries without valid sections
Technical Improvements
- IMPROVED: Robust error handling prevents search crashes from orphaned entries
- ENHANCED: Better data validation in entry context validation
- ADDED: Null safety checks for entry type relationships as well
Search Fix: This patch resolves search failures caused by entries that have lost their section relationships (e.g., when sections are deleted but entries remain). Search now works reliably in all scenarios.
Version 1.0.6.1
Fixed
- CRITICAL: Fixed migration failure when launcher_user_history table doesn't exist
- IMPROVED: Migration
m250925_181500_add_missing_history_columnsnow safely handles all installation scenarios - ENHANCED: Added defensive table and column existence checks to prevent migration errors
- ADDED: Automatic table creation if missing during migration process
Technical Improvements
- IMPROVED: Idempotent migrations that can be run multiple times safely
- ENHANCED: Better error handling for partial plugin installations
- ADDED: Helper methods
addColumnIfNotExists()anddropColumnIfExists()for robust migrations - IMPROVED: Data preservation during migration updates using COALESCE expressions
Migration Fix: This patch resolves installation issues where previous versions failed to create the launcher_user_history table, causing subsequent migrations to fail. The migration system is now fully resilient to various installation failure scenarios.
Version 1.0.6
Version Fix
- FIXED: Corrected version mismatch issue from v1.0.5 where composer.json version didn't match git tag
- IMPROVED: Ensures proper Packagist integration and package availability via Composer
Added
- NEW: Admin utility for database maintenance - manually add missing history table if needed
Fixed
- FIXED: Missing database columns for personal history tracking - resolves migration errors on fresh installs
- FIXED: Settings search reliability and performance improvements
- FIXED: Consistent gear icon display across all admin settings results
Enhanced
- IMPROVED: Database schema validation ensures proper table structure on all environments
- IMPROVED: More reliable personal history data persistence
Database Update: This release includes automatic migration for missing database columns. If issues persist, use the new Admin utility to manually rebuild the history table.
Version 1.0.4
Added
- NEW: Front-end launcher functionality - use the launcher on your live website!
- NEW: Personal user preferences in My Account → Launcher section
- NEW: "Open Front-end Links in New Tab" option for seamless content editing workflow
- NEW: Context-aware search - search for "edit" while viewing an entry to quickly edit that specific page
- NEW: Dedicated user account preference interface with toggle switches
- NEW: LauncherFrontEndAsset for conflict-free front-end styling (no CP CSS interference)
Enhanced
- IMPROVED: Clean separation of admin and front-end asset dependencies
- IMPROVED: URL generation for front-end compatibility (no double "actions" prefix)
- ENHANCED: Professional user preferences layout matching Craft's design patterns
- ENHANCED: Graceful fallback handling for all navigation scenarios
- ENHANCED: JavaScript navigation with configurable tab behavior
- ENHANCED: Project config synchronization for plugin settings
Security & Performance
- ADDED: Comprehensive security validation for front-end usage
- ADDED: Rate limiting (30 searches per minute) to prevent abuse
- ADDED: Automatic bot detection and suspicious request filtering
- ADDED: CSRF token handling for front-end compatibility
- ADDED: Permission validation ensures users only access content they're authorized for
Technical Improvements
- ADDED: UserPreferenceService for individual user setting management
- ADDED: UserAccountController with EditUserTrait integration
- IMPROVED: Modular architecture with separate front-end and admin concerns
- ADDED: New template:
_user-account-content.twigfor user preferences
Documentation Updates
- ADDED: Comprehensive front-end launcher documentation section in README
- ADDED: Setup instructions with visual preference interface guide
- ADDED: Security and privacy information for administrators
- ADDED: Usage examples and pro tips for content editors
What's New: The launcher now works on your front-end! Enable it in your account preferences to access admin functions while browsing your live site. Thanks to @wmdhosting for the excellent feature suggestion!
Version 1.0.2
Enhanced Keyboard Navigation
- NEW: Configurable modifier keys for result navigation (Command, Control, Alt, Shift)
- IMPROVED: Modifier + number shortcuts (Cmd+1-9) prevent conflicts with search typing
- FIXED: Browse mode keyboard shortcuts now work correctly (no more offset issues)
- ADDED: Visual keyboard shortcut indicators on search results (Return, Cmd+1, Cmd+2, etc.)
UI/UX Improvements
- IMPROVED: Better spacing between keyboard shortcut icons and remove buttons
- ADDED: Smart keyboard shortcut display that adapts to selected modifier key
- ENHANCED: Result navigation shortcuts are now clearly labeled in settings
Developer Experience
- ADDED: New settings in plugin configuration for result navigation shortcuts
- IMPROVED: Settings UI shows preview of keyboard shortcuts based on selected modifier
- ENHANCED: Better separation of concerns in JavaScript keyboard handling
Bug Fixes
- FIXED: Commerce Product URLs now use proper cpEditUrl() method for correct product type/slug URLs
- FIXED: UI collision between keyboard shortcuts and history remove buttons
- FIXED: Browse mode shortcut numbering alignment with keyboard handlers
Documentation Updates
- UPDATED: README.md with new keyboard navigation details
- ENHANCED: Plugin store description with improved shortcut information
- ADDED: Configuration documentation for new result navigation settings
Upgrade Note: Existing keyboard shortcuts will continue working. The new modifier key settings default to Command to maintain current behavior.
Version 1.0.1
Features Added
- Launch History System with intelligent usage tracking
- Individual history item removal with X button
- Entry Types search functionality
- Enhanced Commerce order search
- Author search capability
Fixes
- Commerce order search functionality
- Customer name null display issues
- Entry Types URL format
- Launch history race condition
- CSRF token and JSON response handling
Documentation
- Complete README rewrite
- Comprehensive feature documentation
- Database schema and API documentation
Version 1.0.0
Added
- Initial release of Craft Launcher Plugin
- Universal search across entries, users, categories, assets, globals
- Browse mode with
*trigger - Keyboard navigation and shortcuts
- Theme integration with Craft CMS admin panel
- Permission-aware content filtering
- Basic Commerce integration
- Customizable search behavior and content types
Features
- Search across all major Craft CMS content types
- Smart keyboard navigation (Cmd+K/Ctrl+K)
- Browse mode for systematic content exploration
- Craft admin panel theme integration
- Permission-based content visibility
- Configurable search settings
- Basic plugin architecture with extensible search providers