Commit graph

11 commits

Author SHA1 Message Date
Philemon Chiro
94d3f74406 Release 0.2.5
- New "Flat sticky notes" setting disables the per-card wall rotation.
  Requested by a Reddit user who wanted notes to sit perfectly straight.
- Drop the third-party "builtin-modules" dependency in favor of Node's
  built-in node:module.builtinModules — addresses a directory-scanner
  hygiene warning.
- Drop text-decoration-color on colored-card links, since it was only
  partially supported by Obsidian's bundled Chromium and the inherited
  underline color reads fine.
- Add CONTRIBUTING.md covering build, dev, PR conventions, and the
  release workflow.
2026-05-16 20:29:13 +02:00
Philemon Chiro
4e12371044 Release 0.2.4
- Search input no longer loses focus mid-typing while filtering (#2).
- All 36 !important declarations removed from styles.css in favor of
  selector-specificity bumps, clearing the directory scanner's
  '!important' finding.
2026-05-16 04:56:59 +02:00
Philemon Chiro
30315925e5 Release 0.2.3
Maintenance release that ships through the new tag-triggered workflow:
- Build now signs main.js / manifest.json / styles.css with GitHub
  artifact attestation, addressing the directory's missing-attestation
  finding on prior assets.
- pnpm install no longer aborts on the esbuild post-install script, so
  the directory's build verification runs cleanly.
- styles.css uses full 6-digit hex throughout.
2026-05-16 04:13:19 +02:00
Philemon Chiro
41a64a0fb3 Allow esbuild build script under pnpm
Portal CI installs with pnpm, which blocks postinstall scripts by default
and fails the build verification. Declare esbuild as an allowed builder
so pnpm install completes cleanly.
2026-05-16 04:07:58 +02:00
Philemon Chiro
83a09fec59 v0.2.2: light/dark theme polish across all surfaces
Single light-theme override block in styles.css covering:
- Cards (border, hover lift), card hover-action buttons, tag chips
- Active filter chip, sort/archive/density toolbar buttons
- Bulk-action floating bar, capture action buttons + Discard button
- Modal action buttons on uncolored notes

New theme-agnostic colored-surface treatment:
- Capture wrap gets has-pick-color when a color is chosen; title,
  body, placeholders, action icons and Discard button all flip
  to white so they remain legible against the dark color palette
- Card hover-action buttons on colored cards now have a dark
  translucent backdrop instead of just floating white icons
- Backlinks badge readability rules for both colored and light states

Wall view:
- New 'theme' wall background that uses Obsidian's
  --background-primary and --background-modifier-border for full
  theme adaptivity; this is the new default
- Light-theme variants for the dark-only walls (slate, blueprint,
  chalkboard, cork) so picking them in light mode doesn't crash
  a dark wall into a light card surface
- Wall card shadows lighter in light mode

Modal preview:
- Inherits the note color: paints the modal background, makes
  inner content transparent, lighter tag chips and code-block
  backgrounds for contrast
- Title, action buttons, and edit-mode textarea all forced to
  light colors when the modal has a note color
- Restored Obsidian's .modal-bg dim backdrop (was being set
  transparent, removing the dim overlay)
- Hidden Obsidian's built-in × close (it overlapped the action row)

Capture box:
- Auto-saves on focus loss with a 200ms grace window so the color
  popup doesn't trigger a premature save
- Title input no longer triggers save on Enter; plain Enter inserts
  a newline; ⌘/Ctrl + Enter saves explicitly
- Discard button next to Save
- Save button styled as mod-cta primary

Lint:
- Discard tooltip lowercased to satisfy ui/sentence-case
- document.activeElement → activeDocument.activeElement for
  popout-window compatibility (obsidianmd/prefer-active-doc)
2026-05-02 09:31:27 +02:00
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
Philemon Chiro
c3d9269f49 v0.2.0: wall mode and reviewer-bot async-no-await fixes
The bigger half is the new "wall" view: a sticky-note styled,
vertically-scrolled, curated subset of your notes.

- New density modes 'wall' and 'wall-compact' selectable from the
  toolbar. Wall is now the default density on fresh installs.
- Per-card sticky-note look: deterministic 1-3 degree rotation
  seeded by file path, paper-style drop shadow, hover lift to 0deg.
- Eight wall backgrounds (cork, whiteboard, slate, paper, graph,
  blueprint, linen, chalkboard) chosen from the settings tab.
  Default: slate.
