diff --git a/CHANGELOG.md b/CHANGELOG.md index df03204..83c500b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.3.5] - 2026-01-23 + +### Changed + +- Improved download list layout in customer account licenses page +- Downloads now displayed in two-row format: file link on first row, metadata on second row +- Better visual separation between download link and version/date/checksum information + +### Technical Details + +- Updated `templates/frontend/licenses.html.twig` with new two-row structure +- Added `.download-item`, `.download-row-file`, `.download-row-meta` CSS classes +- Improved responsive behavior for download metadata + ## [0.3.4] - 2026-01-23 ### Added diff --git a/CLAUDE.md b/CLAUDE.md index b9a49eb..ea699c8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -932,3 +932,27 @@ Added current version display on single product pages for licensed products. - Only displays for licensed product type - Only displays if product has at least one version defined - Uses `LicensedProduct::get_current_version()` which queries `VersionManager::getLatestVersion()` + +### 2026-01-23 - Version 0.3.5 - Download List UI Improvement + +**Overview:** + +Improved the download list layout in customer account licenses page with a two-row format. + +**Implemented:** + +- Downloads now displayed in two rows per entry +- First row: File download link +- Second row: Metadata (version, date, checksum) +- Better visual separation and readability + +**Modified files:** + +- `templates/frontend/licenses.html.twig` - Restructured download list with two-row layout +- `assets/css/frontend.css` - Added `.download-item`, `.download-row-file`, `.download-row-meta` styles + +**Technical notes:** + +- Changed `
  • ` from single-row flex to column flex layout +- Metadata row indented with left padding for visual hierarchy +- Updated responsive CSS for mobile devices diff --git a/assets/css/frontend.css b/assets/css/frontend.css index 885f7e5..20b0638 100644 --- a/assets/css/frontend.css +++ b/assets/css/frontend.css @@ -202,18 +202,30 @@ padding: 0; } -.download-list li { +.download-list li.download-item { display: flex; - align-items: center; - gap: 1em; - padding: 0.5em 0; + flex-direction: column; + gap: 0.35em; + padding: 0.75em 0; border-bottom: 1px solid #eee; } -.download-list li:last-child { +.download-list li.download-item:last-child { border-bottom: none; } +.download-row-file { + display: flex; + align-items: center; +} + +.download-row-meta { + display: flex; + align-items: center; + gap: 1em; + padding-left: 1.5em; +} + .download-link { display: inline-flex; align-items: center; @@ -244,7 +256,6 @@ .download-date { color: #999; font-size: 0.85em; - margin-left: auto; } .download-hash { @@ -338,15 +349,11 @@ gap: 0.5em; } - .download-list li { + .download-row-meta { + padding-left: 0; flex-wrap: wrap; } - .download-date { - margin-left: 0; - width: 100%; - } - .woocommerce-licenses-table, .woocommerce-licenses-table thead, .woocommerce-licenses-table tbody, diff --git a/templates/frontend/licenses.html.twig b/templates/frontend/licenses.html.twig index 9bcadc8..8068b8a 100644 --- a/templates/frontend/licenses.html.twig +++ b/templates/frontend/licenses.html.twig @@ -57,19 +57,23 @@

    {{ __('Available Downloads') }}

    diff --git a/wc-licensed-product.php b/wc-licensed-product.php index d7fc007..101058c 100644 --- a/wc-licensed-product.php +++ b/wc-licensed-product.php @@ -3,7 +3,7 @@ * Plugin Name: WooCommerce Licensed Product * Plugin URI: https://src.bundespruefstelle.ch/magdev/wc-licensed-product * Description: WooCommerce plugin to sell software products using license keys with domain-based validation. - * Version: 0.3.4 + * Version: 0.3.5 * Author: Marco Graetsch * Author URI: https://src.bundespruefstelle.ch/magdev * License: GPL-2.0-or-later @@ -28,7 +28,7 @@ if (!defined('ABSPATH')) { } // Plugin constants -define('WC_LICENSED_PRODUCT_VERSION', '0.3.4'); +define('WC_LICENSED_PRODUCT_VERSION', '0.3.5'); define('WC_LICENSED_PRODUCT_PLUGIN_FILE', __FILE__); define('WC_LICENSED_PRODUCT_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('WC_LICENSED_PRODUCT_PLUGIN_URL', plugin_dir_url(__FILE__));