flame hq element config + branding, e2ee-default-off (config.json + .well-known verified serving both flags 2026-08-29)

This commit is contained in:
2026-08-29 12:20:13 +02:00
commit 2bc1f95076
9 changed files with 403 additions and 0 deletions

93
element/config.json Normal file
View File

@@ -0,0 +1,93 @@
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://hq.b2bgrowth.systems",
"server_name": "hq.b2bgrowth.systems"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
},
"disable_guests": true,
"disable_login_language_selector": false,
"disable_3pid_login": false,
"brand": "Flame HQ",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
"integrations_widgets_urls": [
"https://scalar.vector.im/_matrix/integrations/v1",
"https://scalar.vector.im/api",
"https://scalar-staging.vector.im/_matrix/integrations/v1",
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
],
"defaultCountryCode": "US",
"showLabsSettings": false,
"features": {
"feature_new_spinner": true,
"feature_pinning": true,
"feature_custom_status": true,
"feature_custom_tags": true,
"feature_state_counters": true
},
"default_federate": true,
"default_theme": "custom-Flame HQ",
"roomDirectory": {
"servers": [
"hq.b2bgrowth.systems"
]
},
"settingDefaults": {
"breadcrumbs": true,
"showJoinLeaves": false,
"showRedactions": false,
"showHiddenEventsInTimeline": false,
"use_system_theme": false
},
"jitsi": {
"preferredDomain": "meet.b2bgrowth.systems"
},
"enable_presence_by_hs_url": {
"https://hq.b2bgrowth.systems": true
},
"terms_and_conditions_links": [],
"sso_redirect_options": {
"immediate": true
},
"custom_themes": [
{
"name": "Flame HQ",
"is_dark": true,
"colors": {
"accent-color": "#E76927",
"primary-color": "#E76927",
"warning-color": "#EB7D44",
"sidebar-color": "#0d0d0f",
"roomlist-background-color": "#0d0d0f",
"roomlist-text-color": "#EBEBEB",
"roomlist-text-secondary-color": "#999999",
"roomlist-highlights-color": "#1b1b21",
"roomlist-separator-color": "#1b1b21",
"timeline-background-color": "#0d0d0f",
"timeline-text-color": "#EBEBEB",
"timeline-text-secondary-color": "#999999",
"timeline-highlights-color": "#141419"
}
}
],
"secure_backup_required": false,
"branding": {
"auth_header_logo_url": "/flame-hq/mark.png",
"auth_footer_links": [],
"welcome_background_url": "/flame-hq/welcome-background.png"
},
"welcome_page_url": "/flame-hq/welcome.html",
"setting_defaults": {
"UIFeature.secureBackup": false
},
"force_verification": false,
"io.element.e2ee": {
"default": false,
"secure_backup_required": false
}
}

59
element/config.json.tmpl Normal file
View File

@@ -0,0 +1,59 @@
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://$HQ_DOMAIN",
"server_name": "$SYNAPSE_SERVER_NAME"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
},
"disable_guests": true,
"disable_login_language_selector": false,
"disable_3pid_login": false,
"brand": "Comms",
"integrations_ui_url": "https://scalar.vector.im/",
"integrations_rest_url": "https://scalar.vector.im/api",
"integrations_widgets_urls": [
"https://scalar.vector.im/_matrix/integrations/v1",
"https://scalar.vector.im/api",
"https://scalar-staging.vector.im/_matrix/integrations/v1",
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
],
"bug_report_endpoint_url": "https://element.io/bugreports/submit",
"defaultCountryCode": "US",
"showLabsSettings": false,
"features": {
"feature_new_spinner": true,
"feature_pinning": true,
"feature_custom_status": true,
"feature_custom_tags": true,
"feature_state_counters": true
},
"default_federate": true,
"default_theme": "light",
"roomDirectory": {
"servers": [
"$SYNAPSE_SERVER_NAME"
]
},
"settingDefaults": {
"breadcrumbs": true,
"showJoinLeaves": false,
"showRedactions": false,
"showHiddenEventsInTimeline": false
},
"jitsi": {
"preferredDomain": "$MEET_DOMAIN"
},
"enable_presence_by_hs_url": {
"https://$HQ_DOMAIN": true
},
"terms_and_conditions_links": [
{
"url": "https://element.io/terms-of-service",
"text": "Terms and Conditions"
}
]
}

View File

