diff --git a/e2e/specs/requested-badge.spec.ts b/e2e/specs/requested-badge.spec.ts
index 3d3520d..2d3a3de 100644
--- a/e2e/specs/requested-badge.spec.ts
+++ b/e2e/specs/requested-badge.spec.ts
@@ -7,7 +7,7 @@ import { test, expect, callBinding } from '../support/fixtures.js';
* and produced two: every one of the eight call sites was a two-way
* ternary, so an album already on the request list showed a plus and
* said "is not in your library" — on the same page, forty pixels from a
- * filled button reading "Wanted".
+ * filled button reading "Requested".
*
* This spec exists at this tier rather than only in the component one
* because of what it drags in with it: reaching the requested state is
@@ -181,7 +181,7 @@ test.describe('the requested badge', () => {
const ds = document.querySelector('explore-album-details')
?.shadowRoot;
const btn = [...(ds?.querySelectorAll('wa-button') ?? [])].find(
- (b) => /Wanted/.test(b.textContent ?? ''),
+ (b) => /Requested/.test(b.textContent ?? ''),
);
return btn?.querySelector('wa-icon')?.getAttribute('name') ?? '';
diff --git a/frontend/src/components/downloads-view/downloads-view.ts b/frontend/src/components/downloads-view/downloads-view.ts
index d774ab0..8047e34 100644
--- a/frontend/src/components/downloads-view/downloads-view.ts
+++ b/frontend/src/components/downloads-view/downloads-view.ts
@@ -400,7 +400,7 @@ export class DownloadsView extends ViewLifecycleMixin(LitElement) {
private renderEmptyRequests() {
return html`
- Nothing requested yet. Use “Want this” on an album or artist
+ Nothing requested yet. Use “Request this” on an album or artist
to add it here.
`;
diff --git a/frontend/src/components/explore-album-details/explore-album-details.ts b/frontend/src/components/explore-album-details/explore-album-details.ts
index 41abd21..45a02d5 100644
--- a/frontend/src/components/explore-album-details/explore-album-details.ts
+++ b/frontend/src/components/explore-album-details/explore-album-details.ts
@@ -2680,7 +2680,7 @@ export class ExploreAlbumDetails extends LitElement implements ContextMenuHost {
slot="start"
name=${this.isRequested ? 'solid/bookmark' : 'regular/bookmark'}
>
- ${this.isRequested ? 'Wanted' : 'Want this'}
+ ${this.isRequested ? 'Requested' : 'Request this'}
`;
}
diff --git a/frontend/src/components/explore-artist-details/explore-artist-details.ts b/frontend/src/components/explore-artist-details/explore-artist-details.ts
index eafb75f..c18ca92 100644
--- a/frontend/src/components/explore-artist-details/explore-artist-details.ts
+++ b/frontend/src/components/explore-artist-details/explore-artist-details.ts
@@ -2753,7 +2753,7 @@ export class ExploreArtistDetails extends LitElement implements ContextMenuHost
slot="icon"
name=${requested ? 'xmark' : 'bookmark'}
>
- ${requested ? 'Cancel Request' : 'Want This'}
+ ${requested ? 'Cancel Request' : 'Request This'}
`
: nothing}
diff --git a/frontend/src/components/library-status-indicator/library-status-indicator.ts b/frontend/src/components/library-status-indicator/library-status-indicator.ts
index b576c65..93281a4 100644
--- a/frontend/src/components/library-status-indicator/library-status-indicator.ts
+++ b/frontend/src/components/library-status-indicator/library-status-indicator.ts
@@ -48,7 +48,7 @@ export type LibraryStatus =
*
* Colours and glyphs:
* - in-library → green circle, check mark
- * - queued → amber circle, hourglass
+ * - queued → amber circle, bookmark ("on your list")
* - not-in-library → grey circle, plus sign
*
* Usage:
@@ -241,12 +241,23 @@ export class LibraryStatusIndicator extends LitElement {
}
`;
+ /**
+ * The glyph for each state.
+ *
+ * `queued` is a **bookmark**, not the hourglass it used to be. An
+ * hourglass says "wait, this is under way", which overstates what a
+ * request is: nothing may be downloading, nothing may ever be found,
+ * and the user can leave one sitting on the list indefinitely. A
+ * bookmark says the honest thing — it is on your list — and reads as
+ * the opposite of the plus that put it there, which is what a
+ * toggle's two states have to do.
+ */
private iconName(): string {
switch (this.status) {
case 'in-library':
return 'check';
case 'queued':
- return 'hourglass-half';
+ return 'bookmark';
default:
return 'plus';
}
@@ -276,7 +287,7 @@ export class LibraryStatusIndicator extends LitElement {
if (this.actionable) {
return this.status === 'queued'
? `Cancel the request for ${kind}${name}`
- : `Want ${kind}${name}`;
+ : `Request ${kind}${name}`;
}
switch (this.status) {
@@ -354,25 +365,6 @@ export class LibraryStatusIndicator extends LitElement {
}
const title = this.tooltip();
- const icon = this.iconName()
- ? html``
- : nothing;
-
- if (this.actionable) {
- return html`
-
- `;
- }
// The ring stands in for the icon wherever the icon would go —
// including inside the button, because a partly-held album is
diff --git a/frontend/test/components/artist-release-menu.test.ts b/frontend/test/components/artist-release-menu.test.ts
index 9829a9e..cb5ed00 100644
--- a/frontend/test/components/artist-release-menu.test.ts
+++ b/frontend/test/components/artist-release-menu.test.ts
@@ -120,7 +120,7 @@ describe('the context menu on an artist page release', () => {
expect(items).toContain('Add to Queue');
expect(items).toContain('Play Next');
// Owned: there is nothing left to ask for.
- expect(items).not.toContain('Want This');
+ expect(items).not.toContain('Request This');
});
it('offers a request, and no playback, for a release nobody owns', async () => {
@@ -132,7 +132,7 @@ describe('the context menu on an artist page release', () => {
expect(items).not.toContain('Play');
expect(items).not.toContain('Add to Queue');
- expect(items).toContain('Want This');
+ expect(items).toContain('Request This');
expect(items).toContain('View on MusicBrainz');
});
@@ -148,7 +148,7 @@ describe('the context menu on an artist page release', () => {
// …but a `local:` id names nothing upstream, and wanting something
// already in the library is not a thing to offer.
expect(items).not.toContain('View on MusicBrainz');
- expect(items).not.toContain('Want This');
+ expect(items).not.toContain('Request This');
});
it('opens from the keyboard on Shift+F10', async () => {
diff --git a/frontend/test/components/chrome.test.ts b/frontend/test/components/chrome.test.ts
index 6a8dec5..4d11c12 100644
--- a/frontend/test/components/chrome.test.ts
+++ b/frontend/test/components/chrome.test.ts
@@ -166,7 +166,7 @@ describe('', () => {
glyphs.push(shadow(el, 'wa-icon')?.getAttribute('name'));
}
- expect(glyphs).toEqual(['check', 'hourglass-half', 'plus']);
+ expect(glyphs).toEqual(['check', 'bookmark', 'plus']);
});
it('phrases its label around the entity it describes', async () => {
diff --git a/frontend/test/components/library-status.test.ts b/frontend/test/components/library-status.test.ts
index 317b2e1..6945552 100644
--- a/frontend/test/components/library-status.test.ts
+++ b/frontend/test/components/library-status.test.ts
@@ -249,7 +249,7 @@ describe(' as a control', () => {
const el = await badge({ requestMbid: 'rg-1' });
expect(shadow(el, '.badge')?.getAttribute('aria-label')).toBe(
- 'Want album "Abbey Road"',
+ 'Request album "Abbey Road"',
);
await update(el, { status: 'queued' });