Skip to content

docs: refresh release archive guidance#480

Merged
elibosley merged 2 commits into
mainfrom
codex/clarify-eol-docs
May 21, 2026
Merged

docs: refresh release archive guidance#480
elibosley merged 2 commits into
mainfrom
codex/clarify-eol-docs

Conversation

@elibosley
Copy link
Copy Markdown
Member

@elibosley elibosley commented May 13, 2026

Summary

  • Clarifies the Version Archive so releases are grouped by supported and EOL status.
  • Documents how current and previous public minor series are supported in the licensing FAQ and release-types guide.
  • Simplifies the versions table to mark supported, security-update, superseded, and EOL releases dynamically.
  • Handles compact prerelease tokens such as rc8 and beta2 when sorting release versions.
  • Fixes the 7.2.7 release-note heading hierarchy that was failing PR lint.

Validation

  • pnpm exec prettier --check src/components/VersionsTable.tsx docs/unraid-os/release-notes/7.2.7.md
  • pnpm exec remark docs/unraid-os/release-notes/7.2.7.md --quiet --frail
  • pnpm run lint:mdx
  • Parser smoke check: final release sorts ahead of rc8, rc8 ahead of rc1, and rc1 ahead of beta2.
  • pnpm exec tsc --ignoreDeprecations 6.0 (fails on existing unrelated type errors in RedirectList, ReleasesList, and theme Layout files)
  • Full build not run locally per repo guidance; GitHub PR Lint passed on commit 75a0d30.

Summary by CodeRabbit

  • Documentation

    • Clarified how releases are grouped by support status, updated licensing-eligibility and upgrade guidance, expanded USB boot-media and troubleshooting instructions, and refined pre-release/support-policy wording and formatting across release, release-types, and licensing FAQ pages.
  • Refactor

    • Reworked the versions display into a data-driven release table with per-release status badges, clearer download/prerelease guidance, and streamlined supported vs EOL view.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 13, 2026

📝 Walkthrough

Walkthrough

This PR replaces a static release table with a data-driven VersionsTable that classifies releases by current/previous minor series, updates support-policy wording and licensing/USB install guidance, and integrates the new component into the download page.

Changes

Support Policy and Dynamic Release Table

Layer / File(s) Summary
Release types policy documentation
docs/unraid-os/updating-unraid/release-types.mdx
"Release types at a glance" table markup reformatted; WebGUI inline emphasis (Tools → Update OS, Tools → Diagnostics) adjusted; pre-release support rule split into public-minor counting and per-build supersession bullets.
Licensing FAQ and USB/manual install updates
docs/unraid-os/troubleshooting/licensing-faq.mdx
Support-policy wording updated for patch/minor-series/EOL behavior; standardized Tools → Registration emphasis; expanded USB boot-media backup/install procedure (require recent USB backup, copy single .key), and reformatted attached-storage footnotes.
Download page content and import formatting
docs/unraid-os/download_list.mdx
Import specifier switched to double quotes; page content expanded to explain release-archive grouping by support status (supported minors receive latest patches/pre-releases; older builds superseded; EOL receives no updates); licensing-eligibility link added.
VersionsTable typings and helpers
src/components/VersionsTable.tsx (types/helpers)
Adds Release typing (optional basefile/url/md5/downloadable), version parsing (parseVersion, minorOf), comparator, status badge renderer, and getSupportPolicies generator.
VersionsTable fetch and grouping
src/components/VersionsTable.tsx (fetch/group)
Viewer now fetches includePublic=1, sorts releases, groups into current/previous minor series, and computes latestCurrentRelease/latestPreviousRelease for classification.
VersionsTable row logic and rendering
src/components/VersionsTable.tsx (row/render)
Deterministic getRowStatus replaces expandable changelog model; "Release notes" links to changelog_pretty; download/MD5 cells conditionally shown or display guidance/N/A.
VersionsTable UI controls and layout
src/components/VersionsTable.tsx (UI)
Filter buttons replaced by supported/eol tabs; policy panel driven by supportPolicies[filter]; table rendered from groups[filter]; removed "What's next?" and future release sections.
VersionsTable export wrapper
src/components/VersionsTable.tsx (export)
Exports VersionsTable as BrowserOnly wrapper rendering the Viewer.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 A table once carved in stone,
Now hums with parsed releases shown,
Badges, notes, and grouped support lines,
From current down to EOL designs,
Hop in, click through — the roadmap shines!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main objective of the PR: refreshing documentation about release archive guidance, particularly clarifying EOL status grouping.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description check ✅ Passed The PR description comprehensively covers the changes, validation steps, and technical details of the work performed.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/clarify-eol-docs

