# oscnews: an Open Source China news tab for Chrome

> oscnews is a Chrome extension whose new tab page pulls in software update news, documentation links, a GitHub trending list, a Linux command index, browsing history and a clock. The code is a React 18 application bundled with webpack through the kkt build tool, and the README spends most of its length on the author's other apps.

**jaywcjlove/oscnews** — Chrome 插件，查看开源中国软件更新资讯，文档导航，GitHub 趋势榜，linux命令索引，浏览历史记录和时钟页面。

- Repository: https://github.com/jaywcjlove/oscnews
- Website: https://chrome.google.com/webstore/detail/oscnews/iheapfheanfjcemgneblljhaebonakbg
- Stars: 863 · Forks: 124
- Language: JavaScript
- License: not declared
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/jaywcjlove-oscnews

## Six small things on one new tab page

oscnews is a Chrome extension, and the description in the repository's metadata lists what it puts on the page: Open Source China software update news, documentation navigation, a GitHub trending list, a Linux command index, a browsing history and a clock page.

That is the whole product, and the naming of the project is the Chinese one for Open Source China news, with the Open China logo in the README and the extension published under the oscnews name in the Chrome Web Store, where the homepage field points at the store listing rather than at a site of its own.

The repository topics confirm the shape: chrome, chrome-extension, crx, extensions, new-tab, oscnews, react and webpack, plus chrome-github and chrome-oscnews. The new-tab and crx topics say what kind of thing this is, a page that replaces what the browser shows when you open a new tab, packaged as a Chrome extension.

The primary language is JavaScript, the default branch is master, the last push was on 2026-04-21, and the published releases are v1.15.0 and v1.16.0, both on 2022-03-26, then v1.17.0 on 2026-03-31. That four-year gap between the two middle releases is the most interesting fact in the history, and it explains a lot about the rest of the repository.

## The dependencies are the feature list

The package.json is where this project explains itself, because the README does not, and each dependency maps onto one of the panels.

linux-command at ~1.9.0 is the command index, a package that provides a searchable list of Linux commands. solarlunar at ~2.0.7 is the clock panel's calendar side, since it computes solar and lunar dates, which is what a Chinese-language clock page would show alongside the time. cheerio at ~1.0.0-rc.10 is an HTML parser, and the presence of a server-side parser inside a browser extension says something: the extension parses HTML it fetches rather than consuming a JSON API, which is the usual way to read a site that has no public API.

The remaining runtime dependencies are the familiar React stack. react and react-dom at ~18.3.0, prop-types at ~15.8.1, classnames at ~2.3.1, and @wcj/dark-mode at ~1.0.13, which is a dark mode helper from the same author, used to follow the system colour scheme.

Two of those versions are worth pausing on. React 18.3.0 is a maintenance release of a major version that is no longer the newest, and cheerio is still pinned to a release candidate, 1.0.0-rc.10, which is a long-lived pre-release that the project has kept on. Both are consistent with a codebase that has not been reworked since 2022 and is being kept working rather than kept current.

## Webpack, by way of kkt

The build is webpack, but it is not run directly. The two scripts in package.json are:

```json
"start": "BUILD_PATH=dist kkt start --watch --no-open-browser",
"build": "BUILD_PATH=dist kkt build"
```

kkt is the wrapper, and the BUILD_PATH variable is what it reads to decide where the output goes. The development script adds --watch and --no-open-browser, so a start does not launch a browser window, which is the right default for a tool that serves a page to the extension itself.

The development dependencies explain what kkt is doing. @kkt/less-modules at ~7.5.5 brings in the Less support, clean-webpack-plugin at ~4.0.0 clears the output directory, and filemanager-webpack-plugin at ~10.0.1 copies static files into the build. The configuration for all of it is in a .kktrc.js file at the repository root, and the project is set up as a private package with index.js as its main entry.

The browserslist field in the same file is where the browser targets are written, and they are the ordinary ones: for production, greater than 0.2 percent usage, not dead, and not op_mini all, and for development, the last version of Chrome, Firefox and Safari. The eslintConfig extends react-app, which is the configuration that comes with create-react-app, so the linting rules are the ones that tool ships with rather than a hand-written set.

## The extension shell and the React app live side by side

The top-level listing shows the split that any Chrome extension has, with the extension's own files in one directory and the page it displays built from another.

chrome-main/ holds the extension side, the manifest and the background pieces, and src/ holds the React application that renders the new tab page, with public/ for static assets and an img/ directory for the images the README and the store listing use. That two-directory shape is what a browser extension built with a web application framework looks like, because the manifest and the page have to be packaged together but written separately.

There are also a few files whose presence tells you about the workflow. The .env file at the root is where environment-specific settings live, and .gitmodules says the project pulls in at least one dependency as a submodule rather than through the package manager. .editorconfig keeps whitespace consistent across contributors, and renovate.json is the dependency update bot, which is how a project with pinned versions like these keeps them from rotting further.

The package-lock.json is present alongside the package.json, so the install is reproducible even though the project uses a webpack-era toolchain.

