Skip to content
This repository was archived by the owner on Mar 1, 2026. It is now read-only.

Commit 3cf1086

Browse files
gregfeliceclaude
andcommitted
Align documentation to standard conventions (ADR-004)
Create CLAUDE.md, migrate root-level docs into docs/, convert backlog to P0-P3 format, add adr/research directory scaffolding. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 6c9ff23 commit 3cf1086

File tree

8 files changed

+140
-89
lines changed

8 files changed

+140
-89
lines changed

BACKLOG.md

Lines changed: 0 additions & 89 deletions
This file was deleted.

CLAUDE.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# DailyDriver
2+
3+
Visual keyboard shortcut configuration tool for GNOME/Wayland with presets, cheat sheet overlay, and conflict detection.
4+
5+
## Quick Reference
6+
7+
```bash
8+
# Dev environment
9+
cd /home/gregf/development/dailydriver-standalone
10+
source venv/bin/activate
11+
PYTHONPATH=src pytest tests/unit/ -v
12+
13+
# Lint
14+
ruff check src/ tests/
15+
ruff format src/ tests/
16+
17+
# Build Flatpak locally
18+
flatpak-builder --force-clean --user --install build-dir io.github.gregfelice.DailyDriver.yml
19+
20+
# Run dev mode
21+
./run-dev.sh
22+
```
23+
24+
## Architecture
25+
26+
GTK4/Libadwaita app using Python with Meson build system. Packaged as Flatpak.
27+
28+
```
29+
src/dailydriver/
30+
application.py # App entry point, GtkApplication subclass
31+
window.py # Main window (42k - largest file, handles all views)
32+
models/
33+
shortcut.py # Shortcut data model
34+
keyboard.py # Keyboard layout model
35+
profile.py # Profile/preset model
36+
services/
37+
gsettings_service.py # Reads/writes GNOME keyboard shortcuts via dconf
38+
keyboard_config_service.py # Orchestrates shortcut configuration
39+
profile_service.py # Loads/saves preset profiles (TOML)
40+
hardware_service.py # Keyboard hardware detection
41+
hid_apple_service.py # Mac keyboard hid-apple module config
42+
backends/ # Desktop-specific backends (GNOME, future KDE/Hyprland)
43+
views/
44+
keyboard_view.py # Visual keyboard display
45+
cheatsheet.py # Cheat sheet overlay (Alt+Super+/)
46+
preset_selector.py # Preset selection UI
47+
shortcut_editor.py # Individual shortcut editing
48+
shortcut_list.py # Shortcuts list by category
49+
```
50+
51+
Key patterns:
52+
- GTK requires `gi.require_version()` before imports; ruff E402 is suppressed for these files
53+
- Services are injected into views, not imported directly
54+
- Presets are TOML files defining complete shortcut sets ("clean slate" approach)
55+
- GNOME does NOT support xdg-desktop-portal GlobalShortcuts; app falls back to gnome-settings-daemon keybindings
56+
57+
## Conventions
58+
59+
- **Python**: 3.11+, ruff for linting/formatting, line length 100
60+
- **Testing**: pytest with pytest-cov, pytest-mock; tests in `tests/unit/`; 220+ tests
61+
- **Packaging**: Use `uv pip` for installs, Meson build system, Flatpak for distribution
62+
- **Git**: Conventional commit messages
63+
- **Branching**: main branch, push to GitHub
64+
- **App ID**: `io.github.gregfelice.DailyDriver` (reverse DNS for Flatpak/Flathub)
65+
66+
## Key Documentation
67+
68+
- `docs/BACKLOG.md` - Prioritized backlog (P0-P3)
69+
- `docs/STATUS.md` - Project status and last session notes
70+
- `docs/RELEASING.md` - Version numbering and release process
71+
- `docs/FLATPAK_SUBMISSION_GUIDE.md` - Flathub submission reference
72+
- `docs/adr/` - Architecture decision records
73+
- `docs/research/` - Research notes
74+
- `flathub/FLATHUB_PR.md` - Flathub PR description and permission justifications
75+
76+
## Status
77+
78+
**v0.1.0-alpha** - Application is solid and running well on GNOME/Wayland.
79+
80+
- 220 tests passing, 6 failing (mock setup issues in custom keybinding tests)
81+
- 29% code coverage (core services well tested; UI views untested)
82+
- CI/CD operational via GitHub Actions
83+
- Flathub submission pending review
84+
- AUR package published
85+
- Known platform limitation: GNOME does not implement xdg-desktop-portal GlobalShortcuts
86+
87+
See `docs/BACKLOG.md` for current priorities.

docs/BACKLOG.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# DailyDriver Backlog
2+
3+
Prioritized bugs, features, and improvements for DailyDriver development.
4+
5+
---
6+
7+
## P0 - Critical
8+
9+
- [ ] Update `ShortcutGrabberService` to detect GNOME and skip portal attempt (cleaner logs, no error spam)
10+
- [ ] Capture screenshots and finalize AppStream metainfo for Flathub submission
11+
- [ ] Screenshots for hypr / apple presets don't work - should show equivalent of apple keys
12+
- [ ] `<D-/>` shortcut bug (slash key with Super modifier)
13+
- [ ] Fix 6 failing custom keybinding tests (mock setup refinement needed)
14+
15+
**Completed:**
16+
- [x] Test compositor shortcut grabs on a live GNOME Wayland session (tested, doesn't work - GNOME limitation)
17+
18+
---
19+
20+
## P1 - Next Sprint
21+
22+
- [ ] Flathub beta channel submission
23+
- [ ] Research GNOME Shell extension approach for global shortcuts (extension exposes GrabAccelerator to DailyDriver via custom D-Bus interface)
24+
- [ ] Background daemon mode (`dailydriver --daemon`) for persistent shortcut grabs (useful when GlobalShortcuts works)
25+
- [ ] Make detection methods on GSettingsService public API (`_detect_terminal` etc.)
26+
- [ ] Add "Shortcut Status" indicator in UI showing compositor grab state (and GNOME limitation warning)
27+
- [ ] Integration test for ShortcutGrabberService with `python-dbusmock`
28+
- [ ] GNOME schema version validation in preset tests
29+
- [ ] Add CI notification (GitHub status badge)
30+
31+
---
32+
33+
## P2 - Soon
34+
35+
- [ ] KDE Plasma backend
36+
- [ ] Hyprland backend
37+
- [ ] AUR PKGBUILD
38+
- [ ] Snap Store packaging
39+
- [ ] GNOME Circle application
40+
- [ ] Auto-update checker for new versions
41+
- [ ] Per-shortcut compositor grab toggle in UI
42+
- [ ] Monitor GNOME GlobalShortcuts portal implementation progress
43+
- [ ] Custom shortcut editor (create new shortcuts)
44+
- [ ] Import/export profiles
45+
46+
---
47+
48+
## P3 - Future
49+
50+
- [ ] COPR (Fedora) packaging
51+
- [ ] Keyboard layout auto-detection (QWERTY/Dvorak/Colemak)
52+
- [ ] User-contributed preset marketplace / sharing
53+
- [ ] Multi-monitor shortcut awareness
File renamed without changes.
File renamed without changes.
File renamed without changes.

docs/adr/.gitkeep

Whitespace-only changes.

docs/research/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)