Skip to content

Releases: SixFiveMil/obsidian-canvas-sync

0.5.1

Choose a tag to compare

@github-actions github-actions released this 22 Sep 15:16

Updated Documentation

0.5.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 14:00

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

  1. 📱 Mobile-Responsive UI & Platform Guardrails:

    • Redesigned CourseSelectModal with 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.
  2. 🏷️ YAML Frontmatter Engine (Dataview & Tasks Integration):

    • Added enableYamlFrontmatter setting 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 Notes without frontmatter collisions.
  3. 📢 Canvas Announcements Ingestion:

    • Ingests instructor updates into Announcements.md and dedicated notes (Announcements/YYYY-MM-DD - [Title].md).
    • Highlights new announcements with prominent callout banners on Home.md and Course.md.
    • Supports threaded student replies and attachments.
  4. 🎛️ Tabbed Settings UI:

    • Replaced the monolithic settings page with responsive tabs:
      • 🔑 Connection
      • 📋 Data Types
      • 📝 Formatting
      • 📦 Assets
      • ⏱️ Schedule
      • 🔍 Diagnostics
  5. 🔍 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.
  6. 📅 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.

🧪 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

Choose a tag to compare

@github-actions github-actions released this 18 Sep 19:06
80450b7

🎓 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.
  • 🕒 "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, and Calendar.md) so you always know when your notes were last updated.
  • 📝 Clean Personal Notes Preservation:

    • Any personal notes written under the ## 📝 Personal Notes heading are automatically extracted and re-inserted across syncs without exposing ugly comment tags (<!-- %% ... %% -->).
  • 📢 Clear Course Status Notices:

    • Visual notices now clearly distinguish between new courses (Created course: <Course Name>) and resynced courses (Updated course: <Course Name>).

🐛 Bug Fixes & Reliability Improvements

  • Fix ENAMETOOLONG Error 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).
  • 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.
  • Zero Obsidian Linter Warnings:

    • Cleaned up development logging to strictly comply with Obsidian's official developer guidelines ([no-console]).

📦 Installation & Update

  1. Community Plugins (Recommended): Check for updates in Obsidian Settings → Community Plugins → Check for updates.
  2. Manual Installation:
    • Download main.js, manifest.json, and styles.css from the release assets below.
    • Copy them into your vault's plugin directory: <vault>/.obsidian/plugins/canvas-sync-bridge/.
    • Reload Obsidian and enable the plugin.

0.4.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 13:58

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) and stylelint.
  • 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 globalThis calls to context-aware window references for Obsidian popout windows.
  • Safe Dynamic Node Modules: Desktop-specific http bridge server modules are resolved dynamically guarded by Platform.isDesktop checks 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 code
  • manifest.json – Plugin manifest (0.4.0)
  • styles.css – Plugin UI stylesheet

Full Commit Log

  • 0c43607 0.4.0
  • cd198b4 feat(styles): add initial styles for Canvas Sync Bridge Plugin
  • af41cd1 refactor(workflows): rename jobs for clarity and update validation steps
  • e5c569e fix(guidelines): replace globalThis with window for popout window compatibility
  • f003533 fix(linter): resolve directive comments, remove console logging and unused imports
  • 6a606ca fix(tests): ensure proper exit status handling in diagnostic scripts
  • 397afb1 fix(bridge): resolve desktop http module dynamically with native require
  • 0c5ca44 feat(diagnostics): add bridge listener diagnostic test script

0.3.1

Choose a tag to compare

@github-actions github-actions released this 17 Sep 22:35

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

0.3.0

Choose a tag to compare

@github-actions github-actions released this 17 Sep 21:46

Full Changelog: 0.2.5...0.3.0

0.2.5

Choose a tag to compare

@github-actions github-actions released this 17 Sep 17:17

Full Changelog: 0.2.4...0.2.5

0.2.4

Choose a tag to compare

@github-actions github-actions released this 17 Sep 16:15

Full Changelog: 0.2.3...0.2.4

0.2.3

Choose a tag to compare

@github-actions github-actions released this 17 Sep 14:50

Full Changelog: 0.2.2...0.2.3

0.2.1

Choose a tag to compare

@github-actions github-actions released this 09 Sep 12:37

Full Changelog: 0.2.0...0.2.1