58 Commits
Author SHA1 Message Date
najdek 293f44b4ef feat(StorageHub): unify repository UI, add alphabetical sorting and payload update dates
- Refactored `StorageHub.jsx` to share a unified `enrichedSources` data flow between single-source and multi-source modes, eliminating duplicated rendering logic
- Payloads are now sorted alphabetically by name across all repository views (with available updates automatically pinned to the top)
- Updated `PayloadName` component to accept a `lastUpdate` prop, natively rendering the payload version and update date side-by-side
- Conditionally hide accordion headers and restore discrete grid-card styling for legacy single-source mode, preserving the original look while utilizing the normalized codebase
- Fixed a backend bug in `src/sources.c` where the `last_update` field was incorrectly omitted from the serialized JSON array during multi-source repository fetches
2026-06-04 02:37:40 +02:00
najdek b8abb0a6ba frontend: correctly handle empty repository states in StorageHub 2026-06-04 01:35:41 +02:00
najdek dcc3cf2fd8 frontend: add persistent payload warning to ActiveProcessesView 2026-06-04 01:30:07 +02:00
najdek 631e7de0c6 feat: add active processes management tab
Introduces a new "Active Processes" feature that enables users to view and
manage background processes running on the PS5.

Backend:
- Add `payload_mgr_process_list_json` using `sysctl` with `KERN_PROC_PROC`
  to fetch the kernel process list and memory footprints.
- Retrieve `appinfo` via `sceKernelGetAppInfo` to filter for user-spawned
  daemons (requires appid == `0000`).
- Implement `payload_mgr_process_kill` utilizing `SIGKILL`.
- Expose `/processes_list` and `/process_kill` endpoints.

Frontend:
- Add `ActiveProcessesView.jsx` with a real-time table of running processes.
- Implement background auto-refresh every 15s to maintain the UI state.
- Add safety nets to completely disable killing critical processes
  (`pldmgr.elf` and `elfldr.elf`).
- Implement kill confirmation modal to avoid accidental terminations.
- Integrate "Active Processes" tab with the sidebar and mobile bottom navigation.
2026-06-03 17:58:04 +02:00
najdek 77c833a89d fix(frontend): improve alignment and hover behavior on StorageHub 2026-06-03 00:18:13 +02:00
najdek 3b1bfe6feb fix(frontend): adjust sources layout breakpoint 2026-06-02 22:15:42 +02:00
najdek af72c9b611 frontend: layout and responsiveness fixes for storage management card and viewports
- Adjusted Installed/USB Payloads grids from md:grid-cols-2 to lg:grid-cols-2 to prevent card overlapping on narrow windows.
- Reshaped cards to always use row layout on mobile to eliminate wasted empty vertical space.
- Moved Update button to its own full-width row at the bottom of the card with reduced vertical padding to prevent action clashing.
- Added remote version target display to the Update button.
- Cleaned up width constraints in PayloadName to enable text truncation on narrow screens.
2026-06-02 21:59:35 +02:00
najdek b3fe1b586a frontend: Fix mobile layout and styling in Settings and Manage Sources views 2026-06-02 21:59:35 +02:00
najdek f4c76fbfb4 feat: add multi-source payload repository support
- Add MULTI_SOURCES_ENABLED config flag with toggle in Settings
- New "Manage Sources" view: add/remove/reorder third-party payload sources
  via URL; default source is locked and non-removable
- Source JSON format: top-level `name` field sets display name; falls back
  to hostname extraction if absent; checksums are optional
- PS5 mode shows QR code + URL for Manage Sources; desktop shows full list UI
- Source removal uses shared confirm modal; reorder auto-saves with toast
- Backend (payload_mgr.c):
  - CRUD for sources list persisted to /data/pldmgr/sources.json
  - Multi-source repository list/install routes; each source has its
    own independent payload catalog
  - Bounded name parsing: only searches before "payloads" key to avoid
    capturing payload item names; domain fallback when name absent
  - list_payloads response now includes `meta` map: walks
    PAYLOADS_STORAGE_DIR subdirectories for .elf/.bin/.lua sidecar
    files and emits source_name per payload
  - Fallback for pre-feature sidecars: extracts hostname from
    install_source_detail, skipping the official repository URL
- Frontend: source badge (Globe icon + name) shown in bottom-right corner
  of each payload card on Dashboard and Management tab when
  MULTI_SOURCES_ENABLED is on and payload has a non-default source
- StorageHub: accordion-style per-source catalogs when multi-source enabled
- showConfirm helper in App.jsx auto-closes modal before executing callback
2026-06-02 21:59:35 +02:00
najdek 6d14acf665 frontend: scroll to USB Storage section when navigating from Autoload 2026-06-02 00:33:29 +02:00
najdek 75b20ceff4 frontend: scroll to top of main content container on view change 2026-06-02 00:30:08 +02:00
najdek 7dee294ad0 frontend: update download modal title 2026-06-02 00:25:11 +02:00
najdek 2e7de34648 frontend: update SettingsView layout to responsive grid and improve UI consistency 2026-06-01 23:36:03 +02:00
najdek 10c4233eea frontend: fix DonateView layout 2026-06-01 23:14:29 +02:00
najdek 75700847e8 frontend: persist sidebar expanded state
The sidebar's expanded/collapsed state is now saved in `localStorage`. This ensures that if the user collapses the sidebar, it stays collapsed after reloading the page or returning to the app later.
Implemented via a `useState` lazy initializer and `useEffect` hook in `App.jsx`.
2026-06-01 23:06:42 +02:00
najdek 193807f70c fix: autoload sync, log viewer overlay, and layout refinements 2026-05-02 13:53:40 +02:00
najdek 90cd196f5b fix: resolve autoload synchronization, rendering, and layout issues 2026-05-02 13:40:08 +02:00
najdek 1535c7baed fix(frontend): improve compatibility for older firmware (PS5 4.03, iOS 12)
- Downgrade to Tailwind 3 for better legacy support
- Target Safari 12 in build pipeline
- Add CSS fallbacks for critical layout classes
- Flatten CSS layers via Tailwind 3 output
2026-05-02 12:16:29 +02:00
najdek 1afc9d3358 improve frontend update reliability and management
- Server: Fixed caching headers (no-cache) for index.html and cache.appcache to force browser revalidation.
- Build: Added seconds to the build timestamp in the Makefile to ensure every build generates a unique manifest.
- Build: Created build_release.sh to automate versioned ELF generation (pldmgr_vX.Y.Z.elf).
- UI: Refined system payload detection to support versioned filenames.
- UI: Allowed system/update payloads to be visible and deletable in the "Manage Payloads" tab, while keeping them hidden from the main dashboard.
2026-05-01 00:23:27 +02:00
najdek cbef97a196 perf: frontend performance optimizations for console browser 2026-04-30 21:35:09 +02:00
najdek 1196e67569 ui: add hint for USB scanning in Storage Hub when disabled 2026-04-30 21:10:33 +02:00
najdek 0d1c0078ea refactor: implement precision millisecond tracking for autoload countdown and lock execution from abort calls 2026-04-30 01:31:01 +02:00
najdek 0bfb763eab add offline cache page 2026-04-29 19:38:26 +02:00
najdek 88ea7bf822 Fix race condition in AutoloadView when enabling autoload with empty list 2026-04-29 02:54:38 +02:00
najdek 45738a7e43 feat: implement automatic self-update for payload manager
- Embeds version signature dynamically into ELF
- Scans 'pldmgr' or 'payload-manager' ELFs for version on startup
- Auto-launches updated ELF without infinite loops
- Hides payload manager from UI lists to prevent accidental deletion
2026-04-29 02:33:55 +02:00
najdek 052ea30172 fix frontend issues
- Add HTTP status checks to loadPayload, handleDelete, and performUpload
- Fix autoload polling to continue backing off when sequence is inactive
- Add await to fetchRemote in StorageHub auto-refresh
- Replace index keys with stable identifiers in dynamic lists
2026-04-29 01:48:48 +02:00
najdek 3282e14305 Feat: Migrate payload downloads from frontend to backend using libcurl
- Shift payload downloading from browser-side fetching to the backend C daemon
- Add OpenSSL and libcurl dependencies to the Docker SDK build environment
- Embed CA certificate bundle for secure HTTPS downloads
- Introduce the /repository_install endpoint in the internal API
2026-04-28 23:32:38 +02:00
najdek c0c051838a frontend: reorder payload sections and add auto-scroll to cloud repo 2026-04-28 20:57:09 +02:00
najdek 840ab2293c rename project to Payload Manager 2026-04-28 20:45:38 +02:00
najdek 2b86c64028 feat: update donation info and integrate new vector logo 2026-04-28 01:47:36 +02:00
najdek bc9451fb52 Add automatic app launcher installer for Next Menu 2026-04-28 01:23:05 +02:00
najdek 53610bc8c2 frontend: improve payload button aesthetics and autoload sequence layout
- Implement stacked layout for payload names and versions across all views
- Reposition autoload sequence numbers to the top-left corner
- Standardize font weights and remove redundant background highlights
- Clean up redundant icons in StorageHub and Autoload views
2026-04-23 18:02:37 +02:00
najdek b7887df0dd feat: implement auto-update logic for remote payloads if older than 24 hours in StorageHub 2026-04-23 17:34:02 +02:00
najdek d1d6cd6783 feat(ui): optimize ps5 frontend responsiveness and layout density
- Improved column counts on PS5 (3 columns for Dashboard, 2 for StorageHub)
- Reclaimed vertical space on PS5/Desktop by adjusting bottom padding
- Enhanced Modal responsiveness for mobile (reduced padding/margins)
- Fixed vertical centering of modals in AutoloadView
- Redesigned 'Configure Delay' modal to be mobile-friendly
- Restored missing background styles and global CSS resets
2026-04-23 01:12:10 +02:00
najdek 47d4b2e9ea feat: unified payload storage structure and installation source tracking
- Implemented folder-based storage (/payloads/<clean_name>/) for all methods
- Added install_source and install_source_detail metadata to tracking JSON
- Synchronized naming logic between frontend and backend to handle platform suffixes (-ps5/-ps4)
- Added overwrite confirmation prompts for web uploads, USB moves, and repository updates
- Updated repository installer to track source URLs dynamically
2026-04-23 00:11:15 +02:00
najdek c90e3cc316 feat: add USB payload scanning option and UI improvements
- added SCAN_USB_PAYLOADS setting
- implemented recursive USB root scanning (depth limit 1)
- skip hidden files/directories starting with a dot
- display full path for USB payloads in dashboard
- sort USB payloads to the bottom of the list
2026-04-22 22:38:21 +02:00
najdek 940cb28989 feat(frontend): implement autoload auto-save and refactor settings UI
- Added debounced auto-save to AutoloadView with state sync protection
- Refactored SettingsView to a cleaner, card-less layout
- Improved status indicators and simplified header typography
- Fixed missing AlertTriangle import in StorageHub
2026-04-22 22:19:43 +02:00
najdek 627631fef6 frontend: remove redundant view-level padding in Manage and Settings 2026-04-22 20:45:39 +02:00
najdek dbbc05dd94 frontend: fine-tune bottom padding for a more balanced gap 2026-04-22 20:44:29 +02:00
najdek b0f9b23a53 frontend: fix padding overrides and improve bottom clearance on all platforms 2026-04-22 20:38:18 +02:00
najdek a167c23b1c frontend: fix mobile viewport height and bottom clipping on iOS 2026-04-22 20:33:59 +02:00
najdek ab37439a63 frontend: fix scrolling in AutoloadView and improve layout responsiveness 2026-04-22 20:32:45 +02:00
najdek de37a3e530 Refactor frontend: break down monolithic App.jsx into modular components and utilities 2026-04-22 19:46:00 +02:00
najdek 73c0c8e0e1 feat: add configurable disc player termination on startup
- Implement automatic termination of the 'Disc Player' app (BD-JB host) when the menu starts.
- Add toggle in System Settings to enable/disable this feature.
- Credits to BenNoxXD for the original termination logic:
  Source: https://github.com/BenNoxXD/PS5-BDJ-HEN-loader/blob/main/HENloader_C_part/src/kill_disc_player.c
