diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..f5196ed85 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,101 @@ +# GitLab-CI fuer den ThreadNet-Web-Fork (Lab-GitLab: git.lab). +# Ersetzt die frueheren GitHub/Gitea-Actions-Workflows - Hintergrund: docs/axion1337-fork.md. +# +# Erkenntnisse aus den Gitea-CI-Versuchen (2026-07-30), hier eingeflossen: +# - kein scripts/layered.sh: wuerde den gepinnten matrix-js-sdk-Stand aus pnpm-lock.yaml +# mit Upstream-develop ueberschreiben (und braucht jq) -> frozen-lockfile-Install +# - webpack braucht ~4 GB Heap -> NODE_OPTIONS +# - Desktop-Build laeuft im dockerbuild-Image (rust:bullseye + node, glibc-2.31-Ziel) + +stages: + - build + - package + +web: + stage: build + image: node:24-bullseye + variables: + NODE_OPTIONS: "--max-old-space-size=6144" + CI_PACKAGE: "true" + before_script: + - corepack enable + script: + - pnpm install --frozen-lockfile + - cp apps/web/element.io/develop/config.json apps/web/config.json + - VERSION=$(scripts/get-version-from-git.sh) pnpm --dir apps/web build + artifacts: + paths: + - apps/web/webapp + expire_in: 1 day + +# Baut das kanonische Web-Image (apps/web/Dockerfile, Kontext = Monorepo-Root) und pusht +# es in die rohana-Registry, aus der Flux/k8s zieht. Deploy bleibt ein manueller Tag-Bump +# im gitops-Repo. Bewusster Doppel-Build (webpack laeuft im web-Job UND im Dockerfile) - +# kanonisch/reproduzierbar vor schnell; Optimierung als Folgearbeit in Issue #2. +docker_web: + stage: package + image: docker:27-cli + needs: + - job: web + artifacts: false + rules: + - if: $CI_COMMIT_BRANCH == "main" + variables: + IMAGE: rohana.axion1337.de/sorb/threadnet-web + DOCKER_BUILDKIT: "1" + script: + - echo "$REGISTRY_PASSWORD" | docker login rohana.axion1337.de -u "$REGISTRY_USER" --password-stdin + - docker build -f apps/web/Dockerfile -t "$IMAGE:sha-$CI_COMMIT_SHORT_SHA" -t "$IMAGE:latest-ci" . + - docker push "$IMAGE:sha-$CI_COMMIT_SHORT_SHA" + - docker push "$IMAGE:latest-ci" + +# Einmalig/selten: Build-Image fuer den Desktop-Build (rust:bullseye + node + tcl/sqlcipher, +# aus apps/desktop/dockerbuild). Manuell ausloesen, wenn sich .node-version oder das +# Dockerfile aendert. +desktop_image: + stage: package + image: docker:27-cli + rules: + - if: $CI_COMMIT_BRANCH == "main" + when: manual + allow_failure: true + variables: + IMAGE: rohana.axion1337.de/sorb/element-desktop-build + script: + - echo "$REGISTRY_PASSWORD" | docker login rohana.axion1337.de -u "$REGISTRY_USER" --password-stdin + - docker build -f apps/desktop/dockerbuild/Dockerfile -t "$IMAGE:bullseye" apps/desktop + - docker push "$IMAGE:bullseye" + +# Electron-Linux-Build (amd64, static sqlcipher) - repliziert den am 2026-07-29 manuell +# verifizierten Build-Weg. Erst manuell, bis der Ablauf einmal gruen war. +desktop_linux: + stage: package + image: rohana.axion1337.de/sorb/element-desktop-build:bullseye + needs: + - job: web + artifacts: true + rules: + - if: $CI_COMMIT_BRANCH == "main" + when: manual + allow_failure: true + variables: + MAX_GLIBC: "2.31" + USE_HARD_LINKS: "false" + SQLCIPHER_BUNDLED: "1" + script: + - pnpm install --frozen-lockfile --filter element-desktop + - cp -r apps/web/webapp apps/desktop/webapp + # Produktions-Client-Config (getrackt seit diesem Commit, vorher nur im manuellen Build) + - cp apps/desktop/axion1337/config.json apps/desktop/webapp/config.json + - cd apps/desktop + - pnpm run asar-webapp + - pnpm run build:native + # pnpm/npm setzen beim Install kein Executable-Bit auf 7za - bekannter Fix, + # gleicher Schritt wie in der Upstream-CI ("Fix permissions") + - chmod +x ../../node_modules/7zip-bin/linux/*/7za || true + - pnpm run build --publish never -l tar.gz -l deb + artifacts: + paths: + - apps/desktop/dist/*.deb + - apps/desktop/dist/*.tar.gz + expire_in: 1 week diff --git a/apps/desktop/axion1337/config.json b/apps/desktop/axion1337/config.json new file mode 100644 index 000000000..7991e8a5d --- /dev/null +++ b/apps/desktop/axion1337/config.json @@ -0,0 +1,223 @@ +{ + "brand": "aXion1337.Chat", + "bug_report_endpoint_url": "https://rageshakes.element.io/api/submit", + "default_server_config": { + "m.homeserver": { + "base_url": "https://matrix.axion1337.chat", + "server_name": "axion1337.chat" + } + }, + "default_theme": "aXion1337 Dark", + "element_call": { + "use_exclusively": true + }, + "embedded_pages": { + "login_for_welcome": true + }, + "features": { + "feature_element_call_video_rooms": true, + "feature_group_calls": true, + "feature_new_room_decoration_ui": true, + "feature_new_room_list": true, + "feature_qr_code_login": true, + "feature_video_rooms": true + }, + "map_style_url": "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx", + "mobile_guide_app_variant": "element", + "setting_defaults": { + "UIFeature.deactivate": false, + "UIFeature.passwordReset": false, + "UIFeature.registration": false, + "custom_themes": [ + { + "colors": { + "accent-color": "#ffaf0f", + "primary-color": "#ffaf0f", + "secondary-color": "#ffaf0f" + }, + "is_dark": true, + "name": "aXion1337 Dark true" + }, + { + "colors": { + "accent-color": "#6503b3", + "primary-color": "#368bd6", + "roomlist-background-color": "#22262E", + "roomlist-highlights-color": "#343A46", + "roomlist-separator-color": "#a1b2d1", + "roomlist-text-color": "#A1B2D1", + "roomlist-text-secondary-color": "#EDF3FF", + "sidebar-color": "#15171B", + "timeline-background-color": "#181b21", + "timeline-highlights-color": "#22262E", + "timeline-text-color": "#EDF3FF", + "timeline-text-secondary-color": "#A1B2D1", + "warning-color": "#b30356" + }, + "is_dark": true, + "name": "Deep Purple" + }, + { + "colors": { + "accent": "#747ff4", + "accent-color": "#747ff4", + "alert": "#faa81ad9", + "focus-bg-color": "#4752c4", + "menu-selected-color": "#4752c4", + "other-user-pill-bg-color": "#4752c4", + "primary-color": "#00aff4", + "reaction-row-button-selected-bg-color": "#4752c4", + "room-highlight-color": "#4752c4", + "roomlist-background-color": "#2f3136", + "roomlist-highlights-color": "#4f545c52", + "roomlist-separator-color": "#40444b", + "roomlist-text-color": "#dcddde", + "roomlist-text-secondary-color": "#8e9297", + "secondary-content": "#dcddde", + "sidebar-color": "#202225", + "tertiary-content": "#dcddde", + "timeline-background-color": "#36393f", + "timeline-highlights-color": "#04040512", + "timeline-text-color": "#dcddde", + "timeline-text-secondary-color": "#b9bbbe", + "togglesw-off-color": "#72767d", + "warning-color": "#faa81ad9" + }, + "compound": { + "--cpd-color-bg-accent-rest": "#4cb387", + "--cpd-color-bg-action-primary-rest": "#dcddde", + "--cpd-color-bg-action-secondary-rest": "#2f3136", + "--cpd-color-bg-canvas-default": "#2f3136", + "--cpd-color-bg-critical-hovered": "#fd3f3c", + "--cpd-color-bg-critical-primary": "#fd3f3c", + "--cpd-color-bg-critical-subtle": "#745862", + "--cpd-color-bg-subtle-primary": "#4f545c52", + "--cpd-color-bg-subtle-secondary": "#2f3136", + "--cpd-color-border-critical-primary": "#fd3f3c", + "--cpd-color-border-interactive-primary": "#5d6064", + "--cpd-color-border-interactive-secondary": "#5d6064", + "--cpd-color-border-success-subtle": "#4cb387", + "--cpd-color-icon-accent-tertiary": "#4cb387", + "--cpd-color-icon-primary": "#dcddde", + "--cpd-color-icon-secondary": "#dcddde", + "--cpd-color-icon-tertiary": "#a7a0a7", + "--cpd-color-text-action-accent": "#b9bbbe", + "--cpd-color-text-critical-primary": "#fd3f3c", + "--cpd-color-text-primary": "#dcddde", + "--cpd-color-text-secondary": "#b9bbbe", + "--cpd-color-text-success-primary": "#4cb387", + "--cpd-color-theme-bg": "#0019ff" + }, + "is_dark": true, + "name": "Discord Dark" + }, + { + "colors": { + "accent-color": "#3596fc", + "avatar-background-colors": [ + "#cc0000", + "#cc6600", + "#cccc00", + "#00cc00", + "#0000cc", + "#3b0066", + "#7a00b3", + "#cc1077" + ], + "primary-color": "#368bd6", + "roomlist-background-color": "#f3f8fd", + "roomlist-highlights-color": "#ffffff", + "roomlist-separator-color": "#e3e8f0", + "roomlist-text-color": "#2e2f32", + "roomlist-text-secondary-color": "#61708b", + "sidebar-color": "#27303a", + "timeline-background-color": "#ffffff", + "timeline-highlights-color": "#f3f8fd", + "timeline-text-color": "#2e2f32", + "timeline-text-secondary-color": "#61708b", + "username-colors": [ + "#ff0000", + "#ff7f00", + "#ffff00", + "#00ff00", + "#0000ff", + "#4b0082", + "#9400d3", + "#ff1493" + ], + "warning-color": "#ff4b55" + }, + "compound": { + "--cpd-color-icon-accent-tertiary": "var(--cpd-color-blue-800)", + "--cpd-color-text-action-accent": "var(--cpd-color-blue-900)" + }, + "is_dark": false, + "name": "Electric Blue" + }, + { + "colors": { + "accent-color": "#a7c080", + "primary-color": "#a7c080", + "reaction-row-button-selected-bg-color": "#4b565c", + "roomlist-background-color": "#2f383e", + "roomlist-highlights-color": "#4b565c", + "roomlist-separator-color": "#4b565c", + "roomlist-text-color": "#d3c6aa", + "roomlist-text-secondary-color": "#d3c6aa", + "secondary-content": "#d3c6aa", + "sidebar-color": "#323d43", + "tertiary-content": "#d3c6aa", + "timeline-background-color": "#2b3339", + "timeline-highlights-color": "#4b565c", + "timeline-text-color": "#d3c6aa", + "timeline-text-secondary-color": "#a7c080", + "warning-color": "#e67e80" + }, + "is_dark": true, + "name": "Everforest dark hard" + }, + { + "colors": { + "accent": "#689d6a", + "accent-color": "#bd93f9", + "alert": "#cc241d", + "icon-button-color": "#928374", + "menu-selected-color": "#504945", + "primary-color": "#fe8019", + "quinary-content": "#504945", + "reaction-row-button-selected-bg-color": "#689d6a", + "roomlist-background-color": "#1d2021", + "roomlist-highlights-color": "#00000030", + "roomlist-separator-color": "#4d4d4d90", + "roomlist-text-color": "#a89984", + "roomlist-text-secondary-color": "#00ff00", + "secondary-content": "#928374", + "sidebar-color": "#282828", + "tertiary-content": "#928374", + "timeline-background-color": "#282828", + "timeline-highlights-color": "#00000030", + "timeline-text-color": "#ebdbb2", + "timeline-text-secondary-color": "#a89984", + "username-colors": [ + "#cc241d", + "#98971a", + "#d79921", + "#458588", + "#b16286", + "#689d6a", + "#a89984", + "#d65d0e" + ], + "warning-color": "#fb4934" + }, + "is_dark": true, + "name": "aXion1337 Dark" + } + ], + "feature_group_calls": true + }, + "show_labs_settings": true, + "sso_redirect_options": { + "immediate": false + } +} \ No newline at end of file