# Replacing LGPL runtime libraries

ntfyx-runtime-entry.mjs is the complete bundled application form for this release,
including the release public key and runtime dependencies. The private signing key
is never included. It can run on a compatible replacement Bun runtime:

```sh
/path/to/modified/bun ./ntfyx-runtime-entry.mjs version --json
/path/to/modified/bun ./ntfyx-runtime-entry.mjs help
```

The original runtime is Bun 1.4.2. Its complete source, build instructions and
third-party source revisions are published at:
https://github.com/oven-sh/bun/tree/bun-v1.4.2
https://github.com/oven-sh/bun/blob/bun-v1.4.2/CONTRIBUTING.md

To change the LGPL JavaScriptCore/WebKit library, use the upstream Bun source at
that tag, clone https://github.com/oven-sh/WebKit into vendor/WebKit, run
`bun sync-webkit-source` (which checks out the WEBKIT_VERSION pinned in
`scripts/build/deps/webkit.ts`), make your modifications, then run
`bun run build:local`. See the included upstream Bun license for its instructions.
For other LGPL components, use the revisions and build configuration in that Bun
source tree. Source provenance is supplied with this distribution; no local
ntfyx modifications were made to Bun, WebKit or TinyCC.

Run the supplied application form with your resulting runtime. Bundling it into
a standalone executable is optional; a standard prebuilt-target Bun --compile
can substitute an upstream runtime, so it is not proof that your library
modifications were included. Running the bundle with your modified runtime avoids
that substitution. Runtime replacement may affect correctness and Apple trust.

The ntfyx license permits library replacement/relinking and reverse engineering
for debugging those modifications. It does not grant a general right to
redistribute ntfyx proprietary source or modified ntfyx applications. Third-party
licenses take precedence wherever required.
