# Changelog ## 2026-02-28 - Updated ACP General to use section navigation with `Overview` as the default landing view and a dedicated `Settings` view. - Reorganized ACP General placeholders by moving `Client communication` and `Server configuration` into the Settings area as dedicated sub-tabs. - Added nested Settings tab grouping and bordered tab-content containers to match the ACP tabbed layout pattern. - Refined ACP tab visual states so inactive tabs render muted and active tabs use the configured accent color. - Standardized key ACP refresh actions with explicit icon + spacing so repeated controls render consistently. - Added icon support to additional primary UI actions (update modal/footer actions, auth screens, and forum/thread actions). - Synced board version/build display in stats from `composer.json` and added safe DB setting synchronization fallback logic. - Applied global accent-based Bootstrap button variable overrides so primary button styling remains consistent across ACP and user-facing screens. ## 2026-02-27 - Reworked ACP System navigation into `Health` and `Updates`. - Moved update/version actions into the new `Updates` area and grouped update checks under `Live Update`, `CLI`, and `CI/CD`. - Added CLI PHP interpreter `Check` action (no persistence) plus save-time validation endpoint. - Updated CLI PHP save UX to keep persistent inline errors and avoid duplicate danger toasts. - Added iconized, accent-styled `Check` and `Save` actions in ACP CLI settings. - Fixed system-status PHP detection to avoid false positives when a configured CLI binary is invalid. - Switched `Health` PHP requirement checks to the web runtime interpreter (`PHP_BINARY`/`PHP_VERSION`) instead of configured CLI binary. - Limited `Health` checks to runtime-relevant items (removed `tar`/`rsync` from Health view). - Fixed `public/storage` symlink health check to correctly resolve absolute and relative symlink targets. ## 2026-02-24 - Added login modal actions: `Cancel` button and accent-styled, right-aligned `Sign in` button. - Added functional `Forgot password?` flow with dedicated SPA route/page at `/reset-password`. - Implemented reset-link request UI wired to `POST /api/forgot-password`. - Implemented token-based new-password submission (`?token=...&email=...`) wired to `POST /api/reset-password`. - Updated reset flow UX to return to `/login` after successful reset-link request and after successful password update. - Added English and German translations for password reset screens/messages. - Added new `/ping` endpoint returning connection status, build status, and notification state. - Added frontend ping polling with active/hidden intervals and console diagnostics. - Added update-available detection comparing loaded build vs ping build, with footer refresh CTA. - Added update info modal prompting users to refresh when a newer build is detected. - Tuned global dark mode palette to reduce overly bright text/surfaces in dark theme. - Refined accent button state styling (hover/active/focus) to avoid Bootstrap blue fallback and preserve contrast. - Fixed deployment storage path handling by ensuring `public/storage` symlink is created in Ansible. - Changed `version:fetch` to sync DB version/build from `composer.json` metadata (host git recount removed). - Updated runtime version/ping responses to prefer `composer.json` metadata over DB values to avoid drift. - Restored local `master` as build metadata source of truth by removing CI write-back to `master`. - Updated local pre-commit hook to stamp `composer.json` build from local git count and stage the file automatically. - Bumped forum version to `26.0.3`. ## 2026-02-18 - Added CLI default PHP version detection to system status (`php_default_version`) using the CLI `php` binary. - Updated ACP System -> CLI to show the CLI default PHP path/version in the panel header with sufficiency indicator and warning tooltip. - Simplified ACP CLI PHP selector to `php` or custom binary, and blocked saving `keyhelp-php-domain` from ACP. - Added test coverage expectation for `php_default_version` in system status unit tests. - Hardened `git_update.sh` PHP selection flow with clearer logging (`initial fallback`, `bootstrap read`, `final binary`). - Added strict PHP requirement enforcement in `git_update.sh` against `composer.json` and abort on insufficient CLI PHP. - Refactored `git_update.sh` to `main()` for source-safe testing and added Bats shell tests for resolver/requirement behavior. - Updated Gitea CI test job to install Bats and run `tests/shell/git_update.bats`. ## 2026-02-12 - Refined ACP System tab with left navigation, section-specific requirements, and CLI PHP selector. - Added CLI PHP interpreter options (php, keyhelp-php-domain, custom) with KeyHelp guidance. - Updated CLI update tooling and automation notes (KeyHelp PHP handling, CI runner requirements). - Adjusted ACP layout and tab styling for better dark-mode readability and auto-sizing sidebars. - Added Custom top-level ACP tab and preserved /custom paths during in-app updates. ## 2026-02-10 - Reshaped ACP System tab with left navigation and dedicated views (Overview, Live Update, CLI, CI/CD). - Moved system requirements table into the CI/CD view with refresh controls. ## 2026-02-08 - Achieved 100% test coverage across the backend. - Added comprehensive Feature and Unit tests for controllers, models, services, and console commands. - Added extensive edge-case and error-path coverage (system update/status, versioning, attachments, forums, roles, ranks, settings, portal, etc.). - Added `git_update.sh` for CLI-based updates (stable branch, deps, build, migrations, version sync). ## 2026-01-12 - Switched main SPA layouts to fluid containers to reduce wasted space. - Added username-or-email login with case-insensitive unique usernames. - Added SPA-friendly verification and password reset/update endpoints. - Added user avatars (upload + display) and a basic profile page/API. - Seeded a Micha test user with verified email. - Added rank management with badge text/image options and ACP UI controls. - Added user edit modal (name/email/rank) and rank assignment controls in ACP. - Added ACP users search and improved sorting indicators. - Added thread sidebar fields for posts count, registration date, and topic header. - Linked header logo to the portal and fixed ACP breadcrumbs. - Added profile location field with UCP editing and post sidebar display. - Added per-thread replies and views counts, including view tracking. - Added per-forum topics/views counts plus last-post details in board listings. - Added portal summary API to load forums, stats, and recent posts in one request. - Unified portal and forum thread list row styling with shared component. ## 2026-01-11 - Restyled the thread view to mimic phpBB: compact toolbar, title row, and post layout. - Added phpBB-style post action buttons and post author info for replies. ## 2026-01-02 - Added ACP general settings for forum name, theme, accents, and logo (no reload required). - Added admin-only upload endpoints and ACP UI for logos and favicons. - Applied forum branding, theme defaults, accents, logos, and favicon links in the SPA header. ## 2025-12-30 - Added soft deletes with audit metadata (deleted_at/deleted_by) for forums, threads, and posts. - Ensured API listings and ACP forum tree omit soft-deleted records by default. - Added thread seeding for forum test data. - Enforced category-only roots for forums (API validation, UI, and database constraint). - Added portal header with phpBB-style breadcrumb + quick links, plus notifications/messages + user menu. - Replaced the home page with a portal-style layout and latest posts list. - Added a dedicated board index page with phpBB-like sections and per-category collapse toggles. - Persisted board index collapse state per user via user_settings (DB + API + client cache). - Added category view rendering for subcategories in ForumView. - Updated thread list UI (icons, spacing) and New topic button styling in ForumView. - Added ACP per-category quick-create buttons for child categories and forums. - Removed the legacy navbar and cleaned up related styling. ## 2025-12-29 - Merged the React app into the Laravel codebase under `resources/js`. - Moved the Laravel app to the repo root and removed the separate `api/` and `frontend/` folders. - Serve the SPA shell via Blade with Vite-managed React assets. - Dropped Tailwind tooling to keep the frontend Bootstrap-only. - Replaced the default Laravel README with a forum placeholder. - Updated ACP forum tools with accent-tinted buttons and larger action spacing. - Defaulted the ACP forum tree to collapsed on page load. - Improved ACP create/edit dialog copy based on forum vs category and hid type selection during creation. ## 2025-12-26 - Replaced the Symfony backend with a fresh Laravel app in `api/`. - Added Fortify + Sanctum, API routes, and controllers for forums/threads/posts/settings/version. - Added Laravel migrations for forums, threads, posts, and settings (seeded with version/build/accent). - Added Laravel i18n endpoint backed by JSON translation files. - Updated frontend auth/register flow to work with Laravel tokens. ## 2025-12-24 - Reworked the domain model into a single forum tree (category/forum types) with parent/child hierarchy and threads restricted to forum nodes. - Updated API Platform resources, filters, migrations, and JSON format support. - Added shared i18n: Symfony serves PO-based translations via `/api/i18n/{locale}` and React consumes them. - Refactored the React UI to browse forums, show sub-forums, and post threads only in forum nodes. - Added Apache rewrite rules for Symfony routing. - Added ACP forum management with CRUD, parent selection, drag-based ordering, and expand/collapse controls. - Added reorder endpoint and position handling for forum sorting per parent. - Improved ACP UX: iconized action buttons, category/forum badges, and responsive layout tweaks. - Added JWT username payload fix and increased token TTL to 24h. - Added frontend load-time indicator in the footer. - Added settings entity + migration for version/build metadata and synced version/build to composer.json. - Added `/api/version` endpoint returning version and build. - Refactored settings storage to key/value rows for version/build metadata. - Added indexes to speed up forum tree queries (parent ordering and type filters). - Added settings-driven accent color and API filter for settings key lookup. - Added settings-backed theme dropdown (auto/light/dark) and dark-mode styling tweaks. - Added settings key/value storage and `/api/version` for version/build in the UI footer. - Added system font stack to remove external font requests. - Improved ACP drag-and-drop hover reordering and visual drop target feedback. - Hardened ACP access so admin tools require authentication. - Updated the home page to render the forum tree with ACP-style rows and icons.