* game-launcher: bundle self-contained SQLite reader, drop libsqlite3 dependency
Fixes building gamelauncher.c on NixOS where the runtime env lacks
sqlite3.h/libsqlite3. scan_lutris now reads Lutris' pga.db through a
bundled read-only SQLite file parser instead of linking sqlite3.
* game-launcher: rework /g provider to reuse panel scan results
The launcher provider now reads the games the panel already scanned via
state/cache, trims the query, and surfaces status/error rows instead of
duplicating the scan.
---------
Co-authored-by: Ahmed5Emad <ahmed5emad@users.noreply.github.com>
Animation preset picker for niri: choose a .kdl preset, set the global
slowdown factor, or turn animations off. Ships a floating and a
bar-attached panel plus a control-center tile.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* Add ip-monitor plugin
* fix: removed typo
* feat: increase default refresh interval to 60 seconds
* fix: prevent shell injection in IP monitor gateway lookup.
* docs: fix author casing in README
* feat: add configurable click actions
* feat: add desktop widget support and refactor core logic
- Extracted IP fetching and data parsing into a shared `utils.luau` module to prevent code duplication.
- Created `desktop.luau` to display network details explicitly in a tabulated UI.
- Added specific configuration options for font sizes and colors for the new desktop widget
* feat: add hidden_fields configuration to allow filtering tooltip and desktop widget details
* fix: remove raw HTML from README
* refactor(utils): use bit32 and fix glob pattern escaping & gateway parsing
* refactor(utils): centralize shared UI builder and display name resolution
* refactor(widget): use shared utils helpers and clean up duplicate logic
* refactor(desktop): use shared utils helpers and add IPC click action parity
* docs: update README with desktop widget settings
* feat: remove unused IPC copy actions from widget logic
* fix: setUpdateInterval in update function
* fix: add shellEscape on cat command
* dump version
* fix: migrate settings to desktop_widget.settings
* feat: auto gap based on the layout
* feat: retrieve warning threshold from noctalia's settings
* fix(phone-connect): zh-Hans locale, switcher aliasMap, box padding
- Rename zh_hans -> zh-Hans (plugin.toml value, en.json key) and add
the missing translations/zh-Hans.json. The zh_hans tag does not match
BCP 47, so the framework's materialize step dropped the Chinese
translation file and t() returned raw dot keys in the UI.
- Add missing aliasMap definition in switcher() so the multi-device
panel no longer errors on aliasMap[id]. Fixes#176.
- Replace ui.box({padding=...}) with ui.row({padding=...}); box does
not support the padding prop, causing ui-tree warnings on open.
Supersedes #190 (which covers only the aliasMap fix).
* fix(phone-connect): volume quoting, config data loss, interval, dead settings, slider, UI issues
1. media_set_volume: shellQuote the <int32> variant arg (was unquoted,
shell treated < as redirect; same fix as media_seek).
2. onConfigChanged: track last-applied custom_image/device_alias values
so unrelated config edits (e.g. language switch) no longer wipe a
device's image/alias. Seed trackers at init so reload is safe too.
3. state_update_interval=0: return 3600000ms + guard in update() to
skip auto-refresh, matching the '0 disables' description.
4. Remove 4 dead settings (show_ongoing_media, show_device_placeholder,
scan_subdirectories, max_recent_images) declared but never read,
plus orphan recent_images translation keys.
5. Media slider: freeze value during drag via per-device dragState so
the 1s service refresh doesn't yank the slider back. Also fixes
onDragEnd seeking to a stale seekPos.
6. Minor: runCli reports cli_failed not no_backend; browse uses runAsync
not runInTerminal; charging color priority over low-battery; device
name falls back to d.name; fix comment mismatches.
* chore: bump version to 0.1.1
* fix: use lowercase zh-hans translation key to pass CI validation
CI rejects uppercase in translation keys (zh-Hans). The translation key
and label_key are now lowercase zh-hans, while the file name stays
zh-Hans.json (required by the framework's materialize step) and the
select value stays zh-Hans (used to build the file path).
* Init
* fix: remove placeholder (weird bugs)
* fix: README
* fix: return if battery not found
* fix: add "Not Charging" status
* fix: insert in content table
* feat: add error color when under 20% and discharging
* feat: add warning color setting
* fix(README): longer plugin description and settings descriptions
* feat: add color and charging color
* fix: default charging color
* feat(jetbrains-provider): add JetBrains Provider launcher plugin
Expose recent JetBrains IDE projects in the Noctalia launcher via /jb.
* fix(jetbrains-provider): address PR review feedback
Support IdeaIC and Android Studio, decode XML entities in project paths,
align launcher caching with zed, and update the catalog thumbnail.
* fix(workflow): Fixed a small bug with the issues-check-for-correct-plugin workflow
* feat(workflow): Added a workflow to notify plugin authors for PR's
* add pull-request: write perm
---------
Co-authored-by: Lemmy <studio@quadbyte.net>
* fix(anilist): paginate large libraries to avoid CPU budget kills
Chunk GraphQL fetches and defer merge, sort, and cover work to update()
ticks so 1000+ anime and manga entries load without blocking callbacks.
* fix(anilist): handle OAuth callback immediately and simplify service helpers
Process browser login tokens synchronously from runStream and file poll, keep a 500ms update interval during OAuth, and avoid duplicate OAuth result emissions from Python.