GitHub | Releases Full Topic Exporter

Adds a floating button to fetch all releases on a multi-page view and download as HTML/TXT with full asset listings (fetches lazy-loaded assets).

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

Autor
piknockyou
Dnevne instalacije
0
Ukupnih instalacija
2
Ocjene
0 0 0
Verzija
1.4
Stvoreno
17.01.2026.
Ažurirano
17.01.2026.
Size
20,2 KB
Licenza
AGPL-3.0
Primjenjuje se

GitHub | Releases Full Topic Exporter

Export complete GitHub release histories with full asset details. One-click download of multi-page releases as HTML or clean TXT format with SHA256 checksums and metadata.


Why You Need This

GitHub's release pages are difficult to archive:

  • No native export: No way to save release notes, changelogs, and asset lists in bulk
  • Pagination limits: Multi-page releases require manual clicking through each page
  • Lazy-loaded assets: Asset lists are truncated or loaded on-demand—copy-paste misses checksums and file details
  • Lost context: Manual copying loses release metadata, dates, contributors, and SHA256 hashes

This script fetches all pages of a repository's releases, expands all assets (including lazy-loaded content), and generates a complete archive in your choice of format.


Key Features

Complete Multi-Page Capture

  • Auto-pagination: Automatically fetches all pages of releases (no manual clicking)
  • Progress indicator: Shows "Fetching 1/5..." as it loads each page
  • Delay control: Configurable 300ms delay between requests to avoid rate limits

Full Asset Expansion

  • Lazy-load handling: Fetches truncated/collapsed asset lists from GitHub's expanded_assets endpoint
  • SHA256 checksums: Captures complete cryptographic hashes for verification
  • File metadata: Extracts filenames, extensions, sizes, and download URLs
  • Auto-expand: All <details> sections expanded automatically

Dual Export Formats

HTML Export

  • Styled archive: Preserves GitHub's visual design with all CSS
  • Absolute URLs: All links/images converted to full URLs for offline viewing
  • Page markers: Visual separators show original pagination
  • Clean layout: Hides headers/footers for focused reading

TXT Export

  • Clean Markdown-style: Human-readable plain text format
  • Structured sections: Clear delimiters between releases
  • Asset listings: Indented file trees with sizes and SHA256 hashes
  • Metadata preserved: Release titles, tags, authors, dates, and contributors

What Gets Exported

For each release:

  • ✅ Release title and tag name
  • ✅ Author and publication date
  • ✅ Full release notes (markdown body)
  • ✅ Code blocks and quotes (preserved formatting)
  • ✅ Contributors list
  • ✅ Complete asset list with:
    • Filenames and extensions
    • File sizes
    • SHA256 checksums
    • Download URLs (HTML only)

Usage

Quick Export

  1. Navigate to any GitHub repository's Releases page (e.g., github.com/user/repo/releases)
  2. A green "Load All Releases" button appears in the bottom-right corner
  3. Click to start fetching all pages
  4. After loading completes, two download buttons appear:
    • Download .html: Full visual archive with styling
    • Download .txt: Clean text format with metadata

Export Process

1. Click "Load All Releases"
   ↓
2. Script fetches pages 1, 2, 3... (shows progress)
   ↓
3. For each page: expands all lazy-loaded assets
   ↓
4. Choose format: HTML or TXT
   ↓
5. File downloads instantly

Example Output

TXT Format Sample

==================================================
Moonlight PC v6.1.0 (v6.1.0) by cgutman | 2024-09-17T03:56:03Z
--------------------------------------------------
OS Support Changes:

- Windows 10 (1809), Windows Server 2019, or later is now required
- 32-bit versions of Windows are no longer supported

New Features:

- Experimental YUV 4:4:4 support for improved text clarity
- HDR streaming now supported with software decoding

--- ASSETS (9) ---
  Moonlight-6.1.0-x86_64.AppImage (52.8 MB)
    SHA256: a3f2d1e9b8c4...
  MoonlightSetup-6.1.0.exe (41.3 MB)
    SHA256: 7b2e8f4d1a6c...
--- END ASSETS ---

Installation

Requirements

Steps

  1. Install a userscript manager
  2. Install this script
  3. Visit any GitHub repository's Releases page (/releases)
  4. The export button appears automatically

Technical Details

How It Works

  1. Pagination Detection: Parses .pagination links to determine total page count
  2. Sequential Fetching: Loads each page with 300ms delay (configurable)
  3. Asset Expansion: For each release:
    • Extracts tag name from release title link
    • Fetches /releases/expanded_assets/{tag} endpoint
    • Replaces lazy <include-fragment> with full asset list
  4. URL Normalization: Converts all relative URLs to absolute
  5. Format Generation:
    • HTML: Bundles page CSS + processed content
    • TXT: Parses DOM to extract structured text + metadata

Architecture

  • No external dependencies: Pure JavaScript, no libraries
  • Single-page processing: Handles GitHub's SPA navigation
  • Error resilience: Failed page loads show error message, don't stop export
  • Shadow DOM isolation: Button UI completely isolated from page styles

Configuration

Edit the CONFIG object at the top of the script:

const CONFIG = {
    postSelector: 'section[aria-labelledby]',  // Release container selector
    fetchDelayMs: 300,                         // Delay between page requests
};

FAQ

Q: Does this work on private repositories?
A: Yes, if you're logged into GitHub. The script uses your browser's existing authentication.

Q: Can I export a single release instead of all pages?
A: Not currently. The script is designed for bulk export. For single releases, use browser "Save As" or copy-paste.

Q: Why does it take so long to load?
A: The script:

  1. Fetches each page sequentially (respects rate limits)
  2. Makes additional requests for each release's full asset list
  3. Waits 300ms between pages to avoid triggering GitHub's rate limiting

Q: What if GitHub changes their HTML structure?
A: The script uses multiple fallback selectors for resilience. If it breaks, report an issue with the repository URL.

Q: Can I customize the TXT format?
A: Yes. Edit the showActionButtons() function's TXT generation section to adjust formatting, add/remove fields, or change delimiters.

Q: Does the HTML export work offline?
A: Mostly. Styles are embedded, but GitHub serves some fonts/icons from CDN. Images and asset downloads still require internet.


Known Limitations

  • Rate limiting: Very large repos (100+ pages) may trigger GitHub rate limits
  • Memory usage: Exporting repos with 1000+ releases may consume significant RAM
  • Asset downloads: The export contains asset metadata only—files themselves are not downloaded

Permissions Explained

Permission Purpose
@match *://github.com/*/*/releases* Activates script only on GitHub release pages
@run-at document-idle Waits for page to fully load before injecting button