mini-eq 0.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. mini_eq-0.1.1/AGENTS.md +108 -0
  2. mini_eq-0.1.1/CHANGELOG.md +14 -0
  3. mini_eq-0.1.1/LICENSE +674 -0
  4. mini_eq-0.1.1/MANIFEST.in +14 -0
  5. mini_eq-0.1.1/PKG-INFO +181 -0
  6. mini_eq-0.1.1/README.md +145 -0
  7. mini_eq-0.1.1/SECURITY.md +17 -0
  8. mini_eq-0.1.1/data/io.github.bhack.mini-eq.desktop +12 -0
  9. mini_eq-0.1.1/data/io.github.bhack.mini-eq.metainfo.xml +48 -0
  10. mini_eq-0.1.1/docker/ubuntu-24.04-wp04.Dockerfile +18 -0
  11. mini_eq-0.1.1/docs/performance.md +66 -0
  12. mini_eq-0.1.1/docs/release.md +130 -0
  13. mini_eq-0.1.1/docs/screenshots/README.md +9 -0
  14. mini_eq-0.1.1/docs/screenshots/mini-eq.png +0 -0
  15. mini_eq-0.1.1/flatpak/patches/wireplumber-0.5.14-tools-disabled-po.patch +23 -0
  16. mini_eq-0.1.1/io.github.bhack.mini-eq.json +150 -0
  17. mini_eq-0.1.1/pyproject.toml +65 -0
  18. mini_eq-0.1.1/setup.cfg +4 -0
  19. mini_eq-0.1.1/src/mini_eq/__init__.py +5 -0
  20. mini_eq-0.1.1/src/mini_eq/__main__.py +25 -0
  21. mini_eq-0.1.1/src/mini_eq/analyzer.py +660 -0
  22. mini_eq-0.1.1/src/mini_eq/app.py +195 -0
  23. mini_eq-0.1.1/src/mini_eq/assets/icons/hicolor/128x128/apps/io.github.bhack.mini-eq.png +0 -0
  24. mini_eq-0.1.1/src/mini_eq/assets/icons/hicolor/256x256/apps/io.github.bhack.mini-eq.png +0 -0
  25. mini_eq-0.1.1/src/mini_eq/assets/icons/hicolor/512x512/apps/io.github.bhack.mini-eq.png +0 -0
  26. mini_eq-0.1.1/src/mini_eq/assets/icons/hicolor/64x64/apps/io.github.bhack.mini-eq.png +0 -0
  27. mini_eq-0.1.1/src/mini_eq/assets/source/mini-eq-generated-icon-original-rgb.png +0 -0
  28. mini_eq-0.1.1/src/mini_eq/assets/source/mini-eq-generated-icon.png +0 -0
  29. mini_eq-0.1.1/src/mini_eq/band_fader.py +849 -0
  30. mini_eq-0.1.1/src/mini_eq/cli.py +45 -0
  31. mini_eq-0.1.1/src/mini_eq/core.py +758 -0
  32. mini_eq-0.1.1/src/mini_eq/deps.py +341 -0
  33. mini_eq-0.1.1/src/mini_eq/desktop_integration.py +112 -0
  34. mini_eq-0.1.1/src/mini_eq/filter_chain.py +243 -0
  35. mini_eq-0.1.1/src/mini_eq/filter_glyph.py +106 -0
  36. mini_eq-0.1.1/src/mini_eq/glib_utils.py +9 -0
  37. mini_eq-0.1.1/src/mini_eq/gtk_utils.py +16 -0
  38. mini_eq-0.1.1/src/mini_eq/instance.py +263 -0
  39. mini_eq-0.1.1/src/mini_eq/routing.py +683 -0
  40. mini_eq-0.1.1/src/mini_eq/screenshot.py +41 -0
  41. mini_eq-0.1.1/src/mini_eq/style.css +320 -0
  42. mini_eq-0.1.1/src/mini_eq/window.py +639 -0
  43. mini_eq-0.1.1/src/mini_eq/window_analyzer.py +269 -0
  44. mini_eq-0.1.1/src/mini_eq/window_graph.py +895 -0
  45. mini_eq-0.1.1/src/mini_eq/window_layout.py +802 -0
  46. mini_eq-0.1.1/src/mini_eq/window_presets.py +283 -0
  47. mini_eq-0.1.1/src/mini_eq/wireplumber_backend.py +678 -0
  48. mini_eq-0.1.1/src/mini_eq/wireplumber_stream_router.py +180 -0
  49. mini_eq-0.1.1/src/mini_eq.egg-info/PKG-INFO +181 -0
  50. mini_eq-0.1.1/src/mini_eq.egg-info/SOURCES.txt +70 -0
  51. mini_eq-0.1.1/src/mini_eq.egg-info/dependency_links.txt +1 -0
  52. mini_eq-0.1.1/src/mini_eq.egg-info/entry_points.txt +2 -0
  53. mini_eq-0.1.1/src/mini_eq.egg-info/requires.txt +12 -0
  54. mini_eq-0.1.1/src/mini_eq.egg-info/top_level.txt +1 -0
  55. mini_eq-0.1.1/tests/test_mini_eq_analyzer.py +393 -0
  56. mini_eq-0.1.1/tests/test_mini_eq_app.py +81 -0
  57. mini_eq-0.1.1/tests/test_mini_eq_cli.py +65 -0
  58. mini_eq-0.1.1/tests/test_mini_eq_core.py +296 -0
  59. mini_eq-0.1.1/tests/test_mini_eq_deps.py +87 -0
  60. mini_eq-0.1.1/tests/test_mini_eq_desktop_integration.py +20 -0
  61. mini_eq-0.1.1/tests/test_mini_eq_filter_chain.py +104 -0
  62. mini_eq-0.1.1/tests/test_mini_eq_instance.py +55 -0
  63. mini_eq-0.1.1/tests/test_mini_eq_routing.py +602 -0
  64. mini_eq-0.1.1/tests/test_mini_eq_window_analyzer.py +36 -0
  65. mini_eq-0.1.1/tests/test_mini_eq_wireplumber_backend.py +387 -0
  66. mini_eq-0.1.1/tests/test_mini_eq_wireplumber_stream_router.py +240 -0
  67. mini_eq-0.1.1/tools/benchmark_fader_drag.py +415 -0
  68. mini_eq-0.1.1/tools/check_wireplumber_gi.py +79 -0
  69. mini_eq-0.1.1/tools/demo_runtime.py +144 -0
  70. mini_eq-0.1.1/tools/profile_live_app.py +60 -0
  71. mini_eq-0.1.1/tools/profile_sysprof.py +70 -0
  72. mini_eq-0.1.1/tools/render_demo_screenshot.py +77 -0
