Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
ccdf6ba
refactor: restructure project with src layout and plugin system
Luminger Sep 20, 2025
75f57c2
feat: Add CythonHIDAPI transport as alternative to LibUSBHIDAPI
Luminger Sep 20, 2025
66ff62d
refactor: separate concerns in main module and make CythonHIDAPI opti…
Luminger Sep 21, 2025
f47818b
refactor: use dynamic versioning from __init__.py across all projects
Luminger Sep 21, 2025
b7add16
ci: fix failing workflow and replace pre-commit with ruff-action
Luminger Sep 21, 2025
05c25b9
style: fix ruff formatting issues in OBS plugin and core tests
Luminger Sep 21, 2025
be81922
config: restrict ruff to only check src, tests, and plugins directories
Luminger Sep 21, 2025
5fbf910
fix(tests): update test_main.py imports after module refactoring
Luminger Sep 21, 2025
a6f1543
fix: replace sdist exclude with explicit include list
Luminger Sep 21, 2025
4914156
refactor: modernize project structure and remove SCM versioning
Luminger Sep 21, 2025
24f7a14
feat: Add system font support via python-fontconfig
Luminger Sep 21, 2025
9a09041
refactor: replace exception-based switch_deck with action system
Luminger Sep 22, 2025
cbaad64
refactor: unify text rendering and remove MaterialIcons codepoints de…
Luminger Sep 22, 2025
6fa9680
fix: various UI and code improvements
Luminger Sep 23, 2025
39ab75a
build: bump python-fontconfig to 0.6.2.post1
Luminger Sep 25, 2025
c948113
feat: improve error messages for missing plugins
Luminger Sep 25, 2025
486efff
feat!: redesign plugin system architecture
Luminger Sep 26, 2025
f477e7e
feat: redesign renderer system with enhanced API and convenience methods
Luminger Sep 26, 2025
c1bd539
chore: remove now unused exceptions.py
Luminger Sep 27, 2025
d897e28
chore: remove obsolete notes to Roboto and Material Icons from LICENSE
Luminger Sep 27, 2025
ba72f2a
docs: fix configuration syntax in plugin README files
Luminger Sep 28, 2025
8e0f23f
refactor(plugins): introduce PluginState to enable shared state acros…
Luminger Sep 30, 2025
c15aa40
refactor: migrate from schema to pydantic for configuration validation
Luminger Oct 5, 2025
713c653
refactor: migrate to centralized TaskManager for background task life…
Luminger Oct 5, 2025
4d098b6
refactor(clock)!: implement segment-based layout system
Luminger Oct 5, 2025
b4e9e47
fix(transport): return None from read() when no data available
Luminger Oct 5, 2025
9177dd4
feat: migrate to Roboto Mono Nerd Font for unified text and icon rend…
Luminger Oct 5, 2025
c3ef536
feat(widgets): add index attribute for custom widget positioning
Luminger Oct 7, 2025
9ac989b
fix(renderer): center icons based on visual glyph bounds
Luminger Oct 7, 2025
403a720
feat: add device serial number filtering to config
Luminger Oct 7, 2025
759d06c
refactor: move plugin connection lifecycle to context hooks
Luminger Oct 12, 2025
79652ee
refactor!: rename Plugin to PluginDescriptor and PluginContext to Plugin
Luminger Oct 12, 2025
2c19f35
fix(renderer): convert palette images with transparency to RGBA
Luminger Oct 12, 2025
a0776da
refactor(plugins,widgets)!: use class docstrings for descriptions
Luminger Oct 13, 2025
e46e020
refactor!: move Renderer to rendering module and introduce UpdateResult
Luminger Oct 13, 2025
bbd9ebf
refactor(renderer): change default icon size from 64 to 86
Luminger Oct 13, 2025
9a9e4c1
test(obs): update MockOBSWidget to match new Renderer API
Luminger Oct 13, 2025
43782ba
refactor(renderer): add image() convenience method
Luminger Oct 13, 2025
e6f9ffb
feat: reintroduce separate text and icon fonts
Luminger Oct 13, 2025
95392b7
feat!: migrate configuration from custom DSL to TOML with pydantic-se…
Luminger Oct 13, 2025
682d345
refactor(renderer): replace text_wrapped with text_multiline
Luminger Oct 14, 2025
cf6c166
refactor(plugins): standardize structure with widgets/ subdirectory
Luminger Oct 14, 2025
20c0245
refactor(core): reorganize actions and rename widgets/base.py to widg…
Luminger Oct 14, 2025
7fa2dec
fix(transport): remove device context manager and fix LibUSBHIDAPI co…
Luminger Oct 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .flake8