What is not in the tree is worth noting as well. There is no LICENSE file in the top-level listing, and no test directory, and no CI configuration beyond the .github/ directory whose contents are not shown. The package.json records the licence as MIT, which is the clearest statement of terms available, but the repository's own licence metadata is empty, so anyone reusing the code should confirm the position rather than assume it.

## The README is mostly a list of other apps

This is the first thing a reader will notice, and it is worth describing plainly rather than skipping over it.

The top of the README is a long HTML block of links to the author's other applications, Scap, Screen Test, Deskmark, Keyzer, Vidwall Hub, Mousio, Musicer, Audioer, FileSentinel, FocusCursor, Videoer, KeyClicker, DayBar, Iconed, Menuist, Paste Quick, Quick RSS, Web Serve, Copybook Generator, DevTutor, RegexMate, Time Passage, Iconize Folder, Textsound Saver, Create Custom Symbols, DevHub, Resume Revise, Palette Genius and Symbol Scribe, each with an icon and a link to the author's site, and a note at the top that using the app is a way to support the author. Below that block is the Open China logo and a Buy me a coffee badge.

The actual project description is one line further down, the same one that appears in the repository metadata, and after it comes the changelog and the rest.

So the documentation value of this README is low, and a reader looking for how the extension works will not find it. What the README does establish is the project's origin and its audience, that this is the work of one developer with a large catalogue of small macOS and iOS utilities, and that the Open Source China news extension is the piece of it that is open.

The practical consequence for anyone evaluating the project is that the source is the documentation, and the dependency list in package.json plus the directory names are the only description of the architecture available.

## Version numbers, and what the four-year gap explains

The release history has three entries, and the middle one is telling. v1.15.0 and v1.16.0 were both published on 2022-03-26, twenty minutes apart, and then v1.17.0 came on 2026-03-31.

A gap of four years between a 1.16 and a 1.17, with the last push on 2026-04-21, says that the project was dormant and then resumed, and the version number stayed at 1.x across the restart. The package.json version is 1.17.0, which matches the newest release, so the manifest and the tag are in step.

That dormancy explains the rest of the dependency set. kkt at ~7.5.5 is a tool built for the webpack 4 era, and it is not the kind of dependency that gets updated without a migration. React 18.3.0 is the last release of that major version. cheerio is on a release candidate that predates the dormancy. The browserslist targets still exclude op_mini all, which was a common requirement years ago and is rare now.

The two things that suggest the code still runs are the release itself and the browser store listing, since a version was published in March 2026, and the project's own package-lock.json, which pins a dependency tree that was resolved at some point.

The practical advice is to try the extension before you study the code, and to expect the toolchain to be the limiting factor if you want to build on it. A new extension in 2026 would start from a current bundler and a current React, and the interesting parts of this project, the panel selection and the Chinese-language clock, are small enough to reimplement.

## Conclusion

Adopt oscnews if you work in a Chinese open source community and want a new tab page that mixes software update notices, a command reference and a trending list, because that is exactly the set of feeds the extension assembles and the dependency list shows each one being fed by a dedicated package. Do not adopt it as a foundation for your own extension, because the build is tied to the kkt wrapper around webpack and the dependency set is several years old, so a new project should start from a current toolchain. Before you install it, check the version the Web Store is serving, because the published releases jump from 2022 to 2026, and note that the licence is stated as MIT in package.json while the repository's own licence metadata is empty, so treat the package.json statement as the only clear terms you have.

## FAQ

### What does the oscnews Chrome extension show?

According to the repository description, it shows Open Source China software update news, documentation navigation, a GitHub trending list, a Linux command index, browsing history and a clock page, on a new tab. The repository topics list chrome, new-tab, crx, react and webpack.

### How do I build oscnews?

The package.json defines a start script that runs BUILD_PATH=dist kkt start --watch --no-open-browser and a build script that runs BUILD_PATH=dist kkt build, so the project is bundled with webpack through the kkt tool, with the configuration in .kktrc.js at the repository root.

### What is the latest version of oscnews?

v1.17.0, published on 2026-03-31, and the version field in package.json matches it. The two previous releases, v1.15.0 and v1.16.0, were both published on 2022-03-26, so there is a four-year gap between them and the current release.

### Which frameworks does oscnews use?

React 18.3.0 with react-dom, prop-types and classnames, plus a dark mode helper, a Linux command data package, a solar and lunar date library and cheerio for parsing fetched HTML. The build is webpack through the kkt tool, with Less support, and the eslintConfig extends react-app.

## Sources

- [Issues](https://github.com/jaywcjlove/oscnews/issues)
- [jaywcjlove/oscnews on GitHub](https://github.com/jaywcjlove/oscnews)
- [Project website](https://chrome.google.com/webstore/detail/oscnews/iheapfheanfjcemgneblljhaebonakbg)
- [README](https://github.com/jaywcjlove/oscnews/blob/master/README.md)
- [Releases](https://github.com/jaywcjlove/oscnews/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/jaywcjlove-oscnews
