Commit Graph
32 Commits
Author SHA1 Message Date
mmacierzanka 6f50fce3f9 feat: introduce database as a persistent storage for settings and history
refactor: arrange persistence layer as a port-adapter schema
2026-09-30 17:42:09 +02:00
mmacierzanka bb9213024d refactor: use Component type for EFFECT_ICONS in PlayerPanel
Panel / Lint, typy i build (pull_request) Successful in 24s
Backend / Lint i formatowanie (pull_request) Successful in 36s
Backend / Testy i kontrakt API (pull_request) Successful in 1m7s
Backend / Testowy build obrazu (pull_request) Successful in 1m34s
2026-09-13 17:19:25 +02:00
mmacierzanka 55578a0463 refactor: remove description property from audio effects and UI 2026-09-13 16:37:09 +02:00
mmacierzanka 8f1395117a feat: add loading state and voice channel validation to queue restoration and update uploads panel header 2026-09-13 16:18:18 +02:00
mmacierzanka 210f03b0d3 feat: validate bot voice channel permissions 2026-09-13 16:14:38 +02:00
mmacierzanka 76f63057bc refactor: remove success notifications from api action wrappers and websocket connection 2026-09-13 16:04:35 +02:00
mmacierzanka 2513aa2b28 refactor: remove effect badges and clear active effects on player reset 2026-09-13 15:51:14 +02:00
mmacierzanka 51418a2d88 feat: add Robot (ring modulation) and Dźwięk z tostera (8-bit bitcrusher) player audio effects 2026-09-11 02:13:21 +02:00
mmacierzanka 39403b8238 refactor: remove legacy volume_boost references in favor of generalized player effects API 2026-09-11 01:57:26 +02:00
mmacierzanka a12b726648 feat: add player audio effects module with real-time pipeline, distortion, fourth density, and UI controls 2026-09-11 01:54:42 +02:00
mmacierzanka 46a1fcf385 refactor: replace RotateCcw icon with SkipBack for restart functionality in PlayerPanel 2026-09-11 01:48:22 +02:00
mmacierzanka 3dd30804dc feat: implement volume boost functionality with signal-based multiplier and audio processing override 2026-09-11 01:46:16 +02:00
mmacierzanka 06238b0438 feat: add restart button to player panel to seek to the beginning of the track 2026-09-11 01:26:10 +02:00
mmacierzanka 708e3591ed feat: add bot restart functionality via API and Discord command 2026-09-11 01:21:26 +02:00
mmacierzanka 7e78e3cd19 feat: add dashboard icon
Backend / Lint i formatowanie (push) Successful in 4s
Backend / Testy i kontrakt API (push) Successful in 5s
Panel / Lint, typy i build (push) Successful in 19s
Backend / Testowy build obrazu (push) Successful in 14s
2026-08-21 21:53:32 +02:00
mmacierzanka 07041ac881 feat: show optimistic history queue entries 2026-08-21 21:45:25 +02:00
mmacierzanka 7c3fe68d86 fix: ESLint issues
Backend / Testy i kontrakt API (push) Successful in 5s
Backend / Lint i formatowanie (push) Successful in 8s
Panel / Lint, typy i build (push) Failing after 18s
Backend / Testowy build obrazu (push) Successful in 14s
2026-08-21 21:33:43 +02:00
mmacierzanka 2a11c70a3e feat: improve styles and layouts for better consistency and responsiveness
Backend / Lint i formatowanie (push) Successful in 3s
Backend / Testy i kontrakt API (push) Successful in 5s
Panel / Lint, typy i build (push) Failing after 9s
Backend / Testowy build obrazu (push) Successful in 9s
2026-08-21 21:29:57 +02:00
mmacierzanka ca17c742c9 feat: add tooltip for progress bar seeking 2026-08-21 21:12:24 +02:00
mmacierzanka 7ef0a43693 feat: add playback seeking
Backend / Lint i formatowanie (pull_request) Successful in 4s
Backend / Testy i kontrakt API (pull_request) Successful in 4s
Backend / Testowy build obrazu (pull_request) Successful in 11s
Panel / Lint, typy i build (pull_request) Successful in 21s
2026-08-21 18:53:38 +02:00
mmacierzanka ed13d4af06 fix: advance playback after track completion
Backend / Lint i formatowanie (pull_request) Successful in 4s
Backend / Testy i kontrakt API (pull_request) Successful in 10s
Panel / Lint, typy i build (pull_request) Successful in 19s
Backend / Testowy build obrazu (pull_request) Successful in 9s
2026-08-21 18:39:57 +02:00
mmacierzanka d6bd302165 feat: restore the last queue per server
Backend / Lint i formatowanie (pull_request) Successful in 3s
Backend / Testy i kontrakt API (pull_request) Successful in 10s
Panel / Lint, typy i build (pull_request) Successful in 18s
Backend / Testowy build obrazu (pull_request) Successful in 15s
2026-08-21 17:10:40 +02:00
mmacierzanka 3624c152f5 fix: sync volume after external changes 2026-08-21 16:59:11 +02:00
mmacierzanka 21f3a1060c fix: validate uploaded media files
Backend / Lint i formatowanie (pull_request) Successful in 6s
Backend / Testy i kontrakt API (pull_request) Successful in 10s
Backend / Testowy build obrazu (pull_request) Successful in 10s
Panel / Lint, typy i build (pull_request) Successful in 34s
2026-08-21 16:37:41 +02:00
mmacierzanka 004641c9b8 feat: expose per-server default plays setting 2026-08-21 16:32:41 +02:00
mmacierzanka 36621ce261 feat: support direct links to guild views 2026-08-21 16:27:45 +02:00
mmacierzanka 8b340c61f0 feat: add notification channel selector 2026-08-21 16:26:30 +02:00
mmacierzanka 64b428555c refactor: isolate application state per Discord server 2026-08-21 16:14:22 +02:00
lgooseandClaude Bot 105f3e6c6a chore(frontend): ESLint dla Vue i TypeScriptu
Konfiguracja we flat configu: zalecane zestawy js, typescript-eslint oraz
eslint-plugin-vue. Bloki <script setup lang="ts"> obsługuje vue-eslint-parser
przekazujący zawartość do parsera TypeScriptu.

