# r4p0/userscript architecture

> Architecture diagram of the GitHub repository r4p0/userscript, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/r4p0/userscript
- Repository: https://github.com/r4p0/userscript

## Overview

This repository is a collection of independent Tampermonkey userscripts, not one application: each script runs on its matching site and changes a page, saves preferences, or provides a user-triggered action. The main workflows are site-specific enhancements and screenshot capture; GitHub scripts add repository information or navigation. The README documents the feature set, while sampled source confirms several implementations and their interactions. Other scripts are represented by their documented behavior; their internal wiring was not sampled.

Main entry points: [`github_repo_size_display.user.js`](https://github.com/r4p0/userscript/blob/main/github_repo_size_display.user.js) (Repository Size Display), [`goto_github_repo.user.js`](https://github.com/r4p0/userscript/blob/main/goto_github_repo.user.js) (GitHub Repo Navigator), [`bili_opus_original_image.user.js`](https://github.com/r4p0/userscript/blob/main/bili_opus_original_image.user.js) (Opus Original Images), [`bili_home_ad_blur.user.js`](https://github.com/r4p0/userscript/blob/main/bili_home_ad_blur.user.js) (Home Ad Blur)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_bili["Bilibili Enhancements"]
  node_opus["Opus Original Images"]
  node_adblur["Home Ad Blur"]
end

subgraph group_capture["Screenshot Tools"]
  node_printscreen["Bilibili Printscreen"]
  node_extension["Bilibili Extension Capture"]
end

subgraph group_catcake["Catcake Preferences"]
  node_catcake_script["Filter Profile Saver"]
end

subgraph group_github["GitHub Tools"]
  node_github_size["Repository Size Display"]
  node_github_nav["GitHub Repo Navigator"]
end

subgraph group_general["Page Utilities"]
  node_gray["Disable Gray Filter"]
  node_debugger["Disable Infinite Debugger"]
end

node_user(("User"))
node_github_api["GitHub API"]
node_userscript_storage[("Userscript Storage")]
node_clipboard_download["Clipboard / Download"]

node_user -->|"views opus"| node_opus
node_opus -->|"shows originals"| node_user
node_user -->|"views feed"| node_adblur
node_adblur -->|"blurs ads"| node_user
node_user -->|"captures frame"| node_printscreen
node_printscreen -->|"copies / downloads"| node_clipboard_download
node_user -->|"captures frame"| node_extension
node_extension -->|"downloads image"| node_clipboard_download
node_user -->|"manages profiles"| node_catcake_script
node_catcake_script -->|"restores filters"| node_user
node_user -->|"views repository"| node_github_size
node_github_size -->|"fetches size"| node_github_api
node_github_size -->|"reads / writes cache"| node_userscript_storage
node_github_size -->|"shows size"| node_user
node_user -->|"visits Pages site"| node_github_nav
node_github_nav -->|"looks up repository"| node_github_api
node_github_nav -->|"reads / writes cache"| node_userscript_storage
node_github_nav -->|"offers repo link"| node_user
node_user -->|"visits website"| node_gray
node_gray -->|"removes gray filter"| node_user
node_user -->|"visits matched site"| node_debugger
node_debugger -->|"allows debugging"| node_user

click node_opus "https://github.com/r4p0/userscript/blob/main/bili_opus_original_image.user.js"
click node_adblur "https://github.com/r4p0/userscript/blob/main/bili_home_ad_blur.user.js"
click node_printscreen "https://github.com/r4p0/userscript/blob/main/bilibili_printscreen.user.js"
click node_extension "https://github.com/r4p0/userscript/blob/main/bilibili_extension.user.js"
click node_catcake_script "https://github.com/r4p0/userscript/blob/main/catcake-filter-saver.user.js"
click node_github_size "https://github.com/r4p0/userscript/blob/main/github_repo_size_display.user.js"
click node_github_nav "https://github.com/r4p0/userscript/blob/main/goto_github_repo.user.js"
click node_gray "https://github.com/r4p0/userscript/blob/main/disable_gray.user.js"
click node_debugger "https://github.com/r4p0/userscript/blob/main/disable_infinite_debugger.user.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_opus,node_adblur,node_user toneBlue
class node_printscreen,node_extension,node_userscript_storage toneAmber
class node_catcake_script,node_github_api toneMint
class node_github_size,node_github_nav toneRose
class node_gray,node_debugger,node_clipboard_download toneIndigo
```

## Components

### Bilibili Enhancements

- [Opus Original Images](https://github.com/r4p0/userscript/blob/main/bili_opus_original_image.user.js): `bili_opus_original_image.user.js`
- [Home Ad Blur](https://github.com/r4p0/userscript/blob/main/bili_home_ad_blur.user.js): `bili_home_ad_blur.user.js`

### Screenshot Tools

- [Bilibili Printscreen](https://github.com/r4p0/userscript/blob/main/bilibili_printscreen.user.js): `bilibili_printscreen.user.js`
- [Bilibili Extension Capture](https://github.com/r4p0/userscript/blob/main/bilibili_extension.user.js): `bilibili_extension.user.js`

### Catcake Preferences

- [Filter Profile Saver](https://github.com/r4p0/userscript/blob/main/catcake-filter-saver.user.js): `catcake-filter-saver.user.js`

### GitHub Tools

- [Repository Size Display](https://github.com/r4p0/userscript/blob/main/github_repo_size_display.user.js): `github_repo_size_display.user.js`
- [GitHub Repo Navigator](https://github.com/r4p0/userscript/blob/main/goto_github_repo.user.js): `goto_github_repo.user.js`

### Page Utilities

- [Disable Gray Filter](https://github.com/r4p0/userscript/blob/main/disable_gray.user.js): `disable_gray.user.js`
- [Disable Infinite Debugger](https://github.com/r4p0/userscript/blob/main/disable_infinite_debugger.user.js): `disable_infinite_debugger.user.js`

### Other components

- **User**
- **GitHub API**
- **Userscript Storage**
- **Clipboard / Download**

## Connections

- User → Opus Original Images: views opus (evidence: `README.md`)
- Opus Original Images → User: shows originals (evidence: `README.md`)
- User → Home Ad Blur: views feed (evidence: `README.md`)
- Home Ad Blur → User: blurs ads (evidence: `README.md`)
- User → Bilibili Printscreen: captures frame (evidence: `bilibili_printscreen.user.js`)
- Bilibili Printscreen → Clipboard / Download: copies / downloads (evidence: `bilibili_printscreen.user.js`)
- User → Bilibili Extension Capture: captures frame (evidence: `bilibili_extension.user.js`)
- Bilibili Extension Capture → Clipboard / Download: downloads image (evidence: `bilibili_extension.user.js`)
- User → Filter Profile Saver: manages profiles (evidence: `catcake-filter-saver.user.js`)
- Filter Profile Saver → User: restores filters (evidence: `README.md`)
- User → Repository Size Display: views repository (evidence: `README.md`)
- Repository Size Display → GitHub API: fetches size (evidence: `github_repo_size_display.user.js`)
- Repository Size Display → Userscript Storage: reads / writes cache (evidence: `github_repo_size_display.user.js`)
- Repository Size Display → User: shows size (evidence: `README.md`)
- User → GitHub Repo Navigator: visits Pages site (evidence: `README.md`)
- GitHub Repo Navigator → GitHub API: looks up repository (evidence: `goto_github_repo.user.js`)
- GitHub Repo Navigator → Userscript Storage: reads / writes cache (evidence: `goto_github_repo.user.js`)
- GitHub Repo Navigator → User: offers repo link (evidence: `README.md`)
- User → Disable Gray Filter: visits website (evidence: `README.md`)
- Disable Gray Filter → User: removes gray filter (evidence: `README.md`)
- User → Disable Infinite Debugger: visits matched site (evidence: `README.md`)
- Disable Infinite Debugger → User: allows debugging (evidence: `README.md`)
