Commit graph

37 commits

Author SHA1 Message Date
Danial Kalbasi
2af78a50f6 Refine plugin copy and lint brand handling 2026-05-05 16:43:19 +02:00
Danial Kalbasi
b2eface2df Align sentence-case lint with review bot 2026-05-05 12:28:42 +02:00
Danial Kalbasi
fc8d65fd95 Simplify remaining review-bot UI text 2026-05-04 19:06:49 +02:00
Danial Kalbasi
068153c043 Tighten UI text sentence case 2026-05-04 17:36:31 +02:00
Danial Kalbasi
a63c1a5e20 Release 1.0.1 2026-05-03 14:23:46 +02:00
Danial Kalbasi
53a0213788 Add Obsidian lint checks 2026-05-03 14:20:27 +02:00
Danial Kalbasi
2f72fb831f Address review bot findings 2026-05-03 14:11:29 +02:00
Danial Kalbasi
4f82b6ef88 Rename plugin to Vox Reader 2026-05-03 12:51:28 +02:00
Danial Kalbasi
63e076c981 Polish submission metadata 2026-05-03 12:14:49 +02:00
Danial Kalbasi
511e077a77 chore: update plugin description 2026-05-03 12:00:09 +02:00
Danial Kalbasi
47b13f6bfb add MIT license 2026-05-03 11:44:43 +02:00
Danial Kalbasi
162c8de5fb chore: update plugin id to vox-reader 2026-05-02 19:25:21 +02:00
Danial Kalbasi
650c4437b1 chore: update plugin description 2026-05-02 19:01:54 +02:00
Danial Kalbasi
6e5e523888 chore: update plugin description 2026-05-02 18:59:56 +02:00
Danial Kalbasi
25318fc446 chore: prepare 1.0.0 release 2026-05-02 18:56:06 +02:00
Danial Kalbasi
faeb322ce0 Refine provider model and playback UI 2026-05-02 17:50:09 +02:00
Danial Kalbasi
fbb2fe2a28 Tighten README and move folder voice hint into settings
- Rename Highlights to Features, trim to 3 clear items
- Add pitch line to intro, drop Usage section
- Move per-folder/per-note description to Add folder mapping setting
- Rename popover title from "Voices" to "Select a voice"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 17:11:58 +02:00
Danial Kalbasi
98dd597601 README: reword use cases section
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 16:35:53 +02:00
Danial Kalbasi
1128b6cc59 README: reframe use cases as ideas, add proofreading tip
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 16:30:51 +02:00
Danial Kalbasi
a5d9f1d63c Voice browser: split by ElevenLabs category, not Vox saved state
My voices (cloned/generated/professional) always appear first regardless
of whether they're saved in Vox. Voice library (premade) follows below.
Added/Add buttons still reflect Vox saved state within each section.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 16:14:51 +02:00
Danial Kalbasi
5a1fcdf88a Voice browser: section split, remove manual add form
- My voices / All voices sections: saved voices appear first with an
  accent-colored Added pill; newly found voices show Add button; adding
  re-renders the list so the voice moves up into My voices immediately
- Avatar colors keyed to global list position so colors stay stable
  while typing a search query
- Remove manual Name + Voice ID add form from settings; voice chips
  (set default, remove) now attach to the Browse button row
- styles.css: add vox-browser-section and vox-browser-btn--mine,
  remove unused vox-browser-btn--done
- README: update ElevenLabs voice setup section

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 16:01:49 +02:00
Danial Kalbasi
bbdd6fd6aa Add ElevenLabs voice browser
Opens a searchable modal that fetches the full ElevenLabs voice library
via GET /v1/voices, lets the user preview each voice with one click, and
adds selected voices directly to the saved list.

- src/tts/elevenlabs-voices.ts: typed fetch helper, results sorted by name
- src/voice-browser.ts: Modal with search, per-row preview (one at a time),
  and Add button that updates in-place without closing the modal
- settings.ts: Browse voices button (disabled when no API key set)
- styles.css: vox-browser-* styles, reuses avatar gradient palette from popover

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 15:32:32 +02:00
Danial Kalbasi
d572a0b226 Update docs and add elapsed time tracking to player
- README: reflect current popover-based UI (no status bar, sidebar icon
  opens playback controls while active)
- player.ts: track elapsed playback time across pause/resume cycles so
  the popover timer shows cumulative listening time, not just current run

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 15:25:45 +02:00
Danial Kalbasi
2c5067a70f Fix bugs and consolidate duplicated constants
- Fix openai.ts: response_format (was silently ignored as 'format')
- Fix popover positioning: read offsetWidth after layout via rAF to avoid
  always getting 0 before the browser has painted
- Extract OPENAI_VOICES and SPEED_LIMITS into constants.ts; remove the
  three separate copies that had drifted out of sync
- Use SPEED_LIMITS in elevenlabs.ts speed clamp instead of hardcoded values
- Add void to configureDevReload() call to make fire-and-forget explicit
- Remove redundant timerEl = null in closeVoicePicker (stopTimer already nulls it)
- Redesign popover: entry animation, frosted glass, rounded-square avatars,
  custom slider, pulsing now-playing indicator, checkmark on active voice
- Replace built-in square stop icon with custom circle-stop SVG

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 15:24:09 +02:00
Danial Kalbasi
ff35aa18a5 Refine voice picker popover 2026-04-25 14:45:14 +02:00
Danial Kalbasi
8100e291be Add README highlights 2026-04-24 23:25:57 +02:00
Danial Kalbasi
86cec771c9 Implement TTS audio caching 2026-04-24 23:22:46 +02:00
Danial Kalbasi
fff00c2e22 Tighten README voice and cut unnecessary copy
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 23:09:23 +02:00
Danial Kalbasi
3b87284f9d Add README banner image 2026-04-24 00:06:58 +02:00
Danial Kalbasi
47e6e508ec Fix audio object URL cleanup 2026-04-23 23:07:10 +02:00
Danial Kalbasi
c5949ff7ae Rewrite README, update manifest description, rename Engine to Provider
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 22:37:44 +02:00
Danial Kalbasi
5f0928cbbc Set default engine to ElevenLabs and default speed to 0.85x
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 21:56:57 +02:00
Danial Kalbasi
dda94df83b Add setting to show or hide the start-reading notice.
Gates the playback-started Notice in readFile; defaults to on to preserve
current behavior.

Made-with: Cursor
2026-04-23 01:15:21 +02:00
Danial Kalbasi
a60a3467d7 Fix stop ribbon visibility on startup.
Hide the stop ribbon control until playback is active, and harden the ribbon class setup so the plugin loads cleanly after rebuilds.

Made-with: Cursor
2026-04-23 01:09:35 +02:00
Danial Kalbasi
7593f0bd7f Remove Piper TTS; expand settings, main flow, and styles
- Drop piper backend; adjust OpenAI and ElevenLabs TTS integration
- Rework settings UI and plugin entry points; update player and styles
- Add VOICES.md; refresh README, manifest, package metadata, and .gitignore

Made-with: Cursor
2026-04-23 00:53:31 +02:00
Danial Kalbasi
5b13cf7f6f Update README to reflect current feature set
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:39:44 +02:00
local
bb804a1de8 Initial commit: Rhapsode v0.1.0 2026-04-22 21:41:34 +02:00