DocShelf

by Oliver Im
5
4
3
2
1
Score: 51/100

Description

A home for Markdown and HTML notes scattered across projects, with link support for source lines

Reviews

No reviews yet.

Stats

0
stars
68
downloads
0
forks
10
days
3
days
3
days
41
total PRs
0
open PRs
1
closed PRs
40
merged PRs
1
total issues
0
open issues
1
closed issues
91
commits

Latest Version

4 days ago

Changelog

DocShelf for Obsidian 0.5.0 — desktop beta

Cite source lines directly from rendered HTML reports.

  • Select report text or right-click a block to highlight its source lines and copy a file.html:line-range reference. A copy button follows the highlighted selection as the report scrolls, and the view actions switch between the report and its selected source lines.
  • Report selections stay current after reloads and script-driven DOM changes. Clipboard actions validate the current selection and the injected button's placement; report scripts remain isolated from Obsidian's privileged environment, but the report DOM itself remains untrusted.
  • Report drags avoid activating the sidebar and forward releases outside the report even when the pointer immediately moves. Drifting double- and triple-clicks stop at the last block above the pointer.
  • An unset workspace root now defaults to your home directory. Explicit workspace settings still apply, and containment errors identify the requested path, resolved target, and allowed roots. Every source still requires registration and containment checks.
  • Contributors can replace an existing local plugin installation with npm run install:local. It stages files and retains rollback copies before replacement, preserves settings and recovery drafts, and reloads only a vault Obsidian already has open.

Install or update

Open the community listing for the installation link and current scorecard. For a manual install, download docshelf-0.5.0.zip, extract it, and copy its docshelf folder into <vault>/.obsidian/plugins/. To update an existing installation, save or review pending Markdown edits, disable DocShelf, and replace the plugin files while preserving data.json and recovery/. Re-enable the plugin afterward. SHA256SUMS covers the ZIP and standalone assets; the three standard install assets have GitHub provenance attestations.

Existing shelf files, routes, settings, read state, and recovery records remain compatible; no migration is required. Set an explicit workspace root if you want to retain a narrower default boundary.

Verification and limits

Requires desktop Obsidian 1.13.7 or later. Local runtime checks target macOS with Obsidian 1.13.7. Windows, Linux, and later Obsidian versions remain unverified; mobile is unsupported. Automated CDP input does not reproduce Electron's stray host events, so the runtime suite injects the relevant host event explicitly and unit tests cover delayed release ordering.

The aggregate tests, type and lint checks, builds, and package checks pass. The complete packaged 0.5.0 runtime suite passed in a disposable vault with no renderer errors. Regression tests exercise immediate movement after an outside release, delayed guest notification, failed installer copies and replacements, rollback failure, and preservation of private settings and recovery files.

README file from

Github

DocShelf

Browse Markdown and HTML documents across your projects.

Latest DocShelf for Obsidian release, including betas Download DocShelf for Obsidian ZIP

https://github.com/user-attachments/assets/c36997fb-03c5-4080-876f-6658b897e660

This showreel was made in one shot with Claude Opus 5.5.

Key features

  • A shelf across projects. Add files or folders where they live, and view their Markdown and HTML in Obsidian or in the browser. Folders are discovered recursively and update automatically.
  • Links to exact passages. Select Markdown source lines and copy a link to that document and line range. Links start with obsidian://docshelf for Obsidian or https://shelf.localhost/ for the web app after local setup.

DocShelf Web Demo

Why DocShelf?

Project notes, design documents, and agent-generated reports belong beside the work they describe. But as they spread across repositories, finding and reading them becomes a chore. DocShelf brings the documents you choose into one shelf, while also providing a way to select the lines, similar to GitHub permalink, to easily discuss the exact content with the agent.

Choose your app

Use either app independently, or point both at the same shelf.

DocShelf Web

Read Markdown, search across your local documents, and link to exact source lines. Runs as a local web app, without opening Obsidian. The web app never edits your originals.

