Skip to content

Commit fe05927

Browse files
authored
Merge pull request #17 from KristianP26/feat/recording-snackbar
feat: recording snackbar indicator (#10)
2 parents c32228a + 72036c7 commit fe05927

7 files changed

Lines changed: 964 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ That's it.
3434
- **OpenAI-compatible speech-to-text** - use OpenAI, Groq, or another compatible `/audio/transcriptions` endpoint.
3535
- **Optional AI cleanup** - fix punctuation, grammar, spelling, and capitalization after transcription.
3636
- **Fallback providers** - configure backup STT and LLM providers if the primary one fails.
37+
- **On-screen recording indicator** - a small pulsing pill appears at the bottom-center of the screen while recording and processing.
3738
- **System tray app** - enable/disable, change hotkey, toggle rewrite, open settings, or exit from the tray.
3839
- **Microphone selection** - pick your input device and calibrate silence detection.
3940
- **Post-type key** - optionally press `Enter`, `Tab`, `Space`, or `Backspace` after typing.

docs/IMPLEMENTATION.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,23 @@ def get_icon_bytes(state: TrayState) -> bytes: ...
261261
"""Raw PNG bytes for testing without Qt."""
262262
```
263263

264+
### snackbar.py
265+
266+
```python
267+
def snackbar_content_for(state_value: str) -> tuple[str, tuple[int, int, int]] | None: ...
268+
"""Map a TrayState value to (label, dot_rgb); None for idle/unknown (hidden)."""
269+
270+
def bottom_center_xy(available: QRect, size: QSize, margin: int = 48) -> QPoint: ...
271+
"""Top-left point centering *size* horizontally in *available*, *margin* above bottom."""
272+
273+
class RecordingSnackbar(QWidget):
274+
"""Frameless, always-on-top, translucent, click-through status pill at the
275+
bottom-center of the primary screen. Pulsing dot + label.
276+
Never takes focus or appears in the taskbar."""
277+
def show_state(self, label: str, dot_rgb: tuple[int, int, int]) -> None: ...
278+
def hide_state(self) -> None: ...
279+
```
280+
264281
### settings_dialog.py
265282

266283
```python

0 commit comments

Comments
 (0)