# BibleVerse for Tactility Single-verse bible reader. Shows one verse fullscreen, auto-advances every minute. Tap to toggle controls. ## UX - **Default view (no chrome)**: immersive context — just the verse text + reference, centered, large font. Like BookPlayer image-only view. - **Tap**: shows header (current ref + position) and footer controls: - Close X, Prev, Pause/Play (auto-advance), Next, Highlight (star), Audio memo placeholder. - Highlighted verses saved to `favorites.txt` in app user data. Long-term: record voice memo, read aloud TTS. ## Bible data format (split per book) We fetch public domain bibles from https://github.com/sajeevavahini/bibles (Zefania XML). Offline conversion: ``` python3 tools/convert_bible.py --src "World English Bible.xml" --dst assets/bible ``` Result structure: ``` assets/bible/ books.json # {"books":[{"bnumber":1,"bname":"Genesis","verses":1533,...}], total_verses, translation, version} 01.bin / 01.idx # Genesis 02.bin / 02.idx # Exodus ... 66.bin / 66.idx ``` - `.bin`: concatenated NUL-terminated UTF8 verse texts. No parsing needed, low RAM. - `.idx`: header 10 bytes: magic 'BIBK', uint16 version, uint32 count. Then per entry 8 bytes: uint32 offset, uint16 cnum, uint16 vnum. This split makes memory footprint tiny for ESP32: - Only one book loaded at a time (max ~215KB for Psalms, typical 12-100KB). - Index ~19KB max for Psalms, typically <5KB. ## SD card fallback App also scans: - `/sdcard/bibles/` and `/sdcard/bible/` If `books.json` not found in assets, it will try to use SD folder. This lets users drop extra translations offline. ## Settings persistence Same pattern as EpubReader / BookPlayer (but those two didn't persist in BookPlayer, EpubReader does): Using Tactility app user data paths: - `tt_app_get_user_data_path()` -> e.g. `/sdcard/user/app/one.tactility.bibleverse` - `progress.txt`: stores global verse index + b/c/v for debug ``` 1234 1 1 1 0 0 ``` - `favorites.txt`: list of global indices, one per line. This lives on SD card (or internal data partition), survives app reinstalls. ## Build (color screen device, esp32s3) Same as BookPlayer — external app, compiled for esp32s3 target (covers CYD-2432s028r, m5stack-cores3, etc). ```bash # source IDF (example) source ~/esp/esp-idf/export.sh export TACTILITY_SDK_PATH=/path/to/TactilitySDK # or use --local-sdk python3 tactility.py Apps/BibleVerse build esp32s3 --local-sdk ``` Output: `build/BibleVerse.app` installable via Tactility file manager or `tactility.py ... install ` ## Future extensions - Voice memo: record to `/sdcard/bible_memos/.wav` using same I2S code as BookPlayer - TTS read aloud: use esp tts or pre-generated mp3 like BookPlayer pages - Book picker UI (like BookPlayer picker but for bible books) - Highlight color, search, jump to reference dialog