Replace plugin registry and status bar loading text with spinning icons #204

Closed
opened 2026-06-01 19:08:36 +00:00 by steve · 0 comments
Owner

Problem

Two loading surfaces still rely on inline text instead of the existing icon
language used elsewhere in the workspace shell. The Plugin registry settings
panel shows a visible loading banner while refreshing registry metadata, and
status bar items with active work keep their static icon while separate text
describes progress. Both states feel heavier than the rest of the chrome and
make repeated background activity look like a warning rather than normal work.

Goal

Make loading activity read as lightweight chrome feedback by animating the
existing refresh/status icons into spinners while work is in progress.

Scope

  • Replace the Plugin registry loading banner with a spinning refresh icon on the
    registry refresh affordance.
  • Update status bar activity rendering so items with active progress animate
    their icon into a spinner rather than relying on static progress text.
  • Keep surrounding labels, commands, and accessibility text accurate while the
    icon is spinning.
  • Update the workspace spec for the revised loading-state behavior.

Non-goals

  • No changes to registry fetch logic, retry rules, or install/update flows.
  • No redesign of the status bar layout, item ordering, or progress semantics.
  • No changes to startup progress surfaces outside the registry/settings and
    status bar activity indicators.

Acceptance Criteria

  • Refreshing the official registry no longer renders a standalone loading
    banner in the Plugin registry settings panel.
  • The registry refresh button shows a spinner state while a refresh is active.
  • Status bar items that expose in-progress activity render a spinner icon during
    the active state.
  • Spinner states remain keyboard accessible and keep useful screen-reader text.
  • Existing progress completion and error behavior remain unchanged.

Implementation Notes

  • Inspect the registry settings Svelte panel first; it likely already tracks a
    loading flag that can drive icon state directly.
  • Reuse an existing spinner/rotation treatment if one already exists in the
    workspace shell instead of introducing a new animation pattern.
  • Keep changes scoped to renderer UI and any small supporting API/view-model
    plumbing needed to expose status bar activity state.

Suggested Files or Specs To Inspect

  • packages/workspace/src/lib/components/configuration/plugins-registry-panel.svelte
  • packages/workspace/src/lib/components/app/App.svelte
  • packages/api/src/lib/status-bar.ts
  • spec/src/20-packages/workspace/index.md

Validation Commands

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

Follow-up Tasks

Implementation Summary

Kept the status bar spinner on a stable wrapper element so progress-label updates do not restart the animation; added a workspace e2e assertion that the icon node persists across task updates.

## Problem Two loading surfaces still rely on inline text instead of the existing icon language used elsewhere in the workspace shell. The Plugin registry settings panel shows a visible loading banner while refreshing registry metadata, and status bar items with active work keep their static icon while separate text describes progress. Both states feel heavier than the rest of the chrome and make repeated background activity look like a warning rather than normal work. ## Goal Make loading activity read as lightweight chrome feedback by animating the existing refresh/status icons into spinners while work is in progress. ## Scope - Replace the Plugin registry loading banner with a spinning refresh icon on the registry refresh affordance. - Update status bar activity rendering so items with active progress animate their icon into a spinner rather than relying on static progress text. - Keep surrounding labels, commands, and accessibility text accurate while the icon is spinning. - Update the workspace spec for the revised loading-state behavior. ## Non-goals - No changes to registry fetch logic, retry rules, or install/update flows. - No redesign of the status bar layout, item ordering, or progress semantics. - No changes to startup progress surfaces outside the registry/settings and status bar activity indicators. ## Acceptance Criteria - Refreshing the official registry no longer renders a standalone loading banner in the Plugin registry settings panel. - The registry refresh button shows a spinner state while a refresh is active. - Status bar items that expose in-progress activity render a spinner icon during the active state. - Spinner states remain keyboard accessible and keep useful screen-reader text. - Existing progress completion and error behavior remain unchanged. ## Implementation Notes - Inspect the registry settings Svelte panel first; it likely already tracks a loading flag that can drive icon state directly. - Reuse an existing spinner/rotation treatment if one already exists in the workspace shell instead of introducing a new animation pattern. - Keep changes scoped to renderer UI and any small supporting API/view-model plumbing needed to expose status bar activity state. ## Suggested Files or Specs To Inspect - `packages/workspace/src/lib/components/configuration/plugins-registry-panel.svelte` - `packages/workspace/src/lib/components/app/App.svelte` - `packages/api/src/lib/status-bar.ts` - `spec/src/20-packages/workspace/index.md` ## Validation Commands - `pnpm --filter @lapis-notes/workspace check:all` - `pnpm test:smoke` - `make spec-lint` - `mdbook build spec` ## Related Issues - Follow-up to #183 — [Polish registry settings and on-demand registry failure UX](../closed/183-polish-registry-settings-and-on-demand-registry-failure-ux.md) ## Follow-up Tasks ## Implementation Summary Kept the status bar spinner on a stable wrapper element so progress-label updates do not restart the animation; added a workspace e2e assertion that the icon node persists across task updates. <!-- backlog:task_id=TASK-REGISTRY-STATUS-SPINNER-POLISH source_spec=spec/src/20-packages/workspace/index.md related_issue=183 -->
steve added this to the Full Registry V1 milestone 2026-06-01 19:08:36 +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#204
No description provided.