No description
Find a file
Philemon Chiro 5659633ad8 v0.2.1: capture redesign + colored modal + wall polish
Capture box (Keep parity):
- Title input above body, both visible only when capture is focused
- Discard button next to a primary Save button
- Pin and color toggles in the action row; picking a color tints the
  whole capture box so you preview the sticky color before saving
- Auto-save on focus loss (200ms grace so the color popup menu doesn't
  trigger a premature save)
- Plain Enter inserts a newline; cmd/ctrl-Enter saves
- Title typography: 20px / 500 weight, divider between title and body,
  inputs are flush (no nested borders)
- Capture also auto-adds the new note to the current wall when in
  wall mode

Wall view:
- Pinned cards float to the top in pinOrder
- 3D pushpin head on pinned wall cards (red gradient + drop shadow,
  softer shadow on light backgrounds)
- Removed the floating + add button (redundant with the capture box)
- Removed the wall switcher dropdown; one implicit wall, exposed via
  a 'Clear wall' command in the palette

Modal preview:
- Inherits the note's color: paints the modal background, transparent
  inner panels, lighter tag chips and code-block backgrounds for
  contrast on the dark color palette
- Hidden Obsidian's built-in × close (overlapped with the action row);
  Esc / click-outside / Open-in-tab still close

Bulk actions:
- 40px buttons with 20px icons (was 32/16) for better legibility,
  vertical divider between count and actions

Async/await cleanup:
- onOpen, onClose, render, and the bulk-trash handler no longer
  declare async without an await; require-await passes locally
2026-05-02 08:25:24 +02:00
docs Add screenshots: grid view and note preview modal 2026-04-29 16:15:17 +02:00
.gitignore v0.1.2: address Obsidian community-store reviewer bot 2026-05-01 20:08:14 +02:00
esbuild.config.mjs Add TypeScript source and esbuild build pipeline 2026-04-30 12:48:00 +02:00
eslint.config.mjs v0.2.0: wall mode and reviewer-bot async-no-await fixes 2026-05-02 06:39:17 +02:00
LICENSE Initial release: Notekeeper 0.1.0 2026-04-29 15:28:42 +02:00
main.js v0.2.1: capture redesign + colored modal + wall polish 2026-05-02 08:25:24 +02:00
main.ts v0.2.1: capture redesign + colored modal + wall polish 2026-05-02 08:25:24 +02:00
manifest.json v0.2.1: capture redesign + colored modal + wall polish 2026-05-02 08:25:24 +02:00
package-lock.json v0.1.2: address Obsidian community-store reviewer bot 2026-05-01 20:08:14 +02:00
package.json v0.2.1: capture redesign + colored modal + wall polish 2026-05-02 08:25:24 +02:00
README.md Add TypeScript source and esbuild build pipeline 2026-04-30 12:48:00 +02:00
styles.css v0.2.1: capture redesign + colored modal + wall polish 2026-05-02 08:25:24 +02:00
tsconfig.json v0.1.2: address Obsidian community-store reviewer bot 2026-05-01 20:08:14 +02:00
versions.json v0.2.1: capture redesign + colored modal + wall polish 2026-05-02 08:25:24 +02:00

Notekeeper

A Google Keepstyle masonry of cards for your Obsidian vault. Browse, capture, pin, color, archive, and filter your notes from one screen — without leaving the grid.

Grid view of notes laid out as a masonry of cards, with PINNED and OTHERS sections, varied colors, tags, and inline lists

Click any card to open a full markdown-rendered preview with one-click pin / edit / color / archive / open-in-tab actions:

Note preview modal showing a Python code snippet with syntax highlighting

