-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path.coderabbit.yaml
More file actions
147 lines (145 loc) · 6.87 KB
/
Copy path.coderabbit.yaml
File metadata and controls
147 lines (145 loc) · 6.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
language: fr-FR
tone_instructions: >-
Sois direct et concis. Priorise les bugs réels, les régressions
utilisateur, les problèmes de sécurité, les erreurs de logique et les
oublis de tests/validation. Évite les remarques purement cosmétiques.
early_access: true
reviews:
profile: assertive
request_changes_workflow: true
high_level_summary: true
auto_review:
enabled: true
drafts: false
base_branches:
- main
ignore_title_keywords:
- "chore: bump"
- "chore(main): release"
- "release-please"
- "dependabot"
- "[bot]"
path_filters:
- "!**/dist/**"
- "!**/node_modules/**"
- "!**/target/**"
- "!**/vendor/**"
- "!secrets/**"
- "!bun.lock"
- "!src-tauri/Cargo.lock"
- "!*.lock"
path_instructions:
- path: "src/**"
instructions: >-
Frontend React 19 + Vite + Tailwind CSS 4 pour une app Tauri 2.
Vérifie les erreurs de state/effects, les handlers qui lancent des
commandes Tauri, les problèmes d'accessibilité visibles, et les
régressions de navigation/player. Évite les suggestions de style si
Prettier/ESLint les couvrent déjà .
- path: "src/lib/tauri/**"
instructions: >-
Wrappers TypeScript autour des commandes Tauri. Vérifie que les noms
d'arguments correspondent exactement aux commandes Rust, que les types
frontend/backend restent alignés, et que les erreurs importantes ne
sont pas masquées.
- path: "src-tauri/crates/app/src/audio/**"
instructions: >-
Moteur audio temps réel. Dans les callbacks audio (cpal + WASAPI
exclusive), signale toute allocation, lock, I/O, log ou opération
bloquante. Vérifie aussi les channels/rates, la gestion des threads,
des atomics, des buffers SPSC, et les cas de fallback de périphérique
audio.
- path: "src-tauri/crates/app/src/commands/**"
instructions: >-
Commandes Tauri exposées au frontend. Vérifie les contrôles de profil
actif (require_profile_pool/require_profile_id), les accès SQLx, les
erreurs retournées à l'UI, les chemins fichiers, et les changements qui
peuvent bloquer le runtime async. La logique métier portable doit vivre
dans `crates/core/` — signale toute duplication entre une commande et
un repository/helper core qui pourrait être déléguée.
- path: "src-tauri/crates/app/**"
instructions: >-
Code Tauri-spécifique (binaire `waveflow`). Aucune restriction sur
`tauri::*`, `cpal`, `souvlaki`, `discord-rich-presence`. Vérifie que la
logique réutilisable côté serveur reste poussée vers `crates/core/`
plutôt que dupliquée ici.
- path: "src-tauri/crates/core/**"
instructions: >-
Crate portable `waveflow-core` (logique métier réutilisable par le
futur `waveflow-server`). Refuse toute dépendance directe à `tauri`,
`cpal`, `souvlaki`, `tauri-plugin-*`. Le code SQLite doit rester
derrière la feature `sqlite`. Privilégie les traits + impl SQLite pour
toute nouvelle CRUD plutĂ´t que des fonctions concrètes liĂ©es Ă
`sqlx::SqlitePool`.
- path: "src-tauri/crates/core/src/repository/**"
instructions: >-
Traits de repository (`ProfileRepository`, `LibraryRepository`,
`PlaylistRepository`, `TrackRepository`) et leurs implémentations
SQLite. Le trait doit rester storage-agnostique (pas de `sqlx::*` dans
la signature). Les impls dans `sqlite/` doivent prendre `&mut
SqliteConnection` pour les helpers d'upsert afin de participer aux
transactions ouvertes (single-writer SQLite). Toute lecture suivie
d'une écriture sur la même clé doit vivre dans une transaction unique
pour éviter les races.
- path: "src-tauri/crates/core/src/scanner/**"
instructions: >-
Helpers purs du scanner (`extract.rs` + `upserts.rs`). Pas de Tauri,
pas d'`AppHandle`, pas d'émission d'events. L'orchestrateur
(`scan_folder_inner`) reste dans `crates/app/src/commands/scan.rs`
parce qu'il émet `scan:progress`. Toute fonction qui aurait besoin
d'Ă©mettre un event doit passer par un trait `ScannerEventSink` Ă
définir, pas un appel direct à `app.emit(...)`.
- path: "src-tauri/crates/core/src/smart_playlists/**"
instructions: >-
Moteur de smart playlists (Daily Mix, On Repeat, custom rules, cover
composer). Doit consommer `PathsContext` (pas `AppPaths`) et rester
portable côté serveur. Vérifie que les changements de schéma sur
`playlist.smart_rules` restent rétro-compatibles (la migration v1 →
v2 est en place).
- path: "src-tauri/crates/core/src/metadata/**"
instructions: >-
Clients HTTP tiers (Deezer / Last.fm / LRCLIB). Pure `reqwest` over
rustls, aucune dépendance Tauri. Le respect du mode offline est géré
par les appelants côté `crates/app/` via `crate::offline::is_offline()`
— signale toute regression où un nouveau chemin réseau ne court-circuite
pas en mode offline.
- path: "src-tauri/crates/core/src/audio_format/**"
instructions: >-
Parseurs DSD (DSF / DFF) + convertisseur 1-bit → PCM 24-bit. Code
portable (utilisé par le scanner et par `crates/app/src/audio/crossfade.rs`
au runtime). Pas de Tauri, pas de cpal. Les ratios de décimation et
les coefficients FIR doivent rester documentés pour qu'un futur
backend serveur puisse les reprendre tels quels.
- path: "src-tauri/migrations/**"
instructions: >-
Migrations SQLite app/profile. Les migrations existantes ne doivent
pas être modifiées après release; demander une nouvelle migration
timestampée si le schéma change. Vérifie la compatibilité avec les
profils existants.
- path: "src/i18n/locales/**"
instructions: >-
Fichiers de traduction. Vérifie surtout les clés manquantes, les clés
divergentes entre locales, et les placeholders i18next incohérents.
- path: ".github/workflows/**"
instructions: >-
Workflows GitHub Actions de release, packaging et sécurité. Vérifie
les risques d'injection via branches/PR non fiables, la portée des
secrets, les permissions minimales, et les changements qui pourraient
publier des artefacts incorrects.
- path: "packaging/**"
instructions: >-
Packaging Linux/Windows. Vérifie les chemins installés, dépendances
système, metadata de distribution, permissions, et cohérence avec les
artefacts de release.
tools:
eslint:
enabled: true
biome:
enabled: false
semgrep:
enabled: false
opengrep:
enabled: true
chat:
auto_reply: true