Skip to content

feat(store): offer a per-module update on the Installed tab - #64

Closed
Mralimoh wants to merge 1 commit into
spicetify:mainfrom
Mralimoh:feat/store-per-card-update
Closed

Mralimoh wants to merge 1 commit into
spicetify:mainfrom
Mralimoh:feat/store-per-card-update

Conversation

@Mralimoh

Copy link
Copy Markdown
Contributor

Add a corner "NEW" badge to installed cards whose vault version differs from the running copy (a strictly newer release, or a maintainer's pinned rollback), installing just that one update. The existing enable/disable controls stay in place.

Serialise installs behind one one-at-a-time lock shared by the per-card badges, the gallery FABs, the details dialog and "Update all", guarded by a ref so a second click landing before re-render cannot start a competing install.

Add updateActionLabel for the upgrade-vs-rollback tooltip with colocated tests, and bump store to 1.9.0.

Add a corner "NEW" badge to installed cards whose vault version differs from the running copy (a strictly newer release, or a maintainer's pinned rollback), installing just that one update. The existing enable/disable controls stay in place.

Serialise installs behind one one-at-a-time lock shared by the per-card badges, the gallery FABs, the details dialog and "Update all", guarded by a ref so a second click landing before re-render cannot start a competing install.

Add updateActionLabel for the upgrade-vs-rollback tooltip with colocated tests, and bump store to 1.9.0.
@Mralimoh Mralimoh closed this Oct 16, 2026

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ Minor suggestions only — the locking and stdlib hold look right; two small polish points inline.

Reviewed changes — reviewed the per-card update feature on the Installed tab in this run.

  • Corner update badge — installed cards with a pending vault version get a clickable starburst affordance wired to runInstall for that module alone.
  • Upgrade vs rollback wording — new updateActionLabel helper supplies the tooltip and accessible name direction, with unit tests.
  • One-at-a-time installs — updateLock ref plus updating state serialize gallery FABs, details dialog, badges, and Update all, with the staged-stdlib hold shared per card.
  • Styling and version bump — badge styles, pulse animation, card-name clearance, and store 1.8.1 to 1.9.0.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using muse-spark-1.3-contributor (free via Pullfrog for OSS) | 𝕏

Comment thread modules/store/index.scss
// Keep the name clear of the corner update badge on installed cards;
// catalog cards have no badge, so they keep the full width.
&:not(.spicetify-store-card--catalog) .spicetify-store-card-name {
padding-right: 30px;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 30px clearance applies to every installed card, so names on cards with no badge truncate slightly earlier than needed. Consider adding a modifier class only when props.update renders and scoping the padding to it.

Comment thread modules/store/page.tsx
type="button"
className={`spicetify-store-update-badge${props.busy ? " spicetify-store-update-badge--busy" : ""}`}
title={title}
aria-label={label}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Busy and hold states only change title; a screen reader keeps hearing the stale label. Derive aria-label from the same title value so the Updating… and stdlib-hold states are announced.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant