A tile could target the very board it lives on, producing a "dead end"
tile that appeared to do nothing when clicked — reported as "cannot
get into my canvas" after the user's grid board's target picker
offered (and they picked) itself, likely the only entry in a fresh
vault. TileModal's board/canvas pickers now exclude the current board,
saving a self-link is refused, and clicking an already-saved
self-linked tile explains the problem instead of silently doing
nothing (view.ts's navigateToBoard).
Also relabels the New Board dialog ("Canvas"/"Tile grid" instead of
"Freeform"/"Grid", canvas now the default — the grid default was part
of how the user ended up here) and adds a small layout badge to every
board's header, since grid and canvas boards are otherwise visually
identical (same extension, same icon).
The note's background fill layer (.visual-notes-sticky-shape-fill) is
position:absolute with z-index:0, which gave it its own stacking
context that always painted above the top strip regardless of DOM
order, since the strip had no positioning/z-index of its own — so
picking a top strip color for a note did nothing visible (bug #8).
Fixed with a scoped CSS rule raising the strip above the fill, plus
matching the DOM insertion order used at initial render.
Also wires TextFormatToolbar into the note's inline editor, same as
checklist/kanban item text already had — selecting text in a note now
shows the same Bold/Italic/Underline/Strikethrough + Color/Highlight
popup, closing the gap the bug report asked about (font color was
previously unavailable for notes entirely).
Root cause (bug #4): input.visual-notes-checklist-cb forced native OS
checkbox rendering (appearance: checkbox) on top of Obsidian's own
theme-drawn checkmark, which every other checkbox in the app (including
plain markdown task-list checkboxes) gets from appearance: none plus a
theme-drawn mark. The two checkmarks overlapped — invisible on themes
where they happened to render the same colour, visibly doubled where
they didn't.
Removed the appearance override entirely so this checkbox matches every
other checkbox in Obsidian, in any theme. Also switched display: block
to a centered flex box (align-items/justify-content: center) so the
theme-drawn mark centers properly within the 14px box.
Fixes the first community-reported issue: on smaller windows the
toolbar's "..." overflow menu was anchor-aligned with no edge awareness,
so items past the viewport bottom were unreachable. The panel now
measures itself after rendering and clamps fully inside the board area
(8px margin) for all four toolbar positions, and caps its height with
internal scrolling when the window is shorter than the menu itself.
Also adds CHANGELOG.md covering the release history to date.
The group frame's name tab straddles the top border (top: -13px), but
the base card rule's content-visibility: auto implies paint containment,
which clips all descendants to the card box — cutting off the tab's top
half. Opt group cards out with content-visibility: visible; a group is
just a border plus one label, so it contributes nothing to the
large-board rendering cost content-visibility exists to solve.
Three releases (1.0.13, 1.0.16, 1.0.17) failed Obsidian's review with
"attestation exists but signature is invalid or does not match this
repository" despite trying attest-build-provenance v1, v2, and
actions/attest v4. Decoding the actual published bundles via the
attestations API shows they are well-formed sigstore v0.3 bundles whose
Fulcio certificates correctly identify this repo and workflow — the
verification failure is on the checker's side and not fixable from here.
Since a present-but-unverifiable attestation is a review Error while a
missing one is only a Recommendation, the attest step is removed
(comment in the workflow explains why, so it doesn't get re-added
blindly).
Attestations are permanent and keyed by file digest, and source didn't
change across 1.0.13-1.0.17, so the old broken attestations still cover
the current main.js/styles.css bytes. To escape them:
- esbuild now emits a version-stamped banner comment in main.js (also
makes installed copies identifiable)
- styles.css header comment gains the repo URL
Verified via the API that the new digests have zero attestations.
Adds two more ways to nest a checklist item under a section header or
preceding top-level task, alongside the existing Tab/Shift+Tab shortcut:
- Right-click a task for "Make subtask" / "Remove subtask", shown only
when there's actually something to do (headers and orphan first items
don't get a menu, so right-click falls through to the card's own menu).
- Drag a task noticeably to the right while hovering another eligible
task/header to nest it there instead of just reordering it (highlights
the target row during the drag).
Factored the indent/outdent logic (previously only inline in the Tab
keydown handler) into shared findChecklistIndentTarget/indentChecklistItem/
outdentChecklistItem methods used by all three entry points.
Drops the triangle shape option for blank sticky notes, which was the
only user of CSS clip-path in the stylesheet. Removes the
obsidianmd css-clip-path browser-compat warning entirely rather than
keep relying on a feature the review tool flags against an old Obsidian
baseline. Rectangle and round/oval shapes are unaffected.
- Adds a -webkit-clip-path fallback alongside the standard clip-path
property on the triangle blank-card shape (flagged as only partially
supported on Obsidian 1.6.5's bundled Chromium).
- Replaces column-gap/row-gap on a `display: grid` container with the
`gap` shorthand — the review's "multicolumn" compat check doesn't
distinguish CSS Grid's column-gap from the legacy multi-column-layout
property of the same name, so this was a false positive, but the
shorthand sidesteps the ambiguity entirely.
- Removes the last !important: a dragged card's lifted z-index only
needed it because a card's z-index was set as a literal inline style
(always wins the cascade over any class rule). Routes it through a
--card-z custom property instead, so .is-lifted's two-class selector
naturally outranks the base one-class rule without !important. Also
updates the two other call sites (bring-to-front/send-to-back) that
were setting the same inline z-index, so all three stay consistent.
Obsidian's plugin review flags direct el.style.x = y writes
(obsidianmd/no-static-styles-assignment). Fixes the 16 flagged call
sites: purely static ones move into existing (or extended) CSS
classes where the styling was already redundant with the stylesheet,
and the rest switch to setCssStyles so behavior is unchanged.