something-x-dev 1.8.1.dev25__tar.gz → 1.8.2.dev27__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 (47) hide show
  1. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/PKG-INFO +1 -1
  2. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/PKGBUILD +6 -1
  3. something_x_dev-1.8.2.dev27/ROADMAP.md +107 -0
  4. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/_version.py +2 -2
  5. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/something_x_dev.egg-info/PKG-INFO +1 -1
  6. something_x_dev-1.8.1.dev25/ROADMAP.md +0 -69
  7. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/.github/CODEOWNERS +0 -0
  8. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/.github/workflows/ci.yml +0 -0
  9. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/.github/workflows/release-dev.yml +0 -0
  10. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/.github/workflows/release.yml +0 -0
  11. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/.gitignore +0 -0
  12. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/DEVICES.md +0 -0
  13. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/LICENSE +0 -0
  14. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/README.md +0 -0
  15. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/cliff.toml +0 -0
  16. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/docs/RELEASING.md +0 -0
  17. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/docs/docs.html +0 -0
  18. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/docs/index.html +0 -0
  19. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/flake.nix +0 -0
  20. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/__init__.py +0 -0
  21. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/application.py +0 -0
  22. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/bluetooth.py +0 -0
  23. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/data/__init__.py +0 -0
  24. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/data/com.something.x.omarchy.desktop +0 -0
  25. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/data/style.css +0 -0
  26. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/pages/__init__.py +0 -0
  27. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/pages/device.py +0 -0
  28. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/pages/home.py +0 -0
  29. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/profiles.py +0 -0
  30. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/protocol.py +0 -0
  31. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/splash.py +0 -0
  32. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/tray.py +0 -0
  33. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/nothing_app/window.py +0 -0
  34. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/pyproject.toml +0 -0
  35. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/setup.cfg +0 -0
  36. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/something_x_dev.egg-info/SOURCES.txt +0 -0
  37. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/something_x_dev.egg-info/dependency_links.txt +0 -0
  38. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/something_x_dev.egg-info/entry_points.txt +0 -0
  39. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/something_x_dev.egg-info/requires.txt +0 -0
  40. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/something_x_dev.egg-info/top_level.txt +0 -0
  41. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/somethingx +0 -0
  42. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/tests/__init__.py +0 -0
  43. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/tests/conftest.py +0 -0
  44. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/tests/test_bluetooth.py +0 -0
  45. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/tests/test_crc.py +0 -0
  46. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/tests/test_profiles.py +0 -0
  47. {something_x_dev-1.8.1.dev25 → something_x_dev-1.8.2.dev27}/tests/test_protocol.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: something-x-dev
3
- Version: 1.8.1.dev25
3
+ Version: 1.8.2.dev27
4
4
  Summary: Something X device manager for Omarchy / Linux
5
5
  Author: Raphael
6
6
  License: MIT
@@ -7,11 +7,16 @@ arch=('any')
7
7
  url="https://github.com/SoaOaoS/nothingonmarchy"
8
8
  license=('MIT')
9
9
  depends=('python' 'python-gobject' 'gtk4' 'libadwaita')
10
- makedepends=('python-build' 'python-installer' 'python-wheel' 'python-setuptools' 'python-setuptools-scm')
10
+ makedepends=('python-build' 'python-installer' 'python-wheel' 'python-setuptools')
11
11
  optdepends=('libpulse: volume control via pactl')
12
12
  source=("https://files.pythonhosted.org/packages/source/s/something-x/something_x-${pkgver}.tar.gz")
13
13
  sha256sums=('SKIP')
14
14
 
15
+ prepare() {
16
+ cd "something_x-${pkgver}"
17
+ sed -i 's/, "setuptools-scm>=8"//' pyproject.toml
18
+ }
19
+
15
20
  build() {
16
21
  cd "something_x-${pkgver}"
17
22
  python -m build --wheel --no-isolation
@@ -0,0 +1,107 @@
1
+ # Something X — Roadmap
2
+
3
+ ---
4
+
5
+ ## Current release — v1.8
6
+
7
+ ### Shipped
8
+ - [x] **GitHub Pages** — project landing page + full documentation site (`docs/`)
9
+ - [x] **AUR package** — Arch users can install without pip
10
+ - [x] **NixOS flake** — `flake.nix` for Nix users
11
+ - [x] **`.desktop` file** — ships and auto-installs so the app appears in Walker/Rofi/GNOME launcher
12
+ - [x] **Low battery notification** — `notify-send` when any bud drops below 20 %
13
+ - [x] **Background mode** — closing the window hides it; relaunch shows it again (Gio single-instance)
14
+ - [x] **Per-device profiles** — ANC + EQ saved per device address to `~/.config/something-x/profiles.json`, restored on reconnect
15
+ - [x] **CLI quick-toggle** — `something-x --anc off|on|transparency`, `something-x --eq bass`, `something-x --battery`
16
+ - [x] **System tray icon** — battery on hover via StatusNotifierItem (Waybar/SNI)
17
+ - [x] **Wearing detection display** — L/R in-ear status shown on the earbud visual
18
+ - [x] **Auto-connect RFCOMM** — connects as soon as BlueZ reports the device connected
19
+ - [x] **Async BlueZ** — native `Gio` async D-Bus, no `dbus-python` dependency
20
+ - [x] **Unit tests** — 65 tests covering CRC, protocol parsing, battery dedup, profiles, BluetoothManager
21
+ - [x] **Debug mode** — `SOMETHING_X_DEBUG=1` dumps raw RFCOMM frames for contributors
22
+ - [x] **Graceful ANC mode detection** — infer supported modes from RFCOMM response; hide unsupported buttons
23
+ - [x] **Dynamic versioning** — version sourced from git tags at build time
24
+ - [x] **Liquid glass dark UI** — overhauled aesthetic for the app window
25
+
26
+ ---
27
+
28
+ ## 1.9 — Quality of life
29
+
30
+ ### Features
31
+ - [ ] **Device nickname** — rename a paired device in the UI; stored in profiles
32
+ - [ ] **Profile import / export** — share `.json` profile files between machines or with other users
33
+ - [ ] **Wear-detect MPRIS actions** — pause media when both buds are removed; resume when reinserted (opt-in)
34
+ - [ ] **Notification preferences** — per-event toggles (battery low, connect, disconnect) in settings
35
+ - [ ] **Theming** — user-selectable accent color and light/dark mode toggle; theme stored in config
36
+
37
+ ### Tech
38
+ - [ ] **Improved test coverage** — device page, tray, profiles round-trip, CLI flags
39
+
40
+ ---
41
+
42
+ ## 1.10 — Desktop integration
43
+
44
+ ### Features
45
+ - [ ] **D-Bus API** — expose ANC, EQ, battery, and connect/disconnect over a session-bus interface so scripts and status bars can consume it without spawning a CLI process
46
+ - [ ] **Global keybind support** — register a configurable shortcut (e.g. `Super+F1`) to cycle ANC modes without opening the window
47
+ - [ ] **Quick-settings overlay** — small floating panel triggered by keybind or tray click; ANC toggle + battery at a glance
48
+ - [ ] **Waybar module documentation** — sample `custom/somethingx` block wired to the D-Bus API
49
+
50
+ ---
51
+
52
+ ## 1.11 — Multi-device
53
+
54
+ ### Features
55
+ - [ ] **Multiple devices simultaneously** — open a page per device, manage both at once without switching
56
+ - [ ] **Battery overview** — compact summary card on the home page showing all connected devices and their battery levels
57
+
58
+ ---
59
+
60
+ ## 1.12 — EQ overhaul
61
+
62
+ ### Features
63
+ - [ ] **Visual EQ graph** — interactive SVG/Cairo curve instead of preset pills
64
+ - [ ] **Custom EQ presets** — per-band sliders, save with a user-defined name, stored in profiles
65
+ - [ ] **Preset sharing** — export / import individual EQ presets as `.json`
66
+
67
+ ---
68
+
69
+ ## 1.13 — Protocol depth
70
+
71
+ ### Features
72
+ - [ ] **Touch controls remapping** — reassign tap/hold actions if the protocol exposes it (command IDs found in APK, not yet wired up)
73
+ - [ ] **Firmware version display** — read firmware string from RFCOMM and show it in the device page
74
+ - [ ] **Firmware update check** — compare device firmware against latest known version, show a badge when outdated
75
+
76
+ ### Protocol / devices
77
+ - [ ] **CMF Buds / Buds Pro validation** — confirm command IDs and ship explicit support
78
+ - [ ] **Nothing Ear (1) / (a) / (stick) community testing** — collect field reports, fix edge cases
79
+ - [ ] **Structured debug logger** — `SOMETHING_X_DEBUG=1` writes a structured `.jsonl` capture file for easier issue reproduction
80
+
81
+ ---
82
+
83
+ ## 1.14 — Additional devices
84
+
85
+ ### Features
86
+ - [ ] **Nothing Ear (open) support** — ANC not applicable; validate battery and EQ commands
87
+ - [ ] **CMF Watch support** — separate protocol; requires fresh APK reverse-engineering
88
+ - [ ] **Nothing Phone glyph integration** — notification mirroring and glyph lighting (depends on BlueZ + glyph API availability)
89
+
90
+ ---
91
+
92
+ ## Long term / ideas
93
+
94
+ These have no version target yet — they need either upstream work, a contributor, or significant scoping.
95
+
96
+ - [ ] **GNOME Shell extension** — battery indicator in the GNOME top bar
97
+ - [ ] **KDE Plasma widget** — same idea for KDE users
98
+ - [ ] **macOS port** — replace BlueZ D-Bus with CoreBluetooth via `pyobjc` (long shot)
99
+ - [ ] **Battery history graph** — plot battery level over time, persisted across sessions
100
+
101
+ ---
102
+
103
+ ## Won't do
104
+
105
+ - **Windows** — no BlueZ; RFCOMM access requires a completely different stack
106
+ - **Wayland screen capture control** — out of scope
107
+ - **Streaming / media playback control** — MPRIS already handles this system-wide
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.8.1.dev25'
22
- __version_tuple__ = version_tuple = (1, 8, 1, 'dev25')
21
+ __version__ = version = '1.8.2.dev27'
22
+ __version_tuple__ = version_tuple = (1, 8, 2, 'dev27')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: something-x-dev
3
- Version: 1.8.1.dev25
3
+ Version: 1.8.2.dev27
4
4
  Summary: Something X device manager for Omarchy / Linux
5
5
  Author: Raphael
6
6
  License: MIT
@@ -1,69 +0,0 @@
1
- # Something X — Roadmap
2
-
3
- ---
4
-
5
- ## Known Issues
6
-
7
- - Window control buttons (close/minimize/maximize) in the headerbar had a double-hover effect on non-tiling desktops due to app CSS overriding the system theme — fixed on `feat/fix-headerbar-window-controls`.
8
-
9
- ---
10
-
11
- ## v1.x — Near term
12
-
13
- ### Docs
14
- - [x] **GitHub Pages** — project landing page + full documentation site (`docs/`)
15
-
16
- ### Distribution
17
- - [x] AUR package — AUR package for Arch users to replace pip
18
- - [x] **NixOS flake** — `flake.nix` for Nix users
19
- - [x] **`.desktop` file** — ships and auto-installs so the app appears in Walker/Rofi/GNOME launcher
20
-
21
- ### Features
22
- - [x] **Low battery desktop notification** — `notify-send` when any bud drops below 20 %
23
- - [x] **Background mode** — closing the window hides it; relaunch shows it again (Gio single-instance)
24
- - [x] **Per-device profiles** — ANC + EQ saved per device address to `~/.config/something-x/profiles.json`, restored automatically on reconnect
25
- - [x] **CLI quick-toggle** — `something-x --anc off|on|transparency`, `something-x --eq bass`, `something-x --battery`
26
- - [x] **System tray icon** — show battery on hover via StatusNotifierItem (Waybar/SNI)
27
- - [x] **Wearing detection display** — show L/R in-ear status on the earbud visual
28
- - [x] **Auto-connect RFCOMM** — connect as soon as BlueZ reports the device connected, no tap needed
29
-
30
- ### Fixes
31
- - [x] **Headerbar button hover** — window controls now respect the system theme on all desktops
32
-
33
- ### Protocol
34
- - [x] **Debug mode** — `SOMETHING_X_DEBUG=1` env var dumps raw RFCOMM frames for contributors
35
- - [x] **Graceful ANC mode detection** — infer supported modes from RFCOMM level response; hide unsupported buttons
36
-
37
- ---
38
-
39
- ## v2.x — Medium term
40
-
41
- ### Features
42
- - [ ] **Multiple devices simultaneously** — open two device pages, manage both at once
43
- - [ ] **Quick-settings panel** — small floating overlay triggered by keybind
44
- - [ ] **Touch controls remapping** — if the protocol exposes it (found in APK, not yet implemented)
45
- - [ ] **Equalizer graph** — visual EQ curve instead of preset pills; custom presets with sliders
46
- - [ ] **Firmware update check** — compare device firmware against latest known version, show badge
47
-
48
- ### Tech
49
- - [x] **Async BlueZ** — replaced `dbus-python` with native `Gio` async D-Bus (non-blocking, no extra dependency)
50
- - [x] **Unit tests** — 65 tests covering CRC, protocol parsing, battery dedup, profiles, and BluetoothManager
51
-
52
- ---
53
-
54
- ## v3.x — Long term / ideas
55
-
56
- - [ ] **CMF Watch support** — different protocol; would need fresh APK reverse-engineering
57
- - [ ] **Nothing Phone integration** — glyph control, notification mirroring
58
- - [ ] **GNOME Shell extension** — battery indicator in the top bar
59
- - [ ] **KDE Plasma widget** — same idea for KDE users
60
- - [ ] **macOS port** — replace BlueZ D-Bus with CoreBluetooth via `pyobjc` (long shot)
61
-
62
- ---
63
-
64
- ## Won't do
65
-
66
- - **Windows** — no BlueZ, RFCOMM access requires a different stack entirely
67
- - **Wayland screenshot / screen capture control** — out of scope
68
- - **Streaming / media playback control** — MPRIS already handles this system-wide
69
-