Skip to content

Replace folders, Notes, and Todos with a versioned Canvas library - #142

Merged
phinaldoo merged 1 commit into
mainfrom
t3/unified-canvas-library
Oct 8, 2026
Merged

phinaldoo merged 1 commit into
mainfrom
t3/unified-canvas-library

Conversation

@phinaldoo

Copy link
Copy Markdown
Owner

Files now has a flat, type-based library, and Canvas is the single place for documents, notes, and Markdown checklists. The separate folder, Notes, and Todo features are removed from the UI, APIs, model tools, settings, and exports.

Changes

  • Show categories and counts from accessible files: Canvas, PDFs, images, slides, spreadsheets, documents, audio, video, archives, and other files. Add New Canvas directly to Files.
  • Keep immutable Canvas versions, preview/download/restore them, and reject stale edits. Restoring retains the version it replaces. History bytes count toward storage quotas.
  • Manage viewer/editor access per file. Shared editors can edit without taking ownership; history access begins when editor access was granted.
  • Let the model discover existing Canvas documents by title and then view/edit their current revision. Preserve discovery references for follow-up turns.
  • Include versions and memberships in file backup/restore, and convert content from older Notes/Todo archives. Update all 11 locales and remove obsolete UI strings.

Upgrade behavior

The transactional migration converts existing Notes (including history), Todo lists (including task metadata), and accepted sharing permissions into Canvas files and per-file access. It replaces automation note attachments with file attachments before removing the retired tables/columns. Existing uploaded files remain in the flat library.

Old Notes, Todo, and folder share URLs are retired; owners can create new Canvas links. This conversion requires a pre-upgrade backup for rollback, as documented in README.

Validation

  • Backend: 4,045 passed, 11 skipped.
  • Frontend: 1,253 passed.
  • PostgreSQL migration smoke tests: 2 passed, plus a populated migration regression test.
  • JavaScript/Python lint, translation parity (11 languages, 14 pages), and diff whitespace checks passed.
  • Browser: category filtering, Canvas creation, historical source preview/restore, a checkbox save surviving reload, per-document access changes, and mobile editor/history layout.

Visual proof

These screenshots use the production Files/Canvas components and FastAPI file routes with isolated fixture data. The fixture bypasses authentication/quota admission; category samples are synthetic and do not prove PDF/image/slide rendering. Screenshots are on a separate evidence branch, with no proof files added to /docs or this application branch.

Dynamic file categories

Dynamic file categories

Canvas checklist after saving and reloading

Canvas checklist

Version preview, restore, and document access

Canvas history and access

Mobile editor and history Saved Canvas checklist on mobile Canvas history and document access on mobile

@coderabbitai

coderabbitai Bot commented Oct 7, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2fc3f632-f80d-44a1-806d-7be00036f960
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@phinaldoo
phinaldoo merged commit 8b93751 into main Oct 8, 2026
15 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant