v0.7.5 — WordPress.org slug rename: a-radio → rangerhq-radio

A third-party AI-driven naming check flagged `a-radio` as too
generic for the wp.org Plugin Directory (single common functional
word, no distinguishing prefix). The verdict was advisory but
defensible — short generic slugs are increasingly rejected as the
directory grows past 60K plugins. Fixing it preemptively is cheaper
than facing a rejection at submission time.

The new slug `rangerhq-radio` matches the public display name
"RangerHQ Radio" (unchanged) and lines up with the rest of the
RangerHQ plugin family: `rangerhq-spatial`, `rangerhq-glyph`,
now `rangerhq-radio`.

Changes (packaging only — no player behaviour change):
* Text Domain `a-radio` → `rangerhq-radio` across all 125 i18n
  call sites via in-place sed (esc_html__, _e, __, esc_attr_e
  and their friends). PHP lint clean post-rename.
* `Text Domain:` plugin header in radio.php line 15 → `rangerhq-radio`.
* `RADIO_GITEA_URL` constant value → new Gitea repo URL.
* README.md install link → new repo URL.
* readme.txt FAQ Gitea link → new repo URL.
* readme.txt Stable tag → 0.7.5.
* inc/about.php — v0.7.5 in "latest" slot; v0.7.4 demoted.

Unchanged deliberately (would have been pure churn):
* Plugin Name header "RangerHQ Radio" — already correct.
* Plugin URI.
* Internal constants `RADIO_*` — don't have to match slug.
* User-meta keys `radio_state` / `radio_history` /
  `radio_favourites` — renaming would orphan every existing
  user's settings on upgrade.
* HTML `data-radio-*` attributes — JS controller's element
  selectors in radio.js, not slug-related.
* CSS class names `radio-player`, `radio-about-*` — internal
  scoping.
* Main plugin file name `radio.php`.

Migration: existing Gitea-installed copies need their folder
renamed on disk (a-radio → rangerhq-radio) + reactivation in
WP admin. No data loss because all user-facing state lives in
user_meta under unchanged keys.

