147 lines
6.6 KiB
Markdown
147 lines
6.6 KiB
Markdown
# TalkEdit — Launch Plan
|
||
|
||
## Niche: "Descript for long-form content"
|
||
|
||
TalkEdit's defensible position: **works on hour+ files without degrading**, fully offline, one-time payment. No competitor owns this — Descript chokes on long content, CapCut limits mobile uploads, and both require accounts.
|
||
|
||
**Current status (May 2026):** All core editing features are built and stable. Polish pass completed. 107 automated tests (95 frontend + 12 Rust). Ready for beta testing.
|
||
|
||
---
|
||
|
||
## Phase 1: Polish ✅ COMPLETED
|
||
|
||
### Reliability & error handling ✅
|
||
- [x] Backend health check — polls `/health` every 30s, shows reconnecting banner
|
||
- [x] Export failure reporting — surfaces FFmpeg stderr with copy-to-clipboard
|
||
- [x] React ErrorBoundary catches render crashes, shows fallback with reload
|
||
- [x] Global JS error logging — `window.onerror` + `onunhandledrejection` logged to Rust backend
|
||
|
||
### UX polish ✅
|
||
- [x] Tooltips on every button/control across all panels
|
||
- [x] Loading spinners for waveform, waveform retry button
|
||
- [x] Export progress bar (visual, not just text)
|
||
- [x] Help panel with full feature documentation
|
||
- [x] Keyboard cheatsheet overlay with close button and preset indicator
|
||
- [x] First-run welcome overlay with 3-step guide
|
||
- [x] `?` keyboard shortcut opens cheatsheet (accessible from Help panel)
|
||
- [x] Empty states: MarkersPanel, AIPanel, WaveformTimeline
|
||
- [x] Error states: AIPanel with retry, WaveformTimeline with retry
|
||
- [x] Auto-save crash recovery every 60s, restore prompt on next launch
|
||
- [x] Confirmation dialogs for zone/marker deletion
|
||
- [x] Disabled state for all buttons during export/transcription
|
||
- [x] Export button disabled when no video loaded
|
||
|
||
### Consistency ✅
|
||
- [x] Mute zone color unified (blue everywhere)
|
||
- [x] Disabled opacity unified (40% everywhere)
|
||
- [x] Zone list items border radius unified (`rounded-lg`)
|
||
- [x] Toolbar button groups separated with visual dividers
|
||
- [x] Labels simplified: "Sound Gain", "Speed Adjust", "Trim Silence", "Chapter Marks", "Edit Zones", "Add Clips", "Bkg. Music", "AI Tools"
|
||
- [x] Model selector moved to AIPanel reprocess tab
|
||
- [x] Orphaned VolumePanel.tsx removed
|
||
|
||
### Trial & licensing ✅
|
||
- [x] Trial duration: 7 days
|
||
- [x] Trial bar on welcome screen with days remaining
|
||
- [x] Sentinel file prevents deleting trial.json to reset trial
|
||
- [x] XOR integrity check prevents editing trial.json timestamp
|
||
- [x] `canEdit` defaults to `false` (locked until status check confirms)
|
||
- [x] Email confirmation step before license activation (deters key sharing)
|
||
- [x] `verify_license` command (verify without caching)
|
||
- [x] Expired banner explains what still works (export, loading)
|
||
|
||
### Robustness ✅
|
||
- [x] React ErrorBoundary
|
||
- [x] Store-level input validation (reject NaN, clamp bounds, enforce min zone duration)
|
||
- [x] Runtime assertions in critical paths (TranscriptEditor, WaveformTimeline, ExportDialog)
|
||
- [x] Auto-save crash recovery
|
||
- [x] CI pipeline (GitHub Actions: Rust + Frontend + Python)
|
||
- [x] Bad project state recovery (auto-prunes invalid zones on load, Dev Panel reset button)
|
||
- [x] 95 frontend tests (editorStore, licenseStore, aiStore, assert)
|
||
- [x] 12 Rust tests (licensing, models)
|
||
- [x] Canvas zone handles enlarged (r=6), hit area increased
|
||
- [x] Search match contrast improved
|
||
- [x] Split panes keyboard-accessible (arrow keys, tabIndex, ARIA)
|
||
|
||
---
|
||
|
||
## Phase 2: Beta Launch (🚧 next — 2–4 weeks)
|
||
|
||
**Goal:** Get working builds into real podcasters' hands. Validate the core promise (long-form, offline) before investing in edge-case features.
|
||
|
||
### Must-have for beta
|
||
|
||
- [ ] **Smart chunking for transcription** — files >2hr. Without this the niche promise is unproven. Breaks transcription into overlapping chunks, reassembles with correct timestamps.
|
||
- [ ] **Hardware detection & model selection** — detect CUDA/ROCm/MPS at startup; expose model backend choice in Settings so beta users can configure their system.
|
||
- [ ] **GitHub v1.0.0 release** — tag, binary builds (AppImage + .deb), release notes.
|
||
|
||
### Sales & distribution
|
||
- [ ] **Stripe integration** — payment processing for one-time purchases (Pro $39, Business $79). License key generation + email delivery on payment success.
|
||
- [ ] **Landing page + download site** — simple site with: feature overview, pricing tiers, download links (AppImage/.deb), license activation flow. No auth system needed — Stripe handles payments, license keys unlock the app.
|
||
|
||
### Beta program
|
||
|
||
- [ ] **Free licenses to 20 podcasters** — in exchange for feedback + permission to quote. Target: r/podcasting regulars, small-to-medium shows (30min–2hr episodes).
|
||
- [ ] **Bug/feedback pipeline** — GitHub Issues template for beta testers. Weekly triage.
|
||
- [ ] **Messaging for beta landing page:**
|
||
1. "The offline video editor that doesn't slow down on long files"
|
||
2. "No subscription. One price, owned forever."
|
||
3. "AI-powered editing — bring your own API key (Ollama, OpenAI, Claude)"
|
||
|
||
---
|
||
|
||
## Phase 3: Post-Beta Enhancements (user-driven priority)
|
||
|
||
**Goal:** Build what beta testers actually ask for. Deferred items below are ordered by likely demand, not engineering convenience.
|
||
|
||
### Bundled local LLM
|
||
- [ ] Integrate llama.cpp Rust bindings
|
||
- [ ] Auto-download Qwen3 on first AI use (4B: 2.5GB / 1.7B: 1GB)
|
||
- [ ] Hardware detection at runtime, model selection in Settings
|
||
|
||
### Long-form content
|
||
- [ ] Project stitching — load multiple `.aive` projects, combine into one export
|
||
|
||
### Export
|
||
- [ ] Batch export — multiple projects/cuts in sequence
|
||
|
||
### AI features
|
||
- [ ] Smart Shorts finder — scan transcript for 10–90s segments
|
||
- [ ] AI auto-chapters — topic detection from transcript
|
||
- [ ] AI show notes — title, description, key moments
|
||
- [ ] AI dead-air finder — content-based silence detection
|
||
|
||
---
|
||
|
||
## Phase 4: Public Launch
|
||
|
||
**Goal:** Convert beta momentum + testimonials into a public release.
|
||
|
||
### Messaging pillars (updated)
|
||
1. "The offline video editor that doesn't slow down on long files"
|
||
2. "No subscription. One price, owned forever."
|
||
3. "Zero-setup AI" — bundled Qwen3, no API keys *(activate when Phase 3 ships)*
|
||
4. "Your podcast → 10 TikToks in one click" — Smart Shorts finder *(activate when Phase 3 ships)*
|
||
|
||
### Channels
|
||
- [ ] r/podcasting, r/VideoEditing, r/selfhosted — anchored by beta tester testimonials
|
||
- [ ] Product Hunt, Hacker News "Show HN"
|
||
- [ ] YouTube demo (3-5 min walkthrough) — feature the beta tester stories
|
||
- [ ] Pricing goes live publicly
|
||
|
||
### Pricing
|
||
- 7-day free trial (no CC, no account)
|
||
- Pro: $39 one-time
|
||
- Business: $79 one-time (priority support, volume licensing)
|
||
|
||
---
|
||
|
||
## Non-goals (explicitly deferred)
|
||
|
||
- Cloud sync / collaboration
|
||
- Voice cloning / TTS
|
||
- Full multi-track NLE timeline
|
||
- Mobile app
|
||
- Subscription model
|
||
- Image/video generation models
|