π CHANGELOG
All notable changes to PixlKey will be documented in this file.
This project adheres to Semantic Versioning and follows a simplified Keep a Changelog format.
0.5.25-Alpha
Added
- Added admin-only templates that mirror the public site layout with a red/gold theme.
- Added admin navigation to dashboard and logs within the new template structure.
Changed
- Admin pages now reuse the PixlKey site layout with a dedicated admin stylesheet.
- Admin access enforcement now returns a minimal 403 page for non-admin users.
- Root index shows the Admin link only for admin users and links to the dashboard.
0.5.24-Alpha
Added
- Added public PixlKey Site scaffold under /public/site with reusable header/menu/footer templates.
- Added PixlKey Site button to root index page.
0.5.22-Alpha
Added
- Admin logs page: added per-log Copy View (clipboard) and manual rotation controls.
- Admin logs page: show per-log file size in KB.
- Core tools: added safe log rotation helper under /core/tools/.
0.5.20-Alpha
Changed
- Admin dashboard: removed Recent Audit Log Entries panel.
- Admin: added Logs page to view recent entries from php-error.log and pixlkey.log with safe truncation.
- Admin: added dashboard link/button to Logs page.
- Admin logs page: corrected log panel layout to vertical stacking.
- Admin logs page: fixed log panel overflow escaping admin layout.
0.5.19-Alpha
Added
- Admin dashboard: added system status panel (memory, swap, load averages, PixlKey disk usage).
- No DB writes; Linux /proc parsing with graceful fallbacks.
0.5.18-Alpha
Added
- Replaced the admin dashboard processing runs panel with a per-user data table including image totals and disk usage.
0.5.17-Alpha
Changed
- Registration now requires acceptance of PixlKey user agreement; stored to users.accept_agreement.
- Registration now blocks duplicate email signups with a user-friendly message.
0.5.16-Alpha
Added
- Added an admin dashboard with system stats, charts, and recent activity lists.
- Added a shared admin guard include for enforcing admin-only access across admin pages.
0.5.14-Alpha
Added
- Added a protected admin landing page with a red-tinted high-security theme.
- Added an admin-only navigation link to the main menu.
0.5.13-Alpha
Added
- Added an Instagram padding tool that generates *_instagram.png from *_preview.png for portrait images.
- Runs after watermarking so padded assets include all overlays.
- Uses symmetric left/right padding to reach the 4:5 portrait aspect ratio.
Changed
- Instagram padding now uses a blurred background derived from the artwork for portrait images.
- Instagram padded output is now included in processed ZIP packages when present.
0.5.12-Alpha
Changed
- Removed the user-selectable top-left and bottom-left custom watermark positions.
- Added an Advanced Watermark setting to toggle QR code overlays on previews (default ON).
- Clarified preview defaults: QR codes remain bottom-left and PixlKey watermark remains top-left.
0.5.11-Alpha
Added
- Added PixlKey watermark overlay to all generated preview images (_preview.png), placed top-left and scaled to 5% of the smallest dimension.
0.5.10-Alpha
Changed
- Profile page sections are now collapsible window-shade panels (except Account & System Information).
- Improved usability and navigation on the profile page.
0.5.9-Alpha β My Artworks Download Packages
Added
- Added a Download button on the My Artworks page so users can download their recent processed packages.
Changed
- Enforced the βonly most recent 10 packages available for downloadβ rule.
- Download button now appears only when a ZIP exists in the processed run directory.
0.5.8-Alpha-13 β My Artworks Layout Polish
Changed
- UI polish: thumbnails positioned at the top of each artwork card; added spacing between artwork cards.
Notes
- Recap of 0.5.8-Alpha-12 thumbnail fixes (since we started working on the artwork page): initial broken thumbnails, path resolution attempts, rejecting
../processed/..., overly strict realpath checks, aligning sanitiser logic with artwork.php, uncovering nested URL depth issues, then normalising to root-relative /processed/... paths for the final fix.
0.5.8-Alpha-12 β My Artworks Details & Thumbnails
Added
- My Artworks page now displays thumbnails sourced from
Images.thumbnail_path. - Added artwork details: description, creation_date, keywords, and genre.
- Added hash identifiers: sha256 (Hash Value) and hvf_sha256 (HVF Key).
0.5.8-Alpha-11 β My Artworks Dashboard
Added
- Added authenticated βMy Artworksβ page listing a userβs processed artworks with pagination.
- Added a profile navigation link to the new My Artworks page.
0.5.8-Alpha-10 β Changelog Page
Added
- Added public changelog page that renders the project
CHANGELOG.md. - Added a discreet footer link from the landing page to the changelog.
0.5.8-Alpha-9 β Public Artwork Display Enhancements
Changed
- Artwork public lookup now prefers
seo_headline for the page title with fallback to the artwork title. - Added license display with on-demand modal fetch for full license text.
- Included optional public contact display with email obfuscation when enabled by the creator.
0.5.8-Alpha-8 β Logging Consistency Updates
Changed
- Consolidated log payload creation with shared request ID handling.
- Improved request ID fallback generation and JSON encoding safety.
- Nested user-supplied log context under
ctx to avoid collisions. - Routed database connection logging through structured log helpers.
- Ensured PHP logging ini defaults are set in logging bootstrap.
0.5.8-Alpha-7 β Logging Bootstrap Refactor
Changed
- Moved logging bootstrap into
/core/logging/bootstrap.php. - Added
pk_log and pk_debug helpers with APP_DEBUG toggle for debug output. - Standardized JSON-line log output to
var/log/pixlkey.log.
0.5.8-Alpha-6 β Ownership History Initialization
Added
- Initial ownership event persistence during artwork registration.
- New
ArtworkOwnershipHistory record created when an artwork is first registered. - Captures:
- artwork ID
- from/to user
- acting user
- actor IP address
- event type (
initial_registration) - timestamped audit trail
Notes
- No schema changes.
- Ownership history is immutable and append-only.
- Backward compatible with existing artworks.
[0.5.8-Alpha-5] β Artwork Public Lookup Compatibility & Safety
Changed
- Updated artwork public lookup version header and public messaging to emphasise controlled, read-only access.
- Hardened token lookup ordering with schema-aware fallback and prevented thumbnail fetches from failing when ordering columns are absent.
- Clarified logging while maintaining privacy and ensured empty artwork titles default cleanly to βUntitled.β
[0.5.8-Alpha-4] β Artwork Public Lookup Hardening
Changed
- Updated public artwork lookup page title and messaging to reinforce public, rights-respecting access.
- Enforced processed-state gating for artworks resolved via lookup tokens and hardened thumbnail path sanitisation.
- Improved thumbnail selection robustness with graceful fallback when
created_at is unavailable and ensured newest lookup token rows are preferred.
[0.5.8-Alpha-3] β Public Artwork Lookup Fixes
Fixed
- Corrected
/public/artwork.php to validate lookup tokens, return appropriate HTTP status codes, and render public artwork details with thumbnails when available.
[0.5.8-Alpha-2] β Profile Management UI
Added
- Added authenticated User Profile Management UI:
- New page:
/public/user/profile.php - Allows users to manage public identity, contact information, social/portfolio links, regional visibility, and public notes.
- System fields (registered email, last login, account creation date) are visible to the account holder only and read-only.
- Visibility of contact and regional data governed by explicit privacy toggles.
[0.5.7-Alpha-2] β Redirect Sanitisation Consolidation
Security / Hardening
- Consolidated redirect sanitisation logic into a single shared security helper to prevent drift.
- Ensured all login and access-guard redirects use the same validated code path.
Maintainability
- Removed duplicate redirect validation logic from controllers and services.
- Removed CLI-only sanity-test code from public login controller.
- Centralised redirect rules in
/core/security/Redirect.php for auditability.
Notes
- No database interactions added or modified.
- Behaviour unchanged for valid internal redirects.
- Bug-squash and defensive hardening only.
[0.5.7-Alpha-1] β Redirect Hardening
Security
- Fixed a potential open redirect vulnerability during authentication flows.
- Constrained post-login redirects (
next parameter) to validated local paths only. - Rejected external URLs, protocol-relative paths, malformed input, and control characters.
- Ensured unauthenticated access guards preserve intent safely without external redirection.
Stability
- Redirect behaviour consistently falls back to
/index.php when invalid or missing.
Notes
- No database schema changes.
- No new database reads or writes.
- Fully backward-compatible for valid internal navigation.
[0.5.1.2-alpha] β 2025-07-26
Refactor β Modular CSRF Token Management
- Introduced
core/security/CsrfToken.php:
- Centralised CSRF token generation, validation, and rotation.
- Supports form-based (
csrf_token) and header-based (X-CSRFTOKEN) validation. - Explicit token rotation after privilege transitions (login, logout, registration).
- Updated
core/auth/auth.php to consume the new CSRF module.
Security Benefits
- Single point of truth for CSRF handling.
- Reduced replay risk.
- Foundation for future per-route nonce strategies.
[0.5.1.1-alpha] β 2025-07-26
Refactor β Modular Session Bootstrapping
- Introduced
core/session/SessionBootstrap.php. - Centralised session initialisation and cookie flags.
- Eliminated duplicated
session_start() and cookie boilerplate. - Improved auditability and extensibility of session handling.
[0.4.9-beta] β 2025-07-17
Critical Security Enhancements
- Global rate limiting for authentication and downloads.
- New
rate_limiter.php middleware with configurable thresholds. - Centralised toggles and environment overrides.
- Graceful 429 responses with retry headers.
[0.4.8-beta] β 2025-07-16
Security Enhancements
- Enforced modern password hashing (
PASSWORD_DEFAULT, Argon2id). - Automatic hash re-upgrade via
password_needs_rehash().
[0.4.7-beta] β 2025-07-14
Security Enhancements
- Enforced TLS across all entry points.
- Added strict security headers.
- Hardened cookie flags globally.
[0.4.6-beta] β 2025-07-14
Security Enhancements
- CSRF token rotation at login, logout, registration, and ingestion boundaries.
- Improved session isolation.
[0.4.5-beta] β 2025-07-12
Internal Improvements
- Dynamic branding support via
APP_TITLE and APP_HEADER. - Updated
index.php to consume branding constants.
[0.4.4-beta] β 2025-07-12
Security Enhancements
- Hardened session fixation protections across auth lifecycle.
- Ensured session ID regeneration at all critical transitions.
[0.4.3-beta] β 2025-07-11
Security Enhancements
- Rate limiting added to login and registration.
- Introduced reusable rate-limiter utilities.
[0.4.2-beta] β 2025-07-11
Added
- Placeholder frames for watermark and image previews.
- Branding polish (drop shadows, Orbitron-styled headers).
Fixed
- Gallery thumbnail layout and width issues.
- Removed stray rendering logic tokens.
[0.4.1-beta] β 2025-07-11
Security
- Enforced ownership verification for downloads and data ingestion.
- Hardened
runId validation. - Prevented unauthorised ZIP and metadata access.
[0.4.0-beta] β 2025-07-10
Added
- Roadmap reset.
- CSRF and session hardening groundwork.
- Core audit and agent refactor started.
[0.3.0-alpha] β 2024-06-29
Added
- Initial functional Alpha release.
- Core image processing, watermarking, metadata embedding, fingerprinting, certificates, licensing, and authentication.
Known Issues
- No rate limiting (addressed later).
- Limited error handling.
- No API or test coverage.
[main reset] β 2025-07-10
Changed
- Repository reverted to
0.3.0-alpha to restore stability. - Removed experimental branches.
- Set
main to known-good baseline.
[Unreleased]
Planned
- Further modularisation of processing pipeline.
- REST API.
- Audit logs and analytics.
- Docker and deployment tooling.