Features

  • Masonry card layout — every note as a card, sized to its content, balanced across columns
  • Quick capture — type into the centered input, hit Enter to create a note
  • Inline edit — click the pencil to edit a card without leaving the view
  • Note preview modal — click any card to open a full markdown-rendered preview with one-click pin / color / archive / open-in-tab actions
  • Pin, color, archive — per-card hover actions; 12-color palette
  • Drag pinned cards to reorder them
  • Multi-select — shift- or cmd-click to select multiple cards; bulk pin / archive / color / delete from a floating action bar
  • Right-click context menu — rename, copy link, copy embed, open in new pane, delete
  • Inline checkboxes- [ ] items render as live checkboxes that update the source file
  • Image thumbnails — first attached image surfaces at the top of each card
  • Backlinks badge — count of incoming links on each card
  • Smart search — combine free text with tag:, pinned:, archived:, color:, path:, is: filters
  • Sort by modified, created, or title — pinned cards always float to the top
  • Three densities — comfortable, compact, list view
  • Lazy infinite scroll — fast on vaults with thousands of notes; cards populate only as they scroll into view
  • Auto-collapse side panes — Obsidian's left and right sidebars collapse while the card view is active and restore when you leave
  • Keyboard navigation — arrow keys, Enter, e (edit), p (pin), a (archive), x (select), / (focus search)
  • Tag chips are clickable — filter by any label with one click; clear with the active-filter chip's ×
  • Manage labels command — rename a tag across the whole vault and assign per-tag colors

Frontmatter conventions

Cards read these fields from each note's YAML frontmatter:

---
pinned: true
color: "#5c2b29"
archived: false
tags: [ideas, work]
pinOrder: 1
---
  • pinned: true floats the card to the top
  • color paints the card background (or a left border, depending on settings)
  • archived: true hides the card from the default view; toggle the archive button in the toolbar to see it
  • tags populate the searchable label list
  • pinOrder (number) controls the order among pinned cards; updated automatically when you drag

By default Notekeeper stores pinned, archived, and color in its own data.json keyed by file path — not in your notes' frontmatter — so toggling them doesn't touch the file or bump its mtime. Frontmatter values are still read as a fallback so notes you've authored manually with these fields keep working.

Search syntax

Type any of these in the search box:

Token Meaning
tag:foo Notes carrying the foo tag (frontmatter or inline)
pinned:true / pinned:false Filter by pin state
archived:true Show only archived notes
color:#5c2b29 Notes with this exact color
path:Inbox Notes whose path includes "Inbox"
is:archived, is:pinned Shortcuts for the above
Free text Matches title and path

Combine freely: tag:work pinned:true urgent

Keyboard shortcuts

When the card view has focus:

Key Action
/ Focus the search box
↑ ↓ ← → Move focus between cards
Enter Open the focused card in the preview modal
e Begin inline edit on the focused card
p Toggle pin
a Toggle archive
x Toggle selection
Esc Clear selection / exit edit mode

Settings

  • Notes folder — limit the card view to a single folder (leave empty for the entire vault)
  • Preview lines — body lines visible on each card
  • Color as left border — show note color as a 4px left border instead of the full card background
  • Pinned section header — group pinned cards under a "PINNED / OTHERS" divider
  • Show image thumbnails — render the first attached image on each card
  • Auto-collapse sidebars in card view — collapse Obsidian's side panes while the card view is active

Commands

  • Open card view — opens the masonry view in a new tab (also accessible via the ribbon icon)
  • Manage labels — opens a modal listing every tag in your vault, with rename and color actions

Installation

From the community plugin store (after approval)

Open Obsidian → Settings → Community plugins → Browse, search "Notekeeper", install, and enable.

Manual install

  1. Download main.js, manifest.json, and styles.css from the latest release
  2. Copy them into <vault>/.obsidian/plugins/notekeeper/
  3. Reload Obsidian and enable Notekeeper in Settings → Community plugins

Development

Source lives in main.ts. The committed main.js is what Obsidian loads at runtime; rebuild it with esbuild after editing main.ts:

npm install
npm run build      # type-check + bundle to main.js
npm run dev        # rebuild on save

main.ts, manifest.json, and styles.css are the authored sources. The main.js artifact is produced by the build and committed alongside (so manual installs work without a build step).

PRs welcome. The codebase is single-file by design — keep it that way unless the addition is large enough to warrant its own module.

License

MIT — see LICENSE.