Voice Typing by Joe — Roadmap
📋 Ez a fájl a technikai sprint tracker. Az üzleti stratégia, árazás, versenytárs-elemzés és fázistervek külön fájlban élnek:
docs/Business Plan/01_Strategy.md
🇭🇺 Piacindítási sorrend: Magyarország → (PL + CZ + SK gyors egymásutánban) → iOS/macOS Platform-teljesség cél: Windows, Linux és Android platformokon a lehető legtöbb funkciónak el kell érhetőnek lennie — az iOS/macOS fejlesztés előfeltétele a három fő platform funkcióinak teljesítése.
✅ v1.4.13 — Released 2026-04-03
Completed
- Privacy-first history: cap at 5 entries (DB + audio file pruning)
- Audio file cleanup on DB prune (
app/db.py) - Play/Redo buttons hidden (not just disabled) when audio file missing
- "Recording cancelled" toast removed — silent cancellation
- Novita API fully removed from Onboarding Wizard and Developer tab
-
.env.examplehardened withGOOGLE_CLIENT_SECRETandPROXY_SECRET -
requirements-linux.txtcleaned (removedwinotify,keyboard) - Hardcoded strings wrapped in
tr()for i18n readiness - CEE Punctuation Fix: auto-capitalise + terminal punctuation + Hungarian question detection (
app/post_process.py)
🚀 v1.5.0 — Sprint Plan (in progress)
Priority 1: Qt Linguist Integration (i18n) ✅ Done
Enable proper multi-language UI support.
- Add
QTranslatorinitialization inmain.py - Create
.tstranslation files for Hungarian and English - Run
lupdateto extract alltr()strings into.tsfiles (98 strings) - Fill all 20 missing Hungarian translations (100% coverage)
- Compile
.ts→.qmwithlrelease— 98/98 finished, 0 unfinished - Add language selector persistence (already in Settings tab)
- Bundle
.qmfiles in PyInstaller spec (build.spec+build_linux.spec)
Priority 2: Linux Native Build (AppImage) ✅ Done
Package the app as a distro-agnostic AppImage.
- Verify
build_linux.specis up to date with all imports ← already updated withapp.i18n+ translations - Install PyInstaller in
.venv(v6.19.0) - Build
dist/VoiceTypingByJoe/viapyinstaller build_linux.spec --noconfirm - Create
build_appimage.sh— packages PyInstaller output into AppImage viaappimagetool - AppDir structure: AppRun launcher,
.desktop, 512px icon, AppStream XML metadata - Integrate
appimagetoolinto the Linux build workflow - Add
.agent/workflows/build-linux.mdworkflow file - Test build on Ubuntu 22.04 LTS (reference distro) ← tested on Linux Mint; Ubuntu test pending
- Document
install_linux.shusage in README + add AppImage download section - GitHub Release v1.4.13 created with AppImage uploaded
Priority 3: Cloud Sync (History & Vocabulary) ✅ LIVE — 76 records syncing
Sync the last 5 dictations and vocabulary across devices via Supabase.
Architectural Decision: Supabase (Zürich, EU)
We evaluated the following BaaS options on 2026-04-03:
| Option | Decision | Reason |
|---|---|---|
| Supabase | ✅ Chosen | Open-source PostgreSQL, best DX, EU data center (Zürich), GDPR-compliant, free tier sufficient for 100k rows, self-hostable if needed later |
| Firebase (Google) | ❌ Rejected | NoSQL (wrong data model), strong vendor lock-in, Google-controlled |
| Appwrite (self-hosted) | 🟡 Fallback | Good alternative if we ever want to eliminate external services; adds VPS complexity |
| PocketBase (self-hosted) | 🟡 Fallback | SQLite-based, ideal if staying fully self-hosted |
Why Supabase specifically:
- PostgreSQL — relational model fits history/vocabulary/usage data perfectly
- EU region: Zürich (eu-central-2) — data never leaves the EU → GDPR simplicity
- Open-source: if Supabase ever raises prices, we can self-host the same codebase
- Free tier covers 100k users at our data volume (~3–5 KB/user)
- Upgrades to Pro ($25/mo)Data that will live in Supabase:
| Table | Content | Per-user size |
|---|---|---|
history |
Last 5 dictations (text, timestamp, model, duration) | ~2 KB |
vocabulary |
Custom words list | ~1 KB |
usage |
Minutes used, dictation count — ✅ in Supabase (migrated 2026-04-05) | ~0.5 KB |
Implementation Tasks
✅ Teljes egészében KÉSZ (2026-04-05, v1.4.16):
-
app/sync.pymegírva — pure urllib, nulla új dependency, teljes offline fallback -
SUPABASE_URL+SUPABASE_ANON_KEYhozzáadvaconfig.py+.env.example-be -
Add→ nem szükséges (pure urllib REST API)supabase-pytorequirements.txt -
supabase_schema.sqlelkészítve —history+vocabularytáblák + RLS per user email -
pull-on-open:sync_on_startup()— utolsó 5 remote entry merge-elve induláskor -
push-on-save:sync_after_save()— fire-and-forget upsert minden diktálás után - Auth: Google ID token → Supabase JWT csere (OIDC), in-memory cache 5 perces refresh
- Conflict resolution: újabb
createdtimestamp nyer; offline → local wins - Graceful offline fallback: ha Supabase nem érhető el, az app normálisan működik
-
app/ui/controller.pybekötve —sync_on_startup(background thread) +sync_after_save - Dashboard konfiguráció — Supabase projekt, schema, Google provider ✅ LIVE
- History sync LIVE — 76+ rekord szinkronizálva (2026-04-05)
- Vocabulary sync LIVE — bootstrap + edit-on-save push (
vocab_sync.py+sync.py) ✅ - v1.4.16 kiadva — vocabulary bootstrap fix + Supabase push minden szerkesztéskor
- Usage tracking migrálva —
push_usage()Supabase-ba (upsert), VPSusage.dbdeprecated (2026-04-05) -
push_usage()bugfix —_rest()hibás szintaxis javítva (argument sorrend +prefer=paraméter) (2026-04-05) - Sync prune bug fix —
_skip_audio_delete=Truea startup merge-nél, audio fájlok védve (2026-04-05) - Auto-update —
download_and_install_update()+ batch updater teljes mértékben implementálva ✅
Priority 3b: E2E Encryption + Cloud Sync Security ✅ KÉSZ (2026-04-19)
KEK+DEK Key-Wrapping Architektúra — O(1) jelszócsere, zero-knowledge szerver.
Architectural Decision: KEK+DEK vs. Direct Encryption
| Megközelítés | Döntés | Indok |
|---|---|---|
| Direct password derive → DEK | ❌ Elvetett | Jelszócsere = minden sor re-encrypt (O(n) — ezer sor esetén percekig tart) |
| KEK+DEK key wrapping | ✅ Választott | Jelszócsere = csak a wrapped DEK cseréje (O(1) — millisekundum) |
Hogyan működik:
Jelszó → PBKDF2(salt) → KEK (Key Encryption Key)
Random → DEK (Data Encryption Key) ← ez enkriptálja az adatokat
KEK.wrap(DEK) → wrapped_dek ← ez megy a Supabase-be
Implementation Tasks ✅ KÉSZ (2026-04-19)
-
app/encryption.py— teljes E2E modul:derive_kek(),generate_dek(),wrap_dek(),unwrap_dek(),encrypt_record(),decrypt_record(); AES-256-GCM + PBKDF2-HMAC-SHA256 (600 000 iteráció) -
app/sync/__init__.py— E2E lifecycle management:setup_cloud_sync(password)— DEK generálás + KEK wrap + Supabase pushunlock_cloud_sync(password)— Supabase pull + KEK unwrap + session DEK cachechange_sync_password(old_pw, new_pw)— atomic KEK rotáció (O(1), nincs re-encrypt)nuke_cloud_data()— GDPR right-to-erasure: minden Supabase sor törlése
-
app/sync/history.py+vocabulary.py— migrálvaget_session_dek()API-ra -
app/ui/cloud_sync_dialogs.py— 4 dialóg: Setup, Unlock, Change Password, Forgot Password (nuke) -
app/ui/tabs/settings_tab.py— dinamikus Cloud Sync szekció (3 állapot: Not Configured / Locked / Active) -
app/ui/controller.py— nem-blokkoló háttér startup check + auto-unlock prompt főszálon -
docs/supabase_schema.sql—user_encryption_metadatatábla +wrapped_dek/wrapped_dek_ivoszlopok + DELETE RLS policy-k minden táblán - Supabase schema migrálva ✅ LIVE (2026-04-19) — SQL Editor futtatva sikeresen
Security Properties
| Tulajdonság | Megvalósítás |
|---|---|
| Zero-knowledge szerver | Plaintext soha nem hagyja el az eszközt |
| Jelszavak nem tárolódnak | Csak a wrapped DEK megy Supabase-be |
| Jelszóvesztés = adatvesztés | Nincs server-side recovery — ez szándékos |
| GDPR right-to-erasure | nuke_cloud_data() az összes sort törli |
| Sync = E2E | Nincs titkosítatlan cloud sync mód |
🚀 v1.5.0 — Következő Sprint (Fázis 1)
Priority 4: Session Hard Cap (6 perc) ✅ KÉSZ (2026-04-05)
- 6 perces session limit implementálása (
app/workers.py—StreamingWorker) - Figyelmeztetés 5 percnél (toast notification —
session_warningSignal) - Auto-stop és mentés 6 percnél (
session_hard_cappedSignal →_on_session_hard_capped) - BYOK módban is érvényes (session cap a worker szinten van, API-tól független)
Priority 5: Sentry Crash Reporting ✅ KÉSZ (2026-04-05)
-
app/crash_reporter.pymodul — opt-in, GDPR-compliant,send_default_pii=False -
sentry_sdk.init()beillesztésemain.py-ban (lazy, csak ha opted-in) - Opt-in checkbox a Settings tab Preferences szekciójában
-
crash_reporting: FalsehozzáadvaDEFAULT_SETTINGS-hez — alapból KI
Priority 6: Szlovák UI fordítás ✅ KÉSZ (2026-04-05)
-
messages_sk.tsfrissítve új tab-alapú fájlszerkezetre (pyside6-lupdate) - 107/107 fordítás kitöltve — Onboarding, session cap, crash reporting, Developer tab
-
pyside6-lrelease→ 107/107 finished, 0 unfinished - Bundle:
translations/*.qmglob mindkét build spec-ben (build_linux.spec,build.spec)
Priority 7: Supabase free tier keepalive ✅ KÉSZ (2026-04-05)
-
ping_uptime()funkció hozzáadvasync.py-ba — induláskor background thread-ben fut -
UPTIME_PING_URLenv változó hozzáadvaconfig.py,.env.example-be (Triple Update Rule) - Uptime Robot konfigurálása: Monitor → HTTP(s) →
https://{ref}.supabase.co/rest/v1/
Sync Pruning Bug Fix ✅ KÉSZ (2026-04-05)
-
db_prune()kiegészítve_skip_audio_deleteflag-gel -
sync_on_startup()prune hívása_skip_audio_delete=True-val — race condition megszüntetve
Usage Tracking → Supabase ✅ KÉSZ (2026-04-05)
-
push_usage(duration_secs)funkció beírvasync.py-ba (UPSERT pattern) - Supabase
usagetábla séma dokumentálva a forrásban (RLS + per-user isolation) -
controller.py:push_usage()bekötve minden diktálás után (fire-and-forget thread) - VPS
usage.dbdeprecated — Supabaseusagetábla az egyetlen forrás
Auto-Update ✅ MÁR IMPLEMENTÁLVA
-
app/updater.py:download_and_install_update()— ZIP letöltés, Zip Slip védelem, batch updater -
controller.py:_on_update_available()— auto_update flag szerint automata letöltés VAGY toast értesítő
Priority 8: Flatpak / Flathub csomagolás ✅ KÉSZ (2026-04-05)
-
flatpak/com.joeets.VoiceTypingByJoe.yaml— Flatpak manifest (org.freedesktop.Platform//23.08) - Sandbox permissions: hálózat, PulseAudio, X11/Wayland, XDG fájlrendszer, értesítések
- AppStream metaadat (
/usr/share/metainfo/) — Flathub-ready -
build_flatpak.sh— automatikus build + bundle export - Launcher script (
/app/bin/vtj-launch) + .desktop fájl a Flatpak kontextusban
Priority 9: .deb / .rpm csomagok ✅ KÉSZ (2026-04-05)
-
build_deb.sh— Ubuntu/Debian.debbuilder (dpkg-deb), zero extra deps - DEBIAN/control: függőségek (
libpulse0,libxcb1, stb.),postinst/prermhook-ok -
build_rpm.sh— Fedora/RHEL.rpmbuilder (rpmbuild), spec fájl generálással - Mindkét csomag tartalmaz:
/usr/bin/vtjlauncher,.desktop,metainfo/,hicolor icon
🚀 v1.5.1 — Sprint (Fázis 2) ✅ KÉSZ (2026-04-05/06)
Stripe SaaS Subscription ✅ KÉSZ (2026-04-05)
-
vtj_proxy.py—/stripe-webhookvégpont, Stripe-signature validáció - Quota enforcement — 180 perces havi limit,
check_quota()middleware minden STT hívásnál - Settings Subscription Card — Stripe Customer Portal deeplink, tier + quota megjelenítés
-
STRIPE_WEBHOOK_SECRET+STRIPE_SECRET_KEYenv változók hozzáadva (Triple Update Rule) - VPS deploy — Caddy HTTPS + webhook live éles forgalomban
Windows Hotkey & Bubble stabilitás ✅ KÉSZ (2026-04-05/06)
- Hotkey debounce (500ms) — dupla tüzelés megszüntetve (
app/hotkey_manager.py) - Busy feedback — buborék amber pulzálás + tooltip ha pipeline fut (
bubble.py) - 90 másodperces safety watchdog — pipeline hang esetén auto-reset (
workers.py)
Android Pill Bubble ✅ KÉSZ (2026-04-05)
- Windows-stílusú pill buborék — [X] ~ wave ~ timer ~ [■] (
FloatingService.kt) -
VtjColorstop-level object — private access hiba javítva - 3 perces recording hard cap (
MAX_RECORDING_MS) - Cancel / Stop gombok külön hit-zone-nal
Kódbázis tisztítás ✅ KÉSZ (2026-04-05)
-
push_usage()bugfix —_rest()hibás argument-sorrend javítva (sync.py) -
punctuation_fixcheckbox hozzáadva a Settings / Preferences szekcióhoz (settings_tab.py) -
punctuation_fix: TruehozzáadvaDEFAULT_SETTINGS-hez (config.py) - Román (
ro) filler szavak hozzáadva —filler_words.py - Román (
ro) kérdőszavak hozzáadva —post_process.py - 8 db debug/patch szkript eltávolítva
git rm-mel,fix_*.pyhozzáadva.gitignore-ba - Repo cleanup —
audio/WAV fájlok, log fájlok, régi.mdfájlok eltávolítva - Docs átrendezés —
STRATEGY.md,Pricing.md,Marketing Strategy.md→docs/mappa
🚀 v1.5.2 — Sprint (Fázis 3) — Android alapok
Android Subscription + Quota Enforcement ✅ KÉSZ (2026-04-06)
-
/check-quotaproxy endpoint — plan, used, limit, allowed (vtj_proxy.py) -
SttApiClient.checkQuota()—QuotaStatusdata class, fail-open logika -
FloatingService.startRecording()— async quota guard, toast + értesítés ha merítve -
SettingsManager:quotaUsedMinutes,quotaLimitMinutes,subscriptionTiermezők — cachelés, UI-hoz ✅ KÉSZ (2026-04-06) - Subscription Card a Statistics tab-ban (tier badge + havi kvóta progress bar) ✅ KÉSZ (2026-04-06)
Android Busy Feedback ✅ KÉSZ (2026-04-06)
-
isProcessingflag — pipeline állapot pontosan trackelt -
showBusyFeedback()— amber flash + kettős rezgés, tap blokkolva - Processing state-ben tap ne indítson új felvételt
.gitignore — Android .gradle/ ✅ KÉSZ (2026-04-06)
-
android/.gradle/hozzáadva.gitignore-ba -
git rm --cachedfuttatva — build cache kivonva a git trackingből
Következő valódi feladatok (v1.5.2 open items)
Priority 1: Settings UI — Subscription Card Androidon ✅ KÉSZ (2026-04-06)
-
SettingsManager:quotaUsedMinutes,quotaLimitMinutes,subscriptionTiermezők SharedPreferences-ben -
SettingsActivityStatistics tab: havi kvóta progress bar (X / 180 perc), tier badge, ↻ Refresh gomb -
/check-quotahívás cached adatokkal induláskor + manuálisan; quota info frissítése
Priority 2: Android Release — v1.6.16 ✅ KÉSZ (2026-04-07)
-
version.json→1.6.16frissítve -
build.gradle→versionCode=32,versionName=1.6.16 -
/android-releaseworkflow futtatva — APK aláírva, GitHub Releasev1.6.16-androidlétrehozva,vtj-releasesversion.jsonszinkronizálva
Priority 3: Windows /code-audit futtatása ✅ KÉSZ (2026-04-08)
-
/code-auditworkflow — DIFF audit (v1.5.4→v1.5.5 changed files), 3 ruff errors fixed, 0 CVE - CHANGELOG.md frissítve v1.5.5 + v1.5.6 sprint alapján
🇭🇺 MAGYARORSZÁG-FIRST FÁZISTERV
Stratégiai döntés (2026-04): Az első piac Magyarország. A többi CEE piac (PL + CZ + SK) ezt követi, gyors egymásutánban. A platform-teljesség cél: Windows → Linux → Android → iOS — ebben a sorrendben.
📦 Multi-Platform Launch — Hard Deadlines (Máj. 15-hez képest)
Store review időkeretek — NEM garantált teljesítési idők, hanem piaci átlagok. iOS fejlesztés 26 nap alatt a nulláról nem lehetséges — iOS post-launch milestone (Fázis 2).
| Platform | Terjesztési forma | Review idő | Hard Submission Deadline | Fallback ha csúszik |
|---|---|---|---|---|
| Windows | Direkt .exe (Velopack) |
Nincs review | Máj. 14. (build nap) | N/A — direkt terjesztés |
| Linux AppImage | Direkt letöltés | Nincs review | Máj. 14. (build nap) | N/A — direkt terjesztés |
| Linux Flatpak | Flathub (önkéntesek) | 2–6 hét (indeterminate) | 🚨 Ápr. 21. (D-24) | AppImage direkt → Flathub post-launch |
| Android | Google Play Store | 3–14 munkanap | 🚨 Máj. 1–3. (D-14) | Direkt APK link a landing page-en |
| iOS | Apple App Store | Fejlesztés nem kész | ❌ Fázis 2 — 2026. szept.+ | „Coming to iOS" waitlist landing page-en |
🚀 HU-LAUNCH — Magyar Piacindítás (v1.6.x) · 2026-05-15
⚠️ Launch dátum módosítva: 2026-05-01 → 2026-05-15 (+14 nap) Ok: Román adószám (CIF) + EU OSS (One Stop Shop) adószám adminisztrációs csúszás. Az adószámok nem érkeznek meg időben — értékesítés jogi megfelelőség nélkül nem indítható. Béta fázis (2026-05-01 – 2026-05-14): Barátok és béta tesztelők hozzáférhetnek az apphoz. Fizetős értékesítés kizárólag 2026-05-15-én indul (D+0). Pozitív hatás: Az extra 14 nap minden P0 feladathoz bőséges időkeretet biztosít.
Előfeltétel: Ez a blokk a magyarországi launch hard prerequisite-jei. Addig nincs B2B értékesítés.
🛠️ BYOK Post-Processing Pipeline ✅ KÉSZ (2026-04-19)
Egykulcsos BYOK architektúra: Az STT provider automatikusan meghatározza a post-processing LLM-et, a felhasználónak egyetlen API kulcs kell — nincs külön LLM konfiguráció.
-
_orchestrator.py:_get_postprocessing_provider()egységes routing helper — STT provider → LLM -
_correct_openai()— OpenAI BYOK user: gpt-4o-mini (ugyanaz a kulcs mint az STT-hez) -
_correct_gemini()— Gemini BYOK user: Gemini 1.5 Flash (REST generateContent) -
_correct_azure_openai()— Azure BYOK user: Azure OpenAI gpt-4o-mini deployment - Groq BYOK user: Llama 3.1 8B Instant (már korábban kész)
- 16 kombinációs smoke test: Groq/OpenAI/Gemini/Azure × szótár aktív/inaktív × literal mód = ZÖLD
📡 GAP-C3 Post-injection Confidence Toast ✅ KÉSZ (2026-04-19)
-
groq_engine.py:verbose_json+timestamp_granularities=["segment"]—avg_logprobkibontás -
CONFIDENCE_THRESHOLD = -0.5— szegmens-szintű küszöb (word-level NEM elérhető Groq-on) -
workers.py:low_confidence = Signal(float)aStreamingWorker-ben -
controller.py:_on_low_confidence_transcription()Slot — signal bekötve, nem blokkoló toast - Toast: "VibeVox — Low Confidence / check audio quality" (3 mp, auto-dismiss)
🔍 GAP-C6: Groq Whisper API Capability Research ✅ KÉSZ (2026-04-19)
| Kérdés | Eredmény |
|---|---|
prompt limit |
224 token (Whisper softcap, OpenAI hardkód) — már betartva |
| Word-level confidence | ❌ NEM elérhető — csak avg_logprob szegmens szinten |
| WebSocket streaming | ❌ NEM elérhető — batch-only REST (transcriptions endpoint) |
| Rate limit | 2 000 req/nap · 7 200 audio-s/h (Free tier) |
📚 09_Tech_Architecture.md — BYOK API Capability Matrix ✅ KÉSZ (2026-04-19)
- STT képességek táblázata: Groq/OpenAI/Gemini/Azure — prompt limit, streaming, confidence, rate limit, cost, EU residency
- LLM post-processing 6 modell összehasonlítása 1-10 minőségi skálán (Llama 3.1 8B · gpt-4o-mini · Gemini 1.5 Flash · Azure gpt-4o-mini + referencia: gpt-4o full · Gemini 2.5 Pro)
- ADR: miért nem gpt-4o / Gemini 2.5 Pro — 15–17× drágább, +200ms latencia, vocab-correction nem igényel reasoning-t; gpt-4o értékaránya 7/10 vs. gpt-4o-mini 8.5/10
🌐 Priority 0: Domain regisztráció
Kontextus: A
vibevox.appdomain megvéve (2026-04-16) — ez az elsődleges domain a launch előtt. A többi domain traction-gated — csak akkor kerülnek megvételre, ha a projekt elindult és mutat növekedési jeleket. 💡 Ha van traction → CCTLD-k defenzív regisztrációja → mind 301 redirect a.app-ra.
-
vibevox.appregisztrálva ✅ (2026-04-16) — elsődleges domain, launch-ready — ❌ Foglalt (spekuláns) — nem elérhetővibevox.com— ❌ Foglalt (spekuláns) — nem elérhetővibevox.eu— ❌ Foglalt (spekuláns) — nem elérhetővibevox.ai
⚠️ A
.com,.eués.aiverziók spekulánsok kezén vannak — megvásárlásuk csak akkor lenne logikus, ha a brand már erős forgalmat generál és alkupozícióból tárgyalható az ár. Egyelőre nem prioritás.
🔒 Post-launch CCTLD-k (traction után — ne vegyük meg előre!)
Feltétel: Első fizetős felhasználók VAGY 100+ regisztrált béta után érdemes megvenni. Cél: Defenzív brand védelem az országos piacokon — mind 301 redirect a
vibevox.app-ra.
-
vibevox.hu— HU B2B trust + brand védelem → ~€6–10/év -
vibevox.pl— PL piac brand védelem → ~€4–8/év -
vibevox.sk— SK piac brand védelem → ~€4–8/év -
vibevox.cz— CZ piac brand védelem → ~€4–8/év - 301 redirect beállítása minden CCTLD-ről a
vibevox.app-ra (DNS szinten) - Search Console:
vibevox.apphozzáadása + HU geotargeting hreflang-gel
💡 Ajánlott regisztrátor (CCTLD-khez): domain.hu (HU), wedos.cz (CZ), active24.sk (SK) 💰 Becsült traction utáni éves költség: ~€18–36 (HU + PL + CZ + SK — a .eu kiesett)
📧 Email Infrastruktúra — Loops.so (Launch prerequisite) ✅ KÉSZ (2026-04-16)
Kontextus: A Loops.so az elsődleges ESP (Email Service Provider) a VibeVox számára. Kezeli az onboarding drip szekvenciát, a Stripe lifecycle eseményeket és a win-back flow-t. A GDPR-konform consent az app regisztrációs folyamatában (Google OAuth + ToS) van biztosítva.
DNS Hitelesítés ✅
- vibevox.app → Google Workspace alias domain hozzáadva (EuropaTrade Studio fiókon)
-
joe@vibevox.appGmail aktiválva — küldés + fogadás működik - Google DKIM / SPF / MX rekordok propagálva Cloudflare-en ✅
- DMARC
p=quarantinebeállítva (_dmarc.vibevox.app) — spoofing védelem ✅ - Loops.so DNS rekordok (
DKIM1+DKIM2+ Loops SPF + Loops MX) — Loops dashboard: minden rekord ✅ zöld
Stripe × Loops.so Integráció ✅
- Stripe Live account csatlakoztatva Loops-hoz
- Webhook events konfigurálva:
customer.created,customer.subscription.created,customer.subscription.deleted,customer.updated,invoice.paid,invoice.payment_failed - Kontakt szinkronizáció:
Full Nameimportálás engedélyezve, minden Stripe event → Stripe Customers csoport
Backend API Integráció ✅
-
app/loops_client.py— Loops.so API wrapper modul létrehozvasync_contact()— POST/contacts/create(+ PUT/contacts/updateupsert fallback)send_event()— POST/events/sendcustom event tracking- Fire-and-forget background thread — UI nem blokkolódik
-
app/auth.py— Google OIDC token-bőlgiven_name/family_namekinyerése -
app/drip_campaign.py—record_first_session()triggereli a Loops contact sync-et -
LOOPS_API_KEYhozzáadvaenv.py+.env+.env.example(Triple Update Rule ✅) - Loops.so Sending settings: Email tracking ✅ BE, Double opt-in ❌ KI, LLM translation ✅ BE
Definiált Custom Events (Loops dashboardon még beállítandó)
| Event neve | Trigger | Email automáció |
|---|---|---|
first_dictation |
Első sikeres diktálás | Day 0 welcome sequence |
quota_exceeded |
Ingyenes kvóta elérve | Upgrade nudge |
subscription_upgraded |
Fizetős plan elkezdve | Paid welcome |
subscription_cancelled |
Lemondás (Stripe webhook) | Win-back D1/D14/D45 |
nps_trigger |
Day 14 + ≥5 session | NPS survey |
🏢 B2B Compliance Csomag — MVCS (Minimum Viable Compliance Set)
Ezek a feladatok a B2B ügyfelek fogadásának hard prerequisite-jei. Amíg nincs DPA, B2B szerződés nem köthető. Teljes compliance elemzés:
docs/Business Plan/05_GDPR.md
Priority N: B2B Compliance Csomag ✅ KÉSZ (2026-04-08)
- DPA template elkészítése — két változat:
docs/Compliance/01_DPA_ManagedCloud.md+docs/Compliance/02_DPA_BYOK.md - EU adatrezidencia dokumentáció — pontosítva: Supabase Zürich ✅ EU, Groq ⚠️ SCC, Azure BYOK ✅ 100% EU
- Zero retention policy dokumentum —
docs/Compliance/03_Zero_Retention_Policy.md - Sub-processor lista publikálása —
docs/Compliance/04_Sub_Processor_List.mdkockázati besorolással - ROPA (Article 30) belső dokumentum —
docs/Compliance/05_ROPA.md - Cookie Policy —
docs/Compliance/06_Cookie_Policy.mdePrivacy Directive alapján - EU Képviselő (Art. 27) kijelölése — DataRep/VeraSafe, ~€200/év (emberi feladat — online form)
- Privacy Policy frissítés v2.0 —
docs/privacy-policy.html— EU Képviselő placeholder, sub-processorok, BYOK vs Managed Cloud
🌐 Magyar Landing Page + Onboarding (HU-first)
Honlap mappa:
website/— technikai spec + teljes copy egy helyenwebsite/SPEC.md·website/CONTENT.mdDeep Research folyamatban (2026-04-17) — szekció-architektúra, social proof, pricing page, post-download flow, iOS waitlist
- Magyar nyelvű landing page — geo-IP detektálás (HU → HUF árazás, magyar szöveg) — geo-IP routing
_detect_country()+upgrade_url()kész asubscription.py-ban - HUF árazás konfigurálva a kódban —
constants.py(HUF_PRICING+STRIPE_LINKSHUF változatok) — Stripe Dashboard-on a HUF linkek kézi aktiválás szükséges - Barion / SimplePay integráció (Fázis 1 a hu piacra — Stripe kártyás fallback)
- Hungary-specifikus landing szekció: Newton Dictate TCO összehasonlítás (4× olcsóbb)
- Magyar orvosi + jogi szektornak szóló B2B oldal (háromszintű: Champion / IT-DPO / Döntéshozó)
- Flathub benyújtás (D-14 nappal a magyar launch előtt)
- Latency Tester elhelyezése a honlapon — a
tools/stopwatch.htmlkerüljön fel a vibevox.app-ra (pl.vibevox.app/benchmarkvagy/comparealoldalon); közvetlen linkkel megosztható bármilyen tesztelővel → lásd: 🧪 Latency Benchmark Portal szekció lentebb
📊 Pre-launch RAM Benchmark Validálás (D-14 előtt, kötelező)
Kontextus: A RAM-állítás (
<200MB) a landing page-en csak mért, friss adaton alapulhat. Az első mérés: 2026-04-18, ~152 MB private working set (idle + aktív diktálás — stabil). A launch előtt, amikor a roadmap-featurák nagy részei készen vannak, újra kell mérni — és egyszerre mérjük a versenytársakat is.
- VibeVox RAM újramérés (launch előtt ~D-14) —
tools/ram_profiler.pyfuttatása,tools/ram_report.txtfrissítése; ha változott a szám, landing page copy frissítése - Wispr Flow RAM mérés — letöltés + Task Manager Private Working Set idle + aktív diktálás közben; a 800MB-os hivatkozás forrása: független reviews + hivatalos min. rendszerkövetelmény (750MB) — validálandó saját méréssel
- Typeless letöltése és kipróbálása — RAM mérés + UX összehasonlítás + saját benyomások rögzítése; a jelenlegi
~400MBadat forrásnélküli, csak saját méréssel vehető be a versenytárs mátrixba
🇭🇺 Magyar Iparági Szótárcsomagok (B2B pilot prerequisite)
- Jogi szótár V1 (HU) — ~500 terminus: Kbt., Ptk., eljárási terminológia, latin kifejezések
- Orvosi szótár V1 (HU) — ~500 terminus: EESZT mezőnevek, ICD-10, gyógyszer-hatóanyagok, zárójelentés sablonok
- CSV importálás funkció (Newton szótár migráció támasza)
- vocabulary.db egyéni bejegyzések + szektoriális csomagok szétválasztása
📱 Hungarian Product Hunt + CEE Launch koordináció
Részletes taktika:
docs/Business Plan/14_Launch_Playbook.md
- Product Hunt profil + Hunter keresése (D-30)
- Vizuális anyagok: Hero GIF, 5 screenshot (filler word demo, BYOK wizard, Linux natív) (D-20)
- HUP.hu előzetes koordináció (launch napi cikk egyeztetés)
- Affiliate partnerek aktiválása — Minner.hu, TheVR Tech, magyar jogi/orvosi közösségek
- Beta waitlist: minimum 50 koordinált upvote-er azonosítása
- Launch nap: Product Hunt + HUP.hu + Magyar Jogász Facebook csoport + r/programmingHungary
🚀 v1.5.3 — User Experience & Conversion Sprint (Windows + Linux)
Cél: A Windows és Linux platformon teljes UX-minőség elérése — ez a HU launch alapja.
Priority E: Vizuális mikrofon állapotjelző (System Tray) ✅ KÉSZ (v1.5.5)
-
hotkey_backend.py+controller.py:make_lock_icon(locked=True)QPainter-rel renderelt szürke lakat az idle állapothoz - Tooltip:
"🔒 Idle — microphone off"/"🎙 Recording…"/"⏳ Processing…"
Priority F: BYOK Lejárati Kommunikáció (Soft Gate) ✅ KÉSZ (v1.5.7)
- Infrastruktúra:
_check_byok_expiry()metódus acontroller.py-ban — Day 23/28/30 progresszív toast értesítések - Érték-alapú üzenetek: megtakarított gépelési idő hangsúlyozása, nem scarcity
- Soft gate: a kulcsok soha nem kerülnek letiltásra — csak informálás
Priority G: Progressive Disclosure (Onboarding Optimalizáció) ✅ KÉSZ (v1.5.5)
-
app/ui/onboarding_wizard.py: csak Managed Cloud kártya az első képernyőn (BYOK eltávolítva a főoldalról) - BYOK opció rejtett szöveglink:
"🔧 I want to use my own API key"— megvan, de nem zavarb - Subtitle:
"Get started in 30 seconds — no setup required."(TTV optimalizáció, 30 mp cél)
Priority H: BYOK Developer Dashboard ✅ KÉSZ (v1.5.7)
-
developer_tab.py:📊 BYOK Dashboardszekció — latency, session cost, havi becslés, aktív engine -
🔍 Validate API Keysgomb →ByokFailsafeWizarddialog - Dashboard automatikusan rejtett Managed Cloud módban
Priority I: Kvóta UI — Generous Endowment Framing ✅ KÉSZ (v1.5.5)
- Pozitív számláló UI:
"~X,XXX szót diktáltál · ⌨️ ~Y.Z óra gépelést spóroltál"(130 wpm × percek) - Progress bar: 🟢 zöld → 🟠 narancssárga (80%+) → 🔴 piros (100%)
- 100%-os Soft Gate: aktuális mondat befejezése → upgrade prompt (nem azonnali blokkolás)
Priority J: Contextual Privacy Priming (mikrofon permission előtti képernyő) ✅ KÉSZ (v1.5.6)
-
onboarding_wizard.py: önálló Privacy Priming oldal az OS permission dialógus előtt - Tartalom: hold-to-talk, Zürich EU szerver, lakat ikon magyarázat, GDPR kiemelés
- Lokalizáció: Qt Linguist tr()-kompatibilis szöveg
Priority K: Zero-Blank-Screen — Irányított Első Diktálás ✅ KÉSZ (v1.5.7)
-
guided_first_dictation.py: önálló widget az első diktálás vezérlésére -
controller.py:_maybe_show_first_dictation_guide()1.5s delay után indítja - „Aha-pillanat" jelzés:
on_first_dictation_done()hook a pipeline összekapcsolásával -
settings.py:first_dictation_complete: Falsealapértelmezett érték
Priority L: BYOK Failsafe Wizard (3 lépéses varázsló) ✅ KÉSZ (v1.5.7)
-
byok_failsafe_wizard.py: 3 lépéses dialóg — ping teszt, átírási teszt, eredmény - Visszaesés opció: egyetlen kattintással Managed Cloud módra vált
-
developer_tab.py_open_failsafe_wizard()metódus bekötve
Priority M: Contextual Permission Kérés ✅ KÉSZ (v1.5.7)
- Notification permission → első kvóta-figyelmeztetésnél (
_show_contextual_permission_hint("quota_warning")) - BYOK mode jelzés →
"first_byok"context hint - Minden hint egyszer jelenik meg (
_permission_hint_shown_{context}flag)
Priority M2: Session Summary Toast (kutatás: 2026-04-06, Churn Prevention Report) ✅ KÉSZ (v1.5.6)
- Minden >30mp diktálás után OS toast:
"✅ ~X szó beillesztve (~Y perc gépelés megtakarítva)" - Számítás: szószám ÷ 130 (diktálási sebesség) + 40 wpm (gépelési alap)
- Toast alapból BE, Settings-ben kikapcsolható (
session_toast: Truedefault + checkbox) - Implementáció:
controller.py_on_pipeline_finished—toast_notify()meglévő infrastruktúrán
Priority M3: NPS Zárt Hurkú Protokoll (kutatás: 2026-04-06, Churn Prevention Report) ✅ KÉSZ (v1.5.7)
-
nps_dialog.py: in-app 0-10 NPS dialóg, freetext mezővel - Trigger: Day 14 + ≥5 session (engaged user signal)
- Auto-routing: 9-10 → G2 review, 7-8 → Canny feature request, 0-6 → support email
-
controller.py:_maybe_show_nps()10s delay után -
settings.py_nps_doneflag → egyszeri megjelenés
Priority M4: Branching Email Drip Infrastruktúra (kutatás: 2026-04-06, Churn Prevention Report) ✅ KÉSZ (v1.5.7)
-
drip_campaign.py: milestone tracking + proxy API event tüzelés - 6 trigger esemény: welcome, power_tips, languages, weekly_checkin, nps_trigger, byok_vs_managed
-
controller.py: startup drip check + pipeline session recorder - Csak event neve + email megy a proxy felé (GDPR-clean, nincs PII/audio adat)
🚀 Fázis 1.5 — Style Personas + Output Language Sprint (D+30–D+45)
Cél: A Style tab latenás premiér funkcióinak kiadása — virális megoszthatóság, CEE piaci lekötés, és az egyedili Output Language feature aktiválása. Minden feature FREE tier.
Roadmap előfeltétel (Output Language managed cloud esetben):
A translation_provider_benchmark kutatási feladat (lentebb) el kell végezni
Fázis 1.5 előtt — hogy a fordítási logika Groq Llama 3 marad, DeepL API-ra
mél intégrálódik, vagy nyelv-specifikus routingot használunk.
🔬 Priority Research: Translation Provider Benchmark (D+15 — előfeltétel)
Kérdés: Managed Cloud esetén melyik modell/eszköz fordítson? Érdemes-e különböző nyelvpárokhoz különböző eszközt használni?
- CEE nyelvpár minőség-teszt — 10-10 minta mondat átvétele: HU→EN, PL→EN, CS→EN
- Eszközök: Groq Llama 3 8B / GPT-4o-mini / DeepL Pro API / Google Translate v3
- Mérőszám: szubjektív minőség + BLEU score automatikusan
- Különösen vizsgálandó: agglutánáló morfológia (HU) és orvosi terminológia pontossága
- Latencia benchmark — mérjük a válaszi időt: dedicated API vs. LLM egy hívásban
- Ár-kalkulció — DeepL Pro API (árak: $5.49/1M karakter) vs. Groq Llama 3 token-költség managed cloud fordítási volumenre
- Architekturális döntés rögzítése
09_Tech_Architecture.md §2.3c-ben:- Opció A: Egységes LLM (Groq) — egyszerűbb pipeline, elfogadható minőség
- Opció B: Nyelv-specifikus routing (pl. HU→EN: DeepL, DE→EN: LLM)
- Opció C: DeepL minden fordításhoz managed cloud esetén
Priority Personas: Style Personas Implementáció
-
app/llm_post_processor.py—BUILT_IN_PERSONASdict kiterjesztve (6 CEE persona hozzáadva) - Groq Llama 3 8B Instant prompt tesztelés mind a 17 persona-n
- CEE persona few-shot példák beépítése (Typowy Janusz, Moravian) — hallucinációs tesztelés
- CoT kiegészítés a Yoda personahoz (OSV struktúra megbízható implementációja)
- Brand safety regex blocklist — Custom Persona UI szűrés aktiválása (proxy-oldalon)
-
app/ui/tabs/style_tab.py— Persona választó UI (scrollable lista, kategoriák)
Priority OutputLang: Output Language Implementáció
Előfeltétel:
translation_provider_benchmarkkutatás lezárva — architekturális döntés rögzítve.
-
app/ui/tabs/style_tab.py—🌍 Kimenet nyelveszekció hozzáadása (coming soon placeholder UI kész) -
app/llm_post_processor.py—output_languageparaméter hozzáadásaget_llm_system_prompt()-hoz - LLM trigger logika kibővítése:
output_lang ≠ input_langis érvényes LLM trigger - Managed Cloud fordítási backend implementáció (a benchmark eredménye alapján)
- Ha Opció B/C:
translation_router.py— nyelv-specifikus routing logika - Ha Opció A: nincs extra fájl, csak prompt kiegészítés
- Ha Opció B/C:
- BYOK pipeline — translate instrukció hozzáadása a meglévő LLM prompthoz (trivisális)
- Literal Mode disablement:
output_languageselector dim + tiltott ha Literal Mode = ON - Formality Conversion auto-KI logika, ha Output Language ≠ eredeti
-
settings.db—output_languagemező hozzáadása (persistált beállítás)
Priority ShareModal: Dual-Pane Share Modal Implementáció
Kiterjesztés: A Share Modal mind a Persona output-hoz, mind az Output Language fordításhoz automatikusan aktiválódik.
-
app/ui/share_modal.py— PySide6 QDialog: dual-pane (eredeti + transformált szöveg) - Beilleszti + bezár gomb (Standard mód viselkedés, inject az aktív ablakba)
- Platform share gombok: X (pre-filled tweet
@vibevox #VibeVox) + LinkedIn - ESC → bezár, Ctrl+Enter → beilleszti + bezár (keyboard-only UX)
- Trigger: Standard persona + input_lang == output_lang → NINCS modal (közvetlen inject)
🔮 Fázis 2 — Feature Depth (Windows + Linux teljes platform-lefedés)
Cél: Windows és Linux platformokon minden összetettebb funkció elérhetővé tétele. Ez a fázis fut párhuzamosan a CEE terjeszkedéssel (PL + CZ + SK piacok megnyitása).
Priority M5: Kumulatív Milestone Rendszer (kutatás: 2026-04-06, Churn Prevention Report) ✅ KÉSZ (2026-04-08)
- Statistics tab: lifetime szószám tracker (összesített, nem havi)
- Milestone badge-ek: 🏅 „Első 1 000 szó", 🏅 „Regényhossz" (50K), 🏅 „Fejlesztő Maratonja" (100K) —
app/ui/tabs/_milestones.py - NEM daily streak — kutatás: occasional-use tool-nál kontraproduktív (hétvégén büntet)
- Badge vizualizáció a Statistics tabban (earned/locked ikonok) —
stats_tab.pyscrollable badge strip
Priority AI: AI post-processing (Tone Control, Template alkalmazás)
- Tone control (casual → formal) — opt-in, nem default
- Jogi emlékeztető sablon, orvosi lelet sablon (B2B vertikálokhoz)
- App-kontextus adaptív formázás: Slack = casual, email = formal, IDE = kód
Priority Vocab: Custom Vocabulary UI ✅ RÉSZBEN KÉSZ (2026-04-08)
Felhasználói szótár szerkesztő UI (Words tab finomítás)
Newton
.dic/.xmlszótár-import eszköz — CZ/SK B2B critical path —vocab_tab.pyCSV importBulk import: szöveg (vesszővel + soronként elválasztott) + Newton Dictionary CSV —
vocab_tab.pyVocabulary Post-Processing Correction (Szint 2b) — nagy szótárak kezelése
Miért nem elég a Whisper prompt? A Whisper modell belső architektúrájában a
promptparaméter hard cap: 224 token (~15–20 szó). Ez egy OpenAI hardkód, konfigurálással nem változtatható. Ha több szót küldesz, a modell belül csonkítja — és a csonkított lista a legtöbb hallucinációt okozza (a modell "be akarja fejezni" a listát). 500 szavas jogi/orvosi szótár soha nem fér bele.A helyes architektúra (kétlépéses pipeline):
1. Whisper/Groq (PRIMARY — Deepgram CEE teszten kizárva 2026-04-11) → nyers átírás (csak a 224 tokenes prompt-hint, pl. language + 10-15 legfontosabb domain szó) 2. GPT-4o post-processing → korrigált szöveg (teljes egyéni szótár átadva system prompt-ban, corrections-only módban) Instrukció: "Javítsd ki a félreismert domain-specifikus szavakat ismerve a következő szótárat. NE változtasd a szöveg értelmét."A Gemini engine (
gemini_engine.py) már közel van ehhez — ott a vocab egy"DO NOT arbitrarily insert"instrukción belül megy. Ez az architektúra kiterjesztés a Whisper + Groq outputjaira (Deepgram: KIZÁRVA CEE-re, lásd 09_Tech_Architecture.md).-
_lang_helpers.py—build_vocab_correction_prompt(vocab: str) -> strfüggvény (teljes vocab → GPT-4o system prompt template) -
_orchestrator.py— Vocab-korrekciós 2. lépés hozzáadása a pipeline végére (csak hacustom_vocabularynem üres) - Smart prompt selection: a 224 karakteres Whisper prompt-ba a szótár ELSŐ N szava kerüljön (felhasználó rendezi prioritás szerint)
- Szótár prioritás UI — drag-and-drop sorrend a Words tab-ban (ami felülre kerül, az megy a Whisper promptba)
-
Priority B2B: Admin Dashboard + Audit Log ✅ RÉSZBEN KÉSZ (2026-04-08)
- Audit log backend —
vtj_proxy.py:audit_logtábla (append-only, GDPR Art. 30) +/admin/audit-logGET endpoint (org-szintű szűrés) +/admin/audit-log/export-csvPOST (DPA kérelmekhez) - Hozzáférés-szabályozás: PROXY_SECRET (szuper-admin, minden org) + Google OAuth (saját org-domain only)
- B2B admin dashboard frontend — centralizált user mgmt, megosztott API kulcs, számlázás (következő sprint)
- CZ/SK/PL iparági szótárcsomagok hozzáadása (az HU V1 alapján)
Priority AZ: Azure OpenAI EU BYOK (Fázis 2) ✅ KÉSZ (2026-04-08)
-
azure_engine.py— Azure OpenAI Whisper STT engine (eltérő URL formátum + deployment name) -
_orchestrator.py—azure_whisperengine hozzáadva (priority table +_try_enginedispatch) -
developer_tab.py— Azure BYOK kártya (endpoint + API key + deployment + version mezők + "Test Connection" gomb) - B2B onboarding support workflow — 30 perces videó hívás sablon és checklist (következő sprint)
Priority B2B-LP: B2B Landing Page — 3 szintű megszólítás
- Champion szint: features, demo videó, „kipróbálom ingyen" CTA
- IT/DPO szint: DPA letöltés, compliance csomag, EU adatrezidencia szekció
- Döntéshozó szint: Newton TCO összehasonlítás, ROI kalkulátor
- Newton váltóknak: foot pedal Amazon-link szekció
🧪 Latency Benchmark Portal — Crowd-sourced eredményrögzítés
Kontextus: A
tools/stopwatch.htmlma egyetlen önálló HTML fájl, eredményeit csak a tesztelő saját böngészőjében (localStorage) tárolja. Cél: Amikor a honlap elkészül, a teszter felkerül a szerverre — és minden mérés automatikusan a Supabasebenchmark_resultstáblájába kerül. Ez lehetővé teszi, hogy tucatnyi tesztelő különböző nyelveken, különböző szövegekkel tesztelje a VibeVoxot — az eredmények egy helyen láthatók, nem kell szenvedni az adatgyűjtéssel.
Architektúra
[vibevox.app/benchmark] [vtj-proxy / Supabase]
stopwatch.html (hosted) → POST /benchmark-result
+ minden mérés végén → Supabase: benchmark_results tábla
fetch() hívás (anon, RLS nélkül — nyilvános adat)
Supabase tábla: benchmark_results
| Mező | Típus | Leírás |
|---|---|---|
id |
uuid | auto |
created_at |
timestamptz | mérés időpontja |
tester_alias |
text | opcionális tesztelő nev (nickname, nem email) |
language |
text | pl. hu, pl, sk, en — tesztelő által megadott |
script_label |
text | saas, medical, devops, custom |
app1_name |
text | pl. "VibeVox" |
app1_latency_s |
float4 | másodpercben |
app1_accuracy_pct |
float4 | WER-alapú pontosság |
app2_name |
text | pl. "Wispr Flow" |
app2_latency_s |
float4 | |
app2_accuracy_pct |
float4 | |
winner |
text | melyik app nyert |
delta_s |
float4 | különbség másodpercben |
user_agent |
text | böngésző/OS azonosítás (automatikus) |
Implementációs feladatok
-
benchmark_resultstábla hozzáadásasupabase_schema.sql-hez (RLS: INSERT anyone, SELECT admin only) -
vtj_proxy.py—POST /benchmark-resultendpoint: validálás + Supabase upsert -
tools/stopwatch.html—saveResult()kiegészítése:fetch('/benchmark-result', ...)hívás a localStorage mentés mellé - Language selector hozzáadása a stopwatch UI-hoz (tesztelő megadja a saját nyelvét)
- Tester alias mező (opcionális, pl. „Pann", „Verra") — email NEM szükséges
- Admin nézet: Supabase Studio-ban szűrhető táblázat (export CSV gomb már elég)
- (Opcionális, Fázis 2) Publikus leaderboard oldal a honlapon — valós idejű eredménytábla
Priority 2b: Chrome Extension — Native Messaging Companion (Fázis 2b) ✅ KÉSZ (2026-04-08)
架构:
[Chrome Extension Popup] ⇔ [Native Messaging Host] ⇔ [VTJ Desktop Daemon]MV3 standalone web-only extension: TILOS (MV3 latencia, cold start, 5 perces SW timeout)
- Desktop app — Native Messaging Host manifest regisztrálás (Windows registry / Linux config) —
app/native_host_install.py - Chrome Extension: MV3 manifest + popup UI + content script (szöveg injection + Ctrl+Shift+V shortcut) —
chrome_extension/ - Settings tab — "Chrome Extension companion" checkbox (NMH install/uninstall toggle)
- CWS listing (5 nyelv: EN, HU, PL, CZ, SK) + promóciós launch (emberi feladat)
Priority Linux-F2: Linux platform lock-in ✅ KÉSZ (2026-04-08)
-
app/platform_linux.py— Wayland/X11 smart injection: wtype → ydotool → xdotool → clipboard -
controller.py— Linux injection integrálva (platform_linux.inject_text_async) -
controller.py— macOS injection branch (platform_mac.inject_text_async) -
settings_tab.py— 3-way autostart: Windows registry / macOS LaunchAgent / Linux XDG -
requirements-linux.txt— Wayland tool docs, openai/groq/supabase hozzáadva -
install_linux.sh— multi-distro (apt/dnf/pacman), Wayland detection, systemd service - Tiling WM kompatibilitás tesztelés: i3, Sway, Hyprland (waybar widget) — Linux gépet igényel
- Rewardful affiliate tracking aktiválása (20+ affiliate felett)
Priority macOS: macOS Port Foundation ✅ KÉSZ (2026-04-08)
-
app/platform_mac.py— text injection: Quartz CGEvent → osascript → pbcopy+Cmd+V -
app/platform_mac.py— LaunchAgent autostart (install/uninstall/is_installed) -
vtj_launch_mac.sh— macOS launcher script (Homebrew venv aware) -
requirements-mac.txt— pyobjc-framework-Quartz + platform-specific deps -
install_mac.sh— Homebrew installer, Accessibility permission guidance - macOS system tray:
rumpsalapú menubar app — macOS gépet igényel a teszteléshez - macOS App bundle (
.app) + PyInstaller spec — macOS gépet igényel - Notarization (Apple ID szükséges) — emberi feladat
Priority iOS: iOS App Foundation ✅ KÉSZ (2026-04-08)
-
ios/VoiceTypingByJoe/Views/RecordingView.swift— teljes diktálási UI: pulsating mic, timer, transcript card -
ios/VoiceTypingByJoe/Views/MainTabView.swift— Diktálás tab hozzáadva (5 tab) -
ios/Shared/SettingsManager.swift—appendHistory()alias hozzáadva -
ios/VoiceTypingKeyboard/KeyboardViewController.swift—appendHistory()API egységesítve -
ios/Shared/STTPipeline.swift— 3-engine fallback: OpenAI → Groq → Gemini (meglévő) - Xcode project file létrehozása — Xcode szükséges (macOS gép)
- AVAudioSession + Keyboard Extension Full Access — fizikai iOS eszköz
- App Store Connect listing — emberi feladat
🔮 Fázis 3 — Android Teljes Funkcionalitás
Cél: Android platformon is teljes funkcionalitás elérése — szinte minden, ami Windowson és Linuxon van. Ezzel a fázissal a három fő platform (Windows + Linux + Android) fejlesztése lezárul, és megnyílik az út az iOS felé.
Az Android fejlesztés szándékosan itt, a Windows/Linux funkciók után következik. CEE-ben az Android részaránya 75–85% — az Android platform kritikus, de a desktop platformok UX és feature-paritása az elsődleges, mert ott indul a HU launch.
Android Custom IME — Transparent Hold-to-Talk
-
InputMethodService(Custom IME) implementálása — NEM AccessibilityService (Android 16+ blokkolja) - Transparent IME UI: minimális, brandelt „Hold-to-Talk" panel
- InputConnection.commitText() → natív szöveg beillesztés jog
- Hold-to-talk gomb a VTJ IME felületén (animált waveform)
- Visszaváltás billentyűzetre: standard Android input switcher
Android Onboarding deep-link (súrlódáscsökkentés)
- IME engedélyezési deep-link:
android.settings.INPUT_METHOD_SETTINGS - Animált vizuális útmutató (képernyőfotókkal) az onboarding wizardban
- „Visszatértem!" callback: IME aktiválás után automatikus teszt diktálás
Android Contextual Privacy Priming
- Saját brandelt képernyő az OS permission dialógus ELŐTT (Android)
- Mikrofon permission → első diktálás gombnyomáskor (NE app-indításkor)
- Accessibility (floating bubble) → bubble aktiválásakor
Android B2B- és Kvóta-funkcionalitás
- Session Summary Toast Android-on (OS notification)
- Kvóta UI — Generous Endowment framing (pozitív számláló, nem countdown)
- BYOK beállítás Android-on (API kulcs tárolás Android Keystore-ban)
- BYOK Wizard Android-on (3 lépéses UI, kötelező Test Connection)
Android FCM + WorkManager szinkronizáció
- FCM push-to-wake + WorkManager szinkronizáció (NEM persistent WebSocket — FGS 6h quota limit)
- Exponential backoff minden reconnection kísérletben (min 5mp → max 5 perc + jitter)
- Supabase Realtime connection limit monitoring
Android Wireless Mic mód (multi-device workflow)
- Android = hangfelvevő mikrofon, PC = paste cél
- Protokoll: FCM + WebSocket (session alatt) — LAN-agnosztikus, WAN-on is működik
- Android rögzít → Groq EU → szöveg → Supabase → desktop WS
Android Kumulatív Milestone + NPS
- Statistics tab: lifetime szószám tracker (Android)
- Milestone badge-ek Android-on (1K / 50K / 100K szó)
- NPS Zárt Hurkú Protokoll kiterjesztése Android-ra (Day 14 email flow)
Android CEE Lokalizáció
- Magyar UI teljes lefedés Android-on
- Filler word removal Android-on (HU/SK/PL/CS) —
post_process.pyportolás - Punk pontuation fix Android-on
Google Play Store Launch
- Play Store listing (5 nyelv: EN, HU, PL, CZ, SK)
- Play Store screenshots (sötét téma, hold-to-talk demo, filler removal)
- Privacy Policy frissítés — Android-specifikus adatfolyam dokumentálás
- APK → AAB (Google Play Bundle) átállás az
/android-aabworkflow-val
🔮 Fázis 4 — CEE Terjeszkedés + Platform Lock-in (Windows + Linux + Android)
Cél: A három fő platform (Windows/Linux/Android) teljes funkcionalitásának lezárása és a CEE terjeszkedés (PL + CZ + SK) operacionalizálása.
CEE Piacnyitás (PL + CZ + SK — gyors egymásutánban HU után)
- Lengyel landing page: BLIK natív fizetés (Stripe Model A recurring validáció kötelező!)
- Cseh landing page: GoPay integráció (CZ launch blocker — 14,6M debit kártya vs. 1,2M credit)
- Szlovák landing page: TatraPay integráció (EUR zóna, DirectPay)
- PL/CZ/SK lokalizált árazás aktiválása (PLN, CZK, EUR Stripe-on)
- PL/CZ/SK affiliate outreach: Niebezpiecznik.pl, Root.cz, LinuxOS.sk, Wykop.pl
Windows + Linux platform lock-in (mély OS-integráció)
- Wayland natív teljes befejezés: XDG Portal mikrofon + wtype/wl-clipboard + layer-shell
- Clip-to-dictate (clipboard tartalom hangba)
- Philips SpeechMike HID támogatás — Record/Stop/Play gombok → VTJ hotkey (Newton switching barrier)
- SystemD user service (Linux autostart véglegesítés)
- AUR PKGBUILD elkészítése (Arch/Manjaro power userek)
B2B Fázis 2 — Közszféra pilot program
Horizont: 6–12 hónap | Sales ciklus: 3–12 hónap — NEM Fázis 1 prioritás
FÁZIS 4 — Közszféra pilot program:
Célcsoport: Egyetemek, kutatóintézetek, önkormányzatok
Belépési pont: Egyetemi IT tanszékek (legkisebb bürokrácia)
Termék: BYOK + Azure EU = 100% EU Data Residency
Compliance: DPIA (Art. 35) + NIS2 szállítói nyilatkozat + Art. 27 EU képviselő
Ármodell: Volume discount (50+ szék: €10/szék/hó, éves szerződés)
MSP Reseller Program (Fázis 4)
- MSP viszonteladói keretszerződés (IT cégeknek, 30–40% jutalék nagy volumenű dealnél)
- VDI/Citrix kompatibilitás dokumentálás + tesztelés (Praetor, mMedica, Kleos, netDoktor)
- B2B onboarding support SLA dokumentálása (24h response, 30 perces setup call)
vtj-filler-removal Open Source repo megnyitása
- GitHub repo:
github.com/voicetypingbyjoe/vtj-filler-removal - MIT License a
filler_words/*.json+post_process.pyfájlokra - CEE community contributions inicializálása (PL/CZ/SK native speakers)
🏛️ Szakmai kamarák — hitelességépítő csatornák (Fázis 4 | P3)
Forrás: CEE Market Entry Analysis — GAP-6 (2026-04-18) | Beépítve A kamarai megjelenés cold outreach helyett warm, ismert brand engagement-et teremt.
- ČLK (Česká lékařská komora) belső lapba cikk küldése — téma: NIS2 + hangalapú diktálás az EHR-ban | Fázis 4 | ~4 óra írás
- ETOSZ (Hungary) webinar szponzorálás — egészségügyi tech szekció | Fázis 4 | ~€200–500
- OIRP Warszawa CLE webinar — GDPR + AI diktálás jogi szektornak | Fázis 4 | ~€200–500
- NRA/OIRP (Polska) hírlevél hirdetés — jogi szféra | Fázis 4 | P3
📰 Szaklap content marketing (Fázis 4 | P4)
Forrás: CEE Market Entry Analysis — GAP-7 (2026-04-18) | Beépítve
- Attorney@Code (CZ) — szponzorált cikk: LegalTech + NIS2 megfelelőség + AI diktálás | Fázis 4 | P4
- Cseh és lengyel egészségügyi IT szaklapok — EHR burnout + True Zero Access téma | Fázis 4 | P4
🔮 Fázis 5 — iOS + macOS (Teljes Platform Lefedés)
Előfeltétel: Windows, Linux és Android platformokon szinte minden funkció elérhető. Csak ezután kezdjük az iOS fejlesztést.
Az iOS fejlesztés azután következik, hogy a három fő platform (Windows, Linux, Android) teljes funkcionalitással bír. Az iOS-t azért halasztjuk el, mert:
- App Store Keyboard Extension erős korlátok (háttér futás, mikrofon hozzáférés)
- Apple Developer Program ($99/év) és review folyamat overhead
- CEE-ban Android dominál (75–85%) — az iOS felhasználók kiszolgálása kisebb prioritású
- A macOS PySide6 port valószínűleg gyorsabb és egyszerűbb, mint az iOS
iOS — Keyboard Extension
- iOS Keyboard Extension (App Store) — InputMethodExtension architektúra
- App Store listing (5 nyelv: EN, HU, PL, CZ, SK)
- TestFlight béta tesztelés (CEE beta userek)
- Apple Silicon Offline Whisper vizsgálata (Neural Engine — feltételesen újravizsgálható)
macOS — PySide6 natív
- macOS build: PySide6, Ventura+ target
- macOS System Tray + global hotkey (pynput macOS backend)
- Mac App Store vs. Gatekeeper direct download döntés
- Apple Silicon Offline Whisper large-v3 feltételes implementáció (ha valós idejű)
🔮 Fázis 6 — MCP Server / Agent integráció (Hosszú táv)
Inspiráció: Spokenly — az egyetlen diktáló app, amely MCP (Model Context Protocol) szervert implementált.
VTJ MCP Server — potenciális képességek:
vtj_mcp_server (Fázis 6 koncepció):
• dictate_to_active_window(text) → VTJ szöveget illeszt be
• get_transcription_history(n=10) → Utolsó n transzkripció lekérése
• set_language(primary, secondary) → Futás közbeni nyelvváltás
• trigger_recording(seconds=30) → Hangfelvétel indítása kódból
- Spokenly MCP implementáció (anthropic-ai/mcp) tanulmányozása
- FastMCP prototípus készítése (Python MCP sdk)
- Developer-only, opt-in feature — alapértelmezetten ki, loopback interfészen
📋 Backlog (Future Sprints)
| Feature | Notes |
|---|---|
| Custom wake word | Replace Ctrl+Win hotkey with "Hey Joe" wake word |
✅ KÉSZ — push_usage() in sync.py, VPS usage.db deprecated |
|
✅ KÉSZ — flatpak/com.joeets.VoiceTypingByJoe.yaml + build_flatpak.sh |
|
✅ KÉSZ — build_deb.sh + build_rpm.sh |
|
| Philips SpeechMike HID támogatás | Record/Stop/Play gombok → VTJ hotkey — Newton switching barrier eltávolítása |
| Newton szótár-import eszköz | .dic/.xml → Custom Vocabulary import — nulla újrakezdés váltáskor |
| Word count statistics | Already in Stats tab — server-side persistence via Supabase |
| Android companion app | Real-time sync via Supabase Realtime |
❌ Elvetett Features — Döntés rögzítve (2026-04-05)
Offline Whisper — Windows és Android platformokon
Döntés: NEM implementáljuk Windows-on és Androidon. Részletes indoklás a
01_Strategy.md„Prioritás 7" szekciójában.
Összefoglaló (3 mondatban): Az offline Whisper nagy modellek (large-v3) nélkül CEE nyelveken (HU/SK/PL/CS) használhatatlan minőséget produkál. A large-v3 viszont 8 GB RAM-os Windows laptopon memory swapot, OS-fagyást és "Jet Engine" hűtési effektust okoz — valós idejű diktálásra alkalmatlan. Az orvosi/jogi GDPR-probléma — az egyetlen valódi érvük az offline mellett — teljesen megoldható BYOK + EU Frankfurt szerveres konfigurációval, jobb minőséggel.
Platform összehasonlítás (hardware gyorsítás nélkül a large-v3 futtatása reális?):
| Platform | NPU/gyorsítás | Offline large-v3 sebessége | Stratégiai döntés |
|---|---|---|---|
| Apple M1/M2/M3 | ✅ Dedikált Neural Engine | ~valós idejű | ✅ iOS/macOS Fázis 5-ben megvizsgáljuk |
| Windows x86 (tipikus) | ❌ Nincs | 2–5× lassabb mint cloud | ❌ NEM implementáljuk |
| Windows + NVIDIA GPU | 🟡 CUDA van, de niche | Gyorsabb, de a CEE célcsoport nem gaming laptop | ❌ NEM implementáljuk |
| Android Qualcomm | 🟡 Gyengébb NPU | Lassú, nem valós idejű | ❌ NEM implementáljuk |
iOS/macOS Fázis 5 megjegyzés: Apple Silicon esetén az offline Whisper large-v3 a Neural Engine miatt valós idejű lehet — ezt a Fázis 5 tervezésekor újra megvizsgáljuk. De ez sem automatikus döntés: a minőségpercepciós és lead generation kockázatok ott is élnek.
AppSumo Managed Cloud LTD
Döntés: ELVETVE — háromszoros pénzügyi csapda (API cost veszteség + 70/30 jutalék + kötelező mély kedvezmény). BYOK LTD (€79) fenntartható, Managed Cloud LTD nem. Részletek:
docs/Business Plan/04_Pricing.md
Snap Store
Döntés: SOHA — ~83% elutasítás Linux devek körében, közösségi bojkott, brand kockázat. Flatpak/Flathub az egyetlen Linux store csatorna.
Standalone Chrome Extension (MV3 Offscreen Document)
Döntés: TILOS — Service Worker 5 perces timeout, Offscreen Document latencia 200-700ms, system-wide audio capture lehetetlen. Egyetlen elfogadott architektúra: Native Messaging companion (Fázis 2b).