# โœฆ Vesper **A beautiful, distraction-free markdown reader for Windows** Premium editorial typography ยท Refined dark aesthetic ยท Fully portable
Version Platform Tauri License

## ๐Ÿ“– Overview Vesper renders your markdown with carefully tuned typography and a refined dark interface, giving you the ultimate reading experience. No installation, no AppData, no registry โ€” just drop the exe and go.
## โœจ Features ### ๐Ÿ”ค Markdown Rendering Full CommonMark support via **markdown-it** with extensions: | Extension | Description | |:--|:--| | ๐ŸŽจ Syntax Highlighting | 190+ languages via highlight.js with a curated dark palette | | โ˜‘๏ธ Task Lists | Interactive checkboxes in lists | | แดฌแต‡ Superscript / Subscript | `^text^` and `~text~` notation | | ๐Ÿ–๏ธ Highlight | `==marked text==` rendered with accent background | | ๐Ÿ’ฌ Typographer | Smart quotes, em-dashes, and ellipses | | ๐Ÿ”— Linkify | Bare URLs auto-converted to clickable links | | ๐Ÿ“„ HTML | Inline HTML passthrough | | โ†ต Breaks | Newlines preserved as line breaks | **Premium dark-mode typography** tuned for long-form reading: > - **Inter Variable** at 17px with 1.7 line-height > - ~65 character measure for optimal readability > - Progressive heading color cascade โ€” H1 near-white through H6 muted > - Accent-colored list markers on both ordered and unordered lists > - Gradient-fade horizontal rules > - Subtle persistent link underlines that intensify on hover > - **JetBrains Mono Variable** for code at 14px with ligature support
### ๐Ÿ“‘ Tabbed Interface - Open **multiple documents** simultaneously in tabs - ๐Ÿ” **Duplicate detection** โ€” re-opening an already-open file switches to its tab - โœจ Animated tab enter/exit with layout transitions - โ—€ โ–ถ **Scroll arrows** appear on overflow with hold-to-scroll - ๐Ÿ–ฑ๏ธ **Mouse wheel** scrolling over the tab bar - ๐Ÿ“Œ New tabs **auto-scroll** into view - โœ• Close tabs with the button or `Ctrl+W`
### ๐Ÿงญ Navigation - ๐Ÿ“‹ **Table of Contents** sidebar auto-generated from headings (H1โ€“H6) with indentation - Click any heading to **smooth-scroll** to that section - Sidebar opens even with no headings (shows "No headings" message) - โ†”๏ธ **Resizable** sidebar via drag handle - ๐Ÿ” **Full-text search** with real-time highlighting, match counter, and `Enter` to cycle
### ๐Ÿ‘๏ธ Reading Experience | Feature | Details | |:--|:--| | ๐Ÿ–ฅ๏ธ Focus Mode | `F11` hides title bar and menu for immersive reading | | ๐Ÿ”Ž Content Zoom | `Ctrl+Scroll` โ€” 50% to 200% | | โ†”๏ธ Content Width | `Shift+Scroll` โ€” 400px to 1200px | | ๐Ÿ”ฒ UI Scale | 50%โ€“200% via View menu spinner, persisted across sessions | | ๐Ÿ€ Kinetic Scroll | Right-mouse drag with iOS-style rubber band overscroll | | ๐Ÿ“œ Custom Scrollbars | Thin, auto-hiding, accent-colored on hover | | ๐Ÿ’พ Window Memory | Position, size, and maximized state remembered between sessions |
### ๐Ÿ“‚ File Handling - Open via **File menu**, **`Ctrl+O`**, or **drag-and-drop** from Explorer - Supports `.md` ยท `.markdown` ยท `.txt` - Native Tauri drag-and-drop integration with real file system paths
### ๐ŸŽจ UI Details - Custom **frameless title bar** with minimize, maximize/restore, and close - **Right-click context menu** โ€” Copy, Open File, Toggle Search, Toggle Sidebar, Focus Mode, Keyboard Shortcuts, About, Exit - ๐Ÿ–Š๏ธ **Text selection preserved** visually on right-click via overlay rendering - Context menu **stays within bounds** and respects UI zoom - All panels, modals, tabs, and menus **animate** with Framer Motion - Subtle **noise texture overlay** on the app background
## โŒจ๏ธ Keyboard Shortcuts | Shortcut | Action | |:--|:--| | `Ctrl+O` | ๐Ÿ“‚ Open file | | `Ctrl+W` | โœ• Close current tab | | `Ctrl+Q` | ๐Ÿšช Exit application | | `Ctrl+F` | ๐Ÿ” Toggle search | | `Ctrl+Shift+S` | ๐Ÿ“‹ Toggle sidebar | | `F11` | ๐Ÿ–ฅ๏ธ Toggle focus mode | | `Escape` | โ† Close search / sidebar | | `Ctrl+Scroll` | ๐Ÿ”Ž Zoom content in / out | | `Shift+Scroll` | โ†”๏ธ Adjust content width |
## ๐Ÿ“ฆ Installation ### Prerequisites - Windows 10 or later - WebView2 Runtime (pre-installed on Windows 10/11) ### Download Download the latest **`vesper.exe`** from the [Releases](https://github.com/yourusername/vesper/releases) page. No installation required โ€” Vesper is fully portable. ### Build from Source > **Requires:** [Node.js](https://nodejs.org/) v18+ ยท [Rust](https://www.rust-lang.org/tools/install) stable ยท [Tauri v2 prerequisites](https://v2.tauri.app/start/prerequisites/) ```bash git clone https://github.com/yourusername/vesper.git cd vesper npm install ``` ```bash # Development (hot-reload on localhost:1420) npm run tauri dev # Production build npm run tauri build # โ†’ src-tauri/target/release/vesper.exe ```
## ๐Ÿ”ง Technology Stack | | Layer | Technology | |:--|:--|:--| | โš™๏ธ | Runtime | [Tauri v2](https://tauri.app/) โ€” Rust + WebView2 | | โš›๏ธ | Frontend | React 19 ยท TypeScript ยท Vite 7 | | ๐ŸŽจ | Styling | Tailwind CSS 4 ยท DaisyUI 5 ยท Custom CSS | | ๐Ÿ“ | Markdown | [markdown-it](https://github.com/markdown-it/markdown-it) + plugins | | ๐ŸŒˆ | Syntax | [highlight.js](https://highlightjs.org/) | | ๐ŸŽฌ | Animation | [Framer Motion](https://www.framer.com/motion/) | | ๐Ÿ”ค | Fonts | [Inter Variable](https://rsms.me/inter/) ยท [JetBrains Mono](https://www.jetbrains.com/lp/mono/) | | ๐Ÿ–ผ๏ธ | Icons | [Lucide React](https://lucide.dev/) | | ๐Ÿ“œ | Scrollbars | [OverlayScrollbars](https://kingsora.github.io/OverlayScrollbars/) | **Tauri Plugins:** `dialog` ยท `fs` ยท `opener`
## ๐Ÿ’ผ Portable Vesper is **fully portable** โ€” zero installation, zero system footprint. All data lives in a `data/` folder next to the executable: ``` vesper.exe data/ โ”œโ”€โ”€ window-state.json โ† window position, size, maximized โ””โ”€โ”€ EBWebView/ โ† WebView2 data (localStorage, cache) ``` > Nothing is written to AppData, the registry, or any other system location. > To move Vesper, just copy the exe and optionally the `data/` folder.
## ๐Ÿง  Design Philosophy | | Principle | |:--|:--| | ๐Ÿ“– | **Content First** โ€” all UI chrome can be hidden; the reader is the focus | | ๐Ÿ”ค | **Typography Matters** โ€” Inter at 17px, 1.7 line-height, ~65 char measure | | ๐ŸŒ™ | **Dark by Default** โ€” deep onyx base `#282C33` reduces eye strain | | โŒจ๏ธ | **Keyboard Driven** โ€” every feature accessible via shortcuts | | โœจ | **Minimalist Chrome** โ€” the interface gets out of your way |
## ๐ŸŽจ Color Palette | Swatch | Name | Hex | Usage | |:--|:--|:--|:--| | ๐ŸŸซ | Base | `#282C33` | Window background | | โฌ› | Surface | `#252A31` | Title bar, sidebar | | ๐Ÿ”ฒ | Elevated | `#2D333C` | Active tab, modals | | โ—พ | Overlay | `#333942` | Dropdowns, context menu | | โฌœ | Text Primary | `#E4E6EB` | Main content | | ๐Ÿ”˜ | Text Secondary | `#ABB0B8` | UI labels | | ๐Ÿฉถ | Text Tertiary | `#6B7280` | Placeholders, hints | | ๐Ÿ”ต | Accent | `#6B8AFF` | Interactive elements | | ๐Ÿ”ท | Link | `#7CA9F7` | Hyperlinks |
## ๐Ÿ—‚๏ธ Project Structure ``` vesper/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ App.tsx Main application component โ”‚ โ”œโ”€โ”€ main.tsx React entry point โ”‚ โ””โ”€โ”€ styles.css Variables, UI, markdown typography โ”œโ”€โ”€ src-tauri/ โ”‚ โ”œโ”€โ”€ src/ โ”‚ โ”‚ โ”œโ”€โ”€ main.rs Rust entry point โ”‚ โ”‚ โ””โ”€โ”€ lib.rs Tauri builder, portable data, window state โ”‚ โ”œโ”€โ”€ capabilities/ โ”‚ โ”‚ โ””โ”€โ”€ default.json Permission declarations โ”‚ โ”œโ”€โ”€ tauri.conf.json Window, bundle, and build config โ”‚ โ”œโ”€โ”€ Cargo.toml Rust dependencies โ”‚ โ””โ”€โ”€ icons/ App icons (ICO, PNG, ICNS) โ”œโ”€โ”€ index.html โ”œโ”€โ”€ package.json โ”œโ”€โ”€ vite.config.ts โ””โ”€โ”€ tsconfig.json ```
## ๐Ÿ“œ License This project is dedicated to the public domain under **CC0 1.0 Universal** โ€” see the [LICENSE](LICENSE) file for details.
## ๐Ÿ™ Acknowledgments - [iA Writer](https://ia.net/writer) โ€” design inspiration - [Tauri](https://tauri.app/) โ€” desktop framework - [markdown-it](https://github.com/markdown-it/markdown-it) โ€” markdown parsing - [highlight.js](https://highlightjs.org/) โ€” syntax highlighting