Commit Graph

8 Commits

Author SHA1 Message Date
ranger 8b531910f6 v1.0.0 — Stability milestone
No functional change from 0.7.6. Version bump signals that the
public API (wp_usermeta storage shape, 4-button search URL
templates, stations registry shape, dedup + cap + (unknown) skip
rules) is locked. Breaking changes from here go in 2.0.0.

Five days live on wp.org, 50+ downloads, pattern ported to Tuner
(Chrome Web Store live the same day) and Buddy (wp.org r2 review).
The architecture has been validated across two marketplaces and
three family siblings. 0.x semantics no longer accurate.

Same day: Tuner v0.3.0 LIVE on Chrome Web Store ~15.5h after
submission. Radio v1.0.0 ships as the foundation that proved the
pattern.
2026-06-09 21:38:35 +01:00
ranger 597a645822 v0.7.6 — Plugin metadata cleanup (wp.org pre-review fix)
WordPress.org Plugin Review Team's automated pre-review on
2026-06-03 flagged two metadata-only issues:

1. Ownership verification — ir240474@gmail.com cannot be
   linked to the "RangerHQ" brand by their automated checks
   (gmail accounts can be registered by anyone, so they need
   domain-matched or DNS-verified proof).
2. Plugin URI returning 404 + Author URI failing DNS resolution
   (icanhelp.ie/radio was never a real page; rangersmyth.xyz
   does not resolve).

Both fixed in this release. Zero code changes; metadata only.

Changes:
* Plugin URI: icanhelp.ie/radio → davidtkeane.com/rangerhq-radio
  (real live landing page hosted at the author's canonical
  brand domain)
* Author URI: rangersmyth.xyz → davidtkeane.com
* Version bump 0.7.5 → 0.7.6 across radio.php header,
  RADIO_VERSION constant, readme.txt Stable tag, about.php
  latest slot
* CHANGELOG.md + readme.txt + about.php updated

Ownership verification (domain-side, not in plugin code):
* DNS TXT record `wordpressorg-ir240474-verification` added at
  davidtkeane.com root (Cloudflare). Verified live across
  multiple public DNS resolvers.
* wp.org account email changed from gmail to
  david@davidtkeane.com — domain-matched second proof.

User state (radio_state / radio_history / radio_favourites) is
preserved unchanged across the upgrade because none of these
edits touch storage or scoring logic.
2026-06-03 17:35:14 +01:00
ranger 340cbb2487 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.
2026-05-30 04:55:39 +01:00
ranger de93aa50ca v0.7.4 — wp.org submission cleanup: remove updater + add LICENSE
Walks back v0.7.3's Update URI guard pattern. Plugin Check raised
`plugin_updater_detected` on the v0.7.3 build:

    "Including An Update Checker / Changing Updates functionality.
     Plugin Updater detected. Use of the Update URI header is not
     allowed in plugins hosted on WordPress.org."

PCP scans the source as-shipped, not as-distributed, so the v0.7.3
build-time `sed` strip never had a chance to run before the scan.
The simpler correct answer is to delete the custom updater entirely
and rely on wp.org as the canonical update channel once accepted.

Removed:
* `inc/updater.php` — recoverable from git history at tag v0.7.3 if
  ever needed for a non-wp.org distribution.
* `Update URI:` header line in `radio.php` (plus the NOTE block).
* `require_once RADIO_PATH . 'inc/updater.php';` in `radio.php`.
* Updates panel render + `function_exists()` guard in `inc/settings.php`.
* "Self-hosted update checker" line in `README.md`.
* "Self-hosted updater" bullet in `readme.txt` Privacy section.

Added (GPL declaration loop closed):
* `LICENSE` — verbatim canonical GPL v2 text (338 lines from
  gnu.org/licenses/gpl-2.0.txt).
* GPL header block in `assets/css/radio.css`.
* GPL header block in `assets/js/radio.js` (original module overview
  preserved verbatim below the license header).
* GPL header block in `radio.php` docblock alongside the existing
  `License:` / `License URI:` fields.

Migration: existing Gitea-installed copies of v0.7.3 or earlier
become orphaned of auto-updates after this lands on them (the
updater code is gone, so nothing advertises newer versions back).
Recommended path is to uninstall + reinstall from wp.org once the
plugin is accepted. No data loss — station + volume + theme +
history + favourites all live in user_meta.

No user-visible behaviour changes for the player itself. Only the
small `Updates` panel that sat at the bottom of Radio → Settings
is gone.
2026-05-30 04:43:16 +01:00
ranger a9d76decae v0.7.3 — WordPress.org guideline 8 compliance + Privacy section
Adds the Update URI guard pattern so one source tree produces two
compliant build artifacts:

* Gitea install (default): `Update URI:` header points at
  git.davidtkeane.com → wp.org skips this plugin → self-hosted
  updater runs normally.
* WordPress.org submission zip (build script strips that line):
  header is empty → `radio_should_skip_custom_updater()` returns
  true → entire updater file short-circuits at load time → wp.org
  takes over update delivery as guideline 8 requires.

Settings page now guards the Updates panel render with
`function_exists()` because the panel function only exists when
the updater was allowed to load.

Also adds a dedicated `== Privacy ==` section to readme.txt
covering every outbound connection (none from the plugin itself;
SomaFM audio + 30s songs.json poll while playing) and adds an
explicit link to SomaFM's terms of use (somafm.com/legal/).

