2026-02-28 09:42:35 +01:00
# Changelog
All notable changes to this project will be documented in this file.
2026-02-28 19:01:26 +01:00
## [0.1.0] - 2026-02-28
### Added
- Docker development environment: multistage Dockerfile (WooCommerce download, wp-bootstrap npm build, Composer deps, WordPress runtime), Compose stack with MariaDB, auto-setup entrypoint
- Private registry image name and restart policies for Docker stack
- **My Account polish**: endpoint icon map, `offcanvas-lg` responsive navigation with sticky sidebar, card-based dashboard with avatar welcome greeting and quick-action grid, card-wrapped forms with icon headers, view-order summary card with status badge
- **Product archive**: Bootstrap 5 card grid with responsive columns, sale badges, star ratings, offcanvas sidebar for mobile filters, shop-sidebar widget area
- **Single product layout**: two-column responsive grid (image gallery + product summary), bridge for `wc_get_template_part()` interception, disabled WooCommerce block compatibility layer
- Global `$product` injection into Twig context for loop sub-templates
- CSS overrides: WooCommerce float/width layout reset, sale badge repositioning, shop_table border reset, gallery opacity fallback, My Account `max-width` reset
### Fixed
- Rename `base.html.twig` → `wc-base.html.twig` to prevent shadowing the parent theme's page shell via Twig `FilesystemLoader` path priority
- CSS dependency handle from unregistered `woocommerce` to `woocommerce-general` for `wc-bootstrap-overrides` stylesheet
- WooCommerce float-based two-column layout (`width: 48%` + `float` ) fighting Bootstrap grid on single product pages
- Nested content wrapper doubling parent theme's `.container`
- Sale badge escaping image column and blocking breadcrumb clicks
- `|nl2br|esc_html` filter order in order details (was escaping `<br>` tags)
- HTML entity double-encoding (`…` ) in up-sells, cross-sells, and related product headings
- Wrong `function() is defined` guards in cart totals, review order, checkout login, and terms templates
- Duplicate deprecated hook fires in dashboard template
- Missing `|raw` on brand description HTML filter chain
- Missing `role="alert"` on variation add-to-cart for accessibility
- Missing `|esc_attr` on notification type class attribute
- Missing `is defined` guard on `hidden` variable in global form-login
- Pagination URLs using `?page=` instead of `get_pagenum_link()` for archives
- Double-escaped `–` in result count
- Underscore.js triple-brace syntax conflict in variation template (wrapped in `{% verbatim %}` )
2026-02-28 11:26:07 +01:00
## [0.0.1] - 2026-02-28
2026-02-28 09:42:35 +01:00
### Added
2026-02-28 11:20:46 +01:00
- Initial theme scaffold (style.css, functions.php, Composer autoload)
- Comprehensive template conversion plan (PLAN.md)
- **Phase 1**: Global templates (wrapper, breadcrumb, sidebar, quantity-input, form-login) and notices (success, error, info)
- **Phase 2**: Product archive and shop loop templates (archive-product, content-product, loop components, pagination, orderby, sale-flash)
- **Phase 3**: Single product page templates (image gallery, title, price, meta, stock, tabs, add-to-cart forms for simple/variable/grouped/external)
- **Phase 4**: Cart templates (cart table, empty cart, cart totals, shipping calculator, mini-cart, cross-sells)
- **Phase 5**: Checkout templates (form-checkout, billing/shipping forms, coupon, order review, payment methods, terms, thank-you)
- **Phase 6**: My Account templates (dashboard, navigation, orders, view-order, addresses, edit-address, edit-account, downloads, payment methods, login/register, password reset)
- **Phase 7**: Order details templates (order-details, order-details-item, order-details-customer, form-tracking, order-again)
- **Phase 9**: Supplementary templates (brands, OAuth auth, back-in-stock form)
- Reusable Twig components (card, pagination, price, rating, address-card, status-badge, quantity-input, form-field)
- WooCommerce-to-Twig rendering bridge (`TemplateOverride` + `WooCommerceExtension` )
- ~50 WooCommerce/WordPress Twig functions and 7 Twig filters
- Stack-based output buffering for nested template interception
- Bootstrap 5 override stylesheet (`wc-bootstrap.css` )
- Quantity +/- button JavaScript handler
2026-02-28 09:42:35 +01:00
- Sticky header scroll shadow behavior
2026-02-28 11:20:46 +01:00
- Parent theme rendering delegation via `woocommerce_render_page` filter
- Theme wrapping signal via `woocommerce_is_theme_wrapped` filter
2026-02-28 09:42:35 +01:00
- CI/CD release workflow (Gitea Actions)
- Translation support (`.pot` template ready)
2026-02-28 11:59:20 +01:00
- Docker development environment (multistage Dockerfile, Compose, auto-setup entrypoint)
2026-02-28 11:20:46 +01:00
2026-02-28 12:58:43 +01:00
### Fixed
- Rename `base.html.twig` → `wc-base.html.twig` to prevent shadowing the parent theme's page shell via Twig `FilesystemLoader` path priority
- Correct CSS dependency handle from `woocommerce` to `woocommerce-general` for `wc-bootstrap-overrides` stylesheet
2026-02-28 11:20:46 +01:00
### Skipped
- **Phase 8** (Email templates): WooCommerce emails use `wc_get_template_html()` which bypasses the Twig rendering pipeline. Default email templates are sufficient; customization can be handled via dedicated email plugins.