Remove migrated official plugins from bundled workspace bootstrap #189

Closed
opened 2026-06-01 07:30:52 +00:00 by steve · 0 comments
Owner

Problem

PDF, Slides, Canvas, Graph, Notebook, and Telemetry still appear in the app
without explicit installation because they remain statically imported and
registered in workspaceCorePlugins. They should only leave bundled bootstrap
after their active official registry releases can be installed, enabled,
restarted, disabled, uninstalled, and reinstalled without data loss.

Goal

Remove the migrated official plugins from bundled workspace bootstrap once the
registry install path is proven, so they behave like external official plugins
rather than always-loaded core plugins.

Scope

  • Remove the following from workspaceCorePlugins after active registry
    releases are available:
    • lapis-pdf
    • lapis-slides
    • lapis-canvas
    • lapis-graph
    • lapis-notebook
    • lapis-telemetry
  • Preserve old-ID data alias migration from bundled-era IDs to lapis-* IDs.
  • Ensure on-demand install prompts still handle file/view contributions where
    applicable.
  • Update workspace/package specs and tests to reflect the new bundled vs
    installed ownership split.
  • Verify browser/PWA and Electron behavior after removal.

Non-goals

  • Moving Bases, Markdown, Markdown Lint, Notifications, Search, Tasks, CSV,
    Fmode, History, file explorer, tags, word count, language-code support, or the
    app/settings shell out of the bundle in this issue.
  • Publishing release assets; that belongs to the registry activation follow-up.
  • Changing the registry trust model.

Acceptance Criteria

  • The six scoped plugins no longer load from workspaceCorePlugins.
  • The app can install each scoped plugin from the official registry, enable it,
    open its primary file/view, restart and retain state, disable it, uninstall
    it while preserving data, and reinstall it without data loss.
  • Existing data under old bundled IDs is copied to the new lapis-* IDs when
    needed.
  • Browser/PWA and Electron smoke or focused E2E coverage pass.
  • Bases remains bundled.
  • Specs accurately describe which plugins are bundled and which are external
    official plugins.

Implementation Notes

  • Do not remove a plugin from bootstrap until its active registry entry and
    release assets validate.
  • Use the Docs unbundling issue as the reference pattern.
  • Expect tests that directly access old plugin IDs such as pdf to need updates
    to install/enable lapis-pdf or to use new IDs.
  • Current slice: remove lapis-notebook from workspaceCorePlugins, prove the
    .notebook.md on-demand official install prompt works through notebook editor
    view contribution metadata, and stop the demo workspace from restoring a
    notebook leaf before the plugin is installed.

Suggested Files or Specs To Inspect

  • packages/workspace/src/lib/components/app/bootstrap.ts
  • packages/workspace/src/lib/components/app/App.svelte
  • packages/workspace/e2e/
  • packages/desktop-electron/e2e/
  • spec/src/50-roadmap/full-registry-v1.md
  • spec/src/30-cross-package-contracts/plugin-registry.md

Validation Commands

  • pnpm --filter @lapis-notes/workspace check:all
  • pnpm --filter @lapis-notes/desktop-electron check:all
  • pnpm check:all
  • pnpm test:smoke
  • Focused browser/PWA and Electron install/enable/disable/uninstall tests for
    each removed plugin

Follow-up Tasks

Implementation Summary

Removed bundled notebook bootstrap registration, kept .notebook.md opening on the official install prompt, and updated the demo workspace plus specs for external-only notebook installs.

## Problem PDF, Slides, Canvas, Graph, Notebook, and Telemetry still appear in the app without explicit installation because they remain statically imported and registered in `workspaceCorePlugins`. They should only leave bundled bootstrap after their active official registry releases can be installed, enabled, restarted, disabled, uninstalled, and reinstalled without data loss. ## Goal Remove the migrated official plugins from bundled workspace bootstrap once the registry install path is proven, so they behave like external official plugins rather than always-loaded core plugins. ## Scope - Remove the following from `workspaceCorePlugins` after active registry releases are available: - `lapis-pdf` - `lapis-slides` - `lapis-canvas` - `lapis-graph` - `lapis-notebook` - `lapis-telemetry` - Preserve old-ID data alias migration from bundled-era IDs to `lapis-*` IDs. - Ensure on-demand install prompts still handle file/view contributions where applicable. - Update workspace/package specs and tests to reflect the new bundled vs installed ownership split. - Verify browser/PWA and Electron behavior after removal. ## Non-goals - Moving Bases, Markdown, Markdown Lint, Notifications, Search, Tasks, CSV, Fmode, History, file explorer, tags, word count, language-code support, or the app/settings shell out of the bundle in this issue. - Publishing release assets; that belongs to the registry activation follow-up. - Changing the registry trust model. ## Acceptance Criteria - The six scoped plugins no longer load from `workspaceCorePlugins`. - The app can install each scoped plugin from the official registry, enable it, open its primary file/view, restart and retain state, disable it, uninstall it while preserving data, and reinstall it without data loss. - Existing data under old bundled IDs is copied to the new `lapis-*` IDs when needed. - Browser/PWA and Electron smoke or focused E2E coverage pass. - Bases remains bundled. - Specs accurately describe which plugins are bundled and which are external official plugins. ## Implementation Notes - Do not remove a plugin from bootstrap until its active registry entry and release assets validate. - Use the Docs unbundling issue as the reference pattern. - Expect tests that directly access old plugin IDs such as `pdf` to need updates to install/enable `lapis-pdf` or to use new IDs. - Current slice: remove `lapis-notebook` from `workspaceCorePlugins`, prove the `.notebook.md` on-demand official install prompt works through notebook editor view contribution metadata, and stop the demo workspace from restoring a notebook leaf before the plugin is installed. ## Suggested Files or Specs To Inspect - `packages/workspace/src/lib/components/app/bootstrap.ts` - `packages/workspace/src/lib/components/app/App.svelte` - `packages/workspace/e2e/` - `packages/desktop-electron/e2e/` - `spec/src/50-roadmap/full-registry-v1.md` - `spec/src/30-cross-package-contracts/plugin-registry.md` ## Validation Commands - `pnpm --filter @lapis-notes/workspace check:all` - `pnpm --filter @lapis-notes/desktop-electron check:all` - `pnpm check:all` - `pnpm test:smoke` - Focused browser/PWA and Electron install/enable/disable/uninstall tests for each removed plugin ## Related Issues - Follow-up to #185 — [Migrate remaining installable first-party plugins to the official registry](../open/185-migrate-remaining-installable-first-party-plugins-to-the-official-registry.md) ## Follow-up Tasks ## Implementation Summary Removed bundled notebook bootstrap registration, kept .notebook.md opening on the official install prompt, and updated the demo workspace plus specs for external-only notebook installs. <!-- backlog:task_id=TASK-PLUGIN-REGISTRY-UNBUNDLE-REMAINING-OFFICIAL source_spec=spec/src/50-roadmap/full-registry-v1.md related_issue=185 -->
steve added this to the Full Registry V1 milestone 2026-06-01 07:30:52 +00:00
steve 2026-06-01 19:26:44 +00:00
  • closed this issue
  • added
    done
    and removed
    open
    labels
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lapis-notes/lapis#189
No description provided.