Releases: emarpiee/obsidian-kambas
Release list
0.2.1
Bug Fixes & Improvements
GIF Controls & Transform Fixes
- Flip Transformation Support: Fixed an issue where horizontal (
kambas-img-flip-h) and vertical (kambas-img-flip-v) flipping CSS transforms were not applied to canvas-rendered GIFs when GIF controls were enabled. - Native Image Visibility Restoration: Resolved a issue where toggling off GIF controls caused canvas-rendered GIFs stored in the vault to visually disappear (leaving an empty container). This update now properly restores native
<img>elements upon control unmount/disabling.
Grayscale Palette Copying
- Dynamic Hex-to-Grayscale Color Copying: Fixed an issue where opening the color palette picker before enabling grayscale mode would copy the original node hex color instead of the grayscale color. Palette color copying now dynamically checks the active grayscale state and computes the grayscale hex value on the fly (
hexToGrayscale).
Full Changelog: 0.2.0...0.2.1
0.2.0
What's Change
Take full interactive control over animated GIF nodes directly on your canvas:
- Interactive Scrubber & Playback: Play/pause, step frame-by-frame, scrub through animation timelines, or change playback speeds (
0.25x,0.5x,1.0x,1.5x,2.0x). - Frame Extraction: Extract any single frame from an animated GIF as a static image saved directly to your vault or embedded inline within your
.canvasfile. - Multi-Select Synchronization: Play, pause, step, or seek across multiple selected GIF nodes simultaneously.
⚙️ Toggle GIF Controls via Settings or Command Palette
Want a clean, distraction-free canvas view? You can now enable or disable GIF controls on demand:
- Command Palette Action: Run
Toggle GIF controls on/offin the Command Palette to show or hide controls instantly. - Plugin Setting: Toggle Enable GIF controls in Obsidian Settings > Kambas.
- Instant Clean Up: Toggling off immediately cleans up active playback toolbars without affecting canvas node rendering.
🎨 UI & Layout Polish
- Fixed Frame Counter Jitter: Stabilized the frame counter badge using tabular numeric alignment (
font-variant-numeric: tabular-nums) and fixed minimum widths to prevent toolbar layout shifting when stepping between single and double-digit frame numbers. - Orphan Toolbar Fix: Prevented stale floating toolbars from persisting when deselecting GIF nodes or interacting with the canvas Tag Filter panel.
- Native Theme Styling: Aligned all toolbars, scrubbers, and controls with native Obsidian CSS design variables for consistent light/dark theme styling.
Full Changelog: 0.1.2...0.2.0
0.1.2
What's Change
- Selection Zoom-to-Fit: Instantly zoom to fit single or multi-node selections using a hotkey (
Spaceby default). Pressing the hotkey again toggles back to the canvas overview. - Enhanced Tag Management: Dynamic canvas hover highlighting for tagged items, custom tag colors, native context menus (Rename, Recolor, Delete), and active filter indicators on the canvas toolbar.
- Loupe Inspector Tool: Magnify canvas image details with customizable smooth panning controls.
- Media Naming & WebP Optimization: Complete control over vault media placement with customizable numbering formats (
01,I,A) and a WebP compression quality slider.
🏷️ Tag Panel & Canvas Filtering
- Canvas Hover Highlighting: Hovering over tags highlights matching canvas items using native Obsidian styling tokens.
- Native Context Menus: Replaced inline delete buttons with native menus offering Rename, Recolor, and Delete options.
- Toolbar & Filter Controls: Added a direct Clear Filters toolbar action, visible active filter counts, and chip management above the filter input.
- Custom Tag Colors: Color-code tags via the new
TagColorModal. - Panel Configuration: Added auto-close settings and layout constraints for cleaner side panels.
🔍 Selection Zoom & Visual Inspection
- Smart Zoom-to-Fit: Single key shortcut (
Space) to frame selected nodes cleanly without zooming while editing text. - Loupe Inspector: Detailed canvas inspection tool with customizable dampening and smoothing settings.
🖼️ Media Workflow & Compression
- Batch Naming Modal (
MediaFilenameModal): Customize naming prefixes and choose between zero-padded numbers (01), Roman numerals (I), or letters (A) when organizing media into vault folders. - WebP Compression Slider: Adjust image compression quality directly from settings (automatically skips vector SVGs and animated GIFs).
- Away Mode (Read-Only): Toggling Away Mode automatically locks the canvas into Obsidian’s native read-only state.
🌐 Localization & Popout Windows
- 100% i18n Translation: Full localization coverage across all supported UI languages for new modals, tools, and settings.
- Multi-Window Support: Resolved hotkey and double-click zoom behaviors in popout/secondary windows.
🛠️ Fixes & Polish
- Fixed live rendering of embedded Base64 images upon conversion.
- Preserved node tags and properties when converting vault media embeds.
- Standardized tag metrics terminology to "Items" across the UI.
Full Changelog: 0.1.1...0.1.2
0.1.1
What's Change
This release introduces one-click palette color exporting, active filter indicators, native canvas card color filtering, refined HSV extraction settings, and canvas rendering stability fixes.
🎨 Color Palette & Swatch Export
Quickly extract and export dominant color swatches directly from image nodes:
- One-Click Swatch Copy: A new Copy all button in the color palette overlay allows you to copy all extracted dominant hex values to your clipboard at once.
- Customizable Format Separator: Configure how copied swatches are delimited under Settings > Kambas > Palette color separator (e.g.
,, newline\n, space, or custom characters).
🔍 Enhanced Canvas Filtering & Active Indicators
The Filter Panel has been upgraded to provide clearer visual feedback and broader node coverage:
- Active Filter Tab Badges: A subtle indicator dot now highlights the Tags or Colors tab headers whenever active include or exclude filters are applied in that view, keeping filter state transparent at a glance.
- Native Card Color Filtering: The Colors tab can now optionally include native Obsidian canvas card colors (Red, Orange, Yellow, Green, Cyan, Purple, Gray), enabling unified color filtering across both media and text/card nodes.
- Refined HSV Extraction:
- Minor Accent Colors: Choose whether to include low-coverage accent colors or maintain focus strictly on primary dominant colors.
- Color Display Customization: Toggle text color names on or off next to swatches in the filter list.
- Intuitive Action Labeling: The manual extraction button has been updated to Scan canvas colors for clearer context.
🛠️ Improvements & Fixes
Canvas & Node Rendering
- Virtualized Node Image Flip: Resolved an issue where horizontal/vertical flip CSS classes detached when virtualized canvas nodes re-rendered during rapid panning or scrolling.
UI & Accessibility
- Search & Panel Controls: Enhanced contrast and hover feedback for the search clear (×) and panel header close buttons.
- Count Pluralization: Standardized node count badges across filter lists (
1 itemvsN items). - Tooltip Refinements: Eliminated duplicate tooltip triggers on the color palette action bar.
⚙️ Configuration Reference
| Setting | Description | Default |
|---|---|---|
| Palette color separator | Custom delimiter for copied palette hex codes (paletteCopySeparator). |
, |
| Include accent colors | Include low-coverage minor accent colors in HSV extraction (colorIncludeAccents). |
false |
| Display color names | Display text color names alongside swatches in filter list (colorShowName). |
true |
| Include card colors | Include native Obsidian canvas card border/background colors in filter panel (colorIncludeNodeColor). |
false |
Full Changelog: 0.1.0...0.1.1
0.1.0
What's Change
Version 0.1.0 introduces advanced visual asset organization capabilities for Obsidian Canvas. This release features dual-tab visual filtering by tags and extracted dominant colors, contextual node awareness, cross-highlighting, and enhanced media management for PureRef-style visual reference boards.
Key Features
1. Color Extraction & Palette Filtering
- HSV Color Classification: Automatically analyzes image pixel data to categorize canvas assets into 13 distinct chromatic and neutral color spectrums (Black, Gray, White, Red, Orange, Yellow, Green, Teal, Cyan, Blue, Indigo, Purple, Pink).
- Multi-Palette Attribution: Supports multiple color bucket associations per image asset.
- Configurable Extraction Modes: Offers Auto (background extraction upon opening the panel), Manual (on-demand extraction), and Disabled modes within plugin settings.
2. Dual-Tab Filtering Engine (Include / Exclude Logic)
- Three-State Filter Evaluation: Supports
Neutral,Include, andExcludestates per filter row. TheExcludestate takes precedence overIncluderules, allowing targeted sub-filtering. - In-View Contextual Intelligence: Dynamically counts and displays co-occurring tags and color spectrums present on currently visible viewport nodes, automatically prioritizing relevant filter options.
- Bidirectional Cross-Highlighting:
- Hovering over a color category renders a color-coded glow overlay across matching canvas image nodes.
- Hovering over an image node highlights its corresponding color buckets in the Filter Panel while dimming non-associated rows.
3. Smart Tagging & Metadata Preservation
- Batch Tag Formatting: Inputting comma-separated text automatically sanitizes and formats entries into standardized
kebab-casetag attributes. - Inline & File Conversion Safety: Preserves all custom
kambasTagsand metadata during conversions between embedded Base64 data URIs and vault attachment files. - Tag Badge Customization: Supports configurable badge placement (Outside-Below or Inside-Bottom-Left) and global badge visibility toggling via the Obsidian Command Palette.
Enhancements & Workflow Improvements
- Selection Guard: Restricts standard rubber-band selections and
Ctrl+A/Cmd+Aactions to active nodes only, preventing accidental mutation of filtered/dimmed assets. - Viewport Auto-Zoom: Toggling filter items automatically centers and scales the viewport to frame matching nodes. Auto-zoom behavior can be toggled via plugin settings or command palette.
- Panel Ergonomics: Added container bounds clamping on resize, sticky search header, undo/redo state synchronization, and enlarged delete touch targets.
Technical & Fixes
- Fixed inline CSS overrides on canvas nodes that previously interfered with filter dimming opacity.
- Optimized accent color extraction palette depth calculations.
- Corrected canvas alignment coordinate leakage during active filtering.
For detailed installation instructions and documentation, please refer to the Kambas README.
Full Changelog: 0.0.6...0.1.0
0.0.6
What's Change
Added
- Color palette extraction — Extract dominant colors from any image node and display them as a configurable swatch overlay (3–10 swatches) via a new Color palette context menu command and
kambasPalettemetadata. - Swap media modal — New Swap media… command replaces the current image or video node with another from your vault, a local file, or directly from your clipboard, preserving position and natural aspect ratio.
- Instant canvas live reload — Media swaps and transform changes now refresh the canvas immediately without requiring a manual reload.
Changed
- Updated all i18n labels from "image" to "media" across all supported locales for broader media type support (videos, embeds).
- Grayscale filter now propagates to node container elements
- Multi-select transform commands (flip/grayscale/palette) now use consistent on/off behavior instead of independent per-node toggling.
Fixed
- Grayscale filter not applying correctly across node types in multi-select scenarios.
- Multi-select image transforms toggling independently per node instead of uniformly.
- Transforms not persisting for virtualized nodes when scrolling into view.
- Paste position not capturing synchronous mouse coordinates for accurate media placement under cursor.
Maintenance
- Resolved all linter and typecheck errors for
npm run health. - Bumped
minAppVersionto 1.13.0.
Full Changelog: 0.0.5...0.0.6
0.0.5
Kambas Initial Release
PureRef-like Workflows & Embedded Media for Obsidian Canvas
Kambas transforms Obsidian Canvas into a PureRef-like visual environment tailored for mood boards, visual brainstorming, reference boards, and portable canvas notes, without cluttering your vault attachment directory.
🎨 Key Features
- Inline Base64 Data URI Embedding: Choose on paste/drop whether to save image attachments to your vault or embed them directly into the
.canvasfile JSON. Create 100% self-contained visual boards that can be moved, backed up, or shared independently. - Non-Destructive Image Manipulations:
- Flip Horizontal / Vertical: Mirror canvas image cards along the X or Y axis.
- Grayscale Toggle: Apply quick CSS grayscale filters for blueprinting or color-neutral reference viewing.
- Reset to Original Size: Restore modified images back to their natural width and height with a single click.
- Universal Node Transparency: Adjust opacity from 0% to 100% across image cards, text notes, file embeds, and canvas groups.
- Media Attachment Management: Batch convert vault file nodes into embedded Base64 cards (with optional deletion of source attachments), or move/copy referenced assets to target vault folders.
- Clean Canvas View: Hide raw Data URI / Base64 header banners on embedded cards for a clutter-free board layout.
- Keyboard Canvas Navigation: Smooth keyboard-driven panning (
WASD/ Arrow keys) and zooming (+/-) with customizable speed controls.
🛠 Metadata Persistence
All visual transformations (flips, filters, opacity, original bounds) are stored in each node's unknownData block inside the .canvas JSON file. Visual states persist across devices, vault syncs, and Obsidian restarts without altering your underlying image files.
📦 Installation
Manual Installation:
- Download
main.js,manifest.json, andstyles.cssfrom the assets section below. - Place all three files into your vault under
.obsidian/plugins/obsidian-kambas/. - Reload Obsidian and enable Kambas under Settings > Community Plugins.
💖 Support Development
If Kambas improves your visual workflow in Obsidian, feel free to support ongoing development on Ko-fi or PayPal.