This file was deleted.

28 changes: 1 addition & 27 deletions .github/actions/build/action.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
name: Build distribution
description: Builds the distribution

inputs:
use-scm-version:
description: Overwrite package version from SCM information
default: 'false'
required: false

runs:
using: composite
steps:
Expand All @@ -27,29 +21,9 @@ runs:
shell: bash
run: python3 -m pip install uv

- name: Install tools
shell: bash
if: ${{ inputs.use-scm-version == true || inputs.use-scm-version == 'true' }}
run: python3 -m pip install setuptools_scm toml --user

- name: Set package version
shell: python
if: ${{ inputs.use-scm-version == true || inputs.use-scm-version == 'true' }}
run: |
import setuptools_scm
import toml

with open("pyproject.toml", "r") as f:
pyproject = toml.load(f)

pyproject["project"]["version"] = setuptools_scm.get_version()

with open("pyproject.toml", "w") as f:
toml.dump(pyproject, f)

- name: Build distribution packages
shell: bash
run: uv build
run: uv build --all-packages
env:
UV_PROJECT_ENVIRONMENT: .venv

Expand Down
43 changes: 37 additions & 6 deletions .github/actions/check/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ runs:

- name: Install system dependencies
shell: bash
run: sudo apt-get install -y pulseaudio libhidapi-libusb0
run: sudo apt-get install -y pulseaudio libhidapi-libusb0 libfontconfig-dev

- name: Set up Python
uses: actions/setup-python@v5
Expand All @@ -27,13 +27,44 @@ runs:

- name: Setup project
shell: bash
run: uv sync
run: uv sync --group dev
env:
UV_PROJECT_ENVIRONMENT: .venv

- name: Run pre-commit
uses: pre-commit/action@v3.0.1
- name: Run ruff check on main project
uses: astral-sh/ruff-action@v3
with:
args: "check"

- name: Run ruff format check on main project
uses: astral-sh/ruff-action@v3
with:
args: "format --check"

- name: Run ruff check on plugins
uses: astral-sh/ruff-action@v3
with:
src: "plugins/"
args: "check"

- name: Run ruff format check on plugins
uses: astral-sh/ruff-action@v3
with:
src: "plugins/"
args: "format --check"

- name: Test core package
shell: bash
run: uv run pytest tests/

- name: Test OBS plugin
shell: bash
run: cd plugins/obs && uv run pytest tests/

- name: Test audio plugin
shell: bash
run: cd plugins/audio && uv run pytest tests/

- name: pytest
- name: Test example plugin
shell: bash
run: uv run pytest
run: cd plugins/example && uv run pytest tests/
5 changes: 0 additions & 5 deletions .github/workflows/check-and-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,6 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with: # required to get the correct scm version
fetch-depth: 0
fetch-tags: true

- name: Build
uses: ./.github/actions/build
with:
use-scm-version: true
36 changes: 0 additions & 36 deletions .pre-commit-config.yaml

This file was deleted.

14 changes: 1 addition & 13 deletions LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -592,16 +592,4 @@ proprietary programs. If your program is a subroutine library, you may consider
more useful to permit linking proprietary applications with the library. If this is
what you want to do, use the GNU Lesser General Public License instead of this
License. But first, please read
&lt;<http://www.gnu.org/philosophy/why-not-lgpl.html>&gt;.


Third Party Work
================

This repository/package includes the font "Roboto Regular" by Christian Robertson that
is released under the terms of the Apache License, Version 2.0
(<https://www.apache.org/licenses/LICENSE-2.0>).

Also the font "Material Icons" is included. It is licensed under the terms of the
Apache License, Version 2.0 (<https://www.apache.org/licenses/LICENSE-2.0>).
See <https://google.github.io/material-design-icons> for more information.
&lt;<http://www.gnu.org/philosophy/why-not-lgpl.html>&gt;.
Loading
Loading