# HisNvl **Repository Path**: blackfur/his-nvl ## Basic Information - **Project Name**: HisNvl - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-09 - **Last Updated**: 2026-08-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # HisNvl Native Windows TXT reader foundation. ## Current foundation - C++20 Win32 desktop application - No third-party runtime dependency - Dark reading surface with Unicode text rendering - Background TXT loading - UTF-8, UTF-16 LE/BE, and system-code-page fallback - Keyboard-driven menus and command palette - Virtualized line painting instead of a large native text box ## Source layout - `src/main.cpp` — Win32 application, window procedures, menus, palette, and rendering - `src/document.h/.cpp` — text decoding, line parsing, and sentence segmentation - `src/commands.h/.cpp` — command definitions and fuzzy matching - `src/speech_queue.h/.cpp` — speech lifecycle, cancellation, and ten-sentence lookahead - `src/speech_provider.h/.cpp` — provider contract and Edge TTS provider boundary - `src/audio_player.h/.cpp` — Media Foundation MP3 decoding and Windows PCM playback - `src/settings.h/.cpp` — persistent reading position, font, theme, and last file - `src/offline_speech.h/.cpp` — Windows SAPI fallback when Edge TTS is unavailable - `src/diagnostics.h/.cpp` — local failure diagnostics under `%LOCALAPPDATA%\\HisNvl` The speech path now synthesizes Edge TTS audio in a worker, buffers it in memory, decodes it with Media Foundation, and plays it through Windows audio APIs. No temporary MP3 files are created. Bookmarks are persisted for the current book and can be controlled without a mouse with `Ctrl+B` and `Ctrl+Shift+B`. Chapter headings beginning with `Chapter`, `CHAPTER`, or Chinese `第…章` are detected automatically. Use `Ctrl+PageUp` and `Ctrl+PageDown` to navigate them. ## Build Use a Visual Studio Developer PowerShell: ```powershell cmake -S . -B build cmake --build build --config Release ``` The executable is written to `build/Release/HisNvl.exe` for Visual Studio generators. Run core tests with: ```powershell ctest --test-dir build -C Release --output-on-failure ``` Create a portable ZIP package with: ```powershell cpack --config build/CPackConfig.cmake -C Release ``` To validate the live Edge TTS transport manually, run this network-dependent smoke test: ```powershell build\Release\HisNvlTtsSmokeTest.exe ```