Polish registry settings and on-demand registry failure UX #183

Closed
opened 2026-05-31 21:43:40 +00:00 by steve · 0 comments
Owner

Problem

The Full Registry V1 settings page still uses the legacy imperative Setting
UI rather than the app's newer shadcn-backed settings components. Registry
fetch failures are not obvious enough in the settings UI, and the on-demand
file-handler path can check the official registry without first confirming with
the user. If that registry check fails, users do not receive a clear app
notification.

Goal

Make registry management and on-demand registry checks feel like first-class
workspace UI: shadcn tabs/items/badges/alerts for the settings page, explicit
confirmation before on-demand registry fetches, and proper notification/error
surfaces when registry metadata cannot be fetched.

Scope

  • Replace the registry settings tab body with a mounted Svelte panel that uses
    @lapis-notes/ui components instead of raw Setting rows.
  • Use shadcn alerts for registry errors, revoked plugins, and blocked updates.
  • Keep Installed, Browse, Updates, and Sources flows functionally equivalent.
  • Add a user confirmation step before on-demand file-handler registry lookup.
  • Show a notification when on-demand registry lookup or install fails.
  • Update workspace/package specs for the new interaction and error handling.

Non-goals

  • Do not change the registry trust model or add third-party registry sources.
  • Do not silently install or enable plugins.
  • Do not redesign Core Plugins or Community Plugins tabs in this issue.

Acceptance Criteria

  • The Plugins settings page uses shadcn tabs, buttons, items, badges, and alerts.
  • Registry fetch errors are visible without relying on a disabled textarea.
  • Clicking an unsupported file that may have an official plugin asks before
    fetching registry metadata.
  • On-demand registry check failures produce a user-visible notification and
    fallback view state.
  • Existing install, update, uninstall, revoked, incompatible, and manual plugin
    distinctions remain available.

Implementation Notes

  • Active plan:
    • Keep PluginsRegistry as the SettingTab bridge and mount a new Svelte
      panel for the actual UI.
    • Move registry state/actions into the panel, using Tabs, Button,
      Badge, Alert, Item, Input or Search, and Separator.
    • Inspect the on-demand plugin-install prompt path in WorkspaceLeaf and add
      confirmation/notification around registry lookup failures.
    • Validate with focused workspace checks plus smoke because this affects app
      UI and file-open flows.

Suggested Files or Specs To Inspect

  • packages/workspace/src/lib/components/configuration/plugins-registry.ts
  • packages/workspace/src/lib/components/configuration/plugin-feature-detail.svelte
  • packages/api/src/lib/workspace.svelte.ts
  • spec/src/20-packages/workspace/index.md

Validation Commands

  • pnpm --filter @lapis-notes/workspace check:types
  • pnpm --filter @lapis-notes/workspace check:svelte
  • pnpm --filter @lapis-notes/workspace check:format
  • make spec-lint
  • mdbook build spec
  • pnpm check:all
  • pnpm test:smoke

Follow-up Tasks

Implementation Summary

Redesigned the Plugins registry settings page with shadcn-backed tabs, items, buttons, badges, and alerts; surfaced registry failures as alerts and notifications; added confirmation before on-demand registry lookup; and notified users when on-demand registry checks fail.

## Problem The Full Registry V1 settings page still uses the legacy imperative `Setting` UI rather than the app's newer shadcn-backed settings components. Registry fetch failures are not obvious enough in the settings UI, and the on-demand file-handler path can check the official registry without first confirming with the user. If that registry check fails, users do not receive a clear app notification. ## Goal Make registry management and on-demand registry checks feel like first-class workspace UI: shadcn tabs/items/badges/alerts for the settings page, explicit confirmation before on-demand registry fetches, and proper notification/error surfaces when registry metadata cannot be fetched. ## Scope - Replace the registry settings tab body with a mounted Svelte panel that uses `@lapis-notes/ui` components instead of raw `Setting` rows. - Use shadcn alerts for registry errors, revoked plugins, and blocked updates. - Keep Installed, Browse, Updates, and Sources flows functionally equivalent. - Add a user confirmation step before on-demand file-handler registry lookup. - Show a notification when on-demand registry lookup or install fails. - Update workspace/package specs for the new interaction and error handling. ## Non-goals - Do not change the registry trust model or add third-party registry sources. - Do not silently install or enable plugins. - Do not redesign Core Plugins or Community Plugins tabs in this issue. ## Acceptance Criteria - The Plugins settings page uses shadcn tabs, buttons, items, badges, and alerts. - Registry fetch errors are visible without relying on a disabled textarea. - Clicking an unsupported file that may have an official plugin asks before fetching registry metadata. - On-demand registry check failures produce a user-visible notification and fallback view state. - Existing install, update, uninstall, revoked, incompatible, and manual plugin distinctions remain available. ## Implementation Notes - Active plan: - Keep `PluginsRegistry` as the `SettingTab` bridge and mount a new Svelte panel for the actual UI. - Move registry state/actions into the panel, using `Tabs`, `Button`, `Badge`, `Alert`, `Item`, `Input` or `Search`, and `Separator`. - Inspect the on-demand plugin-install prompt path in `WorkspaceLeaf` and add confirmation/notification around registry lookup failures. - Validate with focused workspace checks plus smoke because this affects app UI and file-open flows. ## Suggested Files or Specs To Inspect - packages/workspace/src/lib/components/configuration/plugins-registry.ts - packages/workspace/src/lib/components/configuration/plugin-feature-detail.svelte - packages/api/src/lib/workspace.svelte.ts - spec/src/20-packages/workspace/index.md ## Validation Commands - `pnpm --filter @lapis-notes/workspace check:types` - `pnpm --filter @lapis-notes/workspace check:svelte` - `pnpm --filter @lapis-notes/workspace check:format` - `make spec-lint` - `mdbook build spec` - `pnpm check:all` - `pnpm test:smoke` ## Related Issues - Follow-up to #175 — [Add Plugins settings registry UI](../closed/175-add-plugins-settings-registry-ui.md) ## Follow-up Tasks ## Implementation Summary Redesigned the Plugins registry settings page with shadcn-backed tabs, items, buttons, badges, and alerts; surfaced registry failures as alerts and notifications; added confirmation before on-demand registry lookup; and notified users when on-demand registry checks fail. <!-- backlog:task_id=TASK-PLUGIN-REGISTRY-UI-POLISH source_spec=spec/src/50-roadmap/full-registry-v1.md related_issue=175 -->
steve added this to the Full Registry V1 milestone 2026-05-31 21:43:40 +00:00
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#183
No description provided.