Retour
Historique des versions

Changelog

Retrouvez les nouveautés, corrections et améliorations de chaque version.

v0.7.23

CONFIGURATION NAME REQUIRED BEFORE SAVE

Added

  • Save naming modal in expert mode: Clicking Sauvegarder now opens a modal that requires users to enter a configuration name before the save request is sent.
  • Save naming modal in easy mode: Added the same mandatory naming step in easy mode with a dedicated save flow so saved configurations are always identifiable.
  • Configuration title normalization helper: Introduced centralized input normalization for configuration names to enforce trimming, length limits, and control-character filtering.

Changed

  • Required validation on save/share title: Prevented empty or whitespace-only names, blocked unsafe control characters, and kept modal-level validation feedback visible until corrected.
  • Post-save feedback now includes the provided name: Success messages now confirm the exact saved configuration title after completion.

v0.7.22

CHANGELOG PAGE DARK MODE READABILITY FIX

Added

  • Recommendation Configuration On Startup: Added a startup routine to check for the existence of recommended configurations and generate them if they are missing, ensuring that the feature is always available without manual intervention.
  • Clickable section in expert mode (Issue #155): Make the whole rectangle section of a component section in expert mode clickable to open the component details, instead of just the "+" button link, improving usability and discoverability of the details page.
  • Add "Mes Configurations" button in easy mode (Issue #175): Added a "Mes Configurations" button in the easy mode configuration summary section to allow users to view and manage their saved configurations directly from the summary page.
  • Delete button in Expert Mode (Issue #180): Added a "Tout Supprimer" button in the expert mode configuration summary section to allow users to delete their current configuration and start fresh.
  • Component Loader (Issue #179): Added a loading spinner and disabled state to the component detail page while data is being fetched to improve user experience and prevent interaction with incomplete content.

Fixed

  • Issue #178 dark mode readability: Fix contrast and accessibility issues in dark mode in the register and login pages.
  • Issue #163 dark mode readability: Replaced light-only color classes with theme-aware classes for buttons, inputs, and links in the changelog page to ensure text remains readable in dark mode.

v0.7.21

CHANGELOG PAGE DARK MODE READABILITY FIX

Fixed

  • Issue #174 dark mode readability: Replaced light-only changelog colors with theme-aware classes for cards, section items, timestamps, and inline code styling so text remains readable in dark mode.
  • Regression protection: Added changelog e2e coverage for dark-mode rendering and light-mode readability baseline.

v0.7.20

EXPERT MODE RECENTLY VIEWED COMPONENTS FILTER

Added

  • Recently viewed expert filter: Added a Voir les derniers composants vus button under the expert selection summary to show recently viewed components for the active category.
  • Cross-category recent history: Implemented persistent expert-mode tracking of viewed component detail pages with newest-first ordering and a global cap of the last 10 entries.
  • Feature E2E coverage: Added expert-mode end-to-end tests for nominal filtering, recent-order edge behavior, and empty-result failure behavior.

v0.7.19

DOCKERFILE CHANGLOG PATH FIX

Fixed

  • Dockerfile: Fix path of Changelog in Dockerfile to ensure it is included in the image build context and copied to the correct location.

v0.7.18

UNIFIED OAUTH & EMAIL/PASSWORD ACCOUNT LINKING

Added

  • OAuth account linking: users can now link and unlink GitHub/Google providers from their profile settings ("Comptes liés" tab)
  • New API routes: GET /api/auth/external-auths, DELETE /api/auth/external-auths/[provider], POST /api/auth/link-oauth
  • Clear error message when OAuth login detects an existing email/password account, guiding the user to link from profile settings
  • New listLinkedProviders, unlinkLinkedProvider, linkOAuthProvider utilities in utils/auth.ts
  • E2e tests for OAuth account linking flows

v0.7.17

SHARED LINK RELIABILITY, RETENTION POLICY CONTROLS & PERMANENT LINK ACCESS RULES

Added

  • Shared retention policy endpoints: Added backend policy endpoints to expose current shared-link retention and allow admin updates of expirable link lifetime in days.
  • Admin retention controls: Added retention-day configuration controls in admin dashboard with validation, save feedback, and live stats refresh.
  • Shared retention info component: Added a reusable frontend component for shared-link retention/help text, used by both easy and expert share dialogs.

Changed

  • Permanent link access rule: Enforced permanent-link selection for authenticated users only in easy/expert sharing flows and backend create validation.
  • Retention policy handling: Replaced hardcoded 10-day expiry logic with runtime-configurable retention days used by cleanup and admin statistics.
  • Share dialog messaging: Updated easy/expert sharing dialogs to display active retention duration (in days) and authentication guidance through shared UI.
  • Admin cleanup labels: Updated admin dashboard copy to use dynamic retention-day values and synced manual last-run display with backend cleanup timestamps.

Fixed

  • Shared link resolution reliability: Fixed shared configuration proxy/read path to preserve auth context and avoid false "Shared configuration not found" scenarios.
  • Tracking side-effect regression: Prevented non-critical view-tracking PATCH 404 errors from breaking shared configuration reads.
  • String payload restoration: Fixed shared-link import/render flow when configuration is returned as a serialized JSON string.
  • Docstring contract compliance: Fixed missing :param/:return: tags for new shared-link policy/retention functions and routes.
  • Ui fix: Fixed color of "Tous nos guides" button in homepage hero section to ensure comliance with design specifications.

v0.7.16

EXPERT MODE EMPTY CONFIG POWER CONSUMPTION FIX

Fixed

  • Empty expert configuration consumption display: Fixed expert-mode power summary so an empty configuration now displays 0W instead of a computed non-zero value.
  • Consumption calculation guard: Updated power estimation logic to skip base-system and safety-margin computation when no component is selected.
  • Regression coverage for empty state: Added expert-mode E2E coverage to verify the component selection view shows Consommation: 0W when the configuration is empty.

v0.7.15

EXPERT FILTER KEY ALIGNMENT, SCHEMA INTERFACE GENERATION & TOOLING UPDATES

Changed

  • Storage filter key alignment: Updated frontend storage filter configuration from type to storage_type so expert-mode filtering targets the backend field name actually exposed by the API.
  • Case form-factor normalization robustness: Updated case compatibility checks to normalize values as strings before form-factor mapping, preventing enum value shape mismatches in frontend compatibility evaluation.
  • Getter route query invocation: Removed an unnecessary await on build_distinct_query in the backend getter route to align invocation with the function's synchronous behavior.
  • Dev PocketBase image version: Bumped PocketBase dev image build argument from 0.37.1 to 0.37.2 in development compose configuration.
  • Frontend lockfile refresh: Updated lockfile-resolved dependencies (including Next.js/SWC, TipTap, TypeScript-ESLint, react-hook-form, and fast-xml-parser families) after dependency resolution refresh.
  • Root TODO cleanup: Cleared legacy entries from the root TODO.md file.

Fixed

  • TypeScript interface generator multiline parsing: Reworked sqlModelToInterface.ts extraction logic to correctly parse multiline Mapped[...] declarations and multiline RHS calls (including relationship(...) assignments).
  • Generated schema interface accuracy: Regenerated globalSchemaInterfaces.ts with corrected mappings, including enum typing for PCCase.supported_motherboard_form_factors.
  • Missing relationship field generation: Restored missing relation fields in generated interfaces (notably ThermalCompound.general_product_information) that were previously dropped by line-based parsing.
  • Malformed output regression: Fixed malformed generated TypeScript fragments caused by multiline SQLAlchemy declarations leaking Python syntax into interface output.

v0.7.14

DYNAMIC CASE FIT VALIDATION, EXPERT MODE UX POLISH & ROUTE INTEGRATION COVERAGE

Added

  • Dynamic case-fit compatibility engine: Added easy_mode_case_fit_service.py to evaluate physical fit constraints based on real specifications (GPU length, CPU cooler height, PSU form factor/length, motherboard form factor, and radiator support parsing).
  • Validator route integration coverage: Added integration test coverage for /config_validator/validate_component_compatibility to ensure dynamic case-fit conflicts are returned in API responses.
  • Case-fit regression coverage: Added dedicated tests for dynamic case-fit scenarios, including enum-based form factor compatibility edge cases.

Changed

  • Easy mode case filtering: Updated case recommendation filtering to use dynamic case-fit validation instead of relying only on generic compatibility rules.
  • Easy mode GPU and CPU cooler filtering: Updated GPU and CPU cooler compatibility pipelines to enforce selected-case physical constraints before recommendation scoring.
  • Expert mode compatibility UX: Reworked case compatibility details in expert mode with clearer copy, status chips, and an interactive collapse/expand section for boîtier details.

Fixed

  • False-negative case compatibility: Fixed enum/string normalization for motherboard and PSU form factors to prevent valid cases from being incorrectly rejected.
  • Easy mode no-case recommendation regression: Fixed a path where all case candidates could be filtered out and trigger No pccase recommendation found despite valid compatible options.
  • French UI copy quality: Fixed accents and wording in expert mode compatibility messages for clearer, more polished output.

Refactored

  • Case-fit service complexity: Refactored get_case_fit_conflicts into focused helper functions to satisfy lint complexity limits while preserving behavior.

v0.7.13

CRON JOB MIGRATION, RECOMMENDED CONFIG PERSISTENCE & ENVIRONMENT HARDENING

Added

  • Repository root detection utility: Added find_repo_root function to programmatically locate repository paths for dynamic configuration and file operations.
  • Cron job superuser authentication: Implemented superuser authentication and credentials handling for secure, isolated cron job execution without storing sensitive credentials in environment.
  • Recommended configurations refresh endpoint: Added dedicated /refresh endpoint for recommended configurations to enable on-demand cache regeneration and backend-triggered persistence.
  • Recommended configurations deletion API: Implemented delete functionality for recommended configurations with proper API endpoints and error handling for empty collections.
  • Recommended configuration persistence service: Built comprehensive persistence layer to store, update, and manage recommended configurations with profile titles and selection tracking.
  • Motherboard feature score enhancement: Enhanced motherboard feature score calculation logic and added comprehensive validation error handling tests.

Changed

  • Dockerfile cron hooks removal: Removed deprecated cron hooks from Dockerfile as cron job execution has migrated to backend-controlled endpoints.
  • Environment configuration model: Updated environment variable handling and backup file permission management to support new authentication and cron execution flows.
  • Recommended configuration data model: Enhanced persistence layer to include profile title and selected config indicators for richer metadata tracking.
  • Error handling for recommended configs: Improved error handling in delete_all_recommended_configs to treat PocketBase 404 responses as empty collections rather than failures.
  • Frontend CardFooter styling: Updated CardFooter components with consistent padding (pt-0) for uniform layout across recommendation cards.

Fixed

  • Models registry timestamp: Updated last modified date in models_registry.py to reflect recent schema changes.
  • Shared configuration service docstrings: Cleaned up and clarified docstrings in shared_configuration_service.py for improved maintainability.
  • Repository path detection: Fixed repository root marker detection in repo_path.py with clearer naming conventions.
  • Recommended config deletion edge case: Fixed handling of 404 responses when deleting non-existent recommended configuration records.

v0.7.12

PRODUCTION HOTFIX

v0.7.11

RECOMMENDED CONFIGURATIONS CRON, ADMIN REFRESH & IMPERSONATION TOKEN

Added

  • Dynamic recommended configurations section: Added a homepage section that loads recommended PC configurations from PocketBase instead of relying on hardcoded sample cards.
  • Admin refresh action: Added an admin-only UI action to trigger the recommended configurations refresh job on demand.
  • PocketBase refresh cron: Added a PocketBase cron flow to regenerate the recommended configuration cache in the background with explicit operational logging.

Changed

  • Homepage recommendation source: Replaced the previous static recommendation data with the PocketBase-backed recommended_config collection.
  • Refresh trigger security model: Switched the admin refresh flow from username/password superuser authentication to a nonrenewable impersonation token.
  • Refresh execution model: Kept recommendation refreshes limited to manual admin triggers and cron execution, with no startup execution path.
  • Admin task placement: Moved the manual cache refresh entry into the admin task area instead of exposing it as a generic homepage action.

Fixed

  • Easy-mode case recommendation crash: Fixed the recommended_cases unbound variable crash in the compatible-case recommendation flow.
  • Backend trigger propagation: Fixed the PocketBase refresh path so the admin action now reaches the backend-triggered cron reliably.
  • Recommendation rendering: Fixed the homepage so the refreshed recommendation data actually appears in the frontend section.

v0.7.10

RECOMMENDED ARTICLES SECTION, IMAGE OPTIMIZATION & CONTENT RENDERING

Added

  • Dynamic recommended articles component: Created RecommendedArticlesSection component to fetch and display articles marked as recommended (isRecommended = true) from the database instead of hardcoded sample data.
  • PocketBase image thumb cropping: Implemented PocketBase thumb parameter (?thumb=350x100t) for optimized image preview display in article cards, cropping from the top with fixed 100px height.
  • Gradient teaser overlays: Added dramatic gradient overlays (from-transparent via-black/20 to-black/95) on article images to create visual hierarchy and enhance the preview aesthetic.
  • HTML content rendering support: Added proper HTML rendering in article detail pages using Tailwind's prose class and dangerouslySetInnerHTML to display formatted content instead of raw HTML entities.

Changed

  • Article author data fetching: Updated data-loading logic to fetch user information for all article authors (not just community articles) to ensure proper display names instead of raw user IDs.
  • Image optimization strategy: Applied unoptimized prop to Image components for PocketBase URLs since Next.js Image optimization doesn't work with external file APIs.
  • Article card layout: Reduced image container height from 160px to 100px (h-24) for compact, preview-oriented display.

Fixed

  • Author display issue: Resolved display of raw user IDs (e.g., 3slx0ftdz3e2xf3) by ensuring user data is fetched for all article types.
  • HTML content rendering: Fixed article detail page displaying raw HTML entities and tags by implementing proper HTML rendering with semantic prose styling.
  • Image display for official articles: Added conditional image rendering with fallback to BookOpen icon when official articles lack image data.

v0.7.9

MES CONFIGURATIONS STORAGE, BACKEND HELPER REFACTORING & UI POLISH

Added

  • Mes configurations workspace: Added the authenticated “Mes configurations” page to list, reopen, rename, export, and delete saved user configurations.
  • Authenticated shared-configuration API view: Added the /shared-configurations/me flow to expose a user-owned configuration library to the frontend.
  • PocketBase-backed user configuration storage: Added the PocketBase-backed persistence path for user configurations, replacing the previous PostgreSQL storage path for this feature.

Changed

  • Shared configuration ownership model: Updated the shared-configuration implementation to use PocketBase ownership relations and aligned the API payloads with the new storage model.
  • Frontend configuration management UX: Improved the configuration cards with title editing, export, reopen, sharing, and deletion actions in the “Mes configurations” view.
  • Component summary display: Updated the configuration summary to reveal additional components progressively instead of dumping the full list at once.

Fixed

  • Delete confirmation UX: Replaced the browser confirmation prompt with an in-app modal dialog for configuration deletion.
  • Datetime mapping robustness: Normalized PocketBase datetime values so empty or missing last_accessed_at values no longer break response validation.

Refactored

  • Backend utility helper extraction: Refactored backend utilities into a dedicated src/utils/helpers folder to separate file, model, environment, string, and ORM helpers.
  • Shared configuration service cleanup: Simplified shared-configuration update and persistence helpers while keeping the API contract stable.
  • Utility module reorganization: Moved several backend helper modules into clearer package boundaries to improve maintainability and import structure.

v0.7.8

EXPERT MODE POWER CONSUMPTION PRIORITY ENGINE

Added

  • Deterministic power computation module: Added a dedicated expert-mode power consumption engine to compute total estimated wattage from selected components.
  • Power source transparency in UI: Added explicit source display (TDP or Estimated) in expert-mode summary cards and compatibility context.
  • Formula-based fallback estimators: Added deterministic fallback estimators for CPU, GPU, RAM, and storage when direct TDP data is unavailable.

Changed

  • Priority-based consumption logic: Expert mode now applies strict power source priority: use component TDP when available, otherwise estimate from hardware specifications.
  • Global total computation model: Total power now consistently includes component subtotal, base system consumption, and a fixed safety margin to improve sizing reliability.
  • Real-time summary behavior: Consumption overview now recalculates on component selection/removal and returns a non-empty valid value for active configurations.

Fixed

  • Inconsistent expert consumption values: Resolved cases where consumption could be incorrect, incomplete, or zero due to missing priority/fallback handling.
  • Missing fallback inference path: Fixed missing-data behavior by inferring required values from available hardware specs instead of relying on static tier-based defaults.

v0.7.7

SONARQUBE UPGRADE, ANALYSIS CONFIGURATION & BADGE ALIGNMENT

Added

  • Manual SonarQube scan trigger: Added a workflow entry point to trigger SonarQube scans on demand.
  • README SonarQube badges: Added and refreshed quality badges in the README to surface SonarQube status more clearly.

Changed

  • SonarQube analysis configuration: Updated sonar-project.properties to refine copy-paste exclusions, ignore TODO tracking issues, and tune analysis behavior.
  • SonarQube reporting links: Aligned README badge links with the current SonarQube endpoints.
  • Analysis-driven housekeeping: Applied formatting and readability cleanups across affected backend and frontend files while addressing SonarQube findings.

Fixed

  • Badge target accuracy: Corrected SonarQube badge links in the README so they resolve to the intended resources.

Refactored

  • SonarQube-driven code cleanup: Refactored several utility and UI modules to reduce analysis noise and improve maintainability.

v0.7.6

EASY MODE BUDGET TARGET GAP, API RESPONSE CONTRACTS & SERVICE REFACTORING

Added

  • Config enum extraction for maintainability: Added dedicated backend enum module for configuration path keys at src/enums/config_enum.py.
  • Route error response contracts: Added explicit OpenAPI responses documentation for route-level HTTP errors (400, 404, 409, 500) across database, data-gathering, and getter endpoints.
  • Budget diagnostics utility: Added simple_budgets.py to support rapid budget-allocation debugging during easy-mode tuning.
  • Algorithm documentation update: Added and refreshed easy-mode algorithm step-by-step documentation and budget-flow explanation artifacts.

Changed

  • Easy Mode budget targeting behavior: Updated recommendation and selection flows to prioritize budget-fit candidates, reduce target-budget gaps, and support controlled fallback/retry behavior when first-pass recommendations are empty.
  • Service scoring consistency: Updated motherboard, RAM, PSU, GPU, case, and CPU-cooler recommendation orchestration to improve budget-awareness and ranking consistency.
  • Shared configuration read path structure: Reorganized shared-configuration retrieval flow into clearer helper-based orchestration while preserving access checks and view tracking behavior.
  • Frontend navigation/link handling: Updated link-wrapper, navbar, user menu, and product route handling to improve navigation consistency and reduce link-related UX issues.

Fixed

  • API schema quality and static-analysis compliance: Fixed multiple backend API contract issues by documenting raised HTTP exceptions in route decorators and by adding missing explicit defaults/annotations where required.
  • Easy Mode async signature mismatches: Removed unnecessary async signatures (and corresponding await usage) from recommendation helpers that had no asynchronous work.
  • Recommendation edge-case handling: Fixed fallback behavior when strict budgets or filtered candidates could otherwise produce empty recommendation lists.

Refactored

  • Easy Mode service complexity reduction: Refactored large recommendation orchestration functions into focused helpers (RAM/PSU/motherboard paths) to lower cognitive complexity without changing functional intent.
  • GPU brand diversity enforcement internals: Refactored competitive-brand presence logic into reusable helper routines for brand extraction, candidate selection, and replacement targeting.
  • Configuration validation internals: Refactored global-rule validation flow into smaller helper methods for rule applicability and side-component extraction.

v0.7.5

GIT SUBMODULE MIGRATION FOR EXTERNAL DATASET TRACEABILITY

Added

  • External repository as Git submodule: Added buildcores-open-db as a tracked submodule at Dev/Backend/temp/open-db with branch metadata in .gitmodules.
  • Documented dependency pinning workflow: Added backend setup/update instructions for submodule initialization, explicit version checks, and pinning to a specific tag or commit.

Changed

  • Backend startup dependency behavior: Replaced runtime repository clone/pull behavior with deterministic submodule presence checks.
  • Root setup flow: Updated backend startup instructions to include git submodule update --init --recursive.

Refactored

  • Removed obsolete runtime Git updater utility: Deleted backend repository update helper previously used for periodic clone/pull operations.

v0.7.48

PRODUCTION HOTFIX FOR SHARED CONFIGURATION SCHEMA DRIFT #8

v0.7.47

PRODUCTION HOTFIX FOR SHARED CONFIGURATION SCHEMA DRIFT #7

v0.7.46

PRODUCTION HOTFIX FOR SHARED CONFIGURATION SCHEMA DRIFT #6

v0.7.45

PRODUCTION HOTFIX FOR SHARED CONFIGURATION SCHEMA DRIFT #5

v0.7.44

PRODUCTION HOTFIX FOR SHARED CONFIGURATION SCHEMA DRIFT #4

v0.7.43

PRODUCTION HOTFIX FOR SHARED CONFIGURATION SCHEMA DRIFT #3

v0.7.42

PRODUCTION HOTFIX FOR SHARED CONFIGURATION SCHEMA DRIFT #2

v0.7.41

PRODUCTION HOTFIX FOR SHARED CONFIGURATION SCHEMA DRIFT #1

v0.7.4

SHARED-SCHEMA SELF-HEALING, STORAGE TYPE SAFETY & MODEL REGENERATION

Added

  • Backend shared schema utility: Added a dedicated shared-configuration schema readiness utility with probe/repair flow and idempotent runtime reconciliation for missing shared artifacts.
  • Backend regression tests for storage typing safety: Added targeted tests to validate storage scoring and easy-mode recommendation flows when storage_type exists and legacy type is absent.

Changed

  • Backend initialization and model sync schema gates: Updated /init/setup and /models/sync_models flows to reuse the shared schema readiness utility instead of route-local checks.
  • Backend shared configuration route checks: Replaced duplicated in-route schema verification logic with centralized utility calls across create/read/cleanup/admin endpoints.
  • Frontend footer metadata display: Updated footer legal line to include explicit copyright wording and application version from package.json.
  • Auto-generated backend schema and registry artifacts: Refreshed global_schema.py and models_registry.py outputs after model regeneration, including enum/field ordering and generated metadata timestamp updates.
  • PocketBase runtime data snapshot: Updated committed PocketBase runtime SQLite data artifact to current local state.

Fixed

  • Shared configuration runtime startup failure: Fixed repeated cleanup/setup failures caused by missing shared_configuration_view and schema drift by applying safe idempotent schema repair before serving shared-config features.
  • Easy mode storage recommendation crash: Fixed AttributeError: 'Storage' object has no attribute 'type' by normalizing storage type access to storage_type with backward-compatible fallback.
  • Storage price seeding compatibility issue: Fixed storage scoring type resolution to avoid direct dependency on deprecated Storage.type field.

Refactored

  • Alembic shared configuration migration resiliency: Refactored migration f3a9d7e5b1c2 to be idempotent by checking table and index existence before creation.
  • Easy mode storage type handling internals: Consolidated repeated storage-type extraction into a single helper used by scoring, filtering, and logging paths.

v0.7.3

STARTUP MIGRATIONS, CI MAIN TRIGGER & VERSION BUMP

Added

  • Backend startup migration execution: Added optional Alembic execution at application startup (upgrade head) with explicit failure reporting and timeout handling.

Changed

  • CI workflow trigger scope: Updated Docker image workflow trigger to run on pushes to both PROD and main branches.
  • Frontend package versioning: Bumped frontend package version from 0.7.2 to 0.7.3.
  • PocketBase runtime data snapshot: Updated committed PocketBase SQLite runtime data artifacts to current local state.

Fixed

  • Startup schema drift risk: Ensured startup can apply pending migrations before initialization when migration auto-run is enabled.

Refactored

  • Backend lifespan orchestration: Split startup lifecycle responsibilities into focused helpers (_wait_for_db_ready, _run_optional_startup_tasks, _cleanup_loop) to reduce complexity while preserving behavior.

v0.7.2

STARTUP RESILIENCE, FRONTEND PORT ALIGNMENT & TOOLING CLEANUP

Added

  • Backend tests - Motherboard memory slot regression coverage: Added dedicated unit tests for motherboard memory scoring to guarantee null-safe behavior when memory.slots is missing.

Changed

  • Frontend runtime port alignment: Updated production start command to bind Next.js on port 3938 so local and container startup behavior matches project networking expectations.
  • Frontend dependency lock refresh: Refreshed lockfile-resolved package versions (including Next.js patch and related dependency graph updates) to keep resolved dependencies in sync with the current package manifest version.
  • PocketBase runtime data snapshot: Updated committed PocketBase auxiliary SQLite artifact to reflect latest local runtime state.

Fixed

  • Backend initialization - Motherboard price seeding crash: Fixed startup failure during automatic initialization when a motherboard has memory.slots = null by normalizing missing values before score multiplication.

Refactored

  • Frontend build tooling cleanup: Removed obsolete PowerShell build helper script and generated local build log artifact from source control to reduce repository noise and avoid committing transient debug output.

v0.7.1

ADMIN PRICE SHEET FILTERING, PROMQL SELECTORS & BULK CATEGORY TOGGLE

Added

  • Frontend - Advanced admin price filters: Added richer filter controls in the admin price sheet, including search, min/max price, price status, and sort option handling through the frontend query builder.
  • Frontend/Backend - Prometheus-style selector filtering (prom_query): Added support for PromQL-like label selector queries (for component_type, component_name, component_brand) in the admin price workflow.
  • Frontend - Bulk category selection control: Added a bulk category toggle button that switches between Select All and Deselect All based on current checkbox state.

Changed

  • Backend - Price listing query parsing architecture: Reworked /prices/components query handling into a structured validated query model and helper-based filter/order builders for maintainability.
  • Frontend - Category filter UX behavior: Updated category filter interaction so global selection status is reflected in button label and action semantics.

Fixed

  • Backend - Component type filter parsing: Fixed list query parameter handling so repeated component_type values are correctly interpreted and applied.
  • Frontend - Price sheet build/runtime error: Fixed JSX placeholder escaping issue in the PromQL input that caused Expected unicode escape and page 500 on render.

Refactored

  • Backend - Prometheus selector parser complexity: Split selector parsing into focused helpers and reduced route complexity to satisfy lint rules (C901, PLR0912, PLR0913) while preserving behavior.

v0.7.0

AUTHENTICATION SYSTEM, OAUTH FINALIZATION & MFA HARDENING

Added

  • Frontend - Complete auth flow (email/password + OAuth): Added end-to-end user authentication flows for registration, login, logout, authenticated profile usage, and OAuth provider login (GitHub/Google) with dedicated auth utility orchestration.
  • Frontend/Backend - MFA setup and verification endpoints: Added MFA setup-completion and verification API routes with TOTP code checks, backup-code handling support, and integration paths to persist MFA state for authenticated users.
  • Frontend - Dedicated auth and MFA UI surfaces: Added login and MFA user journeys (including setup and challenge handling) with explicit state transitions for MFA-required sessions.
  • Frontend - Typed PocketBase collection utility: Added reusable typed collection helpers and centralized collection-map types to support schema-accurate record typing per collection.

Changed

  • Frontend - Session handling hardening: Migrated auth persistence behavior away from client token storage patterns toward server-validated session retrieval and cookie-backed auth endpoints.
  • Frontend - PocketBase typing strategy: Replaced ad-hoc custom auth shapes with PocketBase-native response/provider model types and collection-specific record typings.
  • Backend - MFA route architecture: Refactored MFA route internals into focused helper functions with clearer validation and PocketBase communication boundaries.

Fixed

  • Frontend - OAuth login finalization gap: Fixed the OAuth success-without-login issue by finalizing OAuth server-side and correctly establishing the application session.
  • Backend - XML security dependency/runtime issue: Fixed backend startup/runtime failure caused by missing XML hardening dependency resolution and aligned XML utility typing.
  • Backend - MFA lint and async safety issues: Fixed route-level quality issues (redundant FastAPI route args, missing Annotated usage, complexity hotspots, and async blocking HTTP usage) in MFA endpoints.

Refactored

  • Frontend - Auth type consistency across consumers: Standardized auth-related type usage in auth utilities and consumers (including E2E auth payload typing) to reduce divergence and casting overhead.
  • Backend - MFA constants and validation flow: Consolidated repeated status and validation values into named constants/helpers to improve readability and maintainability.

v0.6.16

EASY MODE GPU BRAND PROFILES, AFTERMARKET BRAND DETECTION & STRATEGY DEDUPLICATION

Added

  • Backend - Brand-level GPU usage profiles for Easy Mode: Added XML-driven GPU brand profiles with usage weights and helper APIs to compute usage-aware brand bonuses for recommendation scoring.
  • Backend - Cross-strategy GPU deduplication for pricing comparison: Added strategy-level exclusion flow to avoid selecting the exact same GPU across Strict, Flexible, and Budget saver configurations when alternatives are available.
  • Tests - GPU brand normalization and strategy helper coverage: Added test coverage for product-name-based brand normalization and strategy GPU ID extraction logic.

Changed

  • Backend - GPU brand detection logic: Updated GPU brand normalization to infer canonical vendor (AMD, NVIDIA, INTEL) from both manufacturer and product name, improving detection for aftermarket boards (e.g., MSI, Sapphire, ASRock).
  • Backend - Easy Mode GPU filtering and scoring path: Updated filtering, competitive diversity enforcement, and competitive usage adjustments to use the combined brand detection signal (manufacturer + card name).
  • Backend - Recommendation orchestration maintainability: Split get_all_recommendations into smaller helpers for GPU budget computation and GPU filter parsing to keep logic clearer and lint-compliant.

Fixed

  • Backend - Ignored GPU brand filter with aftermarket manufacturers: Fixed cases where selecting AMD/NVIDIA did not work when component_metadata.manufacturer contained board partner names instead of chip vendor names.
  • Backend - Repeated GPU across all budget strategies: Fixed repeated top GPU output across strategy cards by excluding already selected GPU IDs in subsequent strategy generations with fallback safety.

Refactored

  • Backend - XML loading security hardening: Replaced standard XML parsing with defusedxml in XML utilities and declared explicit dependency to satisfy security linting.

v0.6.15

EXPERT MODE PAGINATION CONTROLS & PAGE SIZE SELECTOR

Added

  • Frontend - Expert mode page navigation controls: Added Precedent / Suivant controls with explicit page indicator (Page x / y) in the expert component selection panel.
  • Frontend - Page size selector in expert mode: Added direct page-size selection options (10, 20, 30) to control how many components are displayed per page.
  • Backend - Filter-aware total count for component listing: Added backend total-count calculation for /getter/all/{component} so pagination UI can display accurate shown/total values.

Changed

  • Frontend - Expert selection pagination behavior: Replaced incremental "Load More" accumulation with true page-based navigation that fetches and displays one page at a time.
  • Frontend - Sticky pagination toolbar: Moved pagination controls to a sticky toolbar at the top of the component list to keep navigation accessible while scrolling.
  • Frontend - Default page batch size: Increased default expert-mode page size fallback from 5 to 10 for better browsing efficiency.

Fixed

  • Frontend/Backend - shown/total count accuracy: Fixed pagination counters by aligning frontend display with backend total count instead of page-length totals.

v0.6.14

PUBLIC ARTICLE CREATION & FORUM TOPIC CREATION

Added

  • Frontend - Community article creation and moderation workflow: Added public community article creation flow with draft/review-oriented defaults and admin review queue support.
  • Frontend - Forum new topic creation flow: Added full authenticated "Nouveau sujet" creation flow in forum discussions, including topic payload creation and redirect to topic detail after publish.
  • Frontend - Forum category options integration: Added forum category selection driven by PocketBase select-options (/api/select-options/forum) with fallback handling.

Changed

  • Frontend - Forum creation validation: Strengthened forum topic creation validation (required auth, title/content constraints, category consistency checks).
  • Frontend - Community UX code readability: Refactored related community/forum code paths for improved readability and maintainability.

v0.6.13

COMMUNITY NAVIGATION CONSISTENCY & FORUM BREADCRUMB ALIGNMENT

Added

  • Frontend - Forum topic breadcrumb trail: Added full breadcrumb navigation on forum discussion detail pages to align with article detail UX (Home > Communauté > Forum > {topic}).

Changed

  • Frontend - Community return labels: Updated generic return button labels in community-related pages to destination-specific wording (for example, "Retour aux articles" and "Retour au forum") for clearer navigation intent.
  • Frontend - Article detail top navigation: Added a prominent return action at the top of community article detail pages to mirror other community detail layouts.

Fixed

  • Frontend - Community navigation consistency: Harmonized detail-page navigation behavior and labeling between forum discussions and article detail pages, reducing ambiguity and mismatched back paths.

v0.6.12

STABLE BRANDING: REMOVE BETA LABEL

Changed

  • Frontend - Header and footer branding: Removed the visible BETA badge from shared navigation and footer branding components to reflect the platform stable state.
  • Frontend - Homepage hero branding: Removed the BETA label from the homepage title so the main product name is displayed consistently.

Fixed

  • Frontend - Browser and SEO title consistency: Ensured public-facing branding now uses only the main platform name without a Beta qualifier across user-visible title surfaces.

v0.6.11

CONTACT PAGE SUBMISSION & HYDRATION FIX

Added

  • Frontend - Contact form submission flow: Added a real contact form submit path from the /contact page through a frontend API route to the backend contact endpoint.
  • Backend - Contact submission endpoint: Added /contact handling on the backend with request validation and structured success/error responses.

Changed

  • Backend - Contact payload models: Moved contact request and response payload models into src/enums/contact_enums.py alongside the contact enum values.

Fixed

  • Frontend - Contact page hydration error: Fixed invalid nested anchor markup in the social link area so the contact page loads without hydration failures.
  • Frontend - Contact form behavior: Replaced the simulated submit timeout with real validation, backend submission, and user feedback for success and failure states.

v0.6.10

EASY MODE NON-LINEAR BUDGET SLIDER

Added

  • Frontend - Segmented budget mapping helpers: Added deterministic bidirectional mapping between slider position and budget value using three segments to support non-linear behavior in Easy Mode.
  • Tests - Easy Mode budget quantization coverage: Added Playwright E2E coverage to validate segmented budget rounding behavior across mid and high ranges.

Changed

  • Frontend - Easy Mode budget slider behavior: Replaced the linear 300EUR-10000EUR slider behavior with segmented steps: 50EUR from 300EUR to 2000EUR, 100EUR from 2000EUR to 4000EUR, and 250EUR from 4000EUR to 10000EUR.
  • Frontend - Slider range emphasis: Rebalanced slider track distribution so the visual midpoint is centered around the common selection zone (~3000EUR-3500EUR), improving practical precision for typical configurations.
  • Frontend - Budget display and ticks: Updated budget display and slider legend markers to reflect segment breakpoints (300EUR, 2000EUR, 4000EUR, 10000EUR).

Fixed

  • Frontend - Easy Mode budget selection precision: Fixed imprecise budget selection in the most-used range by snapping values to segment-appropriate increments and keeping typed input aligned with slider normalization.

v0.6.9

EASY MODE BUDGET STRATEGIES & PERFORMANCE COMPARISON

Added

  • Backend - Multi-strategy Easy Mode generation: Added three budget strategies for Easy Mode recommendations from a single user budget input: Strict budget (exact target), Flexible budget (target with ±100EUR comparison range), and Budget saver (target minus 100EUR with floor protection).
  • Backend - Strategy metadata in API response: Added per-configuration strategy metadata (strategy, strategy_label, target_budget, budget_range) and top-level comparison metadata (comparison_mode, input_budget) to support side-by-side frontend comparison.
  • Backend - Performance indicators per generated configuration: Added performance_indicators for each recommended build, including normalized performance score, usage suitability tier, and estimated FPS values for 1080p/1440p.
  • Tests - Pricing strategy and indicator coverage: Added dedicated tests for strategy generation behavior, minimum-budget clamping, and performance indicator output consistency.

Changed

  • Frontend - Easy Mode comparison cards: Updated recommendation cards to display strategy labels, target/range budget context, and performance indicators directly in the UI for clearer trade-off analysis.
  • Backend - Recommendation orchestration limit handling: Updated Easy Mode recommendation orchestration so strategy-driven calls can explicitly request a single top-ranked configuration while preserving existing ranked recommendation behavior elsewhere.
  • Backend - FPS estimation model calibration: Reworked FPS estimation to avoid hard saturation and tuned values toward more conservative, usage-aware projections (especially for AAA scenarios).

Fixed

  • Backend - Repeated capped FPS values: Fixed the previous behavior where high-end configurations were frequently flattened to identical FPS estimates, reducing comparison value between strategy variants.

Refactored

  • Backend - Response indicator internals: Refactored performance indicator internals into clearer helper functions and constants to improve readability, lint compliance, and future tuning safety.

v0.6.8

EXPERT MODE SELECTION FLOW, COMPATIBILITY VALIDATION & PORT ALIGNMENT

Added

  • Frontend - Compatibility validation API route: Added app/api/config-validator/route.ts to centralize component compatibility checks from the configurator UI.
  • Frontend - Motherboard details component: Added a dedicated motherboard specifications component in product details pages for richer technical display.
  • Infrastructure - Playwright entrypoint script: Added Production/entrypoint-playwright.sh to improve E2E container startup orchestration.

Changed

  • Frontend - Expert mode selection workflow: Updated selection panel behavior with improved sorting/filtering and better handling of pending selections while navigating component categories.
  • Frontend - Configuration state continuity: Improved expert/easy configurator state handling to keep current configuration context more consistent during selection updates.
  • Backend - Compatibility and getter flow: Updated getter route/utilities and motherboard scoring logic to align backend responses with the new configurator validation flow.
  • Infrastructure - Backend/frontend port alignment: Standardized ports and related environment/runtime references across Docker compose files, Dockerfiles, Playwright config/scripts, and architecture documentation.
  • Tests - E2E scenario alignment: Updated Playwright product/docs/shared-config test setup and specs to match the new routing and runtime configuration.

Fixed

  • Frontend - Expert mode resilience: Improved error handling around configuration import and component selection to reduce failure cases during interactive configuration.

Refactored

  • Frontend - Expert mode configuration mapping: Refactored component configuration keys and related selection/config rows hooks for clearer maintainability.

v0.6.7

PLAYWRIGHT E2E TESTING, EXPERT MODE EXPORT & PRODUCT TRACKING

Added

  • Frontend/Backend - Playwright end-to-end testing framework: Added comprehensive E2E testing setup with Playwright integration, Docker compose configuration, and CI/CD automation for cross-browser testing scenarios.
  • Frontend - Playwright E2E test scenarios: Added new test cases for critical user flows including deal sharing, configuration management, product searches, and user interactions.
  • Frontend/Backend - Product view source tracking: Implemented view source tracking for configurateur-facile and expert modes to monitor user behavior and product discovery paths.
  • Backend - PocketBase update automation: Added automated update script for PocketBase version management to streamline deployment workflows.
  • Frontend - Expert mode configuration export: Added configuration save and export functionality in ConfigurateurExpert for user configurations persistence and sharing.
  • Infrastructure - AI-driven development integration: Added AI-driven development tooling and workflows for enhanced development process and code generation.

Changed

  • Frontend - Price formatting consistency: Updated price formatting across all price display components to consistently show two decimal places for better UX consistency.
  • Frontend - Docker build workflow: Enhanced Docker build process with semantic version tagging and additional image builds for production deployments.
  • Frontend - ComponentCard Link formatting: Refactored Link component formatting in ComponentCard for improved code clarity and maintainability.
  • Frontend - Memory support checks: Updated memory compatibility checks and product linking in ComponentCard component.

Fixed

  • Frontend - Price display type safety: Fixed type errors in price formatting where string values were being passed to formatPrice() function by adding proper number conversion.
  • Frontend - Link component handling: Corrected formatting and rendering of Link component in shared configuration deals display.

Refactored

  • Code structure improvements: Refactored overall code structure for improved readability, maintainability, and consistency across the codebase.
  • Configuration state management: Updated shared schema state management in shared configurations for better separation of concerns and reduced complexity.
  • Component organization: Improved component organization and dependencies for better code organization and testability.

v0.6.6

ALEMBIC MIGRATION GOVERNANCE & SHARED CONFIG SCHEMA ALIGNMENT

Added

  • Backend - Alembic head merge revision: Added merge migration d4b9c8e7f1aa to unify migration branches and restore a single migration head.
  • Backend - Shared configuration schema finalization: Added migration-driven creation/alignment for shared configuration structures (shared_configuration_view, config_hash index, and related schema checks).
  • Backend - Migration guard task: Added migrate-assert-single-head task to detect multi-head regressions early in local checks and CI pipelines.

Changed

  • Backend - Runtime schema behavior: Shared configuration endpoints now validate required schema presence and return an explicit 503 when migrations are missing, instead of mutating schema at runtime.
  • Backend - Migration replay strategy: Historical intermediate Alembic revisions were preserved but neutralized as no-op continuity revisions to keep upgrade chains deterministic.
  • Documentation - Alembic workflow: Backend docs now explicitly require running migrations before startup and include the single-head verification command.

Fixed

  • Alembic graph consistency: Resolved divergent Alembic heads that previously made migration state ambiguous.
  • Schema drift risk in shared configuration flow: Removed implicit DDL side-effects in API routes to avoid silent drift between runtime schema and migration history.

Refactored

  • Migration ownership model: Consolidated database evolution under Alembic-first governance to improve traceability, reproducibility, and reviewability of DB changes.

v0.6.5

INFRASTRUCTURE HARDENING, DOCS SECURITY & INIT FLOW

Added

  • Backend - Initialization control endpoints: Added initialization orchestration and readiness endpoints under /init to run setup once, expose current status, and support startup health checks.
  • Backend - Configurable DB startup retries: Added environment-driven retry controls for database startup checks (DB_STARTUP_RETRIES, DB_STARTUP_RETRY_DELAY_SECONDS) to improve resilience during container boot.
  • Backend - Protected documentation flow: Added docs authentication/session utilities and entry-token gate for protected access to /docs, /openapi.json, and /redoc.

Changed

  • Backend - Host/CORS configuration by environment: Backend host allow-list and frontend CORS origins are now driven by environment configuration for production-safe deployments.
  • Frontend - Documentation proxy routing: Updated frontend documentation routing to rely on backend proxy paths and tightened docs access flow from admin entrypoints.
  • Documentation - Infrastructure diagrams: Updated production and development architecture diagrams to match the current network and service topology.
  • Frontend - Product details display: Simplified boolean rendering in CPU and storage details components for clearer UX output.
  • Assets metadata: Added metadata entries for new storage images and backup artifact indexing.

Fixed

  • FastAPI docs access control: Fixed documentation exposure by enforcing credential-based login and token-gated entry path.
  • Initialization/logging robustness: Improved initialization state handling and associated log/readability behavior across startup routines.

Refactored

  • Backend initialization sequence: Refactored initialization orchestration and waiting logic to be safer under concurrent startup requests.
  • Docs security internals: Refactored docs security helpers to centralize configuration validation and session handling.

v0.6.4

POPULATE NAME CLEANING & LOGGING CONSISTENCY

Added

  • Backend - Component name cleaner service: Added component_name_cleaner_service to normalize hardware product names during populate (for example, trimming CPU frequency/core/socket suffixes and GPU trailing part-number fragments).
  • Populate API option: Added clean_component_names query parameter on POST /populate/component/{component} and POST /populate/components to control cleaning behavior per run.

Changed

  • Populate execution flow: Threaded clean_component_names through populate settings and async session context so both bulk and relational upsert paths apply the same behavior.
  • Create/update normalization: Name cleanup now runs in populate normalization for both new inserts and updates of existing components.
  • Backend logging consistency: Refactored logging style and related readability updates across Easy Mode and utility modules.

Fixed

  • Unrendered logger placeholders: Replaced %s-style logger calls that were being emitted literally (e.g. Fetched %s: ID=%s, Name=%s) so runtime logs now include real values.

v0.6.3

SHARED CONFIGURATION & ADMIN OPERATIONS

Added

  • Shared configuration foundation: Added backend model, routes, and frontend integration to generate shareable configuration links from Easy/Expert modes.
  • Private link security: Added generated private access keys for non-public shares with backend validation and dedicated private-key input UX on shared pages.
  • Retention controls: Added permanent_link option (default false) to protect selected shares from automatic expiry cleanup.
  • Server-driven periodic cleanup: Added internal FastAPI background cleanup loop to remove expired non-permanent shared links (>10 days) without external system cron.
  • Admin operations dashboard: Added Admin Dashboard entry and page to trigger cleanup jobs on demand.
  • Admin observability API: Added shared-configuration stats endpoint and frontend cards for totals, visibility split, retention state, expired links, and tracked unique viewers.

Changed

  • Idempotent sharing behavior: Sharing the same configuration/options now reuses an existing share link instead of creating duplicate records via config_hash matching.
  • View tracking strategy: View counts now use unique viewer tracking (account first, fallback IP) with persistent fingerprints to avoid duplicate increments across reloads/tabs for the same viewer.
  • Frontend proxy routing: Admin and share proxy routes now forward required parameters for cleanup triggers, stats retrieval, viewer identity, and tracking flags.

Fixed

  • Auth refresh noise: Reduced PocketBase auth refresh auto-cancellation errors by disabling SDK auto-cancel behavior for auth user fetch flows.
  • Backend lint/compliance fixes: Applied Ruff/FastAPI rule cleanups (SIM105, UP042, FAST001, FAST002, FBT001) in cleanup lifecycle and shared configuration routes.

v0.6.2

EASY MODE CARD PHRASES ROTATION

Added

  • Frontend – Usage phrase catalog: Added usagePhrases.json with 20 standard phrases for each main usage category and each usage subcategory used by Easy Mode cards.
  • Frontend – Phrase selection utility: Added deterministic per-render phrase selection utility that builds a phrase pool from selected usages and category children.

Changed

  • Frontend – Recommendation cards: Replaced hardcoded card bullet texts with dynamic phrases sourced from the usage phrase catalog.
  • Frontend – Card phrase display rules: Each recommendation card now shows 2 or 3 phrases, with random selection and no duplicates across displayed cards in the same result set.

v0.6.1

EASY MODE ALGORITHM IMPROVEMENTS

Added

  • Easy Mode – Top 3 configurations: The recommendation response now returns a ranked configurations list (up to 3 complete builds) instead of a single config. The top-1 root fields are preserved for backward compatibility.
  • Easy Mode – Share button feature flag: New DISPLAY_SHARE_BUTTON env variable (default false) controls visibility of the share button on each recommendation card. Exposed via window.__ENV for client-side consumption.
  • Easy Mode – Professional GPU hard-filter: Workstation/pro GPUs (RTX 5000 Ada, RTX 6000, Quadro, Tesla, FirePro, Radeon Pro) are now excluded from gaming builds before scoring, not merely penalised.
  • Easy Mode – Modern CPU platform preference: Gaming builds now prefer AM5/LGA1851 CPUs; AM4, LGA1200, LGA1151, and HEDT (LGA2066) platforms are filtered out when modern alternatives fit the budget.
  • Easy Mode – DDR5 and latency/speed RAM scoring: DDR5 kits receive a generation bonus; CAS latency and speed quality are evaluated per DDR generation with explicit thresholds; single-module kits are heavily penalised.
  • Easy Mode – Platform longevity scoring for motherboards: AM5/LGA1851 boards gain a modernity bonus; legacy chipsets (X299/C621, AM4 300/400-series, X470/B450) receive graded penalties; DDR5 boards receive an extra bonus.
  • Easy Mode – ITX board detection via product name fallback: When form_factor metadata is missing or incorrect, ITX is inferred from the product name to reliably penalise ITX boards in mainstream gaming builds.
  • Easy Mode – NVMe-first gaming storage preference: Gaming builds now hard-prefer non-entry-level NVMe SSDs; fallback chain is: quality NVMe → any NVMe → quality SATA SSD → any SSD → HDD.
  • Easy Mode – PSU price sanity checks: Implausibly cheap high-wattage PSU listings (e.g. >1000 W at <95 €) receive a score penalty to filter out data errors.
  • Easy Mode – Low-tier cooler detection: Mars Gaming, upHere, Aerocool, Hyper 212, and similar budget models are penalised to avoid weak cooler recommendations for high-TDP CPUs.
  • Easy Mode – CPU cooling type inference: Water/air classification is derived from product name keywords and radiator size when the water_cooled DB flag is missing or wrong.
  • Backend – SQL file execution endpoint: New admin endpoint to run raw SQL files against the database.
  • Backend – Health check endpoint: GET / welcome endpoint for infrastructure probing.
  • Backend – used_by_algorithm column: Added to CPU, GPU, motherboard, RAM, PSU, storage, cooler, and PC case tables to flag components eligible for Easy Mode recommendations.
  • Backend – Price management scripts and routes: Python + SQL scripts for bulk GPU, RAM, and PC case price updates; corresponding admin routes and frontend UI.
  • Frontend – Prices admin page: Link to component price sheet added to the user menu.
  • Data – New component CSV: Motherboards, cooling systems, and RAM specifications added to the open-db dataset.

Changed

  • Easy Mode – PCIe 3.0 storage score: Changed from +10 to −5 to reflect ageing throughput characteristics for modern game loading.
  • Easy Mode – Entry-level storage penalty: Increased from −25 to −40 for no-DRAM-cache SSDs (WD Green SN350, Kingston NV2/NV3, Crucial P3, Barracuda).
  • Easy Mode – Motherboard chipset generation scaling: Generation score divisor changed from 10 to 20 to prevent raw chipset numbers from dominating other scoring factors.
  • Easy Mode – AIO cooling score rebalanced: Base water-cooled bonus reduced; radiator size now gates tiered bonuses (≥360 mm +20, ≥280 mm +14, ≥240 mm +8, <240 mm −18); tall air coolers receive an explicit positive score.
  • Easy Mode – CPU generation parsing fixed: AMD generation now reads the first digit of the Ryzen model number (e.g. 9800X3D → gen 9); Intel generation reads the full two-digit SKU prefix (e.g. 14700K → gen 14).
  • Frontend – Amazon search links: Now handle null component names gracefully with a default fallback label.
  • Frontend – CPU/GPU product pages: Metadata display improved (clock, generation, socket detail).
  • Frontend – Storage type: Extended with storage_type discriminated field mapped to StorageStorageTypeEnum.
  • Database – Nullable fields: All non-PK and non-FK model fields made nullable to accommodate partial data imports.
  • Dockerfile: Backend image build updated for consistent package installation ordering.
  • Logging: Backend log messages harmonised for readability and consistency across Easy Mode services.

Fixed

  • Easy Mode – CPU metrics extraction: None-safe extraction for all numeric CPU fields prevents scoring crashes on incomplete database records.
  • Easy Mode – Component metadata name validation: Missing name fields are now caught and reported instead of silently producing null component names.

Refactored

  • Easy Mode services: Multiple rounds of Ruff/lint-driven refactoring across easy_mode_gpu_services, easy_mode_cpu_services, easy_mode_motherboard_services, easy_mode_ram_services, easy_mode_storage_services, easy_mode_cpu_cooler_services, easy_mode_services, easy_mode_recommendation_service, and easy_mode_response — scoring helpers extracted as module-level constants, high-complexity functions split, return-count warnings resolved.
  • Easy Mode – Response formatter: Refactored from single-config pick to ranked multi-config assembly; _pick_component_at_rank and _gather_ranked_full_components helpers added.
  • Code structure improvements and readability pass across backend routes and utilities.

v0.6.0

SQLALCHEMY MIGRATION

Added

  • SQLAlchemy 2.0 migration plan and execution checklist.
  • Alembic initialization and migration workflow documentation.
  • Async database smoke tests and ORM CRUD tests for migration validation.
  • Populate route performance metrics (per-file, per-component, aggregates).

Changed

  • Replaced SQLModel usage across backend services, routes, and utilities with SQLAlchemy equivalents.
  • Upgraded database engine/session configuration for SQLAlchemy 2.0 and improved pooling controls.
  • Introduced batch commits, bulk upserts, preloaded IDs, and controlled concurrency in population flows.

Fixed

  • Removed remaining SQLModel import paths that prevented app startup.
  • Cleaned up type hints and docstrings referencing SQLModel during migration.

Refactored

  • Extracted populate route helpers into utilities to reduce complexity and improve maintainability.

v0.5.1

COMMUNITY UX & LIKES

Added

  • Community article like/unlike with optimistic updates, auth guard, and UI messaging for unauthenticated users.
  • Secure author display via user_view across community article listing and detail pages.
  • Quick category filtering by clicking popular categories; buttons reflect active selection.
  • New community guide content covering PC assembly steps, VRAM guidance, and legacy articles for reference.

Changed

  • Popular category pills now toggle selection state to immediately apply filters in the article list.

Fixed

  • Prevented unauthenticated users from triggering like actions by gating the control and surfacing a login prompt.

v0.5.0

EASY MODE PERSISTENCE & BACKEND FIXES

Added

  • Easy Mode browser persistence: client-side localStorage now retains all configurator filters and the last recommended setup across refreshes and page exits (no backend DB writes).
  • Clear-config CTA: one-click reset purges stored Easy Mode data and restores factory defaults, so users can quickly restart a build.

Changed

  • Hydration guard: Easy Mode filters render only after client mount to avoid Radix/Next.js ID drift and aria-control mismatches during SSR/CSR reconciliation.
  • LocalStorage hook hardening: stable setters (useCallback + setState updater form) eliminate render churn, recursive updates, and slider ref thrash while keeping persistence behavior.

Fixed

  • Frontend stability: removed the infinite update depth loop triggered by Radix sliders when persisted values rehydrated; hydration mismatches addressed by the post-mount render gate.
  • Backend startup: fixed component getter mapping initialization (component_core) by dropping redundant tuple unpacking of ComponentGetterMappingValue, restoring FastAPI dev server boot.

v0.4.0

DOCUMENTATION

Added

  • Added endpoint to clean null values in Prisma models and improve update logic.
  • Implemented CPU model for filtering and scoring, including category requirements and main execution logic.

Changed

  • Refactored null value cleaning logic in PrismaSchemaCleaner for improved clarity and efficiency.
  • Refactored null value handling in PrismaSchemaCleaner to improve readability and maintainability.
  • Refactored null value cleaning logic in Prisma schema handling.

Docs

  • Updated API documentation and improved clarity on Prisma operations.

Refactored

  • Cleaned up code formatting and improved function definitions across multiple files.

v0.3.0

CLEAN NULL VALUE

Added

  • feat: Add clean null values endpoint and implement schema parsing utility
  • feat: Implement clean null values endpoint and update migration for CacheModel
  • feat: Enhance clean_null_values function to filter by specific hardware model type
  • feat: Update clean_null_values_endpoint to include hardware model type parameter

Changed

  • feat: Update clean_null_values function to skip updating None values for foreign key fields

Fixed

  • fix: Update CPU L1 cache dictionary and refresh last edited timestamps in hardware component models
  • fix: Update import paths to reflect new directory structure and clean up .gitignore

Refactored

  • refactor: Organize import statements and improve formatting in various files

v0.2.1

Changes

  • Standardized docstrings across the Parsing section for consistency.
  • Updated version in pyproject.toml.
  • Added Antonin Durand as an author.
  • Reorganized repository by removing non-development and legal document files.

v0.2.0

PARSING

Added

  • Integrated the **Parsing Section** that uses the buildcores-open-db repository to gather data about PC components.
  • Implemented FastAPI to parse data from JSON files and push it into a **Prisma** database.
  • Introduced detailed instructions for setting up the Parsing Section using **Poetry** as the Python project manager.
  • Added Prisma integration for database management and schema definition.

Changed

  • Refined project structure to better separate the **Parsing** and **Scraping** sections for easier maintenance.
  • Updated the **Swagger UI** to allow testing and execution of all routes via the interactive interface.
  • Updated project documentation to include **setup instructions** for both Parsing and Scraping sections.

v0.1.0

INIT

Added

  • Initial project setup and development environment.
  • Started GPU/CPU/Storage data scraping module.
  • Added FastAPI-based Python backend with Uvicorn.
  • Added Node.js backend using Koa _(for future experimentation)_.
  • Integrated Sphinx for documentation generation.