Repository navigation
Releases: SixFiveMil/obsidian-canvas-sync
Release list
0.5.1
0.5.0
Release Summary (v0.5.0)
This release delivers major UX overhauls, Dataview/Tasks ecosystem compatibility, high-visibility Canvas Announcements ingestion, mobile responsiveness improvements for iOS/Android, and dynamic diagnostic capabilities.
✨ Major Features & Enhancements
-
📱 Mobile-Responsive UI & Platform Guardrails:
- Redesigned
CourseSelectModalwith dynamic responsive controls, 44px touch targets, mobile stacked action buttons, and scrollable container. - Guarded desktop-only features (
Platform.isMobile) for the Node.js extension bridge listener. - Removed regex lookbehinds for full iOS WebKit/Safari compatibility.
- Redesigned
-
🏷️ YAML Frontmatter Engine (Dataview & Tasks Integration):
- Added
enableYamlFrontmattersetting for assignments, discussions, pages, files, hubs, and announcements. - Generates typed frontmatter (
due,points,status,grade,score,canvas_type, and quoted[[wikilinks]]). - Seamlessly preserves student notes under
## 📝 Personal Noteswithout frontmatter collisions.
- Added
-
📢 Canvas Announcements Ingestion:
- Ingests instructor updates into
Announcements.mdand dedicated notes (Announcements/YYYY-MM-DD - [Title].md). - Highlights new announcements with prominent callout banners on
Home.mdandCourse.md. - Supports threaded student replies and attachments.
- Ingests instructor updates into
-
🎛️ Tabbed Settings UI:
- Replaced the monolithic settings page with responsive tabs:
🔑 Connection📋 Data Types📝 Formatting📦 Assets⏱️ Schedule🔍 Diagnostics
- Replaced the monolithic settings page with responsive tabs:
-
🔍 Course Capability & Permission Diagnostics:
- On-demand endpoint capability probe across 14 Canvas categories (Course Info, Modules, Pages, Assignments, Submissions, Announcements, Discussions, Quizzes, Assignment Groups, Module Files, Files, Calendar Events, Staff Contacts, To-Do Items).
- Multi-tier fallbacks: module wiki-pages for hidden Pages tabs, summary payload & Canvas Inbox for hidden Roster/People tabs.
- One-click masked diagnostics and Markdown report export.
-
📅 Dynamic Date Range Calculations:
- Dynamically calculates course date windows with
$\pm 60$ -day buffers for Announcements, Calendar Events, and To-Do queries to avoid Canvas's 14/30-day default cutoffs.
- Dynamically calculates course date windows with
🧪 Test & Validation Results
- Unit Tests: 106 tests passing across 11 test suites (
npm test). - Typecheck: Clean compilation with TypeScript 5.8 (
npm run typecheck). - Build: Zero-bundle-leakage production build with esbuild (
npm run build).
0.4.1
🎓 Canvas Sync Bridge v0.4.1
What's New in v0.4.1
This release brings significant improvements to sync reliability, introduces configurable background auto-sync directly inside the course modal, ensures your personal student notes are preserved seamlessly without HTML comment clutter, adds sync timestamp headers across all synced pages, and resolves critical filesystem and vault collision issues.
✨ Features & Enhancements
-
⏱️ Scheduled Background Sync & In-Modal Controls:
- You can now choose your preferred auto-sync interval (
15m,30m,1h,2h,4h,6h,12h,24h) directly inside the Course Selection modal. - Added a "Save for Auto-Sync" button to configure recurring background syncing for selected courses without running an immediate foreground sync.
- Auto-sync runs quietly in the background without freezing or interrupting your Obsidian workflow.
- You can now choose your preferred auto-sync interval (
-
🕒 "Last Synced" Timestamps on Every Synced Document:
- Added localized timestamps across all generated markdown files (
Course.md,Home.md,Syllabus.md,00 - Module Overview.md, module content items,Tasks.md,Grades.md,Discussions.md, andCalendar.md) so you always know when your notes were last updated.
- Added localized timestamps across all generated markdown files (
-
📝 Clean Personal Notes Preservation:
- Any personal notes written under the
## 📝 Personal Notesheading are automatically extracted and re-inserted across syncs without exposing ugly comment tags (<!-- %% ... %% -->).
- Any personal notes written under the
-
📢 Clear Course Status Notices:
- Visual notices now clearly distinguish between new courses (
Created course: <Course Name>) and resynced courses (Updated course: <Course Name>).
- Visual notices now clearly distinguish between new courses (
🐛 Bug Fixes & Reliability Improvements
-
Fix
ENAMETOOLONGError on Long Module Items:- Module titles and headers containing lengthy descriptions or paragraphs are now safely capped at 100 characters while stripping illegal filename characters and preserving asset extensions (e.g.
.pdf,.png).
- Module titles and headers containing lengthy descriptions or paragraphs are now safely capped at 100 characters while stripping illegal filename characters and preserving asset extensions (e.g.
-
Fix "File already exists" Error on Course Resync:
- Renamed the internal sync manifest to
_canvas-sync-manifest.json, resolving an issue where Obsidian's dotfile filter prevented cache tracking. - Added exhaustive case-insensitive vault matching and graceful collision recovery to prevent unhandled vault errors during resyncs.
- Renamed the internal sync manifest to
-
Zero Obsidian Linter Warnings:
- Cleaned up development logging to strictly comply with Obsidian's official developer guidelines (
[no-console]).
- Cleaned up development logging to strictly comply with Obsidian's official developer guidelines (
📦 Installation & Update
- Community Plugins (Recommended): Check for updates in Obsidian Settings → Community Plugins → Check for updates.
- Manual Installation:
- Download
main.js,manifest.json, andstyles.cssfrom the release assets below. - Copy them into your vault's plugin directory:
<vault>/.obsidian/plugins/canvas-sync-bridge/. - Reload Obsidian and enable the plugin.
- Download
0.4.0
Ran command: git log 0.3.1..0.4.0 --oneline
Ran command: git log 0.3.1..0.4.0 --stat
Here are the release notes for v0.4.0, ready to copy and paste into your GitHub Release:
Canvas Sync Bridge v0.4.0
What's New in v0.4.0
🛡️ Official Obsidian Workflow & Community Directory CI/CD
- Integrated
obsidianmd/obsidian-workflows: CI and release pipelines now validate against official Obsidian community directory requirements, manifest schema, and version constraints. - Scanner Linting: Added automated verification using official
eslint-plugin-obsidianmd(with type-aware rules) andstylelint. - SLSA Provenance Attestation: Release assets are now cryptographically attested via Sigstore and GitHub OIDC.
🎨 Plugin UI & Styles
- Tracked
styles.css: Bundled and validated plugin stylesheets using native Obsidian CSS variables for seamless light/dark theme adaptation across course selectors, badges, progress trackers, and connection status views.
📱 Mobile & Popout Compatibility Improvements
- Popout Window Safety: Migrated
globalThiscalls to context-awarewindowreferences for Obsidian popout windows. - Safe Dynamic Node Modules: Desktop-specific
httpbridge server modules are resolved dynamically guarded byPlatform.isDesktopchecks for mobile safety. - Clean Codebase: Removed all forbidden disable directives, debug loggers, and unused imports.
🧪 Diagnostic Tooling & Test Suite
- Added diagnostic scripts (
test-bridge.mjs/test-bridge.ps1) for local bridge listener verification. - Expanded guideline guard tests to 53 passing automated tests across 7 test suites.
📦 Release Assets
main.js– Bundled plugin codemanifest.json– Plugin manifest (0.4.0)styles.css– Plugin UI stylesheet
Full Commit Log
0c436070.4.0cd198b4feat(styles): add initial styles for Canvas Sync Bridge Pluginaf41cd1refactor(workflows): rename jobs for clarity and update validation stepse5c569efix(guidelines): replace globalThis with window for popout window compatibilityf003533fix(linter): resolve directive comments, remove console logging and unused imports6a606cafix(tests): ensure proper exit status handling in diagnostic scripts397afb1fix(bridge): resolve desktop http module dynamically with native require0c5ca44feat(diagnostics): add bridge listener diagnostic test script
0.3.1
Full Changelog: 0.3.0...0.3.1
Full Changelog: 0.3.0...0.3.1
Full Changelog: 0.3.0...0.3.1
Full Changelog: 0.3.0...0.3.1
Full Changelog: 0.3.0...0.3.1
Full Changelog: 0.3.0...0.3.1
Full Changelog: 0.3.0...0.3.1