Plugin install progress through status bar #235
Labels
No labels
abandoned
active
audit
blocked
data-safety
difficulty:easy
difficulty:hard
difficulty:high
difficulty:medium
docs
done
duplicate
notebook-v0
open
priority:high
ready
release-critical
safe-mode
spec
spec-backlog
subsystem:api
subsystem:backlog
subsystem:bases
subsystem:ci
subsystem:command
subsystem:configuration
subsystem:consolidate
subsystem:dependencies
subsystem:desktop-electron
subsystem:diffmerge
subsystem:docker
subsystem:docs
subsystem:fuzzy
subsystem:graph
subsystem:hotkeys
subsystem:lapis
subsystem:maint
subsystem:maintenance
subsystem:markdown
subsystem:markdown-lint
subsystem:md018
subsystem:notebook
subsystem:notifications
subsystem:opfs
subsystem:package
subsystem:plugin-markdown
subsystem:plugin-tasks
subsystem:plugins
subsystem:registry
subsystem:release
subsystem:renovate
subsystem:restore
subsystem:scripts
subsystem:search
subsystem:settings
subsystem:spec
subsystem:tasks
subsystem:testing
subsystem:ui
subsystem:web
subsystem:workspace
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
lapis-notes/lapis#235
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plugin registry installs and updates currently show coarse installer progress
inside the Plugin registry settings panel. Long downloads should instead use
the app progress system so they are visible from the status bar, can show
determinate download progress, and can be cancelled cooperatively.
Problem
The Plugin registry panel renders local install-phase alerts after a user starts
an install. That duplicates the app-owned notification/status-bar progress
surface and does not expose byte-level download progress or cancellation for
large official plugin files.
Goal
Route plugin install and update progress through
app.notifications, with thecompact status-bar item as the primary live indicator and the notification
center as the detail surface for the progress bar and Cancel action.
Scope
plugin distribution installer path.
Non-goals
bar item.
plugin activation policy beyond passing cancellation/progress through.
Acceptance Criteria
Plugin registry settings tab or detail dialog.
compact plugin label and percent when byte totals are known.
install/update row shows detail text, a determinate progress bar when
possible, and a Cancel button.
does not persist an installed record for a cancelled fresh install, and does
not surface a destructive registry error alert or failure notice.
behavior remain intact.
Implementation Notes
InstallPluginOptionswithsignal?: AbortSignal, and extendPluginDistributionManager.update()with an optional options object carryingthe same signal.
PluginInstallProgressEventwithdownloadedBytes,totalBytes,filePath,fileIndex, andfileCount.DefaultPluginDistributionManagerintoVerifiedPluginInstaller.Response.bodyis available; fall back toarrayBuffer()with a final progress update otherwise.plugins-registry-panel.svelte, register a plugin-scoped progress listeneronly for the active notification-wrapped install/update action and map
distribution byte progress into
progress.report({ current, total, message }).AbortError/cancelled progress as a non-error user cancellation in theregistry panel while still refreshing panel state afterward.
Suggested Files or Specs To Inspect
packages/api/src/lib/plugin-distribution/manager.tspackages/api/src/lib/plugin-distribution/installer.tspackages/api/src/lib/__tests__/plugin-distribution-manager.test.tspackages/workspace/src/lib/components/configuration/plugins-registry-panel.sveltespec/src/20-packages/api/index.mdspec/src/20-packages/workspace/index.mdspec/src/20-packages/plugins/notifications/index.mdValidation Commands
pnpm --filter @lapis-notes/api test:run src/lib/__tests__/plugin-distribution-manager.test.tspnpm --filter @lapis-notes/workspace check:allpnpm --filter @lapis-notes/api check:allmake spec-lintmdbook build specpnpm test:smokeRelated Issues
Follow-up Tasks
Implementation Summary
Implemented notification-backed plugin install/update progress, byte-level distribution download progress, cooperative cancellation, focused tests, and spec updates.