license: relicense to AGPL-3.0-only with commercial dual-license

- LICENSE -> verbatim GNU AGPL-3.0; add LICENSE-COMMERCIAL.md + SECURITY.md
- CLA -> exclusive-license grant (contributors keep copyright); add README
  anti-rugpull covenant + relicense record
- NOTICE / README / CONTRIBUTING / CLAUDE.md / package.json x5 updated;
  contact routed through GitHub (no email placeholders)
- AGPL section 13 source offer: operator-configurable BACKSPACE_SOURCE_URL +
  build-injected commit; sourceCodeUrl+commit on /api/instance/info;
  SourceCodeLink on login/register/settings/desktop; docs + .env.example updated
This commit is contained in:
Jannis Braun
2026-07-01 16:38:22 +02:00
parent 16d75f2806
commit f481e1fe9e
34 changed files with 1084 additions and 165 deletions
+4
View File
@@ -96,6 +96,8 @@ interface MenuActions {
onChangeInstance: () => void;
onCheckForUpdates: () => void;
onRestartToInstall: () => void;
// AGPL-3.0 § 13: open the Corresponding Source of the running instance.
onOpenSource: () => void;
onQuit: () => void;
}
@@ -138,6 +140,7 @@ export function buildTrayMenuTemplate(
items.push(
{ type: 'separator' },
{ label: 'Change Instance', click: actions?.onChangeInstance },
{ label: 'Source code (AGPL)', click: actions?.onOpenSource },
{ type: 'separator' },
{ label: 'Quit', click: actions?.onQuit },
);
@@ -152,6 +155,7 @@ export function buildAppMenuTemplate(
): MenuItemConstructorOptions[] {
const appSubmenu: MenuItemConstructorOptions[] = [
{ role: 'about' },
{ label: 'Source code (AGPL)', click: () => actions?.onOpenSource?.() },
{ type: 'separator' },
checkForUpdatesItem(state, () => actions?.onCheckForUpdates?.()),
];