diff --git a/CHANGELOG.md b/CHANGELOG.md index 2376746..789abd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 3.2.1 — 2026-09-13 + +Upgrade QA follow-up to 3.2.0. Updating an existing site no longer replaces its header and footer layout. + +- Restore the 3.1.0 header and footer under the `flexia/header` and `flexia/footer` slugs, so existing sites keep their chrome on update. The 3.2 native-identity chrome remains available as the new `flexia/header-minimal` and `flexia/footer-minimal` patterns. +- Give the minimal header's navigation an explicit page-list fallback so it no longer resolves to an unrelated saved menu. +- Lay the minimal header out without wrapping, keeping WooCommerce's account and mini-cart icons on the logo and menu row. +- Stop underlining button-shaped links inside post content, including WooCommerce's "Proceed to Checkout" button. +- Correct the 3.2 migration note: a database-saved header/footer part that only references a pattern still follows the theme's current pattern. + ## 3.2.0 — 2026-09-13 Update from the public 3.1.0 release. Requires WordPress 6.6 or later; tested up to WordPress 7.1. diff --git a/assets/css/custom.css b/assets/css/custom.css index e78df6a..35f29e6 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -563,5 +563,6 @@ ol.wp-block-comment-template ol .wp-block-columns { scroll-behavior: auto !important; } } -.wp-block-post-content a { text-decoration: underline; } -.wp-block-post-content a:hover { text-decoration-thickness: 2px; } +/* Body links are underlined, but button-shaped links are not. */ +.wp-block-post-content a:not(.wp-element-button):not(.wp-block-button__link):not(.wc-block-components-button) { text-decoration: underline; } +.wp-block-post-content a:not(.wp-element-button):not(.wp-block-button__link):not(.wc-block-components-button):hover { text-decoration-thickness: 2px; } diff --git a/assets/fonts/README.txt b/assets/fonts/README.txt index bd8e75b..10d46cb 100644 --- a/assets/fonts/README.txt +++ b/assets/fonts/README.txt @@ -3,7 +3,12 @@ See Sora-OFL.txt and Inter-OFL.txt. Original TTF files are retained from the Flexia 3.1.0 distribution. WOFF2 files are losslessly compressed from those TTF files using fontTools 4.60.0. -No glyphs were subset or renamed. +The full WOFF2 files are kept for sites that reference them directly. +theme.json declares per-script subsets instead: *_latin.woff2 (Google Fonts' +"latin" range) and *_ext.woff2 (every other glyph in the font), each with its +unicodeRange, so Latin-only pages download only the latin file. +Subsets were cut from the TTF files with fontTools 4.60.0 pyftsubset +(layout features, name table and hinting kept). License sources retrieved 2026-09-10: https://raw.githubusercontent.com/google/fonts/main/ofl/sora/OFL.txt diff --git a/assets/fonts/inter_normal_400_ext.woff2 b/assets/fonts/inter_normal_400_ext.woff2 new file mode 100644 index 0000000..287609e Binary files /dev/null and b/assets/fonts/inter_normal_400_ext.woff2 differ diff --git a/assets/fonts/inter_normal_400_latin.woff2 b/assets/fonts/inter_normal_400_latin.woff2 new file mode 100644 index 0000000..7de65b9 Binary files /dev/null and b/assets/fonts/inter_normal_400_latin.woff2 differ diff --git a/assets/fonts/sora_normal_400_ext.woff2 b/assets/fonts/sora_normal_400_ext.woff2 new file mode 100644 index 0000000..01bc0f3 Binary files /dev/null and b/assets/fonts/sora_normal_400_ext.woff2 differ diff --git a/assets/fonts/sora_normal_400_latin.woff2 b/assets/fonts/sora_normal_400_latin.woff2 new file mode 100644 index 0000000..32c94b6 Binary files /dev/null and b/assets/fonts/sora_normal_400_latin.woff2 differ diff --git a/assets/fonts/sora_normal_500_ext.woff2 b/assets/fonts/sora_normal_500_ext.woff2 new file mode 100644 index 0000000..1ee8ccb Binary files /dev/null and b/assets/fonts/sora_normal_500_ext.woff2 differ diff --git a/assets/fonts/sora_normal_500_latin.woff2 b/assets/fonts/sora_normal_500_latin.woff2 new file mode 100644 index 0000000..fb5341b Binary files /dev/null and b/assets/fonts/sora_normal_500_latin.woff2 differ diff --git a/assets/fonts/sora_normal_600_ext.woff2 b/assets/fonts/sora_normal_600_ext.woff2 new file mode 100644 index 0000000..b7f7621 Binary files /dev/null and b/assets/fonts/sora_normal_600_ext.woff2 differ diff --git a/assets/fonts/sora_normal_600_latin.woff2 b/assets/fonts/sora_normal_600_latin.woff2 new file mode 100644 index 0000000..99db6d7 Binary files /dev/null and b/assets/fonts/sora_normal_600_latin.woff2 differ diff --git a/docs/MIGRATION-3.2.md b/docs/MIGRATION-3.2.md index d19430a..07de258 100644 --- a/docs/MIGRATION-3.2.md +++ b/docs/MIGRATION-3.2.md @@ -8,7 +8,7 @@ Back up the database and theme/plugin files, then test on a staging clone. WordP - **Home/blog:** home.html is now a posts index. For the previous agency layout, insert the Agency landing page pattern into a page and choose that page as the static front page in Reading settings. It is no longer forced onto the posts index. - **Archives/sidebar:** archives inherit the requested category/date/author and pagination. Single-with-sidebar renders the selected post body and comments, rather than a latest-post list. - **Commerce:** archive-product.html supplies the actual catalog override. The old woocommerce custom-template filename remains as an alias for existing assignments. Related products now use WooCommerce's current-product context. -- **Site identity:** configure your Site Logo, Site Title and Navigation. Default chrome no longer contains vendor demo contact links or signup links. Existing database-saved header/footer parts remain untouched. +- **Site identity:** the default header and footer keep their 3.1.0 layout under the `flexia/header` and `flexia/footer` slugs, so upgrading does not change site chrome. Note that a database-saved header/footer part whose content is only a `wp:pattern` reference still resolves to the theme's current pattern, so preserving the saved record is not by itself enough to preserve the rendered layout. The native-identity chrome ships alongside as `flexia/header-minimal` and `flexia/footer-minimal`; apply either from the Site Editor to replace the vendor demo contact and signup links with your own Site Logo, Site Title and Navigation. - **Styles:** theme.json v3, accessible palette updates, shared editor CSS, focus/touch behavior and reduced motion may change appearance. Compare default/dark/orange variations and any child styles before rollout. No existing style/pattern slug is intentionally removed. - **Fonts:** missing DM Sans files are replaced by an explicit system fallback under the old preset slug. Missing Inter weights are no longer declared. Existing Sora/Inter files are served as WOFF2; old TTF URLs remain available. If exact typography is contractual, review those presets before updating. diff --git a/functions.php b/functions.php index ef15924..bd90147 100644 --- a/functions.php +++ b/functions.php @@ -9,7 +9,7 @@ } define( 'FLEXIA_DEV_MODE', false ); -define( 'FLEXIA_VERSION', '3.2.0' ); +define( 'FLEXIA_VERSION', '3.2.1' ); define( 'FLEXIA_SLUG', 'flexia' ); define( 'FLEXIA_NAME', 'flexia' ); define( 'FLEXIA_DIR_PATH', get_template_directory() ); diff --git a/patterns/footer-minimal.php b/patterns/footer-minimal.php new file mode 100644 index 0000000..a68c081 --- /dev/null +++ b/patterns/footer-minimal.php @@ -0,0 +1,12 @@ + + +
+
+
diff --git a/patterns/footer.php b/patterns/footer.php index 5024157..840ad64 100644 --- a/patterns/footer.php +++ b/patterns/footer.php @@ -1,12 +1,108 @@ - -
-
-
+ +
+
+
+ +
+
" alt="" class="" style="width:128px;height:auto"/>
+ + + + + + + + +
+
+ + + +
+
+
+ + + + + + + + + +
+ + + +
+

