No description
Find a file
2026-06-30 12:21:34 +08:00
.github/workflows Use Node 24 in release workflow 2026-05-29 18:33:13 +08:00
.gitignore Add Recent View Obsidian plugin 2026-05-20 23:57:28 +08:00
esbuild.config.mjs Replace builtin-modules with Node built-in builtinModules 2026-05-29 18:32:26 +08:00
gdrive.ts v1.0.14: Resolve bare-filename embeds on Drive for single-file download 2026-06-07 19:47:32 +08:00
LICENSE Add MIT license and update installation instructions 2026-05-29 16:57:08 +08:00
main.js v1.0.16: Adopt Drive-side embeds in merge note too 2026-06-07 20:03:59 +08:00
main.ts v1.0.16: Adopt Drive-side embeds in merge note too 2026-06-07 20:03:59 +08:00
manifest.json v1.0.16: Adopt Drive-side embeds in merge note too 2026-06-07 20:03:59 +08:00
package-lock.json Replace builtin-modules with Node built-in builtinModules 2026-05-29 18:32:26 +08:00
package.json Replace builtin-modules with Node built-in builtinModules 2026-05-29 18:32:26 +08:00
README.md Update README.md 2026-06-30 12:21:34 +08:00
styles.css v1.0.9: Merge with Google Drive on Local; Show Drive versions picker 2026-06-07 16:40:41 +08:00
tsconfig.json Add Recent View Obsidian plugin 2026-05-20 23:57:28 +08:00
versions.json v1.0.16: Adopt Drive-side embeds in merge note too 2026-06-07 20:03:59 +08:00

image image image

ProjectView

email me: ngchenghow@gmail.com

An Obsidian plugin that organizes your notes into projects. Each project keeps its own set of folders and notes, remembers the tabs you had open, and can sync with a Google Drive folder.

A project lives as a pane in the left sidebar; clicking it instantly restores that project's workspace (its open tabs, scroll position, and active tab) without losing state.

Desktopfocused. The core project features work anywhere, but the Google Drive integration is desktoponly.


Features

Projects

  • A Projects list in the left sidebar; each project is a fullwidth box showing its name and description.
  • Create projects with + New — set a name, description, member folders, and specific notes.
  • The project list is autodocked above the native File Explorer, so the explorer sits at the bottom of the left sidebar.

Live panes (instant project switching)

  • Each project keeps its own live tab group. Switching projects hides the old pane and shows the target's instead of closing/reopening notes — so scroll position, cursor, undo history and the active tab are all preserved.
  • When you close the last tab in a pane, a fresh empty tab is shown so the project always has a visible pane.
  • On restart, only the active project's pane is rebuilt; others are recreated lazily on first click.

Multiple panes per project

  • Add extra named panes to a project (project header New pane). Each pane has its own remembered tabs.
  • A Panes section lists the Main pane plus your named panes; click to switch. Named panes can be renamed or deleted.

Project contents pane (right sidebar)

  • Shows the active project's pinned notes, folders, and loose notes.
  • Pinned section at the top — pin/unpin notes from a note's menu; toggle reorder mode to dragreorder pins.
  • Folder notes are sorted by name; a subfolder's notes appear under a labeled separator.
  • Autorefreshes when notes are created, deleted, or renamed in the vault.
  • Clicking a note opens or focuses it (no duplicate tabs).

Context menus

  • Note menu: Pin / Unpin, Rename, Upload to / Download from Google Drive, Merge with Google Drive on Local, Show Drive versions… (linked projects).
  • Folder menu: Rename, Remove from project (keeps the folder in your vault).
  • Pane menu: Open folder…, Open note…, Browse… (a folder/file tree of the project), Rename / Delete (named panes).

Google Drive sync (desktop only)

  • Create a project from a Drive share link: in + New, paste a folder link, pick a new or existing folder, and the folder's files/subfolders are downloaded and linked to the project.
  • Download from / Upload to Google Drive from the project menu (left pane and rightpane header).
  • Upload a single file from a note's menu.
  • Merge with Google Drive on Local (note menu, .md/.txt only): pulls the Drive copy and additively merges it into the local file — no local lines are deleted, lines unique to Drive are inserted, and when a block conflicts both versions are kept (local first, then Drive) so you can resolve by hand.
  • Show Drive versions… (note menu): lists the most recent Drive revisions for the file (newest first, with modified time, size, and a "pinned" tag for keepForever revisions). Click one to download that revision and open it as a new note in the same folder, named <basename> (YYYY-MM-DD HH-MM-SS).<ext> — your current file is untouched. Drive autoprunes nonpinned revisions of binary files (~100 / 30 days), so only the survivors show up.
  • Googlenative files are exported on download: Docs → .md, Sheets → .csv, Slides → .pdf.

Sync is oneway and additive: download writes/updates files locally (never deletes local files removed on Drive); upload writes/updates files on Drive (never deletes Drive files removed locally).


Installation

  1. Open Settings → Community plugins → Browse.
  2. Search for ProjectView.
  3. Click Install, then Enable.

Manual

  1. Download manifest.json, main.js, and styles.css from the latest release.
  2. Place them in <your-vault>/.obsidian/plugins/obsidian-project-view/.
  3. In Obsidian, enable ProjectView under Settings → Community plugins.

Data storage

Projects are stored in a note inside your vault (default ProjectView.md, configurable in settings) as a JSON code block — so the data is pervault and travels/syncs with your vault. Plugin settings (and Drive credentials) live in the plugin's data.json. (Data from an older RecentView.md note is migrated automatically.)


Google Drive setup

  1. In the Google Cloud Console: create a project and enable the Google Drive API.
  2. Create an OAuth client ID of type Desktop app.
  3. Add yourself as a test user on the OAuth consent screen (or publish it).
  4. In Settings → ProjectView → Google Drive, paste the Client ID and Client Secret, then click Connect and authorize in your browser.

You need edit access to a shared folder for uploads to work.


Building from source

npm install
npm run build     # type-check + bundle to main.js
npm run dev       # watch mode

Source: main.ts (plugin) and gdrive.ts (Google Drive client), bundled with esbuild.


License

MIT