- Walls are curated, not auto-filled. The wall starts empty; users
  add notes via the floating + button (FuzzySuggestModal picker)
  or via the empty state's "Fill from current view" shortcut
  (only offered when the current filter has <= 200 notes).
- Right-click any card on the wall: "Remove from wall".
- Command "Clear wall" (palette) wipes the current wall.
- The freeform-canvas prototype was scrapped in favor of the
  column layout after testing showed dragging cards onto a giant
  scattered canvas was unusable at vault scale.

Bot fixes:

- async onClose / async render / async make-trash arrow had no
  awaits. Made onClose and onOpen non-async (return Promise.resolve)
  to match Obsidian's signature; render is now sync; the trash arrow
  is sync too (its body's awaits are inside a ConfirmModal callback).
- Switched view content access from this.containerEl.children[1] to
  this.contentEl. Fixes a tab-switching ghosting bug — newer Obsidian
  versions can wrap views in extra layers, shifting the children
  index, so renders were occasionally landing on the wrong element.
  Per the developer docs, contentEl is the stable getter.
- The wall FAB moved from position: fixed to position: absolute
  inside the body container, so it disappears with its tab instead
  of bleeding across panes.
- Added @typescript-eslint/require-await to the local eslint config
  so the next round of these doesn't slip past.
2026-05-02 06:39:17 +02:00
Philemon Chiro
3ebc6f485a v0.1.2: address Obsidian community-store reviewer bot
Bumps minAppVersion to 1.7.2 (the lowest version where every API the
plugin uses is supported — processFrontMatter and revealLeaf were the
two that pushed this up).

ESLint pass against eslint-plugin-obsidianmd is now clean (0 errors,
0 warnings). Notable changes:

- Removes the deprecated MarkdownRenderer.renderMarkdown fallback;
  always uses MarkdownRenderer.render now (minAppVersion covers it)
- Replaces Workspace.activeLeaf reads with Workspace.getActiveViewOfType
- Replaces Vault.trash with FileManager.trashFile to respect the user's
  configured deletion preference
- Replaces window.confirm() with a small ConfirmModal so the bulk-delete
  prompt is consistent with the rest of the UI
- Dynamic style assignments now use HTMLElement.setCssStyles rather than
  el.style.* directly
- All static modal styling has been moved out of inline styles into CSS
  classes (keep-modal-stack, keep-modal-row, keep-modal-buttons, etc.)
- Async event handlers that returned Promise<void> where the listener
  expects void are now sync wrappers that internally void-await
- Empty catch blocks now have explanatory comments
- Removes 'this' aliasing in openNotePreview (uses arrow function instead)
- Drops unused vars and fixes sentence case in setting descriptions

Adds eslint.config.mjs with the obsidianmd recommended config so future
changes can be lint-checked locally before pushing.
2026-05-01 20:08:14 +02:00
Philemon Chiro
f0e35d868f Add TypeScript source and esbuild build pipeline
main.ts is now the canonical source; main.js is the compiled artifact
committed alongside so manual installs work without a build step. Class
signatures and the public types (KeepCardsSettings, Filter, ParsedQuery,
ColorDef, BatchState) are explicitly typed; tsconfig is lenient on
implicit any and null checks to keep the diff against the hand-authored
JS minimal for this initial port. Subsequent passes can tighten the
types incrementally.

Build: npm install && npm run build (or npm run dev for watch mode).

Addresses the reviewer note in the obsidian-releases PR about needing
the .ts source committed for transparency.
2026-04-30 12:48:00 +02:00
Philemon Chiro
6382d79426 v0.1.1: move pin and archive to plugin data; correct README claim about processFrontMatter
processFrontMatter parses YAML to a JS object and re-serializes — it
preserves data but not formatting (comments stripped, flow lists
become block lists, key order normalized, quote styles changed).
Previously every pin/archive/color flip silently reformatted the
user's frontmatter and bumped mtime, which also caused the card to
jump to the top of the recent-sorted grid.

All three (pin, archive, color) now live in the plugin's own
data.json keyed by file path. Frontmatter equivalents are still
read as a fallback for notes the user authored manually with
pinned: / archived: / color:. Storing an explicit false / null in
plugin data lets the UI override frontmatter when the user toggles
off via the picker.

Rename and delete events migrate or drop the entries.

The only remaining processFrontMatter writes are the explicit
user-initiated 'add tag to frontmatter' and 'rename tag across
vault' commands, where reformatting is acceptable because the
user opted in.
2026-04-30 12:29:02 +02:00
Philemon Chiro
06b3bd4a35 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.
2026-04-29 15:28:42 +02:00