Skip to content

docs: refresh stale content in doc/ against the v7 codebase#591

Open
galbus wants to merge 4 commits into
mainfrom
claude/refresh-stale-docs
Open

docs: refresh stale content in doc/ against the v7 codebase#591
galbus wants to merge 4 commits into
mainfrom
claude/refresh-stale-docs

Conversation

@galbus

@galbus galbus commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Why

Audited every file in doc/ against the current v7 code. Several docs predate the v7 rewrite and now describe things that no longer exist. Each finding below was verified against the source before rewriting — no doc text was changed on a hunch.

Substantially stale

wp-config.md — documented BEYONDWORDS_AUTO_SYNC_SETTINGS, a constant that no longer exists anywhere in the plugin. grep -rn BEYONDWORDS_AUTO_SYNC_SETTINGS --include='*.php' src/ *.php returns nothing; the only occurrence in the repo is a leftover env var in .wp-env.tests.json that nothing reads. The settings-sync feature it controlled was removed in v7. Anyone defining it in wp-config.php today gets silence.

Removed that section, and documented the six URL-override constants that do work (Core\Urls), with their real defaults and the strlen() guard that makes an empty-string override a no-op. Also tightened BEYONDWORDS_AUTOREGENERATE — the check sits inside the "already has a content ID" branch, so it suppresses regeneration only, not initial generation.

plugin-features.md — written 2.5 years ago, predates v7 entirely. Listed the "Display player" control that v7 replaced with the Embed dropdown, and omitted most of the current surface (Integration method, Player UI, video output, voice selection, the Delete audio bulk action, per-block generation toggles, Site Health).

Corrections

Doc Was wrong
async-rest-migration.md Said errors are not cached — they are negative-cached for CACHE_TTL_ON_ERROR. Named Client::get_summarization_settings(), which doesn't exist. Listed background delete as "deferred" after it shipped. Still written in unmerged-PR voice.
wordpress-vip.md Described the uninstaller's transient cleanup as deleting known keys; it's a LIKE '_transient_beyondwords_%' SQL prefix sweep. The VIP-relevant point is that object-cache hosts have no such rows, so the sweep matches nothing and entries expire by TTL.
running-tests.md Told developers to create .wp-env.override.json for the tests env; the correct file is .wp-env.tests.override.json. No Jest section despite Jest tests and a CI Jest job. Presented the full 20-minute Cypress suite as the normal workflow instead of the per-spec @covers/@group flow in AGENTS.md.
legacy-meta-migration.md Headline downgrade-safety guarantee didn't note that the migration deletes beyondwords_disabled. Described play-audio/ and select-voice/ as removed/replaced — both still exist and are wired up.
settings-internals.md Omitted the 5-minute CONNECTION_CHECK_TTL throttle (keyed on a credential fingerprint), which is what actually governs when validation re-runs.
getting-started.md Step 5 (npm run composer -- install) ran before step 6 (npm run env:start), but the composer script dispatches into a wp-env container that doesn't exist yet — unrunnable on a fresh clone.
code-quality-checks.md Listed test_phpunit/coverage_check as commit-time checks when they aren't in that testsuite; omitted lint_plugins; overstated what CI runs under GrumPHP.
preselect-generate-audio.md Mode is 'off', not 'none'. Didn't mention DEFAULT_VALUE makes a fresh install preselect for posts. Misdescribed what the classic metabox JS does.
rest-meta-visibility.md Over-broad "voice config is never exposed"; omitted register_rest_meta_visibility(); mislabelled a BeyondWords-era key as a SpeechKit one.
video-settings-payload.md Only covered the branch where a Video size is chosen; didn't document the project-default fallback. Framed an unreleased dev state as "earlier plugin versions".

Notes for review

🤖 Generated with Claude Code

An audit of every doc/*.md against the current code found content that no
longer matches the plugin. Each finding was verified against the source
before rewriting.

Substantially stale:

- wp-config.md documented BEYONDWORDS_AUTO_SYNC_SETTINGS, which no longer
  exists anywhere in the plugin (the settings-sync feature was removed in
  v7). Removed it, and documented the six URL-override constants from
  Core\Urls that do work, including the empty-string strlen() guard.
- plugin-features.md predated the v7 rewrite: it listed the "Display
  player" control that Embed replaced, and omitted most of the v7 surface.

Corrections:

- async-rest-migration.md claimed failed reads are not cached; they are
  negative-cached for CACHE_TTL_ON_ERROR. It also named a Client method
  that does not exist and listed shipped work as deferred.
- wordpress-vip.md described the uninstaller's transient cleanup as
  deleting known keys; it is a SQL prefix sweep of the options table.
- running-tests.md pointed at .wp-env.override.json for the tests env
  (correct file is .wp-env.tests.override.json), and had no Jest section.
- legacy-meta-migration.md's downgrade guarantee did not note that the
  migration deletes beyondwords_disabled, and described play-audio/ and
  select-voice/ as removed when both still exist.
- settings-internals.md omitted the 5-minute credential-fingerprinted
  validation throttle.
- Smaller accuracy fixes in preselect-generate-audio.md (mode is 'off',
  not 'none'; documents the DEFAULT_VALUE preselect), rest-meta-visibility.md
  and video-settings-payload.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

✅ WordPress Plugin Check Report

✅ Status: Passed

📊 Report

All checks passed! No errors or warnings found.


🤖 Generated by WordPress Plugin Check Action • Learn more about Plugin Check

galbus and others added 3 commits July 19, 2026 13:45
Second pass over the refreshed docs, correcting statements the first pass
got wrong or overstated. Each correction was re-verified against the source.

- plugin-features.md: no control is labelled "Generate audio" — the shipped
  toggle's caption reads "Generation enabled"/"Generation disabled". Model
  is a filter that is never submitted, not a saved override. Added the
  Content section (Source, Script template) and noted that Integration and
  Preferences stay hidden until the credentials validate.
- settings-internals.md: the flag holds an ISO-8601 UTC string, not a
  timestamp, and gates the whole admin/editor bootstrap in Core\Plugin::init(),
  not just the settings tabs.
- wp-config.md: BEYONDWORDS_BACKEND_URL has no callers in src/, so it is
  documented as legacy rather than a working override.
- legacy-meta-migration.md: the migration only matches rows whose value is
  '1'; other values are left untouched. display-player was a checkbox row,
  not a preview component.
- rest-meta-visibility.md: the Custom Fields panel is hidden by the
  is_protected_meta filter, not by register_meta(); the hidden-key list is
  illustrative, not exhaustive.
- getting-started.md: added the host PHP/Composer prerequisite the rewrite
  depended on, and corrected the checks to run on commit, not push.
- running-tests.md: BEYONDWORDS_MOCK_API applies to the wp-env site (Cypress);
  PHPUnit reads its own bootstrap constants.
- code-quality-checks.md: grumphp.yml does not set max_body_width, so
  GrumPHP's default of 72 is enforced on every body line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
PR #567 reworked voice selection, adding 'Accent' and 'Native' alongside
'Model'. All three narrow the voice list without being saved — the post
stores only beyondwords_language_code and beyondwords_body_voice_id.

Re-checked the other docs that touch voice selection against #567:
async-rest-migration.md's claims still hold (get_voices() still routes
through cached_get() with VOICES_REQUEST_TIMEOUT, classic-metabox.js still
fetches voices in hydrate() and /projects/{id} in
applyProjectDefaultLanguage(), and all six cited REST routes exist).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@galbus
galbus marked this pull request as ready for review July 19, 2026 13:24
@galbus
galbus requested a review from gouravkhunger July 19, 2026 13:24
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