This commit is the file content for v0.7.5; the annotated tag
and push will follow the Gitea repo rename (ranger/a-radio →
ranger/rangerhq-radio) so the new tag lives in the new URL
space from the start.
This commit is contained in:
2026-05-30 04:55:39 +01:00
parent de93aa50ca
commit 340cbb2487
9 changed files with 182 additions and 131 deletions
+16 -16
View File
@@ -133,7 +133,7 @@ function radio_search_urls( $artist, $title ) {
/** Render the History admin page (tabs: History / Favourites). */
function radio_render_history_page() {
if ( ! current_user_can( 'read' ) ) {
wp_die( esc_html__( 'You do not have permission to view this page.', 'a-radio' ) );
wp_die( esc_html__( 'You do not have permission to view this page.', 'rangerhq-radio' ) );
}
$tab = isset( $_GET['tab'] ) ? sanitize_key( wp_unslash( $_GET['tab'] ) ) : 'history'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- tab-switch only, no state change
@@ -163,15 +163,15 @@ function radio_render_history_page() {
$nonce = wp_create_nonce( 'radio_history' );
?>
<div class="wrap radio-history-wrap">
<h1><?php esc_html_e( 'Radio — Track history', 'a-radio' ); ?></h1>
<h1><?php esc_html_e( 'Radio — Track history', 'rangerhq-radio' ); ?></h1>
<h2 class="nav-tab-wrapper">
<a href="<?php echo esc_url( $hist_url ); ?>" class="nav-tab <?php echo $tab === 'history' ? 'nav-tab-active' : ''; ?>">
<?php esc_html_e( 'History', 'a-radio' ); ?>
<?php esc_html_e( 'History', 'rangerhq-radio' ); ?>
<span class="radio-tab-count">(<?php echo (int) count( $all_history ); ?>)</span>
</a>
<a href="<?php echo esc_url( $fav_url ); ?>" class="nav-tab <?php echo $tab === 'favourites' ? 'nav-tab-active' : ''; ?>">
★ <?php esc_html_e( 'Favourites', 'a-radio' ); ?>
★ <?php esc_html_e( 'Favourites', 'rangerhq-radio' ); ?>
<span class="radio-tab-count">(<?php echo (int) count( $all_favourites ); ?>)</span>
</a>
</h2>
@@ -179,24 +179,24 @@ function radio_render_history_page() {
<?php if ( empty( $entries ) ) : ?>
<p class="radio-history-empty">
<?php if ( $tab === 'favourites' ) : ?>
<?php esc_html_e( 'No favourites yet — star a track on the History tab to save it here.', 'a-radio' ); ?>
<?php esc_html_e( 'No favourites yet — star a track on the History tab to save it here.', 'rangerhq-radio' ); ?>
<?php else : ?>
<?php esc_html_e( 'No tracks logged yet. Play some music in the Radio player — tracks will appear here as they play.', 'a-radio' ); ?>
<?php esc_html_e( 'No tracks logged yet. Play some music in the Radio player — tracks will appear here as they play.', 'rangerhq-radio' ); ?>
<?php endif; ?>
</p>
<?php else : ?>
<div class="radio-history-toolbar">
<input type="search" id="radio-history-search" placeholder="<?php esc_attr_e( 'Filter by artist or title…', 'a-radio' ); ?>" />
<input type="search" id="radio-history-search" placeholder="<?php esc_attr_e( 'Filter by artist or title…', 'rangerhq-radio' ); ?>" />
<select id="radio-history-station">
<option value=""><?php esc_html_e( 'All stations', 'a-radio' ); ?></option>
<option value=""><?php esc_html_e( 'All stations', 'rangerhq-radio' ); ?></option>
<?php foreach ( $stations_in_list as $sid => $sname ) : ?>
<option value="<?php echo esc_attr( $sid ); ?>"><?php echo esc_html( $sname ); ?></option>
<?php endforeach; ?>
</select>
<?php if ( $tab === 'history' ) : ?>
<button type="button" id="radio-history-clear" class="button radio-history-clear" data-nonce="<?php echo esc_attr( $nonce ); ?>">
🗑 <?php esc_html_e( 'Clear history', 'a-radio' ); ?>
🗑 <?php esc_html_e( 'Clear history', 'rangerhq-radio' ); ?>
</button>
<?php endif; ?>
</div>
@@ -204,11 +204,11 @@ function radio_render_history_page() {
<table class="widefat radio-history-table">
<thead>
<tr>
<th class="when"><?php esc_html_e( 'When', 'a-radio' ); ?></th>
<th class="station"><?php esc_html_e( 'Station', 'a-radio' ); ?></th>
<th class="track"><?php esc_html_e( 'Artist — Title', 'a-radio' ); ?></th>
<th class="search"><?php esc_html_e( 'Search', 'a-radio' ); ?></th>
<th class="fav"><span class="screen-reader-text"><?php esc_html_e( 'Favourite', 'a-radio' ); ?></span>★</th>
<th class="when"><?php esc_html_e( 'When', 'rangerhq-radio' ); ?></th>
<th class="station"><?php esc_html_e( 'Station', 'rangerhq-radio' ); ?></th>
<th class="track"><?php esc_html_e( 'Artist — Title', 'rangerhq-radio' ); ?></th>
<th class="search"><?php esc_html_e( 'Search', 'rangerhq-radio' ); ?></th>
<th class="fav"><span class="screen-reader-text"><?php esc_html_e( 'Favourite', 'rangerhq-radio' ); ?></span>★</th>
</tr>
</thead>
<tbody>
@@ -222,7 +222,7 @@ function radio_render_history_page() {
<td class="when" title="<?php echo esc_attr( wp_date( 'j M Y, H:i', (int) $e['at'] ) ); ?>">
<?php
/* translators: %s = human-readable time difference, e.g. "2 minutes" */
printf( esc_html__( '%s ago', 'a-radio' ), esc_html( $ago ) );
printf( esc_html__( '%s ago', 'rangerhq-radio' ), esc_html( $ago ) );
?>
</td>
<td class="station"><?php echo esc_html( $e['station'] ); ?></td>
@@ -243,7 +243,7 @@ function radio_render_history_page() {
data-station="<?php echo esc_attr( $e['station'] ); ?>"
data-station-id="<?php echo esc_attr( $e['station_id'] ); ?>"
data-nonce="<?php echo esc_attr( $nonce ); ?>"
aria-label="<?php echo $is_fav ? esc_attr__( 'Remove from favourites', 'a-radio' ) : esc_attr__( 'Add to favourites', 'a-radio' ); ?>">
aria-label="<?php echo $is_fav ? esc_attr__( 'Remove from favourites', 'rangerhq-radio' ) : esc_attr__( 'Add to favourites', 'rangerhq-radio' ); ?>">
<?php echo $is_fav ? '★' : '☆'; ?>
</button>
</td>