Comment @coderabbitai help to get the list of available commands and usage tips.

@elibosley elibosley marked this pull request as ready for review May 13, 2026 21:25
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 13, 2026

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
unraid-docs 75a0d30 Commit Preview URL

Branch Preview URL
May 21 2026, 08:52 PM

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/VersionsTable.tsx`:
- Around line 22-28: parseVersion treats unknown token parts as 0, which makes
compact prerelease tokens like "rc8" or "beta2" compare equal to the release;
update the parseVersion function to detect tokens matching /^(rc|beta)(\d+)$/i,
map "rc" to -1 and "beta" to -2, and include the parsed numeric suffix (e.g.,
rc8 -> [-1,8], beta2 -> [-2,2]) so comparative ordering distinguishes
prereleases from final releases; keep the existing behavior for plain "rc" or
"beta" and fallback to Number.parseInt with 0 for any other unknown parts.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 9bbe47cb-1a1f-4ab6-93a4-d42bed422a75

📥 Commits

Reviewing files that changed from the base of the PR and between 30eeb5c and a99a04b.

📒 Files selected for processing (4)
  • docs/unraid-os/download_list.mdx
  • docs/unraid-os/troubleshooting/licensing-faq.mdx
  • docs/unraid-os/updating-unraid/release-types.mdx
  • src/components/VersionsTable.tsx

Comment thread src/components/VersionsTable.tsx Outdated
@elibosley elibosley force-pushed the codex/clarify-eol-docs branch from a99a04b to ebb55e1 Compare May 13, 2026 21:41
- Purpose: add the EOL support-policy changes to the release archive docs branch.

- Before: the version archive grouped releases by stable, previous, and legacy without clearly explaining superseded builds or EOL support boundaries.

- Problem: users could confuse archived or older patch builds with currently supported update targets.

- Now: the docs define supported minor series, superseded patch builds, and EOL releases across the archive, licensing FAQ, and release-types guide.

- Implementation: simplify the VersionsTable status filters, mark current and previous series support status dynamically, and update the 7.3.0 release notes to stable-release wording.
@elibosley elibosley force-pushed the codex/clarify-eol-docs branch from ebb55e1 to c2b38a2 Compare May 21, 2026 20:42
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
docs/unraid-os/troubleshooting/licensing-faq.mdx (1)

131-131: ⚡ Quick win

Use relative link for internal documentation reference.

The link to the Version Archive uses an absolute URL, while other internal doc links in this file use relative paths. For Docusaurus best practices and consistency, use a relative link:

-- You can see the current support status of each release in the [Version Archive](https://docs.unraid.net/unraid-os/download_list/).
+- You can see the current support status of each release in the [Version Archive](../../download_list.mdx).

This ensures proper navigation, link checking, and versioning support.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/unraid-os/troubleshooting/licensing-faq.mdx` at line 131, Replace the
absolute URL used for the "Version Archive" link with a relative path to match
other internal documentation links in the file; locate the markdown link labeled
"Version Archive" in docs/unraid-os/troubleshooting/licensing-faq.mdx and change
its href from the full https://... URL to the appropriate relative path (e.g.,
./ or ../ path consistent with other internal links) so Docusaurus link
checking, navigation, and versioning work correctly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/unraid-os/troubleshooting/licensing-faq.mdx`:
- Line 131: Replace the absolute URL used for the "Version Archive" link with a
relative path to match other internal documentation links in the file; locate
the markdown link labeled "Version Archive" in
docs/unraid-os/troubleshooting/licensing-faq.mdx and change its href from the
full https://... URL to the appropriate relative path (e.g., ./ or ../ path
consistent with other internal links) so Docusaurus link checking, navigation,
and versioning work correctly.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 3ee02532-afb0-4b90-9a44-7e16a69e0562

📥 Commits

Reviewing files that changed from the base of the PR and between ebb55e1 and c2b38a2.

📒 Files selected for processing (4)
  • docs/unraid-os/download_list.mdx
  • docs/unraid-os/troubleshooting/licensing-faq.mdx
  • docs/unraid-os/updating-unraid/release-types.mdx
  • src/components/VersionsTable.tsx
✅ Files skipped from review due to trivial changes (2)
  • docs/unraid-os/download_list.mdx
  • docs/unraid-os/updating-unraid/release-types.mdx

- Purpose: fix the PR lint failure and unresolved CodeRabbit prerelease sorting suggestion.

- Before: the 7.2.7 release note had two top-level headings, and compact tokens like rc8 or beta2 were parsed as 0.

- Problem: remark failed on duplicate H1s, and prerelease rows could compare equal to final releases or other prereleases.

- Change: demote the version heading, format the release note, and expand compact beta/rc tokens into prerelease rank plus numeric suffix.

- How: parseVersion now handles betaN and rcN case-insensitively while preserving existing plain beta/rc and numeric fallback behavior.
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
src/components/VersionsTable.tsx (1)

111-120: ⚡ Quick win

Add AbortController to prevent state updates on unmounted component.

The fetch lacks cleanup, which can cause memory leaks or React warnings if the component unmounts before the request completes. This is especially noticeable in StrictMode.

♻️ Proposed fix with AbortController
 useEffect(() => {
+  const controller = new AbortController();
-  fetch("https://releases.unraid.net/json?includePublic=1")
+  fetch("https://releases.unraid.net/json?includePublic=1", {
+    signal: controller.signal,
+  })
     .then((response) => response.json())
     .then((data: Release[]) =>
       setReleases(
         [...data].sort((a, b) => compareVersions(a.version, b.version)),
       ),
     )
-    .catch(console.error);
+    .catch((error) => {
+      if (error.name !== "AbortError") {
+        console.error(error);
+      }
+    });
+  return () => controller.abort();
 }, []);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/VersionsTable.tsx` around lines 111 - 120, The fetch in the