Odstępstwa od domyślnych reguł:

- vue/multi-word-component-names wyłączone - kafelki panelu mają nazwy
  własne i nie każda jest dwuczłonowa
- no-unused-vars przepuszcza nazwy z prefiksem podkreślenia
- no-console wyłączone dla testu dymnego, który raportuje wynik na stdout

Szablony przepuszczone przez eslint --fix, co ujednoliciło łamanie
atrybutów i domykanie znaczników. Po zmianach kontrola typów, build
i test dymny nadal przechodzą.

Dochodzą skrypty npm: lint (z --max-warnings 0) oraz lint:fix.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 01:34:55 +02:00
lgooseandClaude Bot 038fa2ead4 feat(frontend): komponenty panelu
Widok rozbity na komponenty odpowiadające kafelkom pulpitu:

- AppHeader, VoiceChannelPanel, PlayerPanel, AddTrackPanel
- UploadsPanel wraz z UploadedFileRow współdzielonym z oknem modalnym
- QueuePanel i QueueItem - przeciąganie, zmiana kolejności, limit odtworzeń
- HistoryPanel, ModalShell, SettingsModal, UploadsLibraryModal, ToastHost

Arkusz stylów przeniesiony ze static/style.css bez zmian w wyglądzie.
Style, które app.js wstrzykiwał inline przy budowaniu HTML-a, przeniesione
do klas współdzielonych i bloków scoped w komponentach.

Poprawki bezpieczeństwa wynikające z przepisania:

- Tytuły utworów i nazwy plików nie trafiają już do innerHTML. Poprzednia
  wersja składała wiersze kolejki, historii i listy plików ze stringów,
  więc tytuł zawierający znaczniki HTML był wstawiany do DOM bez escapowania.
- Nazwy plików nie są już wklejane do atrybutów onclick z ręcznym
  escapowaniem apostrofu, które i tak nie obejmowało cudzysłowu. Zdarzenia
  podpina Vue, bez generowania kodu w stringach.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 01:08:31 +02:00
lgooseandClaude Bot 119bff00a3 feat(frontend): composables ze stanem panelu
Logika, która w app.js żyła w zmiennych globalnych, trafia do czterech
composables o wyraźnym zakresie odpowiedzialności:

- useBotStatus     jedno połączenie WebSocket na aplikację, z licznikiem
                   subskrybentów i ponawianiem po zerwaniu. Flaga paused
                   wstrzymuje aktualizacje na czas przeciągania utworów.
- useToasts        kolejka powiadomień wraz z helperem run(), który
                   opakowuje wywołanie API w parę komunikatów sukces/błąd.
- useTrackProgress płynny pasek postępu - między pakietami z serwera czas
                   dopisujemy lokalnie, a każdy pakiet resynchronizuje licznik.
- useUploads       serwerowa baza plików, współdzielona przez kafelek na
                   pulpicie i okno z pełną listą.

Dochodzi też utils/plural.ts z polską odmianą liczebników, zamiast
powtarzanego w kilku miejscach warunku count < 5.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 01:08:04 +02:00
lgooseandClaude Bot 6bfa9b2a77 feat(frontend): kontrakt danych i typowany klient API
- types/status.ts spisuje kształt odpowiedzi /api/status oraz pakietów
  rozgłaszanych po WebSockecie. Dotąd struktura tych danych istniała
  wyłącznie w głowie autora i w rozsianych po kodzie odwołaniach.
- api/client.ts zbiera wszystkie adresy endpointów w jednym miejscu i
  ujednolica obsługę błędów: pole "detail" z odpowiedzi FastAPI trafia do
  wyjątku ApiError, więc warstwa widoku dostaje gotowy komunikat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 01:08:04 +02:00