Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d5a136dff | ||
|
|
580827f7ca | ||
|
|
6f33c7277a | ||
|
|
6f1dfedde2 | ||
|
|
c0774b5f58 | ||
|
|
4fdad89fa6 | ||
|
|
80fcf6c227 | ||
|
|
f4995e5882 | ||
|
|
e21a895390 | ||
|
|
c51b68194a | ||
|
|
6b0261d66c |
@@ -162,6 +162,10 @@ desktop_linux:
|
||||
MAX_GLIBC: "2.31"
|
||||
USE_HARD_LINKS: "false"
|
||||
SQLCIPHER_BUNDLED: "1"
|
||||
# Eigene Build-Variante: Produktname ThreadNet statt Element. Ohne das nutzt
|
||||
# electron-builder element.io/release/build.json und die Pakete heissen weiter
|
||||
# "element-desktop" (real passiert 2026-08-02).
|
||||
VARIANT_PATH: axion1337/build.json
|
||||
script:
|
||||
- pnpm install --frozen-lockfile --filter element-desktop
|
||||
- cp -r apps/web/webapp apps/desktop/webapp
|
||||
@@ -201,6 +205,8 @@ desktop_windows:
|
||||
SQLCIPHER_BUNDLED: "1"
|
||||
ELECTRON_CACHE: C:\electron-cache
|
||||
ELECTRON_BUILDER_CACHE: C:\eb-cache
|
||||
# Eigene Build-Variante (Produktname ThreadNet) - siehe desktop_linux
|
||||
VARIANT_PATH: axion1337/build.json
|
||||
script:
|
||||
- pnpm install --frozen-lockfile --filter element-desktop
|
||||
# GitHub-CDN-Downloads (Electron-Binary, winCodeSign, NSIS) reissen im Gast
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"appId": "im.riot.app",
|
||||
"name": "threadnet-desktop",
|
||||
"productName": "ThreadNet",
|
||||
"description": "ThreadNet — powered by Element",
|
||||
"protocols": ["io.element.desktop", "element"],
|
||||
"mac.icon": "build/icon.icns",
|
||||
"dmg.badgeIcon": "build/icon.icns"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 315 KiB After Width: | Height: | Size: 395 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 395 KiB |
@@ -48,6 +48,8 @@ interface Variant extends Metadata {
|
||||
"appId": string;
|
||||
"linux.executableName"?: string;
|
||||
"linux.deb.name"?: string;
|
||||
"mac.icon"?: string;
|
||||
"dmg.badgeIcon"?: string;
|
||||
"protocols": string[];
|
||||
}
|
||||
|
||||
@@ -202,6 +204,31 @@ if (variant["linux.deb.name"]) {
|
||||
config.deb.fpm.push("--name", variant["linux.deb.name"]);
|
||||
}
|
||||
|
||||
/**
|
||||
* ThreadNet-Fork: Icon-Pfade fuer macOS ueberschreibbar machen.
|
||||
*
|
||||
* Upstream setzt `mac.icon` auf das Icon-Composer-Bundle `build/icon.icon`
|
||||
* (macOS 26). Dessen Verarbeitung ruft `actool` auf, das es nur mit dem vollen
|
||||
* Xcode gibt (~10 GB, App-Store-Login) - mit blossen CommandLineTools scheitert
|
||||
* damit JEDER macOS-Build, nicht nur das DMG:
|
||||
*
|
||||
* ⨯ Failed to check actool version. Is Xcode 26 or higher installed?
|
||||
*
|
||||
* Ueber die Variante laesst sich stattdessen das klassische `.icns` waehlen.
|
||||
* Bewusst hier als Variantenoption statt als Aenderung an den Defaults oben:
|
||||
* So bleibt Upstreams Wert unberuehrt und ein Upstream-Merge erzeugt keinen
|
||||
* Konflikt an dieser Zeile.
|
||||
*
|
||||
* Preis: kein macOS-26-Icon-Rendering. Ohne Xcode gaebe es ohnehin keinen Build.
|
||||
*/
|
||||
if (variant["mac.icon"]) {
|
||||
config.mac.icon = variant["mac.icon"];
|
||||
}
|
||||
|
||||
if (variant["dmg.badgeIcon"]) {
|
||||
config.dmg.badgeIcon = variant["dmg.badgeIcon"];
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow specifying windows signing cert via env vars
|
||||
* @param {string} process.env.ED_SIGNTOOL_SUBJECT_NAME
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "element-desktop",
|
||||
"productName": "Element",
|
||||
"productName": "ThreadNet",
|
||||
"main": "lib/electron-main.js",
|
||||
"exports": "./lib/electron-main.js",
|
||||
"version": "1.12.17",
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"disable_login_language_selector": false,
|
||||
"disable_3pid_login": false,
|
||||
"force_verification": false,
|
||||
"brand": "Element",
|
||||
"brand": "aXion1337.Chat",
|
||||
"integrations_ui_url": "https://scalar.vector.im/",
|
||||
"integrations_rest_url": "https://scalar.vector.im/api",
|
||||
"integrations_widgets_urls": [
|
||||
|
||||
@@ -10,3 +10,12 @@ Please see LICENSE files in the repository root for full details.
|
||||
.mx_HelpUserSettingsTab_accessTokenDetails {
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
/* ThreadNet-Fork: Attribution unter den Versionsangaben. Zurueckhaltend
|
||||
gesetzt - sie soll auffindbar sein, nicht um Aufmerksamkeit konkurrieren
|
||||
mit der Version darueber, die Nutzer hier tatsaechlich suchen. */
|
||||
.mx_HelpUserSettingsTab_attribution {
|
||||
margin-top: var(--cpd-space-2x);
|
||||
color: var(--cpd-color-text-secondary);
|
||||
font: var(--cpd-font-body-sm-regular);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "Element",
|
||||
"short_name": "Element",
|
||||
"name": "ThreadNet",
|
||||
"short_name": "ThreadNet",
|
||||
"display": "standalone",
|
||||
"theme_color": "#76CFA6",
|
||||
"theme_color": "#ed4f4c",
|
||||
"start_url": "index.html",
|
||||
"icons": [
|
||||
{
|
||||
|
||||
|
After Width: | Height: | Size: 590 KiB |
|
Before Width: | Height: | Size: 596 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 395 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 829 B After Width: | Height: | Size: 901 B |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 54 KiB |
@@ -20,7 +20,11 @@ export const DEFAULTS: DeepReadonly<IConfigOptions> = {
|
||||
branding: {
|
||||
logo_link_url: "https://element.io",
|
||||
auth_header_logo_url: "themes/element/img/logos/element-logo.svg",
|
||||
welcome_background_url: "themes/element/img/backgrounds/lake.jpg",
|
||||
// ThreadNet-Fork: eigenes Titelbild statt Elements lake.jpg. Steht hier im
|
||||
// Default und nicht in element-values.yaml, weil die Bilddatei ohnehin nur
|
||||
// ueber einen Build in den Container kommt - eine zusaetzliche Config-Zeile
|
||||
// waere eine zweite Stelle, die mitwandern muesste.
|
||||
welcome_background_url: "themes/element/img/backgrounds/alpenglow.jpg",
|
||||
},
|
||||
help_url: "https://element.io/help",
|
||||
help_encryption_url: "https://element.io/help#encryption",
|
||||
@@ -44,9 +48,10 @@ export const DEFAULTS: DeepReadonly<IConfigOptions> = {
|
||||
// be preferred over their config.
|
||||
desktopBuilds: {
|
||||
available: true,
|
||||
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
||||
logo: require("../res/img/element-desktop-logo.svg").default,
|
||||
url: "https://element.io/get-started",
|
||||
// ThreadNet-Fork: eigene Marke und eigener Download-Pfad statt
|
||||
// element.io - wir liefern eigene Desktop-Builds aus.
|
||||
logo: "vector-icons/512.png",
|
||||
url: "https://git.lab/axion1337.chat/ThreadNet-Web/-/releases",
|
||||
},
|
||||
|
||||
feedback: {
|
||||
|
||||
@@ -32,8 +32,8 @@ export const ErrorView: React.FC<IProps> = ({ title, messages, footer, children
|
||||
<img
|
||||
className="mx_ErrorView_logo"
|
||||
height="160"
|
||||
src="themes/element/img/logos/element-app-logo.png"
|
||||
alt="Element"
|
||||
src="vector-icons/512.png"
|
||||
alt="ThreadNet"
|
||||
/>
|
||||
<div className="mx_ErrorView_container">
|
||||
<Heading size="md" weight="semibold">
|
||||
|
||||
@@ -106,34 +106,42 @@ export default class HelpUserSettingsTab extends React.Component<EmptyObject, IS
|
||||
<SettingsSubsection heading={_t("common|credits")}>
|
||||
<SettingsSubsectionText>
|
||||
<ul>
|
||||
{/* ThreadNet-Fork: eigenes Titelbild, deshalb eigene Danksagung.
|
||||
Bewusst OHNE _t(): der Schluessel credits|default_cover_photo
|
||||
steckt in 32 Sprachdateien, 31 davon nennen Elements Fotografen
|
||||
namentlich. Wuerden wir nur en/de anpassen, stuende in 29
|
||||
Sprachen eine falsche Attribution — und die uebrigen 29 koennen
|
||||
wir nicht pflegen, sie kommen aus Elements Uebersetzungsdienst.
|
||||
Ein Fotografenname und eine Lizenzbezeichnung werden ohnehin
|
||||
nicht uebersetzt. Der ungenutzte Schluessel bleibt in den
|
||||
Sprachdateien stehen — ihn aus 32 Dateien zu entfernen waere
|
||||
Laerm im naechsten Upstream-Merge. */}
|
||||
<li>
|
||||
{_t(
|
||||
"credits|default_cover_photo",
|
||||
{},
|
||||
{
|
||||
photo: (sub) => (
|
||||
<ExternalLink
|
||||
href="themes/element/img/backgrounds/lake.jpg"
|
||||
rel="noreferrer noopener"
|
||||
target="_blank"
|
||||
>
|
||||
{sub}
|
||||
</ExternalLink>
|
||||
),
|
||||
author: (sub) => (
|
||||
<ExternalLink href="https://www.flickr.com/golan">{sub}</ExternalLink>
|
||||
),
|
||||
terms: (sub) => (
|
||||
<ExternalLink
|
||||
href="https://creativecommons.org/licenses/by-sa/4.0/"
|
||||
rel="noreferrer noopener"
|
||||
target="_blank"
|
||||
>
|
||||
{sub}
|
||||
</ExternalLink>
|
||||
),
|
||||
},
|
||||
)}
|
||||
The{" "}
|
||||
<ExternalLink
|
||||
href="themes/element/img/backgrounds/alpenglow.jpg"
|
||||
rel="noreferrer noopener"
|
||||
target="_blank"
|
||||
>
|
||||
default cover photo
|
||||
</ExternalLink>{" "}
|
||||
is by <ExternalLink href="https://unsplash.com/@heytowner">John Towner</ExternalLink> on{" "}
|
||||
<ExternalLink
|
||||
href="https://unsplash.com/photos/JgOeRuGD_Y4"
|
||||
rel="noreferrer noopener"
|
||||
target="_blank"
|
||||
>
|
||||
Unsplash
|
||||
</ExternalLink>
|
||||
, used under the{" "}
|
||||
<ExternalLink
|
||||
href="https://unsplash.com/license"
|
||||
rel="noreferrer noopener"
|
||||
target="_blank"
|
||||
>
|
||||
Unsplash License
|
||||
</ExternalLink>
|
||||
.
|
||||
</li>
|
||||
<li>
|
||||
{_t(
|
||||
@@ -259,6 +267,15 @@ export default class HelpUserSettingsTab extends React.Component<EmptyObject, IS
|
||||
{cryptoVersion}
|
||||
<br />
|
||||
</CopyableText>
|
||||
{/* ThreadNet-Fork: Attribution an Element. Bewusst NICHT in
|
||||
getVersionTextToCopy — der Text dort geht in Fehlerberichte,
|
||||
dort ist die Herkunft des Forks nur Rauschen. Ebenso bewusst
|
||||
ohne _t(): ein Markenhinweis wird nicht übersetzt, und jeder
|
||||
zusätzliche i18n-Schlüssel ist Reibung beim Upstream-Merge. */}
|
||||
<div className="mx_HelpUserSettingsTab_attribution">
|
||||
ThreadNet — powered by{" "}
|
||||
<ExternalLink href="https://element.io">Element</ExternalLink>
|
||||
</div>
|
||||
{updateButton}
|
||||
</SettingsSubsectionText>
|
||||
</SettingsSubsection>
|
||||
|
||||
@@ -2,19 +2,20 @@
|
||||
<html lang="en" style="height: 100%;">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Element</title>
|
||||
<title>ThreadNet</title>
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="<%= require('../../res/vector-icons/120.png') %>">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="<%= require('../../res/vector-icons/144.png') %>">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="<%= require('../../res/vector-icons/152.png') %>">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="<%= require('../../res/vector-icons/180.png') %>">
|
||||
<link rel="icon" href="vector-icons/favicon.ico" sizes="any">
|
||||
<link rel="manifest" href="manifest.json">
|
||||
<meta name="referrer" content="no-referrer">
|
||||
<link rel="icon" type="image/png" sizes="24x24" href="<%= require('../../res/vector-icons/24.png') %>">
|
||||
<link rel="icon" type="image/png" sizes="144x144" href="<%= require('../../res/vector-icons/144.png') %>">
|
||||
<link rel="icon" type="image/png" sizes="512x512" href="<%= require('../../res/vector-icons/512.png') %>">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="apple-mobile-web-app-title" content="Element">
|
||||
<meta name="application-name" content="Element">
|
||||
<meta name="apple-mobile-web-app-title" content="ThreadNet">
|
||||
<meta name="application-name" content="ThreadNet">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
<meta property="og:image" content="<%= og_image_url %>" />
|
||||
<meta http-equiv="Content-Security-Policy" content="
|
||||
|
||||