+ + + + + + + + +
+ +
+
+ + + +
+
+
+

+ + + + + + + +
+ + + +
+

+ + + + + + + +
+
+
+
+ + + +
+

+
+
+ diff --git a/patterns/header-minimal.php b/patterns/header-minimal.php new file mode 100644 index 0000000..7872408 --- /dev/null +++ b/patterns/header-minimal.php @@ -0,0 +1,16 @@ + + +
+ +
+ + + +
diff --git a/patterns/header.php b/patterns/header.php index 98ddc4b..b22b7eb 100644 --- a/patterns/header.php +++ b/patterns/header.php @@ -1,14 +1,70 @@ - -
- -
- -
+ +
+
+
+
+
+
" alt="" style="object-fit:contain;width:18px;height:20px"/>
+ + + + +
+
+ + + +
+
+
+
" alt="" style="object-fit:contain;width:18px;height:20px"/>
+ + + + +
+ + + +
+
" alt="" style="object-fit:contain;width:18px;height:20px"/>
+ + +
+
+
+
+
+ + + + +
+ \ No newline at end of file diff --git a/readme.txt b/readme.txt index 89981e7..4ded4cf 100644 --- a/readme.txt +++ b/readme.txt @@ -5,7 +5,7 @@ Theme URI: https://flexia.pro/ Tags: blog, e-commerce, full-site-editing, block-patterns, block-styles, editor-style, style-variations, translation-ready Requires at least: 6.6 Tested up to: 7.1 -Stable tag: 3.2.0 +Stable tag: 3.2.1 Domain Path: /languages/ License: GNU General Public License v3 or later License URI: http://www.gnu.org/licenses/gpl-3.0.html @@ -20,6 +20,13 @@ Version 3.2 requires WordPress 6.6 or later. Review docs/MIGRATION-3.2.md in the == Changelog == += 3.2.1 = +* Fixed: Updating from 3.1.0 no longer replaces the site header and footer layout. +* Fixed: The header menu no longer falls back to an unrelated saved navigation menu. +* Fixed: WooCommerce account and cart icons no longer wrap onto a second header row. +* Fixed: The "Proceed to Checkout" button label is no longer underlined. +* Added: Header (minimal) and Footer (minimal) patterns for native site identity chrome. + = 3.2.0 = * Updated: Tested up to WordPress 7.1, the current stable release verified by compatibility tests. * Security: Restore optional plugin security defaults and remove automatic Pro deactivation. diff --git a/style.css b/style.css index 56e11c1..566c4bb 100644 --- a/style.css +++ b/style.css @@ -2,7 +2,7 @@ Theme Name: Flexia Theme URI: https://flexia.pro Text Domain: flexia -Version: 3.2.0 +Version: 3.2.1 Author: WPDeveloper Author URI: https://wpdeveloper.com Requires at least: 6.6 diff --git a/tests/test_release.py b/tests/test_release.py index 939e659..b4d3676 100644 --- a/tests/test_release.py +++ b/tests/test_release.py @@ -1,3 +1,4 @@ +import re """Release-boundary regressions operate on disposable copies of the checkout.""" import hashlib from pathlib import Path @@ -42,7 +43,8 @@ def test_deterministic_runtime_only_archive(self): self.assertTrue(all(x.startswith('flexia/') for x in names)) def test_missing_declared_font_fails(self): - next((self.root / 'assets/fonts').glob('*.woff2')).unlink() + declared = re.findall(r'file:\./(assets/fonts/[^"]+)', (self.root / 'theme.json').read_text()) + (self.root / declared[0]).unlink() result = self.run_build() self.assertNotEqual(result.returncode, 0) self.assertFalse(list(self.output.glob('*.zip'))) diff --git a/theme.json b/theme.json index 01859fa..787b179 100644 --- a/theme.json +++ b/theme.json @@ -351,27 +351,60 @@ "fontStyle": "normal", "fontWeight": "500", "src": [ - "file:./assets/fonts/sora_normal_500.woff2" + "file:./assets/fonts/sora_normal_500_latin.woff2" ], - "fontDisplay": "swap" + "fontDisplay": "swap", + "unicodeRange": "U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215" + }, + { + "fontFamily": "Sora", + "fontStyle": "normal", + "fontWeight": "500", + "src": [ + "file:./assets/fonts/sora_normal_500_ext.woff2" + ], + "fontDisplay": "swap", + "unicodeRange": "U+0100-0123, U+0126-0130, U+0134-0137, U+0139-013E, U+0141-0148, U+014A-0151, U+0154-017E, U+01FA, U+0218-021B, U+0237, U+0300-0303, U+0306-0307, U+030A-030C, U+0312, U+0326-0328, U+0335-0336, U+17DB, U+1E80-1E85, U+1E9E, U+1EBC-1EBD, U+1EF2-1EF3, U+2074, U+2264-2265, U+E000, U+FB01-FB02" + }, + { + "fontFamily": "Sora", + "fontStyle": "normal", + "fontWeight": "400", + "src": [ + "file:./assets/fonts/sora_normal_400_latin.woff2" + ], + "fontDisplay": "swap", + "unicodeRange": "U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215" }, { "fontFamily": "Sora", "fontStyle": "normal", "fontWeight": "400", "src": [ - "file:./assets/fonts/sora_normal_400.woff2" + "file:./assets/fonts/sora_normal_400_ext.woff2" ], - "fontDisplay": "swap" + "fontDisplay": "swap", + "unicodeRange": "U+0100-0123, U+0126-0130, U+0134-0137, U+0139-013E, U+0141-0148, U+014A-0151, U+0154-017E, U+01FA, U+0218-021B, U+0237, U+0300-0303, U+0306-0307, U+030A-030C, U+0312, U+0326-0328, U+0335-0336, U+17DB, U+1E80-1E85, U+1E9E, U+1EBC-1EBD, U+1EF2-1EF3, U+2074, U+2264-2265, U+E000, U+FB01-FB02" }, { "fontFamily": "Sora", "fontStyle": "normal", "fontWeight": "600", "src": [ - "file:./assets/fonts/sora_normal_600.woff2" + "file:./assets/fonts/sora_normal_600_latin.woff2" ], - "fontDisplay": "swap" + "fontDisplay": "swap", + "unicodeRange": "U+0000, U+000D, U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+2013-2014, U+2018-201A, U+201C-201E, U+2020-2022, U+2026, U+2030, U+2032-2033, U+2039-203A, U+2044, U+20AC, U+2122, U+2212, U+2215" + }, + { + "fontFamily": "Sora", + "fontStyle": "normal", + "fontWeight": "600", + "src": [ + "file:./assets/fonts/sora_normal_600_ext.woff2" + ], + "fontDisplay": "swap", + "unicodeRange": "U+0100-0123, U+0126-0130, U+0134-0137, U+0139-013E, U+0141-0148, U+014A-0151, U+0154-017E, U+01FA, U+0218-021B, U+0237, U+0300-0303, U+0306-0307, U+030A-030C, U+0312, U+0326-0328, U+0335-0336, U+17DB, U+1E80-1E85, U+1E9E, U+1EBC-1EBD, U+1EF2-1EF3, U+2074, U+2264-2265, U+E000, U+FB01-FB02" } ], "fontFamily": "Sora", @@ -386,9 +419,20 @@ "fontStyle": "normal", "fontWeight": "400", "src": [ - "file:./assets/fonts/inter_normal_400.woff2" + "file:./assets/fonts/inter_normal_400_latin.woff2" + ], + "fontDisplay": "swap", + "unicodeRange": "U+0020-007E, U+00A0-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-200B, U+2010-2027, U+202F-205F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+FEFF" + }, + { + "fontFamily": "Inter", + "fontStyle": "normal", + "fontWeight": "400", + "src": [ + "file:./assets/fonts/inter_normal_400_ext.woff2" ], - "fontDisplay": "swap" + "fontDisplay": "swap", + "unicodeRange": "U+0100-0130, U+0132-0148, U+014A-0151, U+0154-01C3, U+01C5-02BA, U+02BD-02C5, U+02C7-02D9, U+02DB, U+02DD-0303, U+0305-0307, U+0309-031E, U+0321-0328, U+032A-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03E1, U+03F0-049D, U+04A0-04FF, U+052F, U+0E3F, U+1D43, U+1D47-1D49, U+1D4D, U+1D4F-1D50, U+1D52, U+1D56-1D58, U+1D5B, U+1D62-1D65, U+1D9C, U+1DA0, U+1DBB, U+1DBF-1DF5, U+1DFC-1F15, U+1F18-1F1D, U+1F20-1F45, U+1F48-1F4D, U+1F50-1F57, U+1F59, U+1F5B, U+1F5D, U+1F5F-1F7D, U+1F80-1FB4, U+1FB6-1FC4, U+1FC6-1FD3, U+1FD6-1FDB, U+1FDD-1FEF, U+1FF2-1FF4, U+1FF6-1FFE, U+2070-2071, U+2074-208E, U+2090-209C, U+20A0-20AB, U+20AD-20BF, U+20DB-20DE, U+20E8, U+20F0, U+2100-2101, U+2103, U+2105-2106, U+2109, U+2113, U+2116-2117, U+211E-2121, U+2123, U+2126, U+212A-212B, U+212E, U+2132, U+213B, U+214D, U+214F, U+2153, U+215A-2188, U+2190, U+2192, U+2194-2199, U+21A9-21AA, U+21B0-21B1, U+21B3-21B5, U+21BA-21BB, U+21D0, U+21D2, U+21D4, U+21DE-21DF, U+21E4-21E5, U+21E7, U+21EA, U+2202, U+2205-2206, U+220F, U+2211, U+221A, U+221E, U+222B, U+2248, U+2260, U+2264-2265, U+2303, U+2305, U+2318, U+2325-2327, U+232B, U+2380, U+2387, U+238B, U+23CE-23CF, U+2423, U+2460-2468, U+24B6-24CF, U+24EA, U+25A0-25A2, U+25AA, U+25B2-25B3, U+25B6-25B7, U+25BA-25BD, U+25C0-25C1, U+25C4-25C7, U+25CA-25CB, U+25CF, U+25E6, U+25EF, U+2600, U+2605-2606, U+263C, U+2661, U+2665, U+26A0, U+2713, U+2717, U+2756, U+2764, U+2780-2788, U+27EF, U+27F5-27FA, U+2B06, U+2B12-2B13, U+2B1C, U+2C7C, U+2C7F, U+2DFF, U+2E18, U+A69F, U+A7FF, U+A92E, U+E000, U+E002-E080, U+E093-E096, U+E0A5-E0E6, U+E0F3-E11C, U+E11E-E164, U+EE01-EE05, U+F6C3, U+FE20-FE2D, U+1F12F-1F149, U+1F16A-1F16B, U+1F850, U+1F852" } ] } diff --git a/tools/release-files.txt b/tools/release-files.txt index face751..dc1adbd 100644 --- a/tools/release-files.txt +++ b/tools/release-files.txt @@ -1,4 +1,4 @@ -# Reviewed runtime inventory for Flexia 3.2.0. One path per line. +# Reviewed runtime inventory for Flexia 3.2.1. One path per line. assets/css/block-styles.css assets/css/custom.css assets/css/editor-style.css @@ -8,12 +8,20 @@ assets/fonts/README.txt assets/fonts/Sora-OFL.txt assets/fonts/inter_normal_400.ttf assets/fonts/inter_normal_400.woff2 +assets/fonts/inter_normal_400_ext.woff2 +assets/fonts/inter_normal_400_latin.woff2 assets/fonts/sora_normal_400.ttf assets/fonts/sora_normal_400.woff2 +assets/fonts/sora_normal_400_ext.woff2 +assets/fonts/sora_normal_400_latin.woff2 assets/fonts/sora_normal_500.ttf assets/fonts/sora_normal_500.woff2 +assets/fonts/sora_normal_500_ext.woff2 +assets/fonts/sora_normal_500_latin.woff2 assets/fonts/sora_normal_600.ttf assets/fonts/sora_normal_600.woff2 +assets/fonts/sora_normal_600_ext.woff2 +assets/fonts/sora_normal_600_latin.woff2 assets/images/about/about-img-1.jpg assets/images/about/about-img-2.jpg assets/images/about/about-img-3.jpg @@ -87,8 +95,10 @@ patterns/common-page-header.php patterns/cta.php patterns/error.php patterns/faq.php +patterns/footer-minimal.php patterns/footer.php patterns/funfacts.php +patterns/header-minimal.php patterns/header.php patterns/home.php patterns/main-sidebar.php