2026-04-22 00:22:33 +02:00
najdek 505d90a07b feat: finalize PS5 menu UI and autoload synchronization
- Frontend: Fixed autoload progress circle scaling for variable delays.
- Frontend: Implemented robust CSS spinner for PS5 WebKit compatibility.
- Frontend: Redesigned Remote Management footer and fixed IP address display.
- Backend: Updated /autoload_status API to include configured delay.
- Backend: Integrated system statistics (CPU/RAM/Storage) monitoring.
- Daemon: Suppressed redundant startup notifications when auto-browser is enabled.
- Build: Automated dynamic page title injection and UTC build timestamps.
2026-04-21 02:04:04 +02:00
najdek b8b83e8cc7 feat: implement backend repository management and SHA256 verification
- Implement repository JSON caching and metadata management in payload_mgr.c
- Add native SHA256 implementation and integrity verification for payload installs
- Introduce POST /repository_push and /repository_install_push endpoints for browser-delegated downloads
- Synchronize autoload.txt entries automatically during payload updates and deletions
- Add frontend auto-refresh on tab switch to sync with backend configuration changes
- Update mock-server.js and fix deploy.sh timeout for more reliable development
2026-04-20 20:09:45 +02:00
najdek 01e351c9f9 feat(ui): unify payload management and modernize typography
- Consolidated Cloud Repository and Remove Payload views into a single Management Hub
- Added 'Upload ELF Payload' button to the unified management view
- Removed file paths and improved payload name/version formatting in lists
- Globally removed italic/uppercase styles and switched to cleaner bold weights
2026-04-20 17:04:07 +02:00
najdek cea2e492fe feat(frontend): setup mock backend server for local testing
- Create mock-server.js to simulate PS5 native daemon API
- Add Vite proxy configuration for local development
- Implement autoload sequence simulation in mock server
- Improve HTML detection and error handling in App.jsx
- Add dev:mock script for concurrent frontend and mock server execution
2026-04-20 12:57:28 +02:00
najdek 047411c52c feat(ui): modernize mobile dashboard and optimize system diagnostics
- Unified Navigation: Implemented a responsive sidebar for desktop/PS5 and a clean, glow-based bottom navbar for mobile.
- Mobile Scrolling: Resolved multiple layout constraints and global CSS locks to enable smooth, native browser scrolling on handheld devices.
- Diagnostic Console: Relocated system logs to a dedicated, fullscreen diagnostic overlay in the Info tab with on-demand SSE connections.
- Autoload Refinement: Optimized the autoload status poller to stop immediately upon completion and fixed real-time progress updates.
- Visual Polish: Added a "Launch Payload" header to the home screen and replaced intrusive toast notifications with subtle in-button save feedback.
- Stability: Fixed frontend build failures caused by fragmented component structures and missing JSX tags.
2026-04-20 02:12:05 +02:00
najdek b324214b7a feat: complete UI overhaul and stability improvements
- Implement mobile-first bottom navigation with platform-aware toggles
- Overhaul Autoload management with sequential mobile workflow and 250ms high-precision sync
- Fix payload button visual clipping and hover glow containment
- Add native 'Donate' view with QR code support for PS5 and direct links for desktop
- Streamline Log Viewer with instant scrolling (zero animation) and cleaner UI
- Resolve race conditions in backend status polling and initial payload loading
- Remove redundant system info and refine typography/spacing across dashboard
2026-04-19 23:53:50 +02:00