Files
agentandClaude 677a8dde4f Initial commit: hermes-wiki-viewer v0.2.0
Fork of DanielCheer/obsidian-web-viewer (MIT, 2026-04) with Lukas' first
additions for the Hermes Wiki workflow.

Additive customization layer (vault-custom.js) — keeps upstream-merge
trivial via a one-line script tag in vault.html.

Features added:
1. Current-page highlighting in 3D Graph — current node gold+glow,
   connected nodes light-blue, others dim to 20% opacity
2. Click-to-navigate on graph — Three.js raycaster triggers file load
3. Responsive layout — graph collapses below 1024px, tree below 768px
4. URL-based deep-linking via ?file=<path> query param
5. Server-side ?file= support in /api/vault/file/ endpoint

Modified files:
- server.py: +7 lines (Lukas-add: ?file= query param parsing)
- vault.html: +1 line (script tag for vault-custom.js)

New files:
- vault-custom.js: 11KB, all customizations in one place under HermesCustom namespace
- README.md: fork intro, quick start, customization guide
- CHANGELOG.md: Lukas-additions tracking
- docs/ARCHITECTURE.md: design rationale
- docs/CUSTOMIZATIONS.md: feature spec
- .gitignore: standard

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-16 15:17:16 +00:00

3.0 KiB

Changelog — Lukas' Additions

All notable changes to this fork are documented here. Upstream-tracking via DanielCheer/obsidian-web-viewer.

v0.2.0 — 2026-07-16 — Lukas' first additions

Added

  • vault-custom.js — additive JavaScript layer with three features:
    • Current-page highlighting in 3D Graph: node representing the open file becomes gold with glow; connected nodes (via WikiLinks) become light-blue; unrelated nodes dim to 20% opacity
    • Click-to-navigate on 3D Graph: Three.js raycaster triggers loadFile() on node click; URL updates with ?file=<path> query param
    • Responsive layout: at viewport <1024px the 3D graph collapses to a 200px bottom panel; at <768px the tree collapses to a hamburger menu and graph hides entirely
  • One-line patch in vault.html: <script src="vault-custom.js"></script> before </body> (single source of upstream-merge friction)
  • 7-line patch in server.py: ?file=<path> query parameter support on /api/vault/file/ for clean URL navigation
  • docs/ARCHITECTURE.md: design rationale (why additive layer, why HermesCustom namespace, what tradeoffs we accepted)
  • docs/CUSTOMIZATIONS.md: feature spec with code pointers
  • README.md: Lukas-authored intro, Quick Start, customization guide, upstream-merge procedure

Preserved from upstream

  • Catppuccin-dark theme
  • Three.js 3D graph
  • File tree sidebar with collapsible folders
  • WikiLink resolution with search fallback
  • Full-text search
  • Frontmatter-as-card rendering
  • Python stdlib only (no Flask/FastAPI dependency)

Migration notes

If you're coming from upstream obv:

  1. python3 server.py --vault <your-vault> --host 127.0.0.1 --port 8765 works as before
  2. The Tailscale-URL gets ?file= query params on navigation (deep-linkable)
  3. Customizations only kick in if vault-custom.js is reachable from the same origin (it is, served by the same server.py)

v0.1.0 — 2026-04 — Upstream baseline

Forked from DanielCheer/obsidian-web-viewer @ commit master on 2026-07-16. No modifications yet.


Roadmap

Next planned additions (in priority order):

  • Backlinks panel — for each loaded file, show incoming WikiLinks (which other files link to this one). Adds a third collapsible panel on the right or merges into graph context menu.
  • Keyboard shortcuts:
    • j / k — next / previous file in current folder
    • [ / ] — back / forward in navigation history
    • g — focus 3D graph
    • / — focus search box
  • Light theme variant — Catppuccin-Light alongside Catppuccin-Dark, toggle in header
  • Recent files section — show last 10 visited files in tree sidebar
  • Graph filters — toggle to show only current-folder nodes, only connected nodes, etc.

Lukas' note: each new addition should remain in vault-custom.js. If it can't fit there cleanly, it's a sign that the addition deserves its own script tag (loaded after vault-custom.js).