Commonplace Notes

by zachmueller
5
4
3
2
1
Score: 51/100

Description

Reviews

No reviews yet.

Stats

6
stars
499
downloads
1
forks
71
days
63
days
63
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
161
commits

Latest Version

2 months ago

Changelog

New Features

  • Deploy hooks: Added a per-profile infra-lifecycle deploy hooks subsystem. Drop pre-deploy-hook / post-deploy-hook notes into a profile's hooks/ folder and they run at full-stack settle points (deployment wizard, auth Lambda, password gate). Hooks receive an injected AWS handle (per-service client factories, raw credentials, and @aws-sdk/client-* Command namespaces) plus a typed deploy context; they run for side effects and never fail the deploy. A new per-profile "Deploy hooks" settings section provides validate and export-example buttons.
  • Open note by UID: Added a custom obsidian://commonplace-notes?action=open-uid&uid=... URI that resolves a cpn-uid to its note and opens it in a new tab (or reveals an already-open pane), with Notices for missing/unknown/duplicate UIDs.
  • Copy code fences: Rendered code blocks on the published site now show a copy-to-clipboard button on hover (always visible on touch), with a checkmark confirmation on copy.
  • Human-readable ~ URL type for title/slug links. Note URLs can now use #/~{slug} as a more readable alternative to the internal #/t{slug} title-type code. Both forms resolve identically (including for ;diff= sub-targets), and ~ is now the canonical form: inbound t links are automatically normalized to ~ on load, so the address bar, panel identity, and dataset all display the ~ form consistently.

UI Polish

  • Added an animated loading Notice ("Writing N notes to staging" → "✓ N notes staged") covering the previously-silent per-note write-out step during publish.

README file from

Github

Commonplace Notes

Commonplace Notes (CPN) is an Obsidian plugin that publishes a curated subset of your vault as a fast, stacked-panes static site — the kind where clicking a link opens the target note in a new column beside the current one, so a reader can follow a train of thought without losing their place. Sites are self-hosted on AWS (S3 + CloudFront), notes are private by default (nothing publishes until you opt a note in), each note gets a stable per-note UID that drives its URL, and the Markdown→HTML pipeline is fully user-extensible. CPN is desktop-only.

Status

Beta (0.2.0, requires Obsidian 1.0.0+). Installed and updated via BRAT. See Getting started for the full install + first-publish walkthrough.

Quick start

The 60-second path (assumes the plugin is installed and enabled):

  1. Open Settings → Commonplace Notes and confirm the default profile.
  2. Deploy AWS infrastructure with the Deploy publishing infrastructure command (or point the profile at an existing bucket). See Infrastructure deployment.
  3. Open a note and run Toggle publishing context: to opt it in (this adds the profile to cpn-publish-contexts; a cpn-uid is generated automatically).
  4. Run Publish current note.
  5. Run Copy link to current note URL and open it in a browser.

New here? Getting started walks through all of this in detail.

Documentation

Key concepts at a glance

  • Publishing profile — a named publish target (bucket, base URL, infra, look & feel). Multiple profiles let one vault feed multiple sites.
  • Publish context — a profile ID listed in a note's cpn-publish-contexts; it's how a note opts in to a site.
  • UID — a stable per-note identifier (cpn-uid) that drives the site URL, generated the first time a note gains a publish context.
  • Stacked URLs — links that open several notes side by side in one view.

Full definitions in the concept glossary.

Building from source

Contributors (end users should use BRAT):

nvm use          # Node 24 (see .nvmrc)
npm install
npm run build    # tsc typecheck + esbuild production bundle → main.js
npm run dev      # esbuild watch mode

The build emits main.js; the plugin ships main.js, manifest.json, and styles.css. Note the npm package name is commonplace-notes-publisher, but the Obsidian plugin ID (in manifest.json, and used at app.plugins.plugins['commonplace-notes']) is commonplace-notes.

Contributing & license

Contributions are welcome — open an issue or PR at zachmueller/commonplace-notes.

Licensed under the MIT License.