Bump version to 1.1.0 and update README
Add accessibility section documenting WCAG 2.2 AAA compliance, keyboard navigation, focus management, and theme support. Update file handling with single-instance and OS association. Fix repo URLs and version badge.
This commit is contained in:
48
README.md
48
README.md
@@ -8,7 +8,7 @@ Built for everyone. Owned by no one. Free as in freedom.
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
<img src="https://img.shields.io/badge/version-1.0.0-6B8AFF?style=flat-square&labelColor=282C33" alt="Version">
|
<img src="https://img.shields.io/badge/version-1.1.0-6B8AFF?style=flat-square&labelColor=282C33" alt="Version">
|
||||||
<img src="https://img.shields.io/badge/platform-Windows-6B8AFF?style=flat-square&labelColor=282C33" alt="Platform">
|
<img src="https://img.shields.io/badge/platform-Windows-6B8AFF?style=flat-square&labelColor=282C33" alt="Platform">
|
||||||
<img src="https://img.shields.io/badge/Tauri-v2-6B8AFF?style=flat-square&labelColor=282C33" alt="Tauri">
|
<img src="https://img.shields.io/badge/Tauri-v2-6B8AFF?style=flat-square&labelColor=282C33" alt="Tauri">
|
||||||
<img src="https://img.shields.io/badge/license-CC0_Public_Domain-6B8AFF?style=flat-square&labelColor=282C33" alt="License">
|
<img src="https://img.shields.io/badge/license-CC0_Public_Domain-6B8AFF?style=flat-square&labelColor=282C33" alt="License">
|
||||||
@@ -19,7 +19,7 @@ Built for everyone. Owned by no one. Free as in freedom.
|
|||||||
|
|
||||||
## 📖 Overview
|
## 📖 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, no telemetry, no accounts, no subscriptions - just drop the exe and go.
|
Vesper renders your markdown with carefully tuned typography and a refined interface, giving you the ultimate reading experience. Choose between dark and light themes, navigate entirely by keyboard, and enjoy full WCAG 2.2 AAA accessibility. No installation, no AppData, no registry, no telemetry, no accounts, no subscriptions - just drop the exe and go.
|
||||||
|
|
||||||
Knowledge should be accessible to all. Vesper exists to make reading a pleasure, not a product.
|
Knowledge should be accessible to all. Vesper exists to make reading a pleasure, not a product.
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ Full CommonMark support via **markdown-it** with extensions:
|
|||||||
| 📄 HTML | Inline HTML passthrough |
|
| 📄 HTML | Inline HTML passthrough |
|
||||||
| ↵ Breaks | Newlines preserved as line breaks |
|
| ↵ Breaks | Newlines preserved as line breaks |
|
||||||
|
|
||||||
**Premium dark-mode typography** tuned for long-form reading:
|
**Premium typography** tuned for long-form reading:
|
||||||
|
|
||||||
> - **Inter Variable** at 17px with 1.7 line-height
|
> - **Inter Variable** at 17px with 1.7 line-height
|
||||||
> - ~65 character measure for optimal readability
|
> - ~65 character measure for optimal readability
|
||||||
@@ -80,9 +80,10 @@ Full CommonMark support via **markdown-it** with extensions:
|
|||||||
|
|
||||||
| Feature | Details |
|
| Feature | Details |
|
||||||
|:--|:--|
|
|:--|:--|
|
||||||
|
| 🌗 Dark / Light Theme | Toggle in View menu, persisted across sessions |
|
||||||
| 🖥️ Focus Mode | `F11` hides title bar and menu for immersive reading |
|
| 🖥️ Focus Mode | `F11` hides title bar and menu for immersive reading |
|
||||||
| 🔎 Content Zoom | `Ctrl+Scroll` - 50% to 200% |
|
| 🔎 Content Zoom | `Ctrl+Scroll` or View menu spinner - 50% to 200% |
|
||||||
| ↔️ Content Width | `Shift+Scroll` - 400px to 1200px |
|
| ↔️ Content Width | `Shift+Scroll` or View menu spinner - 400px to 1200px |
|
||||||
| 🔲 UI Scale | 50%-200% via View menu spinner, persisted across sessions |
|
| 🔲 UI Scale | 50%-200% via View menu spinner, persisted across sessions |
|
||||||
| 🏀 Kinetic Scroll | Right-mouse drag with iOS-style rubber band overscroll |
|
| 🏀 Kinetic Scroll | Right-mouse drag with iOS-style rubber band overscroll |
|
||||||
| 📜 Custom Scrollbars | Thin, auto-hiding, accent-colored on hover |
|
| 📜 Custom Scrollbars | Thin, auto-hiding, accent-colored on hover |
|
||||||
@@ -92,8 +93,9 @@ Full CommonMark support via **markdown-it** with extensions:
|
|||||||
|
|
||||||
### 📂 File Handling
|
### 📂 File Handling
|
||||||
|
|
||||||
- Open via **File menu**, **`Ctrl+O`**, or **drag-and-drop** from Explorer
|
- Open via **File menu**, **`Ctrl+O`**, **drag-and-drop**, or **double-click** from Explorer
|
||||||
- Supports `.md` · `.markdown` · `.txt`
|
- Supports `.md` · `.markdown` · `.txt`
|
||||||
|
- **Single instance** - opening a file when Vesper is already running forwards it to the existing window
|
||||||
- Native Tauri drag-and-drop integration with real file system paths
|
- Native Tauri drag-and-drop integration with real file system paths
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@@ -109,6 +111,26 @@ Full CommonMark support via **markdown-it** with extensions:
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
|
## ♿ Accessibility
|
||||||
|
|
||||||
|
Vesper targets **WCAG 2.2 AAA** compliance across the entire interface.
|
||||||
|
|
||||||
|
| Area | Details |
|
||||||
|
|:--|:--|
|
||||||
|
| 🏗️ Semantic HTML | `<header>`, `<nav>`, `<main>`, `<article>`, `<search>` landmarks; proper ARIA roles for menus, tabs, dialogs, and status regions |
|
||||||
|
| ⌨️ Full Keyboard Navigation | Menu bar, tab bar, sidebar TOC, modals, and context menu all navigable with arrow keys, Home/End, Enter, Escape |
|
||||||
|
| 🔗 Skip Link | "Skip to content" link as first focusable element for screen reader users |
|
||||||
|
| 🎯 Focus Management | Visible `:focus-visible` outlines on all interactive elements; focus traps in modals with restore on close |
|
||||||
|
| 🌗 High Contrast Themes | Dark and light themes both meet AAA contrast ratios (7:1+ for normal text) |
|
||||||
|
| 🎞️ Reduced Motion | Respects `prefers-reduced-motion` OS setting — all animations disabled when active |
|
||||||
|
| 📋 Active Heading Tracking | Current section highlighted in sidebar TOC via IntersectionObserver |
|
||||||
|
| 🔲 Target Sizes | All interactive targets meet 24x24px minimum (WCAG 2.5.8) |
|
||||||
|
| 📢 Status Messages | Search results counter uses `aria-live="polite"` for screen reader announcements |
|
||||||
|
| 🎨 Non-Color Indicators | Active tabs marked with a bottom border accent; search highlights include underline in addition to background |
|
||||||
|
| ↔️ Resizable Sidebar | Keyboard-accessible resize handle (`role="separator"`) with arrow key support |
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
## ⌨️ Keyboard Shortcuts
|
## ⌨️ Keyboard Shortcuts
|
||||||
|
|
||||||
| Shortcut | Action |
|
| Shortcut | Action |
|
||||||
@@ -119,7 +141,9 @@ Full CommonMark support via **markdown-it** with extensions:
|
|||||||
| `Ctrl+F` | 🔍 Toggle search |
|
| `Ctrl+F` | 🔍 Toggle search |
|
||||||
| `Ctrl+Shift+S` | 📋 Toggle sidebar |
|
| `Ctrl+Shift+S` | 📋 Toggle sidebar |
|
||||||
| `F11` | 🖥️ Toggle focus mode |
|
| `F11` | 🖥️ Toggle focus mode |
|
||||||
| `Escape` | ← Close search / sidebar |
|
| `Escape` | ← Close search / sidebar / context menu |
|
||||||
|
| `Shift+F10` | 📋 Open context menu |
|
||||||
|
| `Delete` | ✕ Close focused tab (when tab bar is focused) |
|
||||||
| `Ctrl+Scroll` | 🔎 Zoom content in / out |
|
| `Ctrl+Scroll` | 🔎 Zoom content in / out |
|
||||||
| `Shift+Scroll` | ↔️ Adjust content width |
|
| `Shift+Scroll` | ↔️ Adjust content width |
|
||||||
|
|
||||||
@@ -134,7 +158,7 @@ Full CommonMark support via **markdown-it** with extensions:
|
|||||||
|
|
||||||
### Download
|
### Download
|
||||||
|
|
||||||
Download the latest **`vesper.exe`** from the [Releases](https://github.com/yourusername/vesper/releases) page.
|
Download the latest **`vesper.exe`** from the [Releases](https://git.lashman.live/lashman/vesper/releases) page.
|
||||||
No installation required - Vesper is fully portable. No gatekeepers between you and your documents.
|
No installation required - Vesper is fully portable. No gatekeepers between you and your documents.
|
||||||
|
|
||||||
### Build from Source
|
### Build from Source
|
||||||
@@ -144,7 +168,7 @@ Everyone has the right to inspect, modify, and rebuild the tools they use.
|
|||||||
> **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/)
|
> **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
|
```bash
|
||||||
git clone https://github.com/yourusername/vesper.git
|
git clone https://git.lashman.live/lashman/vesper.git
|
||||||
cd vesper
|
cd vesper
|
||||||
npm install
|
npm install
|
||||||
```
|
```
|
||||||
@@ -176,7 +200,7 @@ Built entirely on open-source foundations - no proprietary dependencies, no vend
|
|||||||
| 🖼️ | Icons | [Lucide React](https://lucide.dev/) |
|
| 🖼️ | Icons | [Lucide React](https://lucide.dev/) |
|
||||||
| 📜 | Scrollbars | [OverlayScrollbars](https://kingsora.github.io/OverlayScrollbars/) |
|
| 📜 | Scrollbars | [OverlayScrollbars](https://kingsora.github.io/OverlayScrollbars/) |
|
||||||
|
|
||||||
**Tauri Plugins:** `dialog` · `fs` · `opener`
|
**Tauri Plugins:** `dialog` · `fs` · `opener` · `single-instance`
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@@ -204,8 +228,8 @@ data/
|
|||||||
|:--|:--|
|
|:--|:--|
|
||||||
| 📖 | **Content First** - all UI chrome can be hidden; the reader is the focus |
|
| 📖 | **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 |
|
| 🔤 | **Typography Matters** - Inter at 17px, 1.7 line-height, ~65 char measure |
|
||||||
| 🌙 | **Dark by Default** - deep onyx base `#282C33` reduces eye strain |
|
| 🌗 | **Dark & Light** - two high-contrast themes, both WCAG AAA compliant |
|
||||||
| ⌨️ | **Keyboard Driven** - every feature accessible via shortcuts |
|
| ⌨️ | **Keyboard Driven** - every feature accessible via shortcuts and arrow keys |
|
||||||
| ✨ | **Minimalist Chrome** - the interface gets out of your way |
|
| ✨ | **Minimalist Chrome** - the interface gets out of your way |
|
||||||
| 🤝 | **No Extraction** - no ads, no tracking, no data harvesting, no paywalls |
|
| 🤝 | **No Extraction** - no ads, no tracking, no data harvesting, no paywalls |
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"name":"vesper","private":true,"version":"1.0.1","type":"module","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","tauri":"tauri"},"dependencies":{"@fontsource-variable/inter":"^5.2.8","@fontsource-variable/jetbrains-mono":"^5.2.8","@tailwindcss/typography":"^0.5.19","@tailwindcss/vite":"^4.1.18","@tauri-apps/api":"^2","@tauri-apps/plugin-dialog":"^2.6.0","@tauri-apps/plugin-fs":"^2.4.5","@tauri-apps/plugin-opener":"^2","daisyui":"^5.5.18","framer-motion":"^12.34.0","highlight.js":"^11.11.1","lucide-react":"^0.564.0","markdown-it":"^14.1.1","markdown-it-mark":"^4.0.0","markdown-it-sub":"^2.0.0","markdown-it-sup":"^2.0.0","markdown-it-task-lists":"^2.1.1","overlayscrollbars":"^2.14.0","overlayscrollbars-react":"^0.5.6","react":"^19.1.0","react-dom":"^19.1.0","tailwindcss":"^4.1.18"},"devDependencies":{"@tauri-apps/cli":"^2","@types/markdown-it":"^14.1.2","@types/react":"^19.1.8","@types/react-dom":"^19.1.6","@vitejs/plugin-react":"^4.6.0","png-to-ico":"^3.0.1","puppeteer-core":"^24.37.3","sharp":"^0.34.5","typescript":"~5.8.3","vite":"^7.0.4"}}
|
{"name":"vesper","private":true,"version":"1.1.0","type":"module","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","tauri":"tauri"},"dependencies":{"@fontsource-variable/inter":"^5.2.8","@fontsource-variable/jetbrains-mono":"^5.2.8","@tailwindcss/typography":"^0.5.19","@tailwindcss/vite":"^4.1.18","@tauri-apps/api":"^2","@tauri-apps/plugin-dialog":"^2.6.0","@tauri-apps/plugin-fs":"^2.4.5","@tauri-apps/plugin-opener":"^2","daisyui":"^5.5.18","framer-motion":"^12.34.0","highlight.js":"^11.11.1","lucide-react":"^0.564.0","markdown-it":"^14.1.1","markdown-it-mark":"^4.0.0","markdown-it-sub":"^2.0.0","markdown-it-sup":"^2.0.0","markdown-it-task-lists":"^2.1.1","overlayscrollbars":"^2.14.0","overlayscrollbars-react":"^0.5.6","react":"^19.1.0","react-dom":"^19.1.0","tailwindcss":"^4.1.18"},"devDependencies":{"@tauri-apps/cli":"^2","@types/markdown-it":"^14.1.2","@types/react":"^19.1.8","@types/react-dom":"^19.1.6","@vitejs/plugin-react":"^4.6.0","png-to-ico":"^3.0.1","puppeteer-core":"^24.37.3","sharp":"^0.34.5","typescript":"~5.8.3","vite":"^7.0.4"}}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "vesper"
|
name = "vesper"
|
||||||
version = "1.0.1"
|
version = "1.1.0"
|
||||||
description = "A beautiful markdown reader"
|
description = "A beautiful markdown reader"
|
||||||
authors = ["you"]
|
authors = ["you"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "Vesper",
|
"productName": "Vesper",
|
||||||
"version": "1.0.1",
|
"version": "1.1.0",
|
||||||
"identifier": "com.vesper.reader",
|
"identifier": "com.vesper.reader",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "npm run dev",
|
"beforeDevCommand": "npm run dev",
|
||||||
|
|||||||
Reference in New Issue
Block a user