No user-visible behaviour change in either distribution.
2026-05-30 04:21:25 +01:00
ranger a298a4c217 feat(0.7.2): screenshots + correct wp.org contributor handle
Two small submission-prep moves on top of v0.7.1:

Added
- Five screenshots at the plugin root, per WordPress.org convention:
  screenshot-1.png  Dashboard widget
  screenshot-2.png  Settings page
  screenshot-3.png  History page (star + four search-provider links)
  screenshot-4.png  Pop-out mini-player window
  screenshot-5.png  About page
  Sizes 1087–1422 wide; total ~720KB.

Changed
- Contributors: in readme.txt updated from `davidtkeane` (placeholder)
  to `ir240474` (actual wp.org username, profile confirmed at
  https://profiles.wordpress.org/ir240474/).
- Stable tag: bumped to 0.7.2.
- Screenshots section in readme.txt rewritten to match the five
  actual screenshots.

Notes
- Source images were in an images/ working folder; moved + renamed to
  plugin root for wp.org convention, working folder removed.
- After this release the only PCP residue is the .gitignore
  hidden-file warning — unavoidable on the dev install, won't be in
  the submission zip.

Files: radio.php (version), readme.txt (Contributors / Stable Tag /
Screenshots section / new 0.7.2 changelog + upgrade notice),
CHANGELOG.md, inc/about.php (rotate v0.7.2 → latest),
5 new screenshot-*.png files at plugin root, images/ removed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-30 04:06:50 +01:00
ranger c7b2258471 fix(0.7.1): Plugin Check follow-up — tested-up-to bump + .DS_Store re-cleanup
Re-ran PCP after v0.7.0 — issue count 169 → 4. Closes the only real
one of the four:

- Tested up to: 6.7 → 7.0 in readme.txt (PCP outdated_tested_upto_header).
  WordPress 7.0 is current.
- Stable Tag bumped to 0.7.1 in readme.txt.

Removed (again)
- .DS_Store files (root + assets/). macOS Finder regenerated them
  between PCP runs; they will not be present in the submission zip.

Known PCP residue (not addressable in source)
- .gitignore triggers a hidden_files WARNING on PCP. Keeping it is
  needed for git; will be excluded from the submission zip per WP.org
  packaging conventions.

Files: radio.php (version), readme.txt (Tested-up-to + Stable Tag +
new 0.7.1 changelog + upgrade notice), CHANGELOG.md,
inc/about.php (rotate v0.7.1 → latest, v0.7.0 → earlier list),
.DS_Store files deleted.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-30 03:01:25 +01:00
ranger 09b61cc950 feat(0.7.0): WordPress.org submission prep — full Plugin Check clean
Ran the official Plugin Check (PCP) against v0.6.3 — surfaced 169
issues. This release closes all of them so the plugin is submission-
ready for the WordPress.org plugin directory.

Branding
  - Plugin Name renamed: "Radio" → "RangerHQ Radio". Removes the
    trademarked "SomaFM" from the plugin name surface (PCP
    trademarked_term). Lines up with the RangerHQ plugin family.
    SomaFM credited in Description + About as the data source.
    Folder/slug stays `a-radio` — no install path changes; existing
    user_meta keys (radio_state / radio_history / radio_favourites)
    untouched.
  - Text Domain header renamed: `radio` → `a-radio` (matches slug).
  - Requires at least bumped: 5.0 → 5.3 (matches wp_date() usage).
  - File docstring header dropped "SomaFM" from prominent line.

Code (mass-mechanical)
  - 134 i18n call sites rewritten from `'radio'` text domain to
    `'a-radio'` across 7 PHP files. Single sed pass on the unique
    pattern `, 'radio' )` — the 6 menu-slug `'radio'` references in
    add_*_page() were correctly left alone (those are URL slugs).

Security
  - 8 × MissingUnslash + 8 × InputNotSanitized in the v0.5.0 history
    endpoints (radio_ajax_log_track, radio_ajax_toggle_favourite).
    All four $_POST['artist|title|station|station_id'] access points
    are now wrapped sanitize_text_field( wp_unslash( $_POST['…'] ) )
    (or sanitize_key for station_id) at the access point.

Translator comments
  - 6 × printf / sprintf calls with placeholders now carry
    /* translators: ... */ comments.

Pop-out window refactor
  - Inline <link> stylesheets, <style> block, and <script> tag in
    radio_render_popout_page() replaced with wp_enqueue_style() +
    wp_enqueue_script() + wp_localize_script() registered before HTML
    output, then wp_print_styles() in <head> and wp_print_footer_
    scripts() at end of <body>.
  - Popup-specific CSS moved out of inline <style> and into radio.css
    under body.radio-popout scope so it only fires inside the popup.

Removed
  - .DS_Store files (root + assets/). PCP hidden_files.

Distribution
  - New readme.txt in proper WordPress.org format: Plugin headers,
    Contributors, Donate link, Tags, Requires-at-least, Tested-up-to,
    Stable Tag, Requires-PHP, License, Description, Installation,
    FAQ, Screenshots, Changelog, Upgrade Notice.

Compat
  - No behaviour change for users; user_meta preserved.
  - Displayed Plugin Name in Plugins → Installed changes from "Radio"
    to "RangerHQ Radio" — only visible difference on update.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-30 02:51:09 +01:00