diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index db08306..64265cf 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -47,6 +47,8 @@ peptide-starter/ │ ├── newsletter-admin.php # Subscriber viewer + CSV-safe export + │ │ # /newsletter-unsubscribe route. │ ├── mail-diagnostic.php # [v1.5.1] Tools → Mail Test — wp_mail probe. +│ ├── perf-asset-policy.php # [v1.6.0] Mobile perf: dequeue + font slim +│ │ # + preconnect + defer. │ └── page-setup.php # Auto-create pages on activation + │ # v1.5.0 user migration (enrol into verify). │ @@ -261,11 +263,4 @@ control in the theme. `inc/cloudflare-ips.php` holds a static snapshot of CF ranges. Refresh quarterly. Override via `peptide_starter_cloudflare_ip_ranges` filter -for out-of-band updates. - -## Version - -**Current:** v1.5.2 (2026-04-14) - -Bump `style.css` header line 7 and `PEPTIDE_STARTER_VERSION` in -`functions.php` together on release. +for out-of-band update \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index a5786be..ec33bfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,51 @@ All notable changes to the Peptide Starter Theme are documented in this file. +## [1.6.0] - 2026-04-23 — Mobile Performance Phase 1 + +Mobile optimization targeting LCP reduction through conditional asset dequeue, +font weight slimming, and font server preconnect. Measured baseline LCP on +Moto G Power (Slow 4G): 5.4s; target: sub-4s after Phase 1 deployment. + +### Performance improvements + +- **Conditional asset dequeue**: WooCommerce, Elementor, and USMI assets now + dequeue on pages that don't use them. Removes ~100KB from non-shop pages. +- **Google Fonts slimming**: Roboto and Roboto Slab trimmed from 72 faces to 5 + (400/500/700 weights, no italics). Font CSS shrinks ~6KB → <1KB; woff2 payload + reduced ~80%. +- **Preconnect hints**: `fonts.googleapis.com` and `fonts.gstatic.com` now + preconnect in ``, eliminating separate TLS handshake latency on cold cache. +- **Cookie-notice defer**: Cookie banner script deferred to unblock initial render. + +### Technical + +- New module `inc/perf-asset-policy.php` (~245 lines, PHPUnit tested). +- Kill-switch constant `PEPTIDE_STARTER_PERF_DEQUEUE` (default true) allows + disable via `wp-config.php` for rollback. +- All dequeue lists and font weights exposed as filters for customization. +- Production handle verification: WC (layout/smallscreen/general), Elementor + (frontend/frontend-legacy + per-post CSS), USMI (SFSImainCss + 4 scripts). + +### Tests + +- `test-perf-asset-policy.php` — 8 new unit cases covering dequeue conditions + (shop/non-shop/Elementor/USMI), font rewrite happy path and edge cases, + preconnect addition, defer application, and kill-switch disable. + +### Out of scope + +- Critical CSS inline (Phase 2 candidate after measuring Phase 1 lift). +- jQuery dequeue (WC/PSA/Elementor compat risk too high). +- Image optimizations (no images on homepage critical path). +- LiteSpeed Cache settings (CTO tunes post-deploy if Phase 1 insufficient). + +### Breaking changes + +None. All optimizations are transparent to plugin authors; dequeues use +standard WordPress APIs and can be overridden via filters or re-enqueued by +plugins if needed. + ## [1.5.2] - 2026-04-14 — Security Same-day follow-up to v1.5.1. Closes four issues the v1.5.1 post-merge @@ -277,62 +322,4 @@ ADR-0001. - Focus indicators (2px outline) on all interactive elements - 4.5:1+ contrast ratio on all text - Semantic HTML with proper landmarks - - `aria-label` and `aria-expanded` attributes on buttons - - Keyboard navigation support (Escape closes overlays, Tab through elements) - -- **Responsive Breakpoints:** - - Mobile: 320px - 479px - - Tablet: 480px - 767px - - Desktop: 768px - 1023px - - Large: 1024px - 1439px - - Extra Large: 1440px+ - -- **Design System:** - - Typography: Inter font with 1.125x modular scale, 8px grid base - - Colors: Blue primary (#0066CC light, #3B82F6 dark) - - Component library: buttons, cards, forms, badges, alerts, pagination - - CSS custom properties for all design tokens - - No `!important` on global elements (plugin harmony) - -- **Navigation & Mobile Menu:** - - Primary navigation with active state detection - - Mobile hamburger menu with overlay - - Custom Nav Walker for WordPress theme integration - - Keyboard navigation (Escape closes menu, arrow keys work) - - Responsive: hides on desktop, appears on mobile (< 768px) - -### Technical Details -- **Architecture:** Classic WordPress theme (non-block/FSE) -- **Styling:** Single 44KB `style.css` with no build step -- **JavaScript:** Vanilla ES6+ in 2 files (navigation.js, theme.js) -- **Plugin Namespaces:** `.pn-*` (Peptide News), `.psa-*` (Peptide Search AI), `.prab-*` (PRAutoBlogger) -- **Browser Support:** Chrome, Firefox, Safari (latest 2), iOS Safari 12+ -- **Requires:** WordPress 6.0+, PHP 7.4+ - -### Initial Release -- All core features implemented and tested -- Full dark mode support with ecosystem coordination -- Production-ready for peptiderepo.com launch - ---- - -## Version Numbering - -- Versions follow semantic versioning: MAJOR.MINOR.PATCH -- Current: v1.3.2 -- Defined in: `style.css` header (line 7) and `functions.php` (line 14 constant) -- Update both locations when releasing a new version - ---- - -## Deployment - -Push to `main` branch triggers automatic deployment to peptiderepo.com via GitHub Actions. - -**Process:** -1. Push to `main` -2. GitHub Actions workflow `deploy.yml` runs -3. Files synced via rsync to Hostinger -4. LiteSpeed cache purged - -No manual FTP uploads needed. + - `a \ No newline at end of file diff --git a/CONVENTIONS.md b/CONVENTIONS.md index c3f2344..28a13be 100644 --- a/CONVENTIONS.md +++ b/CONVENTIONS.md @@ -221,6 +221,75 @@ do_action( 'peptide_starter_hero_before' ); **Important:** Always wrap shortcodes in `shortcode_exists()` checks so theme doesn't break if plugin is missing. +### How to Add a Performance Policy Rule + +**Scenario:** Dequeue or transform an asset on certain page conditions + +Performance optimizations live in `inc/perf-asset-policy.php` and hook into +WordPress's enqueue/style-loading pipeline. The module supports conditional +dequeue (WC, Elementor, USMI), font weight slimming, preconnect hints, and +script deferral. + +1. **For conditional dequeue**, add a block in `peptide_starter_perf_dequeue_plugin_assets()`: + + ```php + if ( /* your condition */ ) { + $handles = apply_filters( 'peptide_starter_perf_yourplugin_handles', + array( 'handle-1', 'handle-2' ) + ); + foreach ( $handles as $handle ) { + wp_dequeue_style( $handle ); // or wp_dequeue_script + } + } + ``` + +2. **For style-src rewrites** (e.g., URL parameter slimming), extend + `peptide_starter_perf_slim_google_fonts()` with a new loop iteration: + + ```php + foreach ( $font_weights_config as $config_family => $weights ) { + if ( 0 === strcasecmp( $family, $config_family ) ) { + // Rewrite and return + } + } + ``` + +3. **For preconnect hints**, add URLs to the filter in + `peptide_starter_perf_resource_hints()`: + + ```php + $font_urls = apply_filters( + 'peptide_starter_perf_font_preconnect_urls', + array( 'https://fonts.googleapis.com', 'https://fonts.gstatic.com' ) + ); + ``` + +4. **For script deferral**, add a new handle check in + `peptide_starter_perf_defer_cookie_notice()`: + + ```php + if ( 'my-script-handle' !== $handle ) { + return $tag; + } + $tag = str_replace( ' -