- Tokens placed per-hex link to vault notes; support circle/square shape,
sm/md/lg size, fill color, optional border color, icon, and description
- TokenInfoModal shows note content (formatted via MarkdownRenderer, images
included) with jump-to-hex, open-note, edit, and two-step remove actions
- Edit flow reopens TokenModal pre-filled; proxy notes handle multiple tokens
referencing the same source note
- Icon picker replaced with scrollable palette grid (2-row cap, drag-to-reorder,
hide/show) in both HexEditorModal and TokenModal; order persisted in settings
- Token layer toggle added to layers menu (default on)
- Fix metadata-cache race on token delete (wasToken check prevents missed updates)
- Token preview rendered inline in TokenModal title row; real-time color preview
via native input event on color pickers
- Bump version to 1.1.6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix map pixelation on zoom: bake CSS scale() into viewport font-size after
scroll wheel settles so the DOM renders natively at the zoomed resolution
instead of upscaling a compositor bitmap; redraw SVG overlays after bake
- Fix terrain brush size persisting when switching to icon tool: reset
paintBrushSize to 1 on icon mode entry
- Add shrink (−) buttons paired with each expand (+) button: fade in on hover,
positioned to the right for top/bottom and below for left/right; clicking a
clean row/col shrinks immediately and trashes the hex notes; clicking a dirty
row/col shows a red OK? confirm state (3 s timeout) before deleting
- Fix stale terrain showing after delete+re-expand: pass null terrain/icon
overrides for newly-added edge hexes so cached frontmatter from deleted files
cannot bleed through
- Add iconsFolder to onboarding wizard folder generation step
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Override onExternalSettingsChange() so Obsidian Sync delivering a new
data.json from another device immediately reloads settings and refreshes
all open HexMapView and HexTableView instances — no manual restart needed
- Add autoRegisterMapsFromVault() on startup: scans hexFolder subfolders and
registers any that are missing from settings.maps, inferring grid size and
offset from the x_y.md filenames. Handles the case where data.json arrives
stale or empty but the vault folders already exist (e.g. sync timing, first
install on a new device)
Closes#4
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace hover-fade "Delete" button with a fixed 20×20px ✕ button always
visible in each map row
- Hide the ✕ entirely when only one map remains (deletion blocked)
- Remove red background from confirmation row; use muted text instead
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New SetupWizardView (ItemView): 4-step welcome → folders → map → done
- Wizard auto-opens on first install (setupComplete/setupDismissed flags)
- Folder step creates all world subfolders and ensures hex template exists
- Map step creates the first hex grid; done step shows recommended next steps
- "Open hex map" from done step opens map with terrain picker + toolbar open
- Re-run wizard button added to settings tab
- Fix: loadAvailableIcons() now runs inside onLayoutReady (vault readiness)
- Fix: migrateHexFilesToDefaultRegion() no longer creates world/hexes/default
on fresh installs — scans candidates first, early-returns if none found
- Fix: loadHexTemplate() falls back to built-in default instead of returning null
- Fix: terrain toolbar button re-opens picker when clicked while active
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Remove unnecessary type assertions in IconPickerModal (createEl("input") already returns HTMLInputElement)
- Fix sentence-case violation: "Remove GM icon" → "Remove icon" in HexEditorModal tooltip
- Annotate frontmatter["region"] accesses as unknown to satisfy no-unsafe-assignment
- Wire npm run lint into /rebuild command so issues are caught locally before submission
- Document no-unnecessary-type-assertion and mid-sentence acronym patterns in /lint guidance
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>