Bump to 1.0.26: keep toolbar overflow menu on screen; add CHANGELOG

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.
This commit is contained in:
Daniel Anderson 2026-07-18 00:20:53 +10:00
parent d88d1e35c8
commit 49ec5fd0bf
7 changed files with 80 additions and 5 deletions

51
CHANGELOG.md Normal file
View file

@ -0,0 +1,51 @@
# Changelog
All notable user-facing changes to Visual Notes.
## 1.0.26
### Fixed
- The toolbar's "…" overflow menu could be cut off at the screen edge on smaller windows, leaving items unreachable (thanks to the first community bug report! 🎉). The menu now repositions itself to stay fully on screen for every toolbar position, and scrolls internally when the window is shorter than the menu.
## 1.0.25
### Fixed
- Restored compatibility with Obsidian 1.12 and earlier — versions 1.0.201.0.24 required a not-yet-released Obsidian 1.13 and could not be installed; the settings tab also rendered blank on 1.12. Minimum Obsidian version is back to 1.7.2.
## 1.0.24
### Added
- Image cards can now be created **from a web URL** (alongside vault and disk upload) — the image is hot-linked, nothing is stored in the vault.
## 1.0.23
### Fixed
- Group frame names were clipped by the frame's top edge; the name tab now renders fully visible straddling the border.
## 1.0.22
### Added
- New starter template: **Creative Studio Hub** — a film-production kanban, animation reference corner, and study desk showcasing every card type.
## 1.0.21
### Added
- New starter template: **Project Ideas** — a Milanote-style creative project moodboard.
## 1.0.12
### Added
- Right-click a checklist task to **delete** it.
## 1.0.11
### Added
- Checklist subtasks can now be created by **right-click → Make subtask** or by **dragging a task to the right** over its new parent, alongside the existing Tab / Shift+Tab shortcut.
## 1.0.1 1.0.19
- Plugin-review compliance work: Obsidian API modernisation (createEl helpers, setCssStyles, popout-window-safe timers, declarative settings), CSS compatibility fixes, release workflow with auto-generated notes, and the "Starfleet Technical Manual" starter template rework.
## 1.0.0
- Initial release.

View file

@ -1,7 +1,7 @@
{
"id": "visual-notes",
"name": "Visual Notes",
"version": "1.0.25",
"version": "1.0.26",
"minAppVersion": "1.7.2",
"description": "A visual workspace built on the Canvas format: nestable freeform boards, icon tile grids, kanban boards, sticky notes, checklists, columns, drawing with pen and highlighter, labels, reactions, and more.",
"author": "Daniel Anderson",

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "visual-notes",
"version": "1.0.25",
"version": "1.0.26",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "visual-notes",
"version": "1.0.25",
"version": "1.0.26",
"license": "MIT",
"dependencies": {
"sortablejs": "^1.15.7"

View file

@ -1,6 +1,6 @@
{
"name": "visual-notes",
"version": "1.0.25",
"version": "1.0.26",
"description": "Visual Notes — a visual workspace for Obsidian",
"main": "main.js",
"scripts": {

View file

@ -650,6 +650,24 @@ export const overlaysMethods = {
pop.style.left = `${aRect.right - cRect.left + 8}px`;
}
// Clamp into the container so the panel is never cut off at an edge —
// on short windows the "…" button sits near the toolbar's bottom and
// the anchor-aligned position above would run past the viewport
// (reported: menu items unreachable on small screens). Measure the
// rendered panel, convert whichever sides were set into top/left, and
// pull it fully inside; the CSS max-height makes it scroll instead of
// overflowing when the container is shorter than the menu itself.
const margin = 8;
const pRect = pop.getBoundingClientRect();
let top = pRect.top - cRect.top;
let left = pRect.left - cRect.left;
top = Math.max(margin, Math.min(top, cRect.height - margin - pRect.height));
left = Math.max(margin, Math.min(left, cRect.width - margin - pRect.width));
pop.style.top = `${top}px`;
pop.style.left = `${left}px`;
pop.style.bottom = '';
pop.style.right = '';
// Dismiss on outside click
const onOutside = (e: MouseEvent) => {
if (!pop.contains(e.target as Node) && e.target !== anchor) {

View file

@ -694,6 +694,11 @@ path.is-marquee-selected {
box-shadow: var(--ib-shadow-high);
z-index: 200;
min-width: 160px;
/* Never taller than the board area on very short windows the item
list scrolls instead of running off-screen (toggleOverflow clamps the
panel's position to match). */
max-height: calc(100% - 16px);
overflow-y: auto;
}
.visual-notes-tb-overflow-item {

View file

@ -24,5 +24,6 @@
"1.0.22": "1.13.0",
"1.0.23": "1.13.0",
"1.0.24": "1.13.0",
"1.0.25": "1.7.2"
"1.0.25": "1.7.2",
"1.0.26": "1.7.2"
}