@@ -0,0 +1,114 @@
/* FLAME HQ estate skin v2.1.0 (2026-08-24, prime-4) — palette MEASURED from the rendered
* Nextcloud/Blackbox theme (drive.b2bgrowth.systems, dark): primary #E76927 (hover #EB7D44),
* ground #0d0d0f, panel #141419, hover #1b1b21, text #EBEBEB, muted #999999, hairline
* borders rgba(255,255,255,.07), radius 8px, primary buttons FILLED orange / white text.
* Served at /flame-hq/flame-hq.css via nginx sub_filter. HOST-EDITABLE, no restart. */
:root { color-scheme: dark; }
:root, .cpd-theme-light, .cpd-theme-dark {
--cpd-color-bg-canvas-default: #0d0d0f;
--cpd-color-bg-canvas-disabled: #0d0d0f;
--cpd-color-bg-subtle-primary: #1b1b21;
--cpd-color-bg-subtle-secondary: #141419;
--cpd-color-bg-action-primary-rest: #E76927;
--cpd-color-bg-action-primary-hovered: #EB7D44;
--cpd-color-bg-action-primary-pressed: #d55f20;
--cpd-color-bg-action-secondary-rest: transparent;
--cpd-color-bg-action-secondary-hovered: #1b1b21;
--cpd-color-bg-accent-rest: #E76927;
--cpd-color-bg-accent-hovered: #EB7D44;
--cpd-color-bg-critical-primary: #E76927;
--cpd-color-bg-critical-subtle: rgba(231,105,39,0.16);
--cpd-color-text-primary: #EBEBEB;
--cpd-color-text-secondary: #999999;
--cpd-color-text-placeholder: #6f6f6f;
--cpd-color-text-action-accent: #E76927;
--cpd-color-text-link-external: #EB7D44;
--cpd-color-text-on-solid-primary: #ffffff;
--cpd-color-text-critical-primary: #EB7D44;
--cpd-color-icon-primary: #EBEBEB;
--cpd-color-icon-secondary: #999999;
--cpd-color-icon-tertiary: #8a8a8a;
--cpd-color-icon-accent-primary: #E76927;
--cpd-color-icon-accent-tertiary: #E76927;
--cpd-color-icon-on-solid-primary: #ffffff;
--cpd-color-icon-critical-primary: #EB7D44;
--cpd-color-border-interactive-primary: rgba(255,255,255,0.10);
--cpd-color-border-interactive-secondary: rgba(255,255,255,0.07);
--cpd-color-border-interactive-hovered: #E76927;
--cpd-color-border-focused: #E76927;
--cpd-color-border-critical-primary: #E76927;
--cpd-color-border-critical-subtle: rgba(231,105,39,0.4);
--cpd-color-border-disabled: rgba(255,255,255,0.07);
--cpd-font-family-sans: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
/* legacy element vars */
--accent: #E76927; --accent-color: #E76927; --primary-color: #E76927; --alert: #E76927;
--roomlist-highlights-color: rgba(231,105,39,0.16);
--panel-actions: #1b1b21;
}
body, .mx_MatrixChat, .mx_MatrixChat_wrapper { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; }
/* ---------- pre-login (auth) page ---------- */
.mx_AuthPage { background: #0d0d0f !important; }
.mx_AuthPage .mx_AuthBody, .mx_AuthBody { background: #141419 !important; color: #EBEBEB !important; border: 1px solid rgba(255,255,255,0.07); border-radius: 8px; }
.mx_AuthBody h1, .mx_AuthBody h2, .mx_AuthBody h3, .mx_AuthBody label, .mx_AuthHeader { color: #EBEBEB !important; }
.mx_AuthBody input, .mx_AuthBody .mx_Field input, .mx_AuthBody .mx_Field select { background: #0d0d0f !important; color: #EBEBEB !important; border-color: rgba(255,255,255,0.10) !important; border-radius: 8px; }
.mx_AuthBody .mx_Field input:focus { border-color: #E76927 !important; }
.mx_AuthFooter, .mx_AuthFooter a { color: #999999 !important; }
.mx_AuthBody a { color: #EB7D44 !important; }
.mx_SSOButton { background: #E76927 !important; color: #ffffff !important; border: 0 !important; border-radius: 8px !important; font-weight: 600; }
.mx_SSOButton:hover { background: #EB7D44 !important; }
.mx_AuthHeaderLogo img, .mx_AuthHeader img { max-height: 112px !important; max-width: 112px !important; object-fit: contain; }
.mx_Welcome, .mx_WelcomePage, .mx_EmbeddedPage, .mx_EmbeddedPage iframe { background: #0d0d0f !important; color: #EBEBEB !important; }
.mx_EmbeddedPage iframe { border: 0; }
/* ---------- app chrome ---------- */
.mx_SpacePanel { background: #0d0d0f !important; border-right: 1px solid rgba(255,255,255,0.07); }
.mx_LeftPanel, .mx_RoomListPanel, .mx_RoomList, .mx_RoomListView { background: #0d0d0f !important; }
.mx_LeftPanel { border-right: 1px solid rgba(255,255,255,0.07) !important; }
.mx_RoomHeader, .mx_RoomView_body, .mx_MessageComposer, .mx_RoomView_timeline { background: #0d0d0f !important; }
.mx_RoomHeader { border-bottom: 1px solid rgba(255,255,255,0.07) !important; }
.mx_MessageComposer_wrapper { border-top: 1px solid rgba(255,255,255,0.07) !important; padding-left: 16px !important; /* v2.1.1: collapse dead 42px E2E gutter (shield hidden by owner law) that read as a black square clipping the composer left edge */ }
.mx_BasicMessageComposer_input, .mx_MessageComposer .mx_MessageComposer_row { background: #141419 !important; border-radius: 8px; }
/* selected / hovered room (v2.1): Element 1.12 room list uses CSS-module hashed classes and paints the
* row with Compound tokens --cpd-color-bg-action-tertiary-{hovered,selected} (light grey stock).
* Override the TOKENS (hash-proof) + hash-agnostic selectors: orange tint selected, panel-dark hover. */
:root, .cpd-theme-light, .cpd-theme-dark {
--cpd-color-bg-action-tertiary-rest: transparent;
--cpd-color-bg-action-tertiary-hovered: #1b1b21;
--cpd-color-bg-action-tertiary-selected: rgba(231,105,39,0.16);
--cpd-color-bg-action-tertiary-pressed: rgba(231,105,39,0.24);
--cpd-color-bg-action-secondary-pressed: #1b1b21;
}
[class*="_roomListItem_"][class*="_selected_"] [class*="_container_"] { background-color: rgba(231,105,39,0.16) !important; }
[class*="_roomListItem_"]:hover [class*="_container_"] { background-color: #1b1b21 !important; }
[class*="_roomListItem_"][class*="_selected_"]:hover [class*="_container_"] { background-color: rgba(231,105,39,0.22) !important; }
[class*="_roomListItem_"][class*="_selected_"], [class*="_roomListItem_"]:hover { color: #EBEBEB !important; }
.mx_RoomTile_selected, .mx_RoomTile:hover, .mx_EntityTile:hover, .mx_MemberTileView:hover, .mx_AccessibleButton_hasKind.mx_AccessibleButton_kind_secondary:hover { background: #1b1b21 !important; color: #EBEBEB !important; }
/* filter chips + primary actions: filled orange / white when active */
.mx_RoomListHeader_filter[aria-selected="true"], .mx_RoomListPrimaryFilters_button[aria-selected="true"], .mx_RoomListPrimaryFilters [aria-selected="true"] { background: #E76927 !important; color: #ffffff !important; border-color: #E76927 !important; }
.mx_AccessibleButton_kind_primary { background: #E76927 !important; color: #ffffff !important; border-radius: 8px !important; }
.mx_AccessibleButton_kind_primary:hover { background: #EB7D44 !important; }
/* unread badges: orange, like the estate */
.mx_NotificationBadge_level_notification, .mx_NotificationBadge_level_highlight { background: #E76927 !important; color: #ffffff !important; border: 0 !important; }
.mx_NotificationBadge_dot { background: #E76927 !important; }
/* ---------- home ---------- */
.mx_HomePage_default_wrapper h1 { color: #EBEBEB !important; }
.mx_HomePage_default_wrapper h4 { color: #999999 !important; }
.mx_HomePage_default_wrapper img { width: 112px !important; height: 112px !important; }
.mx_HomePage_default_buttons .mx_AccessibleButton { background: #141419 !important; color: #EBEBEB !important; border: 1px solid rgba(255,255,255,0.10) !important; border-radius: 8px !important; }
.mx_HomePage_default_buttons .mx_AccessibleButton:hover { border-color: #E76927 !important; background: #1b1b21 !important; }
.mx_HomePage_default_buttons .mx_AccessibleButton::before { background-color: #E76927 !important; }
.mx_HomePage_button_explore, .mx_HomePage_button_exploreRooms { display: none !important; }
/* ---------- owner law 2026-08-24: no E2E shields / unverified red dots ---------- */
.mx_EventTile_e2eIcon, .mx_EventTile_e2eIcon_warning, .mx_EventTile_e2eIcon_unverified, .mx_EventTile_e2eIcon_unknown,
.mx_E2EIcon, .mx_E2EIcon_warning, .mx_E2EIcon_normal,
.mx_RoomTile_e2eIcon, .mx_DecoratedRoomAvatar_icon_e2e, .mx_UserInfo_verifyButton,
.mx_MessagePanel_e2eIcon, .mx_RoomHeader_e2eIcon { display: none !important; }
/* ---------- v2.1.2 (owner 2026-08-24): ONLINE presence dot = standard green ---------- */
/* The skin's global --cpd-color-icon-accent-primary (#E76927) also tinted the online presence
* dot orange. Scope online back to Element's own success green; away (unavailable) / busy (dnd) /
* offline keep their stock tertiary/quaternary greys - semantics untouched. */
.mx_PresenceIconView_online { color: var(--cpd-color-text-success-primary, #0DBD8B) !important; }

View File

@@ -0,0 +1,15 @@
{
"name": "Flame HQ",
"short_name": "Flame HQ",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#000000",
"start_url": "index.html",
"icons": [
{
"src": "/flame-hq/mark.png",
"sizes": "512x512",
"type": "image/png"
}
]
}

BIN
element/flame-hq/mark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 KiB

View File

@@ -0,0 +1,58 @@
<style type="text/css">
.flame-hq-welcome {
align-items: center;
background: #000000;
color: #d7d7d7;
display: flex;
flex-direction: column;
justify-content: center;
min-height: 100%;
padding: 32px;
text-align: center;
}
.flame-hq-welcome__logo {
height: 112px;
object-fit: contain;
width: 112px;
}
.flame-hq-welcome h1 {
font-size: 32px;
margin: 20px 0 8px;
}
.flame-hq-welcome p {
color: #9a9a9a;
margin: 0 0 24px;
}
.flame-hq-welcome__actions {
display: flex;
flex-wrap: wrap;
gap: 12px;
justify-content: center;
}
.flame-hq-welcome__actions a {
border: 1px solid #89705E;
border-radius: 8px;
color: #d7d7d7;
min-width: 132px;
padding: 12px 18px;
text-decoration: none;
}
.flame-hq-welcome__actions a:hover {
background: rgba(137, 112, 94, 0.12);
}
</style>
<div class="flame-hq-welcome">
<img src="/flame-hq/mark.png" alt="Flame HQ" class="flame-hq-welcome__logo" />
<h1>Welcome to Flame HQ</h1>
<p>Team chat for the Flame squad. Sign in with your Nextcloud account.</p>
<div class="flame-hq-welcome__actions">
<a href="#/login">Sign in</a>
</div>
</div>

View File

@@ -0,0 +1,59 @@
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
location = / {
try_files /index.html =404;
add_header Cache-Control "no-cache";
sub_filter_once off;
sub_filter '<title>Element</title>' '<title>Flame HQ</title>';
sub_filter 'name="application-name" content="Element"' 'name="application-name" content="Flame HQ"';
sub_filter 'name="apple-mobile-web-app-title" content="Element"' 'name="apple-mobile-web-app-title" content="Flame HQ"';
sub_filter 'https://app.element.io/themes/element/img/logos/opengraph.png' 'https://hq.b2bgrowth.systems/flame-hq/welcome-background.png';
sub_filter '</head>' '<link rel="stylesheet" href="/flame-hq/flame-hq.css"><link rel="icon" type="image/png" href="/flame-hq/mark.png"><link rel="apple-touch-icon" href="/flame-hq/mark.png"></head>';
}
location = /index.html {
add_header Cache-Control "no-cache";
sub_filter_once off;
sub_filter '<title>Element</title>' '<title>Flame HQ</title>';
sub_filter 'name="application-name" content="Element"' 'name="application-name" content="Flame HQ"';
sub_filter 'name="apple-mobile-web-app-title" content="Element"' 'name="apple-mobile-web-app-title" content="Flame HQ"';
sub_filter 'https://app.element.io/themes/element/img/logos/opengraph.png' 'https://hq.b2bgrowth.systems/flame-hq/welcome-background.png';
sub_filter '</head>' '<link rel="stylesheet" href="/flame-hq/flame-hq.css"><link rel="icon" type="image/png" href="/flame-hq/mark.png"><link rel="apple-touch-icon" href="/flame-hq/mark.png"></head>';
}
location = /version {
add_header Cache-Control "no-cache";
}
location /config {
root /tmp/element-web-config;
add_header Cache-Control "no-cache";
}
location /modules {
alias /modules;
}
location = /manifest.json {
alias /flame-hq/manifest.json;
default_type application/manifest+json;
add_header Cache-Control "no-cache";
}
location /flame-hq/ {
alias /flame-hq/;
add_header Cache-Control "no-cache";
}
location ~ ^/vector-icons/.*\.(?:ico|png)$ {
rewrite ^ /flame-hq/mark.png last;
}
error_page 500 502 503 504 /50x.html;
}