Commit Graph
391 Commits
Author SHA1 Message Date
github-actions[bot] f616f341df chore: update plugin catalog [skip ci] 2026-07-21 21:06:11 +00:00
ArturandGitHub 32ab23c7cc fix(hassio): Perpetual connecting (#75)
* fix(service_sse): Fixed connecting state not updating.

* fix(shortcut*): Changed shortcuts to use the clean URL.

* chore(plugin): Bumped version to 2.0.2
2026-07-21 17:06:00 -04:00
github-actions[bot] 6f41f03887 chore: update plugin catalog [skip ci] 2026-07-21 17:44:09 +00:00
Gustavo de Andrade RosaandGitHub 27eb24bd4b fix drive name normalization (#74) 2026-07-21 13:43:59 -04:00
github-actions[bot] 9d1bce45af chore: update plugin catalog [skip ci] 2026-07-21 15:14:50 +00:00
Gustavo de Andrade RosaandGitHub ddb054ae3c Add Drive Health (gustav0ar/drive-health) (#58)
* add Drive Health

* declare optional package manager commands

* use live Drive Health screenshot

* hide redundant dependency subtitle

* fix drive error counter alerts

* stabilize transient SMART availability

* address collector packaging review

* refactor: use generic collector service name

* test: harden collector packaging checks
2026-07-21 11:14:38 -04:00
Lemmy a55b9e6b8a keymap: i18n push/pull 2026-07-20 21:37:52 -04:00
github-actions[bot] ff797cc6c6 chore: update plugin catalog [skip ci] 2026-07-21 01:36:24 +00:00
blackuandGitHub e41961025e feat: add Keymap plugin (#68) 2026-07-20 21:36:15 -04:00
Lemmy 0fdd6a2b2f ideapad: i18n cleanup 2026-07-20 21:11:12 -04:00
github-actions[bot] 1f40b8e42b chore: update plugin catalog [skip ci] 2026-07-21 01:08:11 +00:00
notiantandGitHub 16fec532ad fix(ideapad-conservation-mode): use bind action in udev rule instead of add|change to avoid boot race (#61) 2026-07-20 21:08:00 -04:00
github-actions[bot] fa7dd13f8a chore: update plugin catalog [skip ci] 2026-07-21 01:07:38 +00:00
Ian RibeiroandGitHub 4c45993e7a fix(color_picker): change mimetype for better compatibility (#60) 2026-07-20 21:07:27 -04:00
github-actions[bot] 1aef187c31 chore: update plugin catalog [skip ci] 2026-07-21 01:06:40 +00:00
rrztandGitHub 23d574d88c feat(lyrics): update to 1.4.2 (#65)
* feat(lyrics): add Simplified Chinese translations

Ship translations/zh-Hans.json so the plugin UI follows Noctalia's
host language when set to Simplified Chinese.

* fix(lyrics): restore splayer in lyrics_sources help text

The i18n reorder dropped splayer from settings.lyrics_sources.description.

* feat(lyrics): add album artwork fallbacks

Use artwork returned by matched lyric sources when MPRIS artwork is missing
or fails, preserve detected image formats, and bound the cover cache.
2026-07-20 21:06:24 -04:00
Lemmy 03b52eccaf i18n: update 2026-07-20 21:05:36 -04:00
github-actions[bot] a3612462cf chore: update plugin catalog [skip ci] 2026-07-21 01:02:43 +00:00
Ahmed EmadandGitHub 5c59d225b8 Add Game Launcher (#57)
* Add game-launcher plugin

* auto-build: compile gamelauncher.c on first run

* rename leo -> Alexander

* add cc to dependencies for CI

* fix CI issues: lowercase id, prefix, translations, getConfig

* fix: revert prefix to g (noctalia prepends / via provider_prefix)

* game-launcher: fix all 4 security audit issues, cache deletion crash, covers not showing, close button

- Issue 1: Removed all system/popen/curl/wget/python3/grep from C scanner
- Issue 2: Protocol URL validation + character-level filtering + shell escaping
- Issue 3: Added xdg-utils to plugin.toml dependencies
- Issue 4: Steampoacher opt-in setting, documented data flow in README
- Fix: Plugin crash after cache deletion (pcall-wrapped all error paths)
- Fix: Close button uses noctalia.togglePanel instead of panel.close
- Fix: onOpen rescans if any game missing a cover
- Fix: Cover display fallback path reconstruction

* game-launcher: revert close button to panel.close

* game-launcher: note steampoacher needed for HQ covers

* game-launcher: shorten steampoacher note

* 1. Refactored README by hand **Stupid AI**

2. deleted the binary , it will be built with plugin open

* fix: Remove the character-by-character sanitization
2026-07-20 21:02:33 -04:00
github-actions[bot] 44a349eb5f chore: update plugin catalog [skip ci] 2026-07-21 01:01:52 +00:00
Robert WardandGitHub 813efca594 Add Cat plugin (#59)
An animated cat bar widget whose pace reflects CPU usage: sleeps
idle, walks under light load, runs under heavy load. Color follows
the theme by default or a pinned custom color. Cat artwork traced
from the MIT-licensed CatWalk plasmoid into a custom icon font.
2026-07-20 21:01:42 -04:00
github-actions[bot] c72063a2fe chore: update plugin catalog [skip ci] 2026-07-21 00:45:41 +00:00
ycf-anonandGitHub 65503f2ce1 feat: add mawaqit plugin (#53)
* feat: add mawaqit plugin

* Address review feedback

* Address validator errors
2026-07-20 20:45:30 -04:00
Lemmy d253a9430c chore(i18n-pull): accept empty en.json 2026-07-19 22:50:27 -04:00
Lemmy f23a7e9b50 translations update 2026-07-19 22:43:15 -04:00
Lemmy 77d7e64e41 lyrics: new translations reorder 2026-07-19 22:40:40 -04:00
Lemmy c24195d0c7 new plugins en translation 2026-07-19 22:39:32 -04:00
Lemmy 2dfad8c1d0 fr translations 2026-07-19 22:38:58 -04:00
github-actions[bot] a5e5726c40 chore: update plugin catalog [skip ci] 2026-07-20 00:32:13 +00:00
rrztandGitHub a079c8a652 feat(lyrics): add SPlayer source (#55)
* feat(lyrics): add SPlayer source

* fix(lyrics): harden SPlayer fallback
2026-07-19 20:32:03 -04:00
github-actions[bot] 5651052175 chore: update plugin catalog [skip ci] 2026-07-19 12:46:39 +00:00
Jarred RobinsonandGitHub 14215c8cd4 feat: add claude-companion (#33)
* Add lowcache/claude-companion plugin for PR

* claude-companion: address review feedback

...

* Added tr & timeout to dependency list, and reduced thumbnail description

* added missing thumbnail.webp
2026-07-19 08:46:30 -04:00
github-actions[bot] 4008bf15f2 chore: update plugin catalog [skip ci] 2026-07-19 12:45:44 +00:00
Jin LiuandGitHub 493365b028 Add ImageMagick Clock plugin (#46)
* Add ImageMagick Clock plugin

ImageMagick Clock draws a custom clock using ImageMagick (or any other CLI image drawing tool).

* Address review comments

* Update thumbnail

* Add description to image_width/height settings

* Guard the mv command to fix race condition

* Handle time jump (resume from sleep)
2026-07-19 08:45:34 -04:00
github-actions[bot] 175e5183e6 chore: update plugin catalog [skip ci] 2026-07-19 12:39:50 +00:00
5fb0e0f279 Add DS4 Color plugin (Hy4ri/ds4-color) (#52)
* feat: add PS4 Colors plugin (DS4 lightbar control)

Wraps the ps4-colors CLI (github.com/Hy4ri/ps4-colors) as a Noctalia
plugin: bar button + color panel (native picker, hex field, presets)
that sets the DualShock 4 lightbar via the ps4-colors binary.

NOTE: thumbnail.webp still pending (generated in noctalia thumbnail
generator) — CI will flag the missing asset until added.

* fix: add PS4 Colors thumbnail (solid crimson card)

960x540 WebP, deep crimson (#990000) to match the plugin accent.

* feat: left-click applies saved color, panel adds Save button

- widget: left-click applies the saved color via service; right-click opens panel
- service: add 'save' IPC (persist without touching controller)
- panel: Save (persist) + Apply (set now) buttons
- translations: add 'save' key

* refactor: implement DS4 protocol in pure Lua (drop C dependency)

The plugin now writes the HID output report to /dev/hidrawN directly via
noctalia.writeFile. USB report 0x05 (32B) and Bluetooth report 0x11 (78B)
with CRC32 are built and the CRC verified against the kernel algorithm.
Device detection scans /sys/class/hidraw uevent for Sony DS4 PIDs.
No external binary or library required.

* fix: panel renders black box (ipairs(nil) at script load)

Move preset-click handler registration into onOpen (after presets are
loaded) instead of module top-level, where ipairs(nil) threw and aborted
the whole panel entry. Guard presets with 'or {}'. Replace unsupported
width='100%' string with a numeric width on the swatch.

* fix: match color_picker panel schema exactly (drop invented props)

Remove border='primary' (unknown value -> whole tree abort) and wrap=true.
Swatch now uses border='outline' + borderWidth to show selection, mirroring
oldirtty/color_picker. Aligns every ui.* node with a known-good panel.

* fix: service dead on load (pluginDataDir nil concat) + real device write

- Resolve pluginDataDir lazily + nil-guard lastFile() so the service entry
  actually loads (top-level concat on nil threw -> no onIpc -> no apply ->
  no notification, which is why the color never changed).
- setLightbar tries noctalia.writeFile, falls back to a python3 O_WRONLY
  binary write for the /dev/hidrawN char device (writeFile is file-oriented).

* fix: replace Luau bitwise ops (&/|/~/>>) with math-only helpers

Noctalia's Lua is strict (PUC-Rio semantic), not Luau: '&', '|', '~', '>>'
are syntax errors -> service failed to load at crc32_init -> no apply.
Added band/rshift/bxor/bnot32 math helpers; CRC32 + BT report now use them
and still produce the verified CRC 523bce6f.

* fix: panel black box (readonly _G) — use static onPreset1..9 globals

Noctalia's _G is immutable at runtime, so assigning _G['onPreset'..i] in
onOpen threw 'attempt to modify a readonly table' and aborted the panel.
Presets are a fixed list, so define onPreset1..9 as plain module globals
calling a shared applyPreset(i). Remove dead makePresetHandler.

* fix: drop unsupported textAlign prop on ui.input (ui-tree warning)

'textAlign' is a label prop, not an input prop; Noctalia ignored it with a
[WRN] ui-tree log line. Input defaults to left align anyway.

* fix: use device-gamepad-2 icon for catalog + bar glyph

'controller' glyph was missing; swap to device-gamepad-2 for both the
plugin catalog icon and the bar widget default glyph.

* rename: PS4 Colors -> DS4 Color (id Hy4ri/ds4-color, dir ds4-color/)

Rename plugin id, display name, bar glyph default, translation key
(ps4_colors -> ds4_color) and all internal IPC references. Drop the stale
ps4_colors_missing string (plugin has no external binary dependency).
Keep accurate comments crediting the original ps4-colors C source.

* ui: shorten panel (height 520->400, tighter gaps/padding, smaller swatch)

Save/Apply buttons were already the last row (bottom of the column); this
just compacts the overall panel height.

* art: use panel screenshot as thumbnail (960x540 webp, crimson bg)

* fix: lowercase author in id (CI validate: author must match ^[a-z0-9][a-z0-9._-]*$)

'Hy4ri' -> 'hy4ri' in id, author, and all internal IPC references.

* fix: thumbnail

* fix(review): declare python3 dependency + document hidraw fallback

Reviewer flagged: plugin declared dependencies=[] but the hidraw write fallback
invokes python3, so systems without Python cannot apply the color if the
direct writeFile fails. Declare 'python3' in dependencies, note it in the
manifest description, and document the requirement in README Requirements.

* security(review): validate color as 6-hex at every trust boundary

Reviewer flagged: last.json value entered shared state unvalidated, then got
single-quote-interpolated into /bin/sh -c via runAsync -> shell injection.

- Add isHex6() (exactly ^[0-9a-fA-F]{6}$) and enforce it at: loadLast
  (poisoned last.json), onSubmitHex, onApply/onSave (from state), onIpc
  apply/save, and the apply()/save() service funcs.
- Since only 6 hex chars can reach runAsync, the single-quote interpolation
  is provably safe (no quote-breaker / metachar can survive).
- Also fixes a latent bug: the old %x regex captured only 5 hex, rejecting
  valid 6-char colors like 990000.

* Update plugin description for clarity

Removed mention of 'hidraw write fallback' from the description.

---------

Co-authored-by: M57 <hy4ri@users.noreply.github.com>
Co-authored-by: Lemmy <studio@quadbyte.net>
2026-07-19 08:39:42 -04:00
Lemmy 7a476bf7b3 ci(validate): warn on segmented keys in the json, ex: aaaa.bbbb.cccc 2026-07-19 00:16:13 -04:00
Lemmy b5ffdcf6d4 chore(i18n): push/pull 2026-07-19 00:15:32 -04:00
Lemmy 163ece02ac ci(validate): proper key format detection 2026-07-19 00:06:41 -04:00
Lemmy 81c64fccb1 fix(lyrics): fix invalid uppercase i18n keys 2026-07-19 00:06:25 -04:00
github-actions[bot] a7319e5d34 chore: update plugin catalog [skip ci] 2026-07-18 23:04:33 +00:00
ArturandGitHub 9d96040309 Home Assistant v2.0.1 (#50)
* fix(*): Added a function to remove trailing slashes from URLs.

* feat(panel): Added a home assistant icon alongsite the panel tile.

* chore(plugin): Bump the version to 2.0.1

* fix(panel): Fixed wrong glyph syntax.
2026-07-18 19:04:23 -04:00
github-actions[bot] 6b54e88389 chore: update plugin catalog [skip ci] 2026-07-18 23:02:32 +00:00
Yocraft-2000andGitHub 36758bee4f Web launcher plugin update (#47)
* feat: refresh results when a favicon finishes downloading

* fix: bump version

* feat: add command setting

* fix: fallback command if empty or not set
2026-07-18 19:02:22 -04:00
github-actions[bot] 110b6d6ae7 chore: update plugin catalog [skip ci] 2026-07-18 23:00:37 +00:00
Apex077andGitHub de345821e2 feat: add apex077/eyecare eye-care reminders plugin (#41) 2026-07-18 19:00:28 -04:00
github-actions[bot] 151ea4d53b chore: update plugin catalog [skip ci] 2026-07-18 14:19:28 +00:00
Aviv Bintang AringgaandGitHub 56ccc9e5f4 feat(nextboot-selector): add nextboot-selector plugin (#36)
* feat(nextboot-selector): add nextboot-selector plugin

* fix(nextboot-selector): change readme

* fix(nextboot-selector): change readme

* fix(nextboot-selector): change en.json structure

* fix(nextboot-selector): check command result before rebooting and notify if error

* fix(nextboot-selector): add reboot and sudo as dependencies
2026-07-18 10:19:19 -04:00
github-actions[bot] 2d9c70aaf4 chore: update plugin catalog [skip ci] 2026-07-18 13:31:46 +00:00
LysecandGitHub 9e952f6e70 Merge pull request #44 from avivbintangaringga/nix-monitor
feat(nix-monitor): update version 1.2.0
2026-07-18 15:31:37 +02:00