Dictus Android — Application native Android de dictation vocale offline. Port de l'application iOS existante (voir repo dictus). Voir PRD.md pour les specs completes.
- Kotlin + Jetpack Compose
- WhisperKit / Whisper.cpp pour STT offline
- Material Design 3 / Material You
- Minimum SDK: 29 (Android 10)
Les maquettes sont dans design/dictus-android-design.pen.
Utiliser les outils MCP Pencil (batch_get, get_screenshot) pour consulter les ecrans.
Voir design/README.md pour la liste des frames et IDs.
- Home:
wrqi0| Models:kSWvw| Settings:CqKvx - Recording:
0yEaN| Waveform Spec:VUDbq
- app/ — Application principale (onboarding, settings, model manager, recording)
- core/ — Module partage (modeles, preferences, design system)
- Nommage: camelCase pour variables/fonctions, PascalCase pour classes/composables
- Un fichier = une responsabilite
- Commentaires en anglais dans le code
- UI strings: francais (langue principale) + anglais
- Background: #0A1628
- Surface: #161C2C
- Accent: #3D7EFF
- Accent highlight: #6BA3FF
- Recording: #EF4444
- Success: #22C55E
- Pierre est debutant en Kotlin/Android — expliquer les concepts cles
- Toujours expliquer le "pourquoi" derriere les choix d'architecture Android
- L'app iOS (repo dictus) sert de reference fonctionnelle
Issues live in GitHub Issues on getdictus/dictus-android, managed with the gh CLI. See docs/agents/issue-tracker.md.
Default vocabulary: needs-triage, needs-info, ready-for-agent, ready-for-human, wontfix. See docs/agents/triage-labels.md.
needs-physical-test marks PRs touching audio/mic/transcription: test on a physical device with Pierre before merge. Auto-applied from .github/labeler.yml; only Titus removes it, after Pierre validates. See docs/agents/physical-test-label.md.
Single-context: one GLOSSARY.md and docs/adr/ at the repo root. See docs/agents/domain.md.
Use the verify-dictus-android skill (.claude/skills/verify-dictus-android/) for any change with a user-visible effect, before opening the PR, and whenever a change has to be proven on Pierre's Pixel 4.
A PR that adds or changes a screen or a user-facing feature MUST update the skill's features/ and features/screens.md in the same PR, with the same IDs as the iOS map (getdictus/dictus-ios, .claude/skills/verify-dictus-ios/features/).
Four test tiers, detailed in the skill's SKILL.md → Test tiers:
- Emulator: the default for every PR. The opt-in x86_64 debug build (
-Pdictus.emulatorAbi=true, #147) and the virtual microphone fed from French WAV clips (#149) are in place, so a dictation can be proven on the emulator with Tiny. - Pixel 4 driven by Andy: real microphone, permissions, transcription time with Tiny, Base, Small Q5 (the onboarding model below 6 GB of RAM) and Parakeet 0.6B v3 (the onboarding model from 6 GB, so on the 6 GB Pixel 4, #152).
- Pixel 4 with Pierre: real voice, text quality, keyboard feel. Label
needs-physical-testand a batch device test. - Out of reach: Whisper models larger than Small Q5 (
small,medium-q5_0). The PR says "not tested on a recent phone".
pstack (https://github.com/cursor/plugins/tree/main/pstack) is the reference toolbox for agent workflows. It provides create-verification-skill and maintain-verification-skill (both user-invoked only), unslop for prose, tdd, poteto-mode and a set of engineering principle skills. It is enabled for this repo through .claude/settings.json; Claude Code asks you to trust the cursor-plugins marketplace on first use.