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.example hardened with GOOGLE_CLIENT_SECRET and PROXY_SECRET
  • requirements-linux.txt cleaned (removed winotify, 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 QTranslator initialization in main.py
  • Create .ts translation files for Hungarian and English
  • Run lupdate to extract all tr() strings into .ts files (98 strings)
  • Fill all 20 missing Hungarian translations (100% coverage)
  • Compile .ts.qm with lrelease98/98 finished, 0 unfinished
  • Add language selector persistence (already in Settings tab)
  • Bundle .qm files 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.spec is up to date with all imports ← already updated with app.i18n + translations
  • Install PyInstaller in .venv (v6.19.0)
  • Build dist/VoiceTypingByJoe/ via pyinstaller build_linux.spec --noconfirm
  • Create build_appimage.sh — packages PyInstaller output into AppImage via appimagetool
  • AppDir structure: AppRun launcher, .desktop, 512px icon, AppStream XML metadata
  • Integrate appimagetool into the Linux build workflow
  • Add .agent/workflows/build-linux.md workflow file
  • Test build on Ubuntu 22.04 LTS (reference distro) ← tested on Linux Mint; Ubuntu test pending
  • Document install_linux.sh usage 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.py megírva — pure urllib, nulla új dependency, teljes offline fallback
  • SUPABASE_URL + SUPABASE_ANON_KEY hozzáadva config.py + .env.example-be
  • Add supabase-py to requirements.txtnem szükséges (pure urllib REST API)
  • supabase_schema.sql elkészítve — history + vocabulary tá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 created timestamp nyer; offline → local wins
  • Graceful offline fallback: ha Supabase nem érhető el, az app normálisan működik
  • app/ui/controller.py bekö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álvapush_usage() Supabase-ba (upsert), VPS usage.db deprecated (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=True a startup merge-nél, audio fájlok védve (2026-04-05)
  • Auto-updatedownload_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 push
    • unlock_cloud_sync(password) — Supabase pull + KEK unwrap + session DEK cache
    • change_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álva get_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.sqluser_encryption_metadata tábla + wrapped_dek / wrapped_dek_iv oszlopok + 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.pyStreamingWorker)
  • Figyelmeztetés 5 percnél (toast notification — session_warning Signal)
  • Auto-stop és mentés 6 percnél (session_hard_capped Signal → _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.py modul — opt-in, GDPR-compliant, send_default_pii=False
  • sentry_sdk.init() beillesztése main.py-ban (lazy, csak ha opted-in)
  • Opt-in checkbox a Settings tab Preferences szekciójában
  • crash_reporting: False hozzáadva DEFAULT_SETTINGS-hez — alapból KI

Priority 6: Szlovák UI fordítás ✅ KÉSZ (2026-04-05)

  • messages_sk.ts frissítve új tab-alapú fájlszerkezetre (pyside6-lupdate)
  • 107/107 fordítás kitöltve — Onboarding, session cap, crash reporting, Developer tab
  • pyside6-lrelease107/107 finished, 0 unfinished
  • Bundle: translations/*.qm glob 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áadva sync.py-ba — induláskor background thread-ben fut
  • UPTIME_PING_URL env változó hozzáadva config.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_delete flag-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írva sync.py-ba (UPSERT pattern)
  • Supabase usage tá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.db deprecated — Supabase usage tá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 .deb builder (dpkg-deb), zero extra deps
  • DEBIAN/control: függőségek (libpulse0, libxcb1, stb.), postinst/prerm hook-ok
  • build_rpm.sh — Fedora/RHEL .rpm builder (rpmbuild), spec fájl generálással
  • Mindkét csomag tartalmaz: /usr/bin/vtj launcher, .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-webhook vé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_KEY env 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)
  • VtjColors top-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_fix checkbox hozzáadva a Settings / Preferences szekcióhoz (settings_tab.py)
  • punctuation_fix: True hozzáadva DEFAULT_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_*.py hozzáadva .gitignore-ba
  • Repo cleanup — audio/ WAV fájlok, log fájlok, régi .md fájlok eltávolítva
  • Docs átrendezés — STRATEGY.md, Pricing.md, Marketing Strategy.mddocs/ mappa

🚀 v1.5.2 — Sprint (Fázis 3) — Android alapok

Android Subscription + Quota Enforcement ✅ KÉSZ (2026-04-06)

  • /check-quota proxy endpoint — plan, used, limit, allowed (vtj_proxy.py)
  • SttApiClient.checkQuota()QuotaStatus data class, fail-open logika
  • FloatingService.startRecording() — async quota guard, toast + értesítés ha merítve
  • SettingsManager: quotaUsedMinutes, quotaLimitMinutes, subscriptionTier mező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)

  • isProcessing flag — 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 --cached futtatva — 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, subscriptionTier mezők SharedPreferences-ben
  • SettingsActivity Statistics tab: havi kvóta progress bar (X / 180 perc), tier badge, ↻ Refresh gomb
  • /check-quota hí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.json1.6.16 frissítve
  • build.gradleversionCode=32, versionName=1.6.16
  • /android-release workflow futtatva — APK aláírva, GitHub Release v1.6.16-android létrehozva, vtj-releases version.json szinkronizálva

Priority 3: Windows /code-audit futtatása ✅ KÉSZ (2026-04-08)

  • /code-audit workflow — 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)

⚠️ WARNING

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

⚡ IMPORTANT

⚠️ 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_logprob kibontás
  • CONFIDENCE_THRESHOLD = -0.5 — szegmens-szintű küszöb (word-level NEM elérhető Groq-on)
  • workers.py: low_confidence = Signal(float) a StreamingWorker-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.app domain 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.app regisztrálva ✅ (2026-04-16) — elsődleges domain, launch-ready
  • vibevox.com — ❌ Foglalt (spekuláns) — nem elérhető
  • vibevox.eu — ❌ Foglalt (spekuláns) — nem elérhető
  • vibevox.ai — ❌ Foglalt (spekuláns) — nem elérhető

⚠️ A .com, .eu és .ai verzió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.app hozzá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.app Gmail aktiválva — küldés + fogadás működik
  • Google DKIM / SPF / MX rekordok propagálva Cloudflare-en ✅
  • DMARC p=quarantine beá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 Name importálás engedélyezve, minden Stripe event → Stripe Customers csoport

Backend API Integráció ✅

  • app/loops_client.py — Loops.so API wrapper modul létrehozva
    • sync_contact() — POST /contacts/create (+ PUT /contacts/update upsert fallback)
    • send_event() — POST /events/send custom event tracking
    • Fire-and-forget background thread — UI nem blokkolódik
  • app/auth.py — Google OIDC token-ből given_name / family_name kinyerése
  • app/drip_campaign.pyrecord_first_session() triggereli a Loops contact sync-et
  • LOOPS_API_KEY hozzáadva env.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)

🌐 Magyar Landing Page + Onboarding (HU-first)

Honlap mappa: website/ — technikai spec + teljes copy egy helyen website/SPEC.md · website/CONTENT.md Deep 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 a subscription.py-ban
  • HUF árazás konfigurálva a kódban — constants.py (HUF_PRICING + STRIPE_LINKS HUF 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.html kerüljön fel a vibevox.app-ra (pl. vibevox.app/benchmark vagy /compare aloldalon); 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.py futtatása, tools/ram_report.txt frissí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 ~400MB adat 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 a controller.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 Dashboard szekció — latency, session cost, havi becslés, aktív engine
  • 🔍 Validate API Keys gomb → ByokFailsafeWizard dialog
  • 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: False alapé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: True default + checkbox)
  • Implementáció: controller.py _on_pipeline_finishedtoast_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_done flag → 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.

⚡ IMPORTANT

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.pyBUILT_IN_PERSONAS dict 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_benchmark kutatás lezárva — architekturális döntés rögzítve.

  • app/ui/tabs/style_tab.py🌍 Kimenet nyelve szekció hozzáadása (coming soon placeholder UI kész)
  • app/llm_post_processor.pyoutput_language paraméter hozzáadása get_llm_system_prompt()-hoz
  • LLM trigger logika kibővítése: output_lang ≠ input_lang is é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
  • BYOK pipeline — translate instrukció hozzáadása a meglévő LLM prompthoz (trivisális)
  • Literal Mode disablement: output_language selector dim + tiltott ha Literal Mode = ON
  • Formality Conversion auto-KI logika, ha Output Language ≠ eredeti
  • settings.dboutput_language mező 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.py scrollable 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/.xml szótár-import eszköz — CZ/SK B2B critical path — vocab_tab.py CSV import

  • Bulk import: szöveg (vesszővel + soronként elválasztott) + Newton Dictionary CSV — vocab_tab.py

  • Vocabulary 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 prompt paramé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.pybuild_vocab_correction_prompt(vocab: str) -> str fü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 ha custom_vocabulary nem ü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_log tábla (append-only, GDPR Art. 30) + /admin/audit-log GET endpoint (org-szintű szűrés) + /admin/audit-log/export-csv POST (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.pyazure_whisper engine hozzáadva (priority table + _try_engine dispatch)
  • 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.html ma 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 Supabase benchmark_results tá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_results tábla hozzáadása supabase_schema.sql-hez (RLS: INSERT anyone, SELECT admin only)
  • vtj_proxy.pyPOST /benchmark-result endpoint: validálás + Supabase upsert
  • tools/stopwatch.htmlsaveResult() 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: rumps alapú 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.swiftappendHistory() alias hozzáadva
  • ios/VoiceTypingKeyboard/KeyboardViewController.swiftappendHistory() 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é.

⚡ IMPORTANT

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.py portolá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-aab workflow-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.py fá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.

⚡ IMPORTANT

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
Supabase usage migration KÉSZpush_usage() in sync.py, VPS usage.db deprecated
Flatpak/Flathub packaging KÉSZflatpak/com.joeets.VoiceTypingByJoe.yaml + build_flatpak.sh
.deb / .rpm packages KÉSZbuild_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).