Skip to content

release: promote dev to main - #46

Merged
Sycatle merged 2 commits into
mainfrom
dev
Aug 25, 2026
Merged

release: promote dev to main#46
Sycatle merged 2 commits into
mainfrom
dev

Conversation

@Sycatle

@Sycatle Sycatle commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Promotes the licence and the README corrections to the branch visitors land on, immediately before the repository becomes public.

Two commits:

  • 4f524aa chore: choose the AGPL, and say what the table already doesLICENSE, Cargo.toml from UNLICENSED to AGPL-3.0-or-later, the field added to both package.json, the README's licence section rewritten, and the "What works today" table brought up to date with Web Push, the verifiable client and deploy/.
  • 2c72b1a — its merge.

Why this has to land before the visibility change, not after: main is the default branch. Opened public without this, the repository would greet everybody with "No licence has been chosen yet — this repository is not legally open source", no licence badge, and a feature table two features behind. The licence exists on dev and nowhere a visitor looks.

CI was green on this exact content on #45rust 18m13, web, wasm, changes; audit skipped by its path filter.

Sycatle and others added 2 commits August 25, 2026 18:39
The repository is about to become public, and public is not the same as open
source. With no licence, default copyright applies: somebody may read this and
nothing else. The README said so plainly rather than wearing a badge it had not
earned, and that sentence has now been paid for.

# Why the Affero variant

For the one thing it adds over the GPL: running a modified version as a network
service counts as distributing it. A messenger is used over a network and almost
never installed by the person it serves, so the plain GPL would let somebody host
a changed build — with the cryptography quietly weakened — and owe nobody the
source.

That is the same substitution the manifest, the release workflow and the browser
extension exist to make detectable. A licence permitting in law what the code
fights in practice would have been an odd pair.

`publish = false` stays on every crate. The licence says what may be done with
the source; it does not make any of this fit for a registry, and the status
section is unchanged — no audit, and none coming.

# The table was two features behind

`README.md` listed neither Web Push nor the verifiable client, both of which
landed today, nor `deploy/`. Somebody arriving at a public repository reads that
table first, and it described a project from this morning.
chore: choose the AGPL, and say what the table already does
@Sycatle
Sycatle merged commit 377e87e into main Aug 25, 2026
5 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2c72b1a096

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread README.md
Comment on lines +129 to +130
**GNU Affero General Public License, version 3 or later.** The full text is in
[LICENSE](LICENSE).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the remaining unlicensed contributor notice

Declaring the repository AGPL-licensed here leaves CONTRIBUTING.md:206-208 telling prospective contributors that no licence has been chosen, that nothing grants redistribution rights, and that the README says the same. Anyone reading the contribution guide now receives the exact opposite legal status, so that stale paragraph should be updated as part of this licence switch.

Useful? React with 👍 / 👎.

Comment thread README.md
| Storage quota | 256 MiB per account by default, charged on vault writes and attachment uploads, credited back when a purge deletes. Envelopes are outside it: charging a sealed post would mean naming its sender — see [docs/ROADMAP.md](docs/ROADMAP.md) |
| Web, desktop | Vite 7 + React 19; Tauri 2 wraps the same build |
| Push notifications | Web Push, off until a deployment names a contact in `VAPID_SUBJECT`. The wake-up carries no text, no sender and no group id — the worker cannot decrypt, so it says only that something arrived |
| Verifiable web client | The bundle belongs to no deployment, so one published manifest of hashes describes every instance. CI attests it to GitHub; an extension compares what the browser actually received. See [docs/THREAT-MODEL.md](docs/THREAT-MODEL.md) § 4quinquies for what that establishes and what it does not |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Qualify the manifest coverage of call-enabled builds

The claim that one manifest describes every instance is false when an operator enables the audio-call deployment described above: docs/DEPLOY.md:92-94 and scripts/release-web.sh:26-29 explicitly state that setting VITE_MEDIA_URL changes index.html and makes the deployment stop matching the published build. In that supported configuration the extension will report a legitimate deployment as altered, so this row should state the call-enabled exception rather than promise coverage of every instance.

Useful? React with 👍 / 👎.

Comment thread README.md
Comment on lines +134 to +135
Because of the one thing it adds: **running a modified version as a network service counts as
distributing it**. A messenger is used over a network and almost never installed by the person it

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Describe the AGPL network obligation accurately

The AGPL does not redefine operating a network service as distribution: Section 13 in LICENSE:542-548 instead requires a modified version that supports remote interaction to prominently offer its Corresponding Source to the users interacting with it. Calling the service operation itself distribution misstates both the legal mechanism and the obligation being imposed, so this public licence rationale should describe the source-offer requirement directly.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant