github habibrehmansg/infopanel 1.4.0-preview.1

pre-release7 hours ago

✨ New Features

  • Per-sensor thousands separator toggle — Each sensor can now independently display numeric values with comma grouping (e.g. "1234" becomes "1,234") via a new toggle in the sensor properties toolbar.
  • Plugin browser — Browse, install, uninstall, and rate community plugins directly from the app without needing to restart. Includes download progress display, changelog view, and star ratings.
  • Account page with Discord sign-in — Sign in to your InfoPanel account via Discord to access the plugin marketplace and related features.
  • Toast notifications for updates — Windows toast notifications now appear when a new update is available, with a direct link to the Updates page.
  • YouTube Live Stream and Windows 11 Now Playing plugins — Two new plugins are available in the plugin registry: one for displaying YouTube live stream HLS URLs, and one for showing currently playing media from Windows 11's Global Media Transport Controls.
  • Plugin image support via shared memory (MMF) — Plugins can now provide image data to InfoPanel using memory-mapped file buffers, enabling efficient, double-buffered image sharing between the plugin host and the app.
  • Runtime plugin install and uninstall — Plugins can now be installed and removed at runtime without restarting the app.

🚀 Improvements

  • Plugin identity via slug — Plugin identity is now tracked using a stable slug stored in a .hub file, so plugins are correctly matched even if their folder name changes.
  • Formatted changelog display — The Updates page now renders markdown-formatted changelogs inline, including section headers, bullet points, and bold text.
  • Plugin browser loads automatically on login — The plugin browser now loads its content as soon as you log in, without requiring a manual refresh.
  • Download progress display — Plugin and update downloads now show a human-readable status (e.g. "12.4 MB / 50.0 MB") alongside a progress bar.
  • DPI-aware hit-testing — Mouse interactions (selection, dragging, item detection) now correctly account for high-DPI display scaling, fixing misaligned hit areas on high-DPI monitors.
  • App version via MinVer — The app version is now derived from git tags using MinVer, with consistent display across the UI, update checker, and API reporting. Prerelease versions are handled correctly.
  • Async startup — App and engine startup now run asynchronously to avoid blocking the UI thread during initialization.
  • Plugin configuration persistence — Plugin settings are now automatically saved and restored from per-plugin JSON files managed by the host, replacing the old shared INI file approach.
  • Plugin config stored in AppData — Plugin configuration files are now stored under %LOCALAPPDATA%\InfoPanel\plugins\ for better isolation.
  • Thread-safe plugin list access — Plugin list operations are now protected with locks and use snapshots to prevent race conditions during concurrent access.
  • Plugin image buffer resize support — Plugin image buffers can now be resized at runtime, with changes propagated to the host and UI automatically.

🐛 Bug Fixes

  • High-DPI mouse position corrections — Fixed incorrect hit-testing and drag behavior on high-DPI displays by converting mouse positions to device coordinates before use.
  • Image buffer and cache race condition fixes — Fixed several issues including bitmap leaks on buffer swap, concurrent cache initialization races, and unsafe image data access across threads.
  • Null safety fixes in plugins — Fixed potential NullReferenceException in WeatherPlugin when the plugin is not yet configured, and tightened boolean config parsing in the plugin host.
  • Stale plugin entries removed on rebuild — The plugin list now correctly removes entries for plugins that are no longer present when rebuilding view models.
  • Image scaling fix — Fixed double-scaling and incorrect dimension calculation in HttpImageDisplayItem, ensuring images use cached dimensions when available and scale is applied only once.
  • Animation timer kept alive for plugin images — The animation timer no longer stops when a plugin-provided image is active, preventing static frames.

🔧 Internal

  • NSwag-generated API client — Added an auto-generated C# API client for the InfoPanel API, with an OpenAPI spec, NSwag config, wrapper service, and a regeneration script.
  • Session management added to API client — API client updated to support listing and revoking auth sessions.
  • FlyleafLib bundled as local DLL — FlyleafLib is now referenced as a bundled DLL rather than a NuGet package.
  • BitmapSource-based SKImage conversion — Replaced System.Drawing-based image conversion with a WPF BitmapSource flow for better compatibility.
  • Plugin image locking — Added synchronization to PluginImageWriter to prevent races during buffer swaps, resizes, and disposal.
  • CI: full git history fetch and release notes generation — The CI workflow now fetches full git history and generates release notes via the InfoPanel API for tagged releases.
  • Documentation updates — Added plugin registry docs, plugin architecture guide, naming conventions, release ZIP structure requirements, and expanded PLUGINS.md.
  • Dependency updates — Updated OpenWeatherMap.Cache to 3.0.0 and FlyleafLib.dll.

Don't miss a new infopanel release

NewReleases is sending notifications on new releases.