mirror of
https://github.com/philemonchiro/obsidian-notekeeper.git
synced 2026-07-22 06:51:40 +00:00
Initial release: Notekeeper 0.1.0
A Google Keep-style masonry card view for Obsidian. Quick capture, inline edit, pin, color, archive, multi-select, lazy infinite scroll, smart search, three densities, and a markdown-rendered preview modal.
This commit is contained in:
commit
06b3bd4a35
8 changed files with 3253 additions and 0 deletions
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
node_modules/
|
||||
.DS_Store
|
||||
*.log
|
||||
data.json
|
||||
.env
|
||||
.env.local
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2026 Philemon Chiro
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
112
README.md
Normal file
112
README.md
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
# Notekeeper
|
||||
|
||||
A Google Keep–style masonry of cards for your Obsidian vault. Browse, capture, pin, color, archive, and filter your notes from one screen — without leaving the grid.
|
||||
|
||||
<!-- Add a screenshot here once you have one:
|
||||

|
||||
-->
|
||||
|
||||
## 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:
|
||||
|
||||
```yaml
|
||||
---
|
||||
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
|
||||
|
||||
All of these mutations happen via Obsidian's safe `processFrontMatter` API, so they preserve your existing frontmatter.
|
||||
|
||||
## 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](https://github.com/PhilemonChiro/obsidian-notekeeper/releases)
|
||||
2. Copy them into `<vault>/.obsidian/plugins/notekeeper/`
|
||||
3. Reload Obsidian and enable Notekeeper in Settings → Community plugins
|
||||
|
||||
## License
|
||||
|
||||
MIT — see [LICENSE](./LICENSE).
|
||||
11
manifest.json
Normal file
11
manifest.json
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"id": "notekeeper",
|
||||
"name": "Notekeeper",
|
||||
"version": "0.1.0",
|
||||
"minAppVersion": "1.4.0",
|
||||
"description": "Browse your vault as a Google Keep-style masonry of cards. Quick capture, pin, color, archive, and filter notes by labels — sticky-note style.",
|
||||
"author": "Philemon Chiro",
|
||||
"authorUrl": "https://github.com/PhilemonChiro",
|
||||
"fundingUrl": "",
|
||||
"isDesktopOnly": false
|
||||
}
|
||||
20
package.json
Normal file
20
package.json
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"name": "obsidian-notekeeper",
|
||||
"version": "0.1.0",
|
||||
"description": "Browse your vault as a Google Keep-style masonry of cards. Quick capture, pin, color, archive, and filter notes by labels.",
|
||||
"author": "Philemon Chiro",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "node esbuild.config.mjs",
|
||||
"build": "node esbuild.config.mjs production"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^20",
|
||||
"builtin-modules": "^3.3.0",
|
||||
"esbuild": "^0.21.0",
|
||||
"obsidian": "latest",
|
||||
"tslib": "^2.6.0",
|
||||
"typescript": "^5.4.0"
|
||||
}
|
||||
}
|
||||
1021
styles.css
Normal file
1021
styles.css
Normal file
File diff suppressed because it is too large
Load diff
3
versions.json
Normal file
3
versions.json
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"0.1.0": "1.4.0"
|
||||
}
|
||||
Loading…
Reference in a new issue