Compare commits

..

28 Commits

Author SHA1 Message Date
lashman ff775c44b3 Update README.md 2026-03-09 15:18:10 +02:00
Your Name 223ce2e56a Clean up special characters in source files 2026-02-19 22:11:04 +02:00
Your Name bb0f0d30da Update Cargo.lock for v1.1.0 2026-02-19 22:06:21 +02:00
Your Name ef8a4524b9 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.
2026-02-19 22:02:21 +02:00
Your Name 5af64df152 Fix duplicate tabs on drag-and-drop and long URL overflow
Guard against Windows/WebView2 firing duplicate drop events by
tracking in-progress paths with a Set ref. Add overflow-wrap and
word-break to markdown content so long unbroken strings wrap.
2026-02-19 22:00:51 +02:00
Your Name 766f0f94f2 Add single-instance support and clean up scaffolding files
Ensure only one Vesper instance runs at a time. When a second
instance is launched with a file argument, the file is forwarded
to the existing window. Remove unused template SVGs and test file.
2026-02-19 22:00:43 +02:00
Your Name a5c168ee9d fix: upgrade to pointer events for cancellation support, final a11y cleanup 2026-02-19 21:42:30 +02:00
Your Name 37cf83dd5c feat: add light theme with full WCAG AAA contrast compliance 2026-02-19 21:41:04 +02:00
Your Name e8f523ad05 feat: add Content Zoom and Content Width controls to View menu 2026-02-19 21:38:29 +02:00
Your Name f2ad745c28 fix: add non-color indicators for active tab and search highlights 2026-02-19 21:37:51 +02:00
Your Name 88964ec842 feat: highlight active heading in sidebar table of contents 2026-02-19 21:36:59 +02:00
Your Name 969aff1e25 feat: respect prefers-reduced-motion for Framer Motion animations 2026-02-19 21:35:22 +02:00
Your Name 204757bf6a feat: add focus trap to modal dialogs 2026-02-19 21:33:39 +02:00
Your Name 59b047ff25 feat: add Shift+F10 context menu trigger and keyboard navigation 2026-02-19 21:31:56 +02:00
Your Name e7544c283e feat: add keyboard navigation for sidebar and resize handle 2026-02-19 21:29:11 +02:00
Your Name 2e0741760f feat: add keyboard navigation for tab bar 2026-02-19 21:27:24 +02:00
Your Name 7031accf17 feat: add full keyboard navigation for menu bar 2026-02-19 21:24:47 +02:00
Your Name 86d25a5823 fix: add ARIA roles, labels, and states to all interactive components 2026-02-19 21:20:27 +02:00
Your Name f550dba3b9 fix: add skip link and semantic HTML landmarks 2026-02-19 21:16:58 +02:00
Your Name ecb9fd867c fix: add focus indicators, fix target sizes, show hidden controls 2026-02-19 21:15:03 +02:00
Your Name c644d7372d refactor: extract markdown typography colors into CSS variables 2026-02-19 21:13:07 +02:00
Your Name ecde5d7f88 fix: update color contrast to meet WCAG 2.2 AAA requirements 2026-02-19 21:08:29 +02:00
Your Name f462ca8d03 Handle OS file association: open .md files passed as CLI args 2026-02-14 19:45:58 +02:00
Your Name a3b241b4a1 Update README 2026-02-14 12:10:35 +02:00
Your Name b2a7cf11d4 Polish README with modern layout, emojis, and tables 2026-02-14 12:04:51 +02:00
Your Name 99abaac097 Make app fully portable, remove installers
- Remove MSI and NSIS installer targets, only produce vesper.exe
- Remove tauri-plugin-window-state, replace with manual window state
  save/restore to data/window-state.json next to the exe
- Redirect WebView2 user data (including localStorage) to data/
  folder next to the exe via WEBVIEW2_USER_DATA_DIR
- Nothing written to AppData, registry, or any system location
- Update README with portable usage info
2026-02-14 12:01:26 +02:00
Your Name 2af6b7ebe7 Add polished UX: tabs, kinetic scroll, animations, search, typography
- Tabbed interface with duplicate detection, overflow scroll arrows,
  mouse wheel support, and animated enter/exit transitions
- Kinetic scrolling on right-mouse drag with iOS-style rubber band
  overscroll and damped spring snapback (content area and sidebar)
- Framer Motion animations on sidebar, context menu, drop zone,
  focus mode, tabs, and all modals
- Full-text search with real-time DOM highlighting and match navigation
- Custom OverlayScrollbars replacing native scrollbars
- Tauri native drag-and-drop replacing broken browser drag events
- UI scale control (View menu spinner) persisted to localStorage
- Content zoom (Ctrl+Scroll) and width adjustment (Shift+Scroll)
- Right-click context menu with copy, zoom-adjusted positioning,
  and boundary clamping