VersionsTable component needs an AbortController to avoid updating state after
unmount; create an AbortController inside the useEffect, pass controller.signal
to fetch, and in the cleanup function call controller.abort(); update the .catch
to ignore AbortError (or check error.name === 'AbortError') so setReleases is
not called after abort, and ensure setReleases is only invoked when the fetch
wasn't aborted (i.e., check controller.signal.aborted or handle in the catch) so
you avoid React warnings and leaks.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/components/VersionsTable.tsx`:
- Around line 111-120: The fetch in the VersionsTable component needs an
AbortController to avoid updating state after unmount; create an AbortController
inside the useEffect, pass controller.signal to fetch, and in the cleanup
function call controller.abort(); update the .catch to ignore AbortError (or
check error.name === 'AbortError') so setReleases is not called after abort, and
ensure setReleases is only invoked when the fetch wasn't aborted (i.e., check
controller.signal.aborted or handle in the catch) so you avoid React warnings
and leaks.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 5ef80044-9077-448f-8189-25ba74c083ed

📥 Commits

Reviewing files that changed from the base of the PR and between c2b38a2 and 75a0d30.

📒 Files selected for processing (2)
  • docs/unraid-os/release-notes/7.2.7.md
  • src/components/VersionsTable.tsx
✅ Files skipped from review due to trivial changes (1)
  • docs/unraid-os/release-notes/7.2.7.md

@elibosley elibosley merged commit 5e4db7d into main May 21, 2026
4 checks passed
@elibosley elibosley deleted the codex/clarify-eol-docs branch May 21, 2026 21:04
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