DocShelf Web at shelf.localhost, displaying Markdown with selected source lines

DocShelf for Obsidian

Bring project documents into Obsidian without copying them into your vault. Edit local Markdown in the native editor, with changes saved to the original file, with conflict checks and recovery.

DocShelf in Obsidian with source lines 13–15 selected, followed by a terminal prompt referencing those lines

Browse HTML in either app

Open HTML reports alongside your Markdown notes. Reports keep their own layout, styling, and interactive elements; both apps display them without editing the source file.

The same HTML report displayed side by side in DocShelf Web (left) and DocShelf for Obsidian (right)

Web screenshot · Obsidian screenshot

Get started

Packaged Obsidian builds install without Git, Node.js, or the web app; see Install the Obsidian plugin. To build from source or run the web app, install Git and Node.js 24 or newer and clone DocShelf beside the projects you want to catalog:

mkdir -p ~/workspace
cd ~/workspace
git clone https://github.com/oliver-im/docshelf.git
cd docshelf
npm ci

Then follow the setup for your app.

Set up the web app

On macOS:

npm run setup

Open https://shelf.localhost/ when setup finishes. Your first shelf includes this README. Choose a document in the sidebar or use search to find a passage. DocShelf starts automatically when you log in; setup asks before administrator access or certificate trust changes.

For a foreground server on other platforms or without automatic startup, use npm run watch. See the web app setup guide for the address, first-shelf setup, and troubleshooting. The web app requires a filesystem with symbolic-link support; Windows is not yet verified.

Install the Obsidian plugin

Requires desktop Obsidian 1.13.7 or later. Open the community listing for the installation link and current review scorecard. Runtime verification of this desktop beta covers macOS with Obsidian 1.13.7; Windows, Linux, and Obsidian 1.14.2 are not yet verified.

Download DocShelf for Obsidian ZIP · Release notes

For manual installation, extract the ZIP and copy its docshelf folder into <vault>/.obsidian/plugins/. Enable DocShelf in Community plugins.

To produce that ZIP from this checkout:

npm run package:obsidian

The ZIP is written to packages/obsidian/dist/release/docshelf-X.Y.Z.zip, using the plugin version. You can also install the folder at packages/obsidian/dist/docshelf/ directly. When updating, disable DocShelf and copy the new files into the existing plugin folder, preserving data.json and recovery/.

Open DocShelf: Open shelf from the command palette and use Add… to choose a project, then files, folders, or a mixture. Right-clicking a project or document uses that project directly. On macOS, click Add in the picker to register the selection immediately. To use an existing shelf, choose it in DocShelf: Configure shelf. See adding files and folders for recursive discovery and the shared shelf format.

DocShelf reads explicitly registered files outside the vault so documents can remain in their project folders. Local Markdown edits save to the originals; settings and private recovery copies stay in the plugin directory. Interactive HTML runs through an isolated viewer and a token-protected loopback server. Reports and Markdown images may load HTTPS resources; GitHub Markdown uses raw.githubusercontent.com, and published Claude Artifacts use claude.ai and resources loaded by that page. There is no telemetry or account requirement. See file access and network disclosure.

Add documents with your agent

Install the very lightweight docshelf skill to add the documents to DocShelf easily:

npx skills add oliver-im/docshelf --skill docshelf -g

After creating a report or note, ask your agent:

Add this report to DocShelf.

The skill registers the original file, preserves existing shelf entries, checks the result, and returns links for your configured apps. It can also return a source-line reference for a specific passage.

When an agent later edits a document for you, it can mark the document unread in both apps. A Claude Code hook does this after every edit Claude makes, and other agents can run the same command. See agent edits and the event log.

To register documents manually, follow the web app registration guide or Obsidian registration guide.

Guides

License

MIT. Themes adapt Tokyo Night for Obsidian; the optional HTML theme also includes matcha.css. See the third-party notices.