Conclusion First
Not sure whether you’ve had the same experience: NGA’s post content is really good, and its web interface is really rough. I made a userscript called Readscape (阅境); its core function in one sentence: rearrange NGA’s board lists and posts into a magazine-style immersive reading interface.
- Board pages become card waterfalls, covers displayed at original image ratios, auto-paging as you scroll down;
- A post’s first floor is laid out as an image-text note — image left, text right on desktop; horizontally swipeable gallery on mobile; comments load page by page on demand, fetched as far as you read;
- Font size, font family, and light / warm-paper / dark color schemes are all adjustable in real time and saved automatically;
- No server needed, no separate extension to install — install a userscript manager and one click does it.
I built this tool for my own use: every requirement came from my daily thread-browsing scenarios, refined until it felt comfortable to me. The code is open source on GitHub; if you want to try it, just follow the instructions below to install one. You’re welcome to share your experience in the issues.
Why I Built This
My grievances with NGA’s web pages had piled up for a long time:
- The layout is stuck in 2005: narrow-screen table flow; one screen mixes floors, signatures, ads and decorative elements, while the actual content gets squeezed into obscurity.
- Image boards can’t be “browsed”: for boards like wallpapers, photos and lifestyle where “the image is the star”, lists show only plain text titles — you must click into every post to see what’s inside, then back out to flip to the next.
- Even worse on phones: the mobile web page is basically the desktop page shrunk; wanting to quietly finish a long thread during the commute, every screen has something popping out to interrupt you.
My ideal reading experience: lists like flipping through a magazine; when reading, only people and words remain. And the original site must not be touched — login, replying, browser back must all follow the original flow; opening on another computer still shows NGA itself. A userscript satisfies exactly all this: it only changes “how things display”, never touching “where data comes from”.
What It Looks Like
First the PC side. Left is the board list; each card’s cover is taken directly from the first body image of the OP’s first post, with tags and title placed below the image; right is the reading view, the first floor laid out as a note with image left and text right:
| PC list | PC reading |
|---|---|
Now the mobile side. The list is a two-column waterfall, naturally staggered by title length; while reading, the gallery swipes horizontally, with title and body below:
How to Install
Prerequisites
Install any one of these userscript managers in your browser:
- Tampermonkey (recommended)
- ScriptCat
- Violentmonkey
One-Click Install
👉 Click for one-click install: Readscape · NGA (auto-updating version)
After installation, open or refresh any NGA page (board list or post body) and it takes effect immediately. The name shown in the extension is “阅境 · NGA”.
A Few Notes
| Situation | How to handle |
|---|---|
| Chrome doesn’t pop the install page after clicking the link | Go to chrome://extensions, find Tampermonkey, turn on “Developer mode” and “Allow user scripts” |
| Want to lock a specific version | Download the corresponding .user.js attachment from Releases, or get historical archives from the dist branch |
| Have other NGA beautification scripts installed | Turn them off first — don’t run them together with Readscape; they tend to fight |
Daily Usage
After installation, the following are all the daily operations — no extra configuration needed.
Browsing Lists
- Opening a board page shows the card list; scroll near the bottom and the next page appends automatically — if you don’t want to wait for auto-loading, click “Load next page”.
- Search, hot discussion and favorites filters sit at the top of the list; filters cover all loaded content.
- When the page is at the top, keep pulling down a certain distance until you see “Release to refresh”, then let go and the list updates immediately. Short drags and horizontal swipes won’t trigger it by accident.
- No manual refresh needed normally: the list silently syncs in the background about every 10 seconds by default; new posts append to the end, and your current order and position won’t be disturbed.
- Click into a post and back out — the list returns precisely to your original position — this is the feature I use most: halfway through browsing I go look at some image, and coming back I don’t have to search again.
- Covers are automatically registered from the first body image of the OP’s first post (emojis and quoted images don’t count); images in collapsed blocks and tables are also recognized.
Reading Posts
- Click a card; the post loads smoothly in the background and switches to the reading view only when ready; if you can’t wait, cancel directly or open the original page.
- The first floor is laid out as an image-text note: image left, text right on desktop; horizontally swipeable gallery on mobile. Images, title and body are arranged in reading order.
- Comments load page by page on demand — fetched as far as you read, not the whole board dumped in at once. Reaching the last page tells you directly “you’ve hit the bottom”.
- Floor numbers, replies and quote links are all preserved: clicking “original floor” jumps first to already-loaded floors; unloaded ones fetch that page on demand and then locate. Multiple quotes and cross-page quotes keep their respective floor relationships — no blind merging.
- Body hyperlinks are cleaned up: NGA’s auto-generated warning boxes, hover URL hints and decorative brackets are gone, leaving only the link name and real address; external links get a new-window marker.
- Clicking a body image enters the large-image viewer: arrow keys flip images, Esc closes; the top-right corner has an original-image entry — click it to see blurry-image details.
- Reply and post-response entries are all still there: each floor keeps compact reply and quote buttons; clicking jumps to the original site’s posting page with the original login verification — Readscape doesn’t touch the posting flow.
- Reply-to-post, jump-to-comments and back-to-top actions are tucked into the settings drawer, leaving no fixed bottom bar blocking the content.
Adjusting Appearance
There are two entries: “Reading settings” in the top-right menu, or the floating button at the bottom-right (bottom on mobile). The panel doesn’t cover the page — while adjusting, the page scrolls normally with real-time preview; swipe it away whenever satisfied.
| Setting | Range / options |
|---|---|
| Font size | 85% – 140%, drag takes effect instantly |
| Layout font | system / Songti / rounded font (auto fallback if the device lacks fonts) |
| Color scheme | light / warm paper / dark |
| Mobile columns | single / double |
| Smooth transitions | off restores the native opening behavior |
| List auto-refresh | on by default, roughly one round per 10s; off turns it into a manual “Update list” button |
Settings are saved in browser local storage; next time you open it, it’s still the way you like.
Favorites and Caching
- Tap ♡ on a card to favorite it; the “Favorites” filter at the top of the list fetches them back anytime.
- The settings panel has a cache manager: see how much local space is used, adjust the post cache limit (default 500 posts), one-click cleanup. Cleanup won’t touch your favorites and reading preferences.
- The actual effect: posts you’ve read show their body instantly next time; when the network is poor, cached content is still viewable. Cached posts not accessed for 7 days are cleared automatically — nothing for you to worry about.
Peek at the Author
Clicking a post author, avatar, or your own account pops up a profile card: registration time, level, prestige, post count, wealth — clear at a glance, no more jumping back and forth into profile pages.
Mobile Experience and Compatibility Status
The mobile side uses the web page’s own scrolling: swipe down to collapse the reading top bar, swipe up to restore it, giving the screen to the content. List-to-post is a normal page navigation — the browser’s native back key returns to the list’s original position, no need to hunt for an on-page back button.
Mobile is perfectly supported too! On Android use Edge (extension installation already supported), Kiwi or Firefox Mobile to install Tampermonkey / Violentmonkey, then install Readscape; on iOS use Safari with the Stay or Userscripts extension to load it directly. My current daily scenario is curling up in bed at night browsing NGA recap threads with iPhone Safari — waterfall scrolling, gallery swiping, return-to-position, silky all the way.
| Environment | Status |
|---|---|
| Chrome / Edge / Brave + Tampermonkey 5.5+ on macOS / Linux / Windows | passed real-device testing |
| Android: Edge / Kiwi / Firefox Mobile + Tampermonkey / Violentmonkey | passed real-device testing |
| iOS: Safari + Stay / Userscripts | passed real-device testing |
Known Trade-offs
- Big cards aren’t a cure-all: waterfalls give great immersion for image-rich boards (wallpapers, photos, lifestyle), but pure-text discussion areas lose first-screen information density. So a later version plans to add a compact text list view, freely switchable.
- The demo video is on its way: a 13-second recording of list scrolling → click to open → page-by-page reading → return to original position; after re-uploading it will go in issue #1.
- Transition boundaries: only ordinary left clicks on adapted links open the reading transition; external links, Ctrl / Cmd clicks and download links all keep the browser’s original handling, and browser back also follows the original site’s flow.
A Brief Technical Note
By convention just three sentences; the details are all in the repository docs:
- Pure frontend userscript: Readscape only rearranges content already loaded on the original page — no faking history, no site-wide AJAX replacement. Login, reply and back all follow the original site’s flow; this is also how the “don’t touch the original site” bottom line is implemented.
- Local caching uses IndexedDB: post bodies, reply pages and favorite relationships are stored in separate tables; images aren’t stored — only addresses are recorded, reusing the browser’s HTTP cache. So the whole project has no server at all.
- Adapter architecture: NGA is only the first adapter; the name “Readscape” originally means crafting comfortable reading interfaces for different websites separately — adding a website means adding an adapter.
If interested, see the repository’s feature and behavior details, architecture notes and development guide.
Entry Summary
| Entry | Address |
|---|---|
| Source repository | corvofeng/readscape |
| One-click install | readscape-nga.user.js (auto-updating) |
| Fixed versions | Releases |
| Demo video | issue #1 |
If NGA’s interface also offends your eyes, install it and browse for ten minutes; if you don’t like it just uninstall — that’s the beauty of userscripts. As for the next website to adapt, you’re welcome to place orders in the issues.