@@ -0,0 +1,108 @@
1
+ # Agent Guide
2
+
3
+ These notes apply to the whole repository.
4
+
5
+ ## Project Context
6
+
7
+ Mini EQ is a small system-wide parametric equalizer for PipeWire desktops. It
8
+ uses GTK/Libadwaita for the UI, WirePlumber for routing and default-output
9
+ monitoring, PipeWire filter-chain with builtin biquad filters for DSP, and the
10
+ PipeWire JACK compatibility layer plus NumPy for spectrum analysis.
11
+
12
+ This is a public-facing repository. Treat every committed file, screenshot,
13
+ artifact, and log snippet as public. Keep user-facing documentation focused on
14
+ using the app, and keep maintainer-only process notes in this file or under
15
+ `docs/`.
16
+
17
+ ## Code Map
18
+
19
+ - `src/mini_eq/core.py`: EQ data models, preset JSON, biquad math, APO import.
20
+ - `src/mini_eq/filter_chain.py`: PipeWire filter-chain config generation.
21
+ - `src/mini_eq/wireplumber_backend.py`: WirePlumber GI compatibility layer.
22
+ - `src/mini_eq/wireplumber_stream_router.py`: stream routing helpers.
23
+ - `src/mini_eq/routing.py`: system-wide EQ lifecycle and routing controller.
24
+ - `src/mini_eq/app.py` and `src/mini_eq/window*.py`: GTK/Libadwaita app and UI.
25
+ - `src/mini_eq/analyzer.py`: JACK/NumPy analyzer runtime.
26
+ - `src/mini_eq/screenshot.py` and `tools/render_demo_screenshot.py`: maintainer
27
+ screenshot tooling, not user-facing CLI.
28
+ - `data/`: desktop and AppStream metadata.
29
+ - `io.github.bhack.mini-eq.json`: Flatpak manifest.
30
+ - `tests/`: pytest suite for core behavior and non-visual integration seams.
31
+
32
+ ## Development Commands
33
+
34
+ Use the repo virtualenv when it exists:
35
+
36
+ ```bash
37
+ .venv/bin/python -m ruff check .
38
+ .venv/bin/python -m ruff format --check .
39
+ .venv/bin/python -m pytest -q
40
+ ```
41
+
42
+ For release/package checks:
43
+
44
+ ```bash
45
+ appstreamcli validate --no-net data/io.github.bhack.mini-eq.metainfo.xml
46
+ desktop-file-validate data/io.github.bhack.mini-eq.desktop
47
+ .venv/bin/python -m build
48
+ .venv/bin/python -m twine check dist/*
49
+ ```
50
+
51
+ The app depends on system GI/audio packages that Python packaging cannot
52
+ install: GTK4, Libadwaita, WirePlumber introspection, PipeWire, and PipeWire
53
+ JACK compatibility. Some tests skip automatically when optional runtime tools
54
+ are unavailable.
55
+
56
+ ## Change Guidelines
57
+
58
+ - Prefer existing patterns and small, targeted patches.
59
+ - Do not move logic between the large modules just to tidy them; split modules
60
+ only when the user asked for that refactor or the change needs it.
61
+ - Keep WirePlumber 0.4 and 0.5 compatibility in mind. Do not use a newer GI API
62
+ without checking the compatibility layer and tests.
63
+ - Keep the `mini-eq` CLI user-oriented. Maintainer automation belongs in
64
+ `tools/`, `docs/`, or this file.
65
+ - If you add packaged files, update `MANIFEST.in` when they must appear in the
66
+ source distribution.
67
+ - Do not add generated build outputs, local config, cache directories, or
68
+ machine-specific files.
69
+
70
+ ## Screenshot Rules
71
+
72
+ The README should show the public screenshot, not instructions for generating
73
+ release assets.
74
+
75
+ Generate the public release screenshot with deterministic demo data:
76
+
77
+ ```bash
78
+ PYTHONPATH=src python3 tools/render_demo_screenshot.py docs/screenshots/mini-eq.png
79
+ ```
80
+
81
+ Do not commit screenshots that show personal device names, Bluetooth device
82
+ names, usernames, hostnames, local paths, or private preset names. Prefer
83
+ `tools/render_demo_screenshot.py` over desktop screenshots because it renders
84
+ only the Mini EQ window from deterministic demo data.
85
+
86
+ ## Release And Security
87
+
88
+ Use `docs/release.md` as the release checklist. Before publishing release
89
+ artifacts or changing repository/package visibility, verify the rendered README,
90
+ package URLs, issue tracker, license, screenshots, and AppStream metadata.
91
+
92
+ Before publishing artifacts or changing repository visibility, run a focused
93
+ leak scan:
94
+
95
+ ```bash
96
+ git rev-list --count HEAD
97
+ git ls-remote --heads origin
98
+ git ls-remote --tags origin
99
+ leak_pattern='(/home/|/Users/|secret|token|api[_-]?key|github_pat|BEGIN (RSA|OPENSSH|PRIVATE) KEY)'
100
+ git grep -n -I -E "$leak_pattern" HEAD -- . \
101
+ ':(exclude)*.png' \
102
+ ':(exclude)AGENTS.md' \
103
+ ':(exclude)docs/release.md'
104
+ ```
105
+
106
+ Do not push local scratch branches or local safety tags.
107
+ Do not rewrite public history unless the user explicitly asks for it and accepts
108
+ the impact.
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ ## 0.1.1 - 2026-04-27
4
+
5
+ - Fix PyPI classifier metadata for package-index publishing.
6
+ - Add production PyPI publishing automation using trusted publishing.
7
+
8
+ ## 0.1.0 - 2026-04-26
9
+
10
+ - Initial standalone Mini EQ source package.
11
+ - GTK/Libadwaita system-wide parametric equalizer UI.
12
+ - PipeWire filter-chain builtin biquad processing through WirePlumber.
13
+ - Output routing, default-output following, preset import/export, and analyzer support.
14
+ - Runtime dependency diagnostics through `mini-eq --check-deps`.