Skip to content

1.2.0

Choose a tag to compare

@xchwarze xchwarze released this 28 May 04:12
· 123 commits to master since this release

Frieren Release Notes - Version 1.2.0

This release focuses on polish, reliability, and developer experience — with skeleton loaders across the entire UI, comprehensive toast feedback, cache busting for builds and modules, backend security hardening, and major frontend/backend refactors to standardize patterns.

New Features

  • System Update from Dashboard: Download, install, and reboot directly from the dashboard when an update URL is present in news.json.
    Backend runs the update script in the background with status polling. Frontend shows an update button in the UpdateAlert component with a
    confirmation dialog before proceeding.

  • Skeleton Loaders: Integrated react-content-loader across the entire webapp — wireless, dashboard, settings, and all data-dependent
    views now display skeleton placeholders while loading.

  • Search in Logs: New reusable SearchInput component with clear button, applied to SystemLogsCard for filtering log entries.

  • Wireless Interface Status Feedback: Backend polls wpa_supplicant for STA connection state and network.wireless for AP/monitor status.
    Frontend polls after save and shows success/failure toast with automatic overview refresh.

  • Internet Connectivity Check: Network-dependent operations now verify internet connectivity before proceeding.

  • Package Autoremove: Added autoremove flag support to the package manager.

Major Improvements

  • Backend Refactor: Moved script paths and BackgroundTaskHelper calls from Helpers to Controllers (dashboard, packages) following the
    Hardware pattern. Added escapeshellcmd as default to OpenWrtHelper::exec with a raw flag bypass for commands with pipes/redirects.
    Removed dead code and duplicate constants.

  • Frontend Refactor: Renamed hooks and atoms for clarity (useRouterRulesuseHashLocation, selectedRemoteModuleAtom
    installModuleAtom). Extracted validation schemas and wireless constants to dedicated helper files. Standardized polling interval to 2000ms
    across all useBackgroundTask consumers.

  • Background Task Standardization: New BackgroundTaskHelper on the backend and shared useBackgroundTask hook on the frontend. All
    polling patterns now go through a single, consistent implementation with a 1-hour default timeout to prevent infinite polling.

  • Toast Feedback Everywhere: Added success/error toast notifications to all settings mutations (hostname, timezone, theme, terminal,
    datetime, password) and wireless mutations (toggle, radio config, interface removal). Fixed misleading system action messages on
    shutdown/reboot.

  • Cache Busting: Vite build plugin appends timestamp query parameters to JS/CSS assets. UMD module loading now uses version-based cache
    busting to ensure fresh module loads.

  • Shell Script Hardening: Added error handling to shell scripts, fixed SSH host key verification and SCP protocol issues.

UI/UX Improvements

  • About page replaced with a modal in the system actions dropdown
  • Enhanced reset/shutdown UX flow
  • Sidebar CSS transitions refactored for cleaner expand animation
  • Interface status spinner moved from card title to RadioSection row with a "checking" label
  • Install modal now locks during module installation to prevent accidental closure
  • Bold package name and line break in removal confirmation dialog
  • ConfirmationModal supports loading state with spinner, disabled buttons, and locked backdrop
  • Buttons auto-generate aria-label from label or icon name for accessibility
  • SearchInput clear button is keyboard accessible (tab + enter/space)
  • ErrorFallback now includes a Try Again button
  • Empty state messages for UsbDevicesCard and FileSystemUsageCard
  • Password form clears fields after successful change
  • Dark theme detector logic exported for reuse

Bug Fixes

  • Fix double escaping in exec calls that use escapeshellarg internally
  • Fix form provider reload bug
  • Fix useShutDownMutation internal export name
  • Fix double-encoded HTML entity in ErrorFallback
  • Fix api-test.sh unbound variable with set -u
  • Fix misleading "Logoff user" message on shutdown/reboot actions
  • Multiple QA fixes

Developer Experience

  • BackgroundTaskHelper provides a standard backend pattern for background task polling
  • Validation schemas extracted to reusable helper files
  • Wireless constants (MODE_OPTIONS, NETWORK_OPTIONS, ENCRYPTION_OPTIONS) centralized
  • WPA passphrase max 63 character validation added
  • Cryptic single-letter variables renamed to descriptive names in wireless feature
  • index.php added to backend deploy script

Full Changelog: 1.1.0...1.2.0