- Text selection preserved on right-click via visual overlay
- Focus mode hides title/menu bars with animated transitions
- Premium editorial typography: progressive heading color cascade,
  gradient-fade horizontal rules, accent-colored list markers,
  subtle persistent link underlines, refined blockquotes and code blocks
- Sidebar table of contents with "No headings" empty state
- Markdown breaks and typographer enabled
- New app icons and updated README with full feature documentation
2026-02-14 11:53:55 +02:00
Your Name 88a75a1fd9 Initial commit: Vesper markdown reader 2026-02-13 23:09:33 +02:00
6 changed files with 71 additions and 8 deletions
+51
View File
@@ -0,0 +1,51 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Tauri build artifacts
src-tauri/target/
# Dev tool files
icon-*.html
nul
# Portable data directory
data/
# Editor directories and files
.vscode/
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# AI/LLM tooling
.claude/
.cursor/
.copilot/
.codeium/
.tabnine/
.aider*
.continue/
# Trash
trash/
# Docs
docs/
# This file
.gitignore
+3
View File
@@ -0,0 +1,3 @@
{
"recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"]
}
+2
View File
@@ -284,6 +284,8 @@ Dedicated to the **public domain** under [CC0 1.0 Universal](LICENSE). No copyri
## 🙏 Acknowledgments ## 🙏 Acknowledgments
This project is developed with the help of a locally-run LLM via opencode for scaffolding, planning, and routine code tasks. Architecture and design decisions are my own.
Built with gratitude on the collective work of open-source communities worldwide: Built with gratitude on the collective work of open-source communities worldwide:
- [iA Writer](https://ia.net/writer) - design inspiration - [iA Writer](https://ia.net/writer) - design inspiration
+7
View File
@@ -0,0 +1,7 @@
# Generated by Cargo
# will have compiled files and executables
/target/
# Generated by Tauri
# will have schema files for capabilities auto-completion
/gen/schemas
+1 -1
View File
@@ -2,7 +2,7 @@
name = "vesper" name = "vesper"
version = "1.1.0" version = "1.1.0"
description = "A beautiful markdown reader" description = "A beautiful markdown reader"
authors = ["lashman"] authors = ["you"]
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+7 -7
View File
@@ -41,7 +41,7 @@
--color-error-content: #1E2128; --color-error-content: #1E2128;
} }
/* Custom properties */ /* CSS Custom Properties - Premium Flat Design with #282C33 */
:root { :root {
/* Surface System - centered on #282C33 */ /* Surface System - centered on #282C33 */
--color-bg-base: #282C33; --color-bg-base: #282C33;
@@ -1167,7 +1167,7 @@ html, body, #root {
color: var(--color-text-primary); color: var(--color-text-primary);
} }
/* Markdown content */ /* Markdown content - PREMIUM EDITORIAL TYPOGRAPHY */
.markdown-content { .markdown-content {
/* Optimal measure: ~65 characters for best readability */ /* Optimal measure: ~65 characters for best readability */
max-width: 680px; max-width: 680px;
@@ -1176,7 +1176,7 @@ html, body, #root {
overflow-wrap: break-word; overflow-wrap: break-word;
word-break: break-word; word-break: break-word;
/* Typography settings */ /* Premium typography settings */
font-size: 17px; font-size: 17px;
line-height: 1.7; line-height: 1.7;
font-family: 'Inter Variable', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; font-family: 'Inter Variable', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
@@ -1191,7 +1191,7 @@ html, body, #root {
text-spacing-trim: trim-both; text-spacing-trim: trim-both;
} }
/* Heading hierarchy */ /* Refined heading hierarchy - progressive color cascade */
.markdown-content h1, .markdown-content h1,
.markdown-content h2, .markdown-content h2,
.markdown-content h3, .markdown-content h3,
@@ -1250,14 +1250,14 @@ html, body, #root {
color: var(--color-md-h6); color: var(--color-md-h6);
} }
/* Paragraphs */ /* Paragraphs with refined spacing */
.markdown-content p { .markdown-content p {
margin-bottom: 1.65em; margin-bottom: 1.65em;
color: var(--color-md-paragraph); color: var(--color-md-paragraph);
line-height: 1.7; line-height: 1.7;
} }
/* Links */ /* Links with subtle persistent underline */
.markdown-content a { .markdown-content a {
color: var(--color-md-link); color: var(--color-md-link);
text-decoration: underline; text-decoration: underline;
@@ -1502,7 +1502,7 @@ html, body, #root {
color: #FFCB6B; color: #FFCB6B;
} }
/* Tables */ /* Tables - elegant card style without gradients */
.markdown-content table { .markdown-content table {
width: 100%; width: 100%;
border-collapse: separate; border-collapse: separate;