- Overview
- How to Create an Extension
- Project Structure
- Bundling & Automation
- Disclaimer
- Authors & Maintainers
- License
Warning
Educational & Testing Purpose Only
This repository is intended as a technical demonstration and testing environment for Novon extension development. The extensions provided here are examples and are not recommended for use in the production Novon application.
For reliable and verified extensions, please refer to the official Novon extension channels.
This repository acts as a centralized registry for Novon extensions. It contains the source code for provider integrations and the automated infrastructure required to bundle them into .novext packages for the application.
Tip
Recommended Starting Point
We have provided a Template Palette (com.novon.template) that implements the full source interface. Use this as your foundation when building new extensions.
Before you begin, please review the Source Script Technical Specification for the exact Dart-JS contract requirements.
Creating a Novon extension involves defining a manifest, a source script, and an icon.
The manifest defines the core metadata for your extension. It must match the following schema:
{
"id": "com.novon.mysource",
"name": "My Source Name",
"version": "1.0.0",
"apiVersion": "1",
"minAppVersion": "0.0.1",
"lang": "en",
"baseUrl": "https://source.com",
"authorName": "MultiX0",
"icon": "icon.png"
}The JS engine executes this script. It should define the logic for:
- Popular/Recent novel fetching
- Search results
- Novel details (description, status, chapters)
- Page fetching (content extraction)
A square 128x128 or 256x256 PNG image representing the source.
extensions-example/
├── com.novon.kolnovel/ # Extension source directory
│ ├── manifest.json # Extension metadata
│ ├── source.js # Provider logic
│ └── icon.png # Source icon
├── bundles/ # Generated .novext packages
├── icons/ # Synced icons for the index
├── index.json # The global repo registry
└── bundle_extensions.py # Automation & Bundling script
The repository includes a Command Line Interface (CLI) to manage the extension lifecycle and project configuration.
Launch the Novon Shell by running the wrapper script for your platform:
- Windows:
.\novon.ps1 - Linux/macOS:
./novon.sh
Note
On Linux and macOS, you may need to grant execution permissions before running the script:
chmod +x novon.sh
If run without arguments, the tool enters an interactive REPL mode.
| Command | Usage | Description |
|---|---|---|
bundle |
bundle [--upgrade] |
Packages extensions and updates the registry. |
config |
config |
Displays the current settings from novon_config.json. |
set |
set <key> <val> |
Updates a configuration value in novon_config.json. |
list |
list |
Lists all extensions found in the root directory. |
help |
help |
Displays command usage and descriptions. |
exit |
exit |
Terminates the shell session. |
The bundling engine automates the packaging, hashing, and registry synchronization process.
When running the bundle command, the script provides an option to automatically increment the patch version (e.g., 1.0.0 to 1.0.1) in the manifest.json for all discovered extensions.
- Source Integrity: Calculates SHA-256 hashes for every
source.jsto ensure script integrity within the manifest. - Bundle Integrity: Generates SHA-256 hashes for the final
.novextpackages for download verification.
The script automatically updates index.json with the updated versions, hashes, and raw GitHub URLs based on the configuration settings.
The CLI supports one-shot execution for automated environments:
./novon.sh bundle --upgradeextensions-example/
├── com.novon.kolnovel/ # Extension source directory
│ ├── manifest.json # Extension metadata
│ ├── source.js # Provider logic
│ └── icon.png # Source icon
├── bundles/ # Generated .novext packages
├── index.json # The global repo registry
├── novon_config.json # Centralized project configuration
├── novon.py # CLI entry point
├── bundle_extensions.py # Bundling logic engine
├── novon.sh # Bash entry point
└── novon.ps1 # PowerShell entry point
Note
Ensure you increment the version field in your manifest.json before running the bundling script, otherwise the registry will not detect the update as a new release.
Caution
Legal Disclaimer
This repository and its maintainers do not host, mirror, or distribute any novel content. The extensions provided here are simply tools (parsers) that allow users to access content from third-party websites through the Novon application.
By using these extensions, you acknowledge that:
- You are responsible for the content you access.
- You must comply with the Terms of Service of the respective third-party providers.
- The maintainers of this repository are not affiliated with, nor do they endorse, any content found on the provider websites.
Use of these extensions is at your own risk.
We welcome contributions from the community. To maintain the quality of the project, we follow a simple workflow for all changes.
Please note that we do not accept direct pushes to the main branch. To contribute, please follow these steps:
- Fork the Repository: Create your own copy of the project.
- Create a Branch: Make your changes in a new branch on your fork.
- Open a Pull Request: Submit your changes for review by opening a pull request against our
mainbranch.
All pull requests must receive at least one approval from a maintainer before they can be merged. Thank you for helping improve the Novon ecosystem
- MultiX0 — Lead Developer & Maintainer
Licensed under the Apache License 2.0. See LICENSE for full details.
