brand asset library, wiki branding guide, and v0.3.3 release
CI Test Suite / Run Component Tests & Pipeline Verification (push) Successful in 1m30s
Release Binaries & Packages / Build & Release Standalone Binaries (Linux & Windows Cross-Compilation) (push) Successful in 5m11s

This commit is contained in:
2026-09-27 17:17:57 +02:00
parent 900d03b7f7
commit a70ce9162d
38 changed files with 828 additions and 75 deletions
+20 -5
View File
@@ -1,13 +1,18 @@
<p align="center">
<img src="assets/logo_banner.svg" alt="LOGAR Banner" width="750"/>
</p>
# LOGAR: Fleet Log Aggregation & Centralized Provisioning System
### *Secure Log Aggregation, PKI Fleet Licensing & Centralized Delivery for Autonomous AI Analysis*
[![Version](https://img.shields.io/badge/version-0.3.2-blue.svg)](RELEASE_NOTES.md)
[![Tests](https://img.shields.io/badge/tests-35%20passed-success.svg)](tests/)
[![Version](https://img.shields.io/badge/version-0.3.3-blue.svg)](RELEASE_NOTES.md)
[![Tests](https://img.shields.io/badge/tests-42%20passed-success.svg)](tests/)
[![Security](https://img.shields.io/badge/mTLS-TLS%201.3-green.svg)](https://gitea.eibl.tech/me0nline/LOGAR/wiki/PKI-and-Licensing)
[![Branding](https://img.shields.io/badge/branding-guide-cyan.svg)](wiki/Branding-Guide.md)
**LOGAR** is an enterprise-grade log aggregation, normalization, and centralized provisioning system built for heterogeneous server fleets (Windows & Linux). It pairs ultra-lightweight, zero-state edge forwarders with a secure centralized server hub that enforces mutual TLS 1.3 (**mTLS**) authentication, dynamic PKI fleet licensing with cryptographic seat leasing, 12-hour temporal persistence tracking, and direct anomaly pass-through—delivering clean, structured, verified log telemetry directly to **Hermes AI** for autonomous deep reasoning, contextual root-cause analysis, and operational decision-making.
> 📚 **Comprehensive Technical Documentation**: Full architectural specifications, state machines, PKI X.509 OID definitions, and complete REST API references are maintained on the **[LOGAR Gitea Wiki](https://gitea.eibl.tech/me0nline/LOGAR/wiki)**.
> 📚 **Comprehensive Technical Documentation**: Full architectural specifications, state machines, PKI X.509 OID definitions, branding assets, and complete REST API references are maintained on the **[LOGAR Gitea Wiki](https://gitea.eibl.tech/me0nline/LOGAR/wiki)**.
---
@@ -107,8 +112,17 @@ Once installed or executed, access the web console:
```
LOGAR/
├── assets/ # Official vector SVGs, PNGs, ICOs, and branding bitmaps
│ ├── logo.svg # Master vector emblem
│ ├── logo_transparent.svg # Transparent WebUI emblem
│ ├── logo_banner.svg # Full brand banner
│ ├── logo.ico / favicon.ico # Application & web icons
│ └── wizard_*.bmp # Installer dialog bitmaps
├── wiki/ # Comprehensive documentation & guides
│ └── Branding-Guide.md # Official visual identity and design system
├── .gitea/workflows/ # CI/CD pipelines (ci.yml, release.yml)
├── compilation/ # Build scripts, Linux installers & Inno Setup scripts
│ ├── generate_branding_assets.py # Asset & bitmap generator
│ ├── install_linux_client.sh # Linux client systemd auto-installer
│ ├── install_linux_server.sh # Linux server systemd auto-installer
│ ├── package_dist.py # Standalone binary cross-compiler
@@ -118,7 +132,7 @@ LOGAR/
│ ├── server_enrollment.py # Sub-CA PKI and certificate generator
│ ├── Win_Client.py # Windows edge forwarder
│ └── Linux_Client.py # Linux edge forwarder
├── tests/ # Automated test suites (35 unit tests + pipeline test)
├── tests/ # Automated test suites (42 unit & integration tests)
├── LOGAR-LICENSING/ # Standalone Master License Authority (Git submodule)
├── RELEASE_NOTES.md # Version history and security changelog
└── README.md # Repository overview
@@ -146,7 +160,7 @@ LOGAR/
## Testing & Cross-Compilation
```bash
# Run full unit test suite (35 tests)
# Run full unit test suite (42 tests)
python -m unittest discover -s tests -v
# Run end-to-end mTLS pipeline integration test
@@ -162,6 +176,7 @@ python compilation/package_dist.py --target all
For in-depth operational guides, lifecycle state machines, and PKI specifications, consult the **[LOGAR Gitea Wiki](https://gitea.eibl.tech/me0nline/LOGAR/wiki)**:
* [Branding & Design System Guide](https://gitea.eibl.tech/me0nline/LOGAR/wiki/Branding-Guide)
* [Architecture & Design Details](https://gitea.eibl.tech/me0nline/LOGAR/wiki/Architecture-and-Design)
* [System State Machines & Subsystem Lifecycles](https://gitea.eibl.tech/me0nline/LOGAR/wiki/State-Machines-and-Lifecycles)
* [PKI Architecture & Custom X.509 Seat OIDs](https://gitea.eibl.tech/me0nline/LOGAR/wiki/PKI-and-Licensing)
+16 -2
View File
@@ -1,6 +1,20 @@
# LOGAR Release v0.3.2
# LOGAR Release Notes
### 🪟 Windows Installer Fixes
## [v0.3.3] - 2026-09-27
### 🎨 Brand Identity, Centralized Asset Library & Design System
- **Centralized `/assets` Repository**: Added official vector graphics (`logo.svg`, `logo_transparent.svg`, `logo_dark.svg`, `logo_banner.svg`), high-resolution master PNGs (16px to 512px), multi-resolution Windows ICOs (`logo.ico`, `favicon.ico`), and installer dialog bitmaps (`wizard_header.bmp`, `wizard_small.bmp`, `wizard_sidebar.bmp`).
- **Official Wiki Branding Guide**: Published comprehensive visual identity standards at `wiki/Branding-Guide.md` detailing logo anatomy, color palettes (Cyber Cyan `#00E5FF`, Emerald `#00FFA3`, Dark Navy `#0E1A2E`), typography, clear-space rules, dos and don'ts, and strict non-SIEM positioning.
- **Unified Interface & Tab Branding**: Implemented transparent vector logos on all web navigation bars and browser tabs across both the LOGAR Server Hub (`:8443`) and Master Licensing Authority (`logar.eibl.tech`).
- **Clean Installer Bitmaps**: Regenerated 24-bit RGB header bitmaps with seamless white backgrounds (`#FFFFFF`) matching native Windows Inno Setup wizard dialogs.
- **Automated Asset Pipeline**: Enhanced `compilation/generate_branding_assets.py` to deterministically compile and distribute assets across main repo, compilation subdirectories, and the licensing submodule without third-party graphics dependencies.
---
## [v0.3.2] - 2026-09-27
### 🪟 Windows Installer & Web Portal Enhancements
- **Project Showcase Landing Page**: Deployed high-impact public homepage at `GET /` on the licensing authority with architecture diagrams, quickstart commands, and direct navigation to Gitea, Wiki, and the Licensing Portal (`/licensing`).
- **Standalone Windows Binaries & Python Runtime**: Resolved issues with standalone Windows executable execution and bundled runtime paths.
- **Data Directory Selection & Permissions**: Added custom data directory selection during setup and fixed permissions for background Windows services.
- **Service Lifecycle & Clean Uninstallation**: Resolved service startup issues and ensured complete cleanup of state files upon uninstallation.
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

+43
View File
@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<defs>
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
<stop offset="50%" stop-color="#08101E"/>
<stop offset="100%" stop-color="#040810"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#0072FF"/>
</linearGradient>
<linearGradient id="emeraldGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00FFA3"/>
<stop offset="100%" stop-color="#00E5FF"/>
</linearGradient>
<filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="12" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Base Hexagon Shield -->
<polygon points="256,24 456,139 456,373 256,488 56,373 56,139"
fill="url(#bgGrad)" stroke="url(#cyanGrad)" stroke-width="8" filter="url(#glow)"/>
<!-- Inner Telemetry Grid / Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
fill="none" stroke="#162A45" stroke-width="3" stroke-dasharray="8 6"/>
<!-- Stylized L and Log Streams -->
<rect x="140" y="140" width="46" height="232" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="140" y="326" width="220" height="46" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="220" y="210" width="36" height="80" rx="8" fill="url(#emeraldGrad)"/>
<rect x="286" y="150" width="36" height="140" rx="8" fill="url(#cyanGrad)"/>
<!-- Connection Nodes / Spark Points -->
<circle cx="238" cy="190" r="7" fill="#00FFA3" filter="url(#glow)"/>
<circle cx="304" cy="130" r="7" fill="#00E5FF" filter="url(#glow)"/>
<circle cx="380" cy="349" r="8" fill="#00E5FF" filter="url(#glow)"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 921 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

+54
View File
@@ -0,0 +1,54 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 240" width="100%" height="100%">
<defs>
<linearGradient id="bannerBg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
<stop offset="100%" stop-color="#070C18"/>
</linearGradient>
<linearGradient id="textCyan" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#00FFA3"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#0072FF"/>
</linearGradient>
<linearGradient id="emeraldGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00FFA3"/>
<stop offset="100%" stop-color="#00E5FF"/>
</linearGradient>
<filter id="bannerGlow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="8" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Background Card -->
<rect width="960" height="240" rx="16" fill="url(#bannerBg)" stroke="#162A45" stroke-width="2"/>
<!-- Left Emblem Group (scaled & positioned) -->
<g transform="translate(40, 20) scale(0.39)">
<!-- Hexagon Shield -->
<polygon points="256,24 456,139 456,373 256,488 56,373 56,139"
fill="#0E1A2E" stroke="url(#cyanGrad)" stroke-width="12" filter="url(#bannerGlow)"/>
<!-- Inner Telemetry Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
fill="none" stroke="#162A45" stroke-width="4" stroke-dasharray="10 8"/>
<!-- Stylized L & Telemetry Bars -->
<rect x="140" y="140" width="46" height="232" rx="10" fill="url(#cyanGrad)"/>
<rect x="140" y="326" width="220" height="46" rx="10" fill="url(#cyanGrad)"/>
<rect x="220" y="210" width="36" height="80" rx="8" fill="url(#emeraldGrad)"/>
<rect x="286" y="150" width="36" height="140" rx="8" fill="url(#cyanGrad)"/>
<!-- Connection Points -->
<circle cx="238" cy="190" r="9" fill="#00FFA3"/>
<circle cx="304" cy="130" r="9" fill="#00E5FF"/>
<circle cx="380" cy="349" r="10" fill="#00E5FF"/>
</g>
<!-- Typography & Tagline -->
<text x="270" y="98" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="56" font-weight="900" letter-spacing="4" fill="url(#textCyan)" filter="url(#bannerGlow)">LOGAR</text>
<text x="272" y="142" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="20" font-weight="600" fill="#E2E8F0" letter-spacing="0.5">Fleet Log Aggregation &amp; Telemetry Hub</text>
<text x="272" y="174" font-family="'JetBrains Mono', 'Fira Code', monospace" font-size="13" font-weight="400" fill="#00E5FF" letter-spacing="1">ZERO-STATE FORWARDERS &bull; MUTUAL TLS 1.3 &bull; TEMPORAL PERSISTENCE</text>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

+43
View File
@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<defs>
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
<stop offset="50%" stop-color="#08101E"/>
<stop offset="100%" stop-color="#040810"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#0072FF"/>
</linearGradient>
<linearGradient id="emeraldGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00FFA3"/>
<stop offset="100%" stop-color="#00E5FF"/>
</linearGradient>
<filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="12" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Base Hexagon Shield -->
<polygon points="256,24 456,139 456,373 256,488 56,373 56,139"
fill="url(#bgGrad)" stroke="url(#cyanGrad)" stroke-width="8" filter="url(#glow)"/>
<!-- Inner Telemetry Grid / Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
fill="none" stroke="#162A45" stroke-width="3" stroke-dasharray="8 6"/>
<!-- Stylized L and Log Streams -->
<rect x="140" y="140" width="46" height="232" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="140" y="326" width="220" height="46" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="220" y="210" width="36" height="80" rx="8" fill="url(#emeraldGrad)"/>
<rect x="286" y="150" width="36" height="140" rx="8" fill="url(#cyanGrad)"/>
<!-- Connection Nodes / Spark Points -->
<circle cx="238" cy="190" r="7" fill="#00FFA3" filter="url(#glow)"/>
<circle cx="304" cy="130" r="7" fill="#00E5FF" filter="url(#glow)"/>
<circle cx="380" cy="349" r="8" fill="#00E5FF" filter="url(#glow)"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

+41
View File
@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<defs>
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
<stop offset="50%" stop-color="#08101E"/>
<stop offset="100%" stop-color="#040810"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#0072FF"/>
</linearGradient>
<linearGradient id="emeraldGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00FFA3"/>
<stop offset="100%" stop-color="#00E5FF"/>
</linearGradient>
<filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="12" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Inner Telemetry Grid / Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
fill="none" stroke="#162A45" stroke-width="3" stroke-dasharray="8 6"/>
<!-- Stylized L and Log Streams -->
<rect x="140" y="140" width="46" height="232" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="140" y="326" width="220" height="46" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="220" y="210" width="36" height="80" rx="8" fill="url(#emeraldGrad)"/>
<rect x="286" y="150" width="36" height="140" rx="8" fill="url(#cyanGrad)"/>
<!-- Connection Nodes / Spark Points -->
<circle cx="238" cy="190" r="7" fill="#00FFA3" filter="url(#glow)"/>
<circle cx="304" cy="130" r="7" fill="#00E5FF" filter="url(#glow)"/>
<circle cx="380" cy="349" r="8" fill="#00E5FF" filter="url(#glow)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 921 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

+54
View File
@@ -0,0 +1,54 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 240" width="100%" height="100%">
<defs>
<linearGradient id="bannerBg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
<stop offset="100%" stop-color="#070C18"/>
</linearGradient>
<linearGradient id="textCyan" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#00FFA3"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#0072FF"/>
</linearGradient>
<linearGradient id="emeraldGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00FFA3"/>
<stop offset="100%" stop-color="#00E5FF"/>
</linearGradient>
<filter id="bannerGlow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="8" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Background Card -->
<rect width="960" height="240" rx="16" fill="url(#bannerBg)" stroke="#162A45" stroke-width="2"/>
<!-- Left Emblem Group (scaled & positioned) -->
<g transform="translate(40, 20) scale(0.39)">
<!-- Hexagon Shield -->
<polygon points="256,24 456,139 456,373 256,488 56,373 56,139"
fill="#0E1A2E" stroke="url(#cyanGrad)" stroke-width="12" filter="url(#bannerGlow)"/>
<!-- Inner Telemetry Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
fill="none" stroke="#162A45" stroke-width="4" stroke-dasharray="10 8"/>
<!-- Stylized L & Telemetry Bars -->
<rect x="140" y="140" width="46" height="232" rx="10" fill="url(#cyanGrad)"/>
<rect x="140" y="326" width="220" height="46" rx="10" fill="url(#cyanGrad)"/>
<rect x="220" y="210" width="36" height="80" rx="8" fill="url(#emeraldGrad)"/>
<rect x="286" y="150" width="36" height="140" rx="8" fill="url(#cyanGrad)"/>
<!-- Connection Points -->
<circle cx="238" cy="190" r="9" fill="#00FFA3"/>
<circle cx="304" cy="130" r="9" fill="#00E5FF"/>
<circle cx="380" cy="349" r="10" fill="#00E5FF"/>
</g>
<!-- Typography & Tagline -->
<text x="270" y="98" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="56" font-weight="900" letter-spacing="4" fill="url(#textCyan)" filter="url(#bannerGlow)">LOGAR</text>
<text x="272" y="142" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="20" font-weight="600" fill="#E2E8F0" letter-spacing="0.5">Fleet Log Aggregation &amp; Telemetry Hub</text>
<text x="272" y="174" font-family="'JetBrains Mono', 'Fira Code', monospace" font-size="13" font-weight="400" fill="#00E5FF" letter-spacing="1">ZERO-STATE FORWARDERS &bull; MUTUAL TLS 1.3 &bull; TEMPORAL PERSISTENCE</text>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

+43
View File
@@ -0,0 +1,43 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<defs>
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
<stop offset="50%" stop-color="#08101E"/>
<stop offset="100%" stop-color="#040810"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#0072FF"/>
</linearGradient>
<linearGradient id="emeraldGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00FFA3"/>
<stop offset="100%" stop-color="#00E5FF"/>
</linearGradient>
<filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="12" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Base Hexagon Shield -->
<polygon points="256,24 456,139 456,373 256,488 56,373 56,139"
fill="url(#bgGrad)" stroke="url(#cyanGrad)" stroke-width="8" filter="url(#glow)"/>
<!-- Inner Telemetry Grid / Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
fill="none" stroke="#162A45" stroke-width="3" stroke-dasharray="8 6"/>
<!-- Stylized L and Log Streams -->
<rect x="140" y="140" width="46" height="232" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="140" y="326" width="220" height="46" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="220" y="210" width="36" height="80" rx="8" fill="url(#emeraldGrad)"/>
<rect x="286" y="150" width="36" height="140" rx="8" fill="url(#cyanGrad)"/>
<!-- Connection Nodes / Spark Points -->
<circle cx="238" cy="190" r="7" fill="#00FFA3" filter="url(#glow)"/>
<circle cx="304" cy="130" r="7" fill="#00E5FF" filter="url(#glow)"/>
<circle cx="380" cy="349" r="8" fill="#00E5FF" filter="url(#glow)"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

+41
View File
@@ -0,0 +1,41 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<defs>
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
<stop offset="50%" stop-color="#08101E"/>
<stop offset="100%" stop-color="#040810"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#0072FF"/>
</linearGradient>
<linearGradient id="emeraldGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00FFA3"/>
<stop offset="100%" stop-color="#00E5FF"/>
</linearGradient>
<filter id="glow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="12" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Inner Telemetry Grid / Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
fill="none" stroke="#162A45" stroke-width="3" stroke-dasharray="8 6"/>
<!-- Stylized L and Log Streams -->
<rect x="140" y="140" width="46" height="232" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="140" y="326" width="220" height="46" rx="10" fill="url(#cyanGrad)" filter="url(#glow)"/>
<rect x="220" y="210" width="36" height="80" rx="8" fill="url(#emeraldGrad)"/>
<rect x="286" y="150" width="36" height="140" rx="8" fill="url(#cyanGrad)"/>
<!-- Connection Nodes / Spark Points -->
<circle cx="238" cy="190" r="7" fill="#00FFA3" filter="url(#glow)"/>
<circle cx="304" cy="130" r="7" fill="#00E5FF" filter="url(#glow)"/>
<circle cx="380" cy="349" r="8" fill="#00E5FF" filter="url(#glow)"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

+124 -47
View File
@@ -1,7 +1,7 @@
"""
LOGAR Branding & Installer Graphics Generator
Generates clean, professional SVG, PNG, ICO, and BMP visual assets for
LOGAR installers (Inno Setup & NSIS), application icons, and WebUI branding.
LOGAR installers (Inno Setup & NSIS), application icons, root /assets library, and WebUI branding.
Zero external dependencies required (uses standard library zlib and struct).
"""
@@ -9,9 +9,15 @@ import os
import math
import zlib
import struct
import shutil
ASSETS_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "assets")
os.makedirs(ASSETS_DIR, exist_ok=True)
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
ROOT_ASSETS_DIR = os.path.join(ROOT_DIR, "assets")
COMPILATION_ASSETS_DIR = os.path.join(ROOT_DIR, "compilation", "assets")
LICENSING_ASSETS_DIR = os.path.join(ROOT_DIR, "LOGAR-LICENSING", "assets")
for d in (ROOT_ASSETS_DIR, COMPILATION_ASSETS_DIR, LICENSING_ASSETS_DIR):
os.makedirs(d, exist_ok=True)
def create_bmp_24bit(width: int, height: int, pixel_func) -> bytes:
@@ -80,7 +86,7 @@ def create_png_rgba(width: int, height: int, pixel_func) -> bytes:
def draw_logo_rgba(x: int, y: int, w: int, h: int) -> tuple:
"""Renders a sleek modern cyberpunk hexagon shield and pulse log streams."""
"""Renders a sleek modern hexagon shield and pulse log streams."""
nx = (x - w / 2) / (w / 2)
ny = (y - h / 2) / (h / 2)
dist = math.sqrt(nx * nx + ny * ny)
@@ -148,7 +154,7 @@ def draw_wizard_header_white_bgr(x: int, y: int, w: int, h: int) -> tuple:
"""
bg_r, bg_g, bg_b = 255, 255, 255
# Position emblem cleanly on the left (center x = 30, center y = h / 2)
# Position emblem cleanly on the left (center x = 28, center y = h / 2)
icon_center_x = 28
icon_center_y = h / 2
icon_radius = 22
@@ -192,7 +198,7 @@ def draw_wizard_sidebar_bgr(x: int, y: int, w: int, h: int) -> tuple:
"""Renders 164x314 BMP sidebar graphic for NSIS / Inno Setup."""
t_y = y / h
# Deep cyber navy to midnight blue vertical gradient
# Deep navy to midnight blue vertical gradient
r = int(10 * (1 - t_y) + 4 * t_y)
g = int(22 * (1 - t_y) + 12 * t_y)
b = int(48 * (1 - t_y) + 26 * t_y)
@@ -262,9 +268,13 @@ def generate_ico_file(png_images: list) -> bytes:
return header + bytes(entries) + b"".join(image_data_blocks)
def generate_svg_logo() -> str:
def generate_svg_logo(transparent_bg: bool = False) -> str:
"""Generates a high-quality SVG vector graphic for LOGAR."""
return """<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
bg_polygon = "" if transparent_bg else """ <!-- Base Hexagon Shield -->
<polygon points="256,24 456,139 456,373 256,488 56,373 56,139"
fill="url(#bgGrad)" stroke="url(#cyanGrad)" stroke-width="8" filter="url(#glow)"/>"""
return f"""<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="100%" height="100%">
<defs>
<linearGradient id="bgGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
@@ -288,9 +298,7 @@ def generate_svg_logo() -> str:
</filter>
</defs>
<!-- Base Hexagon Shield -->
<polygon points="256,24 456,139 456,373 256,488 56,373 56,139"
fill="url(#bgGrad)" stroke="url(#cyanGrad)" stroke-width="8" filter="url(#glow)"/>
{bg_polygon}
<!-- Inner Telemetry Grid / Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
@@ -309,56 +317,125 @@ def generate_svg_logo() -> str:
</svg>"""
def generate_svg_banner() -> str:
"""Generates a wide SVG banner with emblem and modern typography."""
return """<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 240" width="100%" height="100%">
<defs>
<linearGradient id="bannerBg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#0E1A2E"/>
<stop offset="100%" stop-color="#070C18"/>
</linearGradient>
<linearGradient id="textCyan" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#00FFA3"/>
</linearGradient>
<linearGradient id="cyanGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#00E5FF"/>
<stop offset="100%" stop-color="#0072FF"/>
</linearGradient>
<linearGradient id="emeraldGrad" x1="0%" y1="0%" x2="100%" y2="0%">
<stop offset="0%" stop-color="#00FFA3"/>
<stop offset="100%" stop-color="#00E5FF"/>
</linearGradient>
<filter id="bannerGlow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur stdDeviation="8" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Background Card -->
<rect width="960" height="240" rx="16" fill="url(#bannerBg)" stroke="#162A45" stroke-width="2"/>
<!-- Left Emblem Group (scaled & positioned) -->
<g transform="translate(40, 20) scale(0.39)">
<!-- Hexagon Shield -->
<polygon points="256,24 456,139 456,373 256,488 56,373 56,139"
fill="#0E1A2E" stroke="url(#cyanGrad)" stroke-width="12" filter="url(#bannerGlow)"/>
<!-- Inner Telemetry Ring -->
<polygon points="256,58 426,156 426,356 256,454 86,356 86,156"
fill="none" stroke="#162A45" stroke-width="4" stroke-dasharray="10 8"/>
<!-- Stylized L & Telemetry Bars -->
<rect x="140" y="140" width="46" height="232" rx="10" fill="url(#cyanGrad)"/>
<rect x="140" y="326" width="220" height="46" rx="10" fill="url(#cyanGrad)"/>
<rect x="220" y="210" width="36" height="80" rx="8" fill="url(#emeraldGrad)"/>
<rect x="286" y="150" width="36" height="140" rx="8" fill="url(#cyanGrad)"/>
<!-- Connection Points -->
<circle cx="238" cy="190" r="9" fill="#00FFA3"/>
<circle cx="304" cy="130" r="9" fill="#00E5FF"/>
<circle cx="380" cy="349" r="10" fill="#00E5FF"/>
</g>
<!-- Typography & Tagline -->
<text x="270" y="98" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="56" font-weight="900" letter-spacing="4" fill="url(#textCyan)" filter="url(#bannerGlow)">LOGAR</text>
<text x="272" y="142" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif" font-size="20" font-weight="600" fill="#E2E8F0" letter-spacing="0.5">Fleet Log Aggregation &amp; Telemetry Hub</text>
<text x="272" y="174" font-family="'JetBrains Mono', 'Fira Code', monospace" font-size="13" font-weight="400" fill="#00E5FF" letter-spacing="1">ZERO-STATE FORWARDERS &bull; MUTUAL TLS 1.3 &bull; TEMPORAL PERSISTENCE</text>
</svg>"""
def main():
print("[*] Generating high-resolution branding assets for LOGAR...")
print("[*] Generating comprehensive branding assets for LOGAR...")
# 1. Generate SVG Logo
svg_path = os.path.join(ASSETS_DIR, "logo.svg")
with open(svg_path, "w", encoding="utf-8") as f:
f.write(generate_svg_logo())
print(f"[+] Saved SVG logo: {svg_path}")
# 1. Generate SVG Logos
svg_logo_dark = generate_svg_logo(transparent_bg=False)
svg_logo_trans = generate_svg_logo(transparent_bg=True)
svg_banner = generate_svg_banner()
# 2. Generate PNG images of various sizes
# 2. Generate PNG images across multiple dimensions
png_sizes = [16, 32, 48, 64, 128, 256, 512]
png_buffers = []
png_dict = {}
for s in png_sizes:
png_data = create_png_rgba(s, s, draw_logo_rgba)
png_buffers.append((s, s, png_data))
if s in [256, 512]:
out_p = os.path.join(ASSETS_DIR, f"logo_{s}x{s}.png" if s != 512 else "logo.png")
with open(out_p, "wb") as f:
f.write(png_data)
print(f"[+] Saved PNG logo: {out_p}")
png_dict[s] = png_data
# 3. Generate Windows ICO File
ico_path = os.path.join(ASSETS_DIR, "logo.ico")
ico_data = generate_ico_file(png_buffers[:-1]) # Up to 256x256
with open(ico_path, "wb") as f:
f.write(ico_data)
print(f"[+] Saved Windows Icon (.ico): {ico_path}")
# 3. Generate Windows ICO File (multi-res 16..256)
ico_data = generate_ico_file(png_buffers[:-1])
# 4. Generate NSIS / Inno Setup Wizard Header Bitmap (150x57) with seamless white background
header_bmp_path = os.path.join(ASSETS_DIR, "wizard_header.bmp")
# 4. Generate BMP files for installers
header_bmp_data = create_bmp_24bit(150, 57, draw_wizard_header_white_bgr)
with open(header_bmp_path, "wb") as f:
f.write(header_bmp_data)
print(f"[+] Saved Wizard Header Bitmap (White Background): {header_bmp_path}")
# 5. Generate Inno Setup Small Wizard Bitmap (55x55) with seamless white background
small_bmp_path = os.path.join(ASSETS_DIR, "wizard_small.bmp")
small_bmp_data = create_bmp_24bit(55, 55, draw_wizard_small_bgr)
with open(small_bmp_path, "wb") as f:
f.write(small_bmp_data)
print(f"[+] Saved Small Wizard Bitmap (55x55): {small_bmp_path}")
# 6. Generate NSIS / Inno Setup Wizard Sidebar Bitmap (164x314)
sidebar_bmp_path = os.path.join(ASSETS_DIR, "wizard_sidebar.bmp")
sidebar_bmp_data = create_bmp_24bit(164, 314, draw_wizard_sidebar_bgr)
with open(sidebar_bmp_path, "wb") as f:
f.write(sidebar_bmp_data)
print(f"[+] Saved Wizard Sidebar Bitmap: {sidebar_bmp_path}")
print("[+] All LOGAR branding and installer graphics generated successfully.")
# 5. Write to target directories
for target_dir in (ROOT_ASSETS_DIR, COMPILATION_ASSETS_DIR, LICENSING_ASSETS_DIR):
# SVGs
with open(os.path.join(target_dir, "logo.svg"), "w", encoding="utf-8") as f:
f.write(svg_logo_dark)
with open(os.path.join(target_dir, "logo_dark.svg"), "w", encoding="utf-8") as f:
f.write(svg_logo_dark)
with open(os.path.join(target_dir, "logo_transparent.svg"), "w", encoding="utf-8") as f:
f.write(svg_logo_trans)
with open(os.path.join(target_dir, "logo_banner.svg"), "w", encoding="utf-8") as f:
f.write(svg_banner)
# PNGs
with open(os.path.join(target_dir, "logo.png"), "wb") as f:
f.write(png_dict[512])
for s in png_sizes:
with open(os.path.join(target_dir, f"logo_{s}x{s}.png"), "wb") as f:
f.write(png_dict[s])
# ICOs
with open(os.path.join(target_dir, "logo.ico"), "wb") as f:
f.write(ico_data)
with open(os.path.join(target_dir, "favicon.ico"), "wb") as f:
f.write(ico_data)
# BMPs
with open(os.path.join(target_dir, "wizard_header.bmp"), "wb") as f:
f.write(header_bmp_data)
with open(os.path.join(target_dir, "wizard_small.bmp"), "wb") as f:
f.write(small_bmp_data)
with open(os.path.join(target_dir, "wizard_sidebar.bmp"), "wb") as f:
f.write(sidebar_bmp_data)
print(f"[+] Populated asset repository: {target_dir}")
print("[+] All LOGAR branding assets, icons, and banners generated successfully!")
if __name__ == "__main__":
+5 -5
View File
@@ -1,7 +1,7 @@
[Setup]
AppName=LOGAR Client
AppVersion=0.3.2
AppPublisher=LOGAR Security Systems
AppVersion=0.3.3
AppPublisher=LOGAR
AppPublisherURL=https://logar.eibl.tech
AppSupportURL=https://logar.eibl.tech
AppUpdatesURL=https://logar.eibl.tech
@@ -15,11 +15,11 @@ WizardStyle=modern
SetupIconFile=assets\logo.ico
WizardImageFile=assets\wizard_sidebar.bmp
WizardSmallImageFile=assets\wizard_small.bmp
VersionInfoCompany=LOGAR Security Systems
VersionInfoCompany=LOGAR
VersionInfoDescription=LOGAR Windows Edge Log Forwarder Setup
VersionInfoVersion=0.3.2.0
VersionInfoVersion=0.3.3.0
VersionInfoProductName=LOGAR Client
VersionInfoProductVersion=0.3.2
VersionInfoProductVersion=0.3.3
[Files]
Source: "..\dist\Win_Client.exe"; DestDir: "{app}"; Flags: ignoreversion
+5 -5
View File
@@ -9,13 +9,13 @@ RequestExecutionLevel admin
BrandingText "LOGAR Centralized Log Aggregator & Forwarder"
VIProductVersion "0.3.2.0"
VIProductVersion "0.3.3.0"
VIAddVersionKey "ProductName" "LOGAR Client"
VIAddVersionKey "CompanyName" "LOGAR Security Systems"
VIAddVersionKey "LegalCopyright" "© 2026 LOGAR Security Systems"
VIAddVersionKey "CompanyName" "LOGAR"
VIAddVersionKey "LegalCopyright" "© 2026 LOGAR"
VIAddVersionKey "FileDescription" "LOGAR Windows Edge Log Forwarder Setup"
VIAddVersionKey "FileVersion" "0.3.2.0"
VIAddVersionKey "ProductVersion" "0.3.2.0"
VIAddVersionKey "FileVersion" "0.3.3.0"
VIAddVersionKey "ProductVersion" "0.3.3.0"
# --- Visual Graphics & Branding ---
!define MUI_ICON "assets/logo.ico"
+5 -5
View File
@@ -1,7 +1,7 @@
[Setup]
AppName=LOGAR Server
AppVersion=0.3.2
AppPublisher=LOGAR Security Systems
AppVersion=0.3.3
AppPublisher=LOGAR
AppPublisherURL=https://logar.eibl.tech
AppSupportURL=https://logar.eibl.tech
AppUpdatesURL=https://logar.eibl.tech
@@ -15,11 +15,11 @@ WizardStyle=modern
SetupIconFile=assets\logo.ico
WizardImageFile=assets\wizard_sidebar.bmp
WizardSmallImageFile=assets\wizard_small.bmp
VersionInfoCompany=LOGAR Security Systems
VersionInfoCompany=LOGAR
VersionInfoDescription=LOGAR Cloud Hub & TCP Ingestion Server Setup
VersionInfoVersion=0.3.2.0
VersionInfoVersion=0.3.3.0
VersionInfoProductName=LOGAR Server
VersionInfoProductVersion=0.3.2
VersionInfoProductVersion=0.3.3
[Files]
Source: "..\dist\Server.exe"; DestDir: "{app}"; Flags: ignoreversion
+5 -5
View File
@@ -8,13 +8,13 @@ RequestExecutionLevel admin
BrandingText "LOGAR Centralized Log Aggregator & Ingestion Hub"
VIProductVersion "0.3.2.0"
VIProductVersion "0.3.3.0"
VIAddVersionKey "ProductName" "LOGAR Server"
VIAddVersionKey "CompanyName" "LOGAR Security Systems"
VIAddVersionKey "LegalCopyright" "© 2026 LOGAR Security Systems"
VIAddVersionKey "CompanyName" "LOGAR"
VIAddVersionKey "LegalCopyright" "© 2026 LOGAR"
VIAddVersionKey "FileDescription" "LOGAR Cloud Hub & TCP Ingestion Server Setup"
VIAddVersionKey "FileVersion" "0.3.2.0"
VIAddVersionKey "ProductVersion" "0.3.2.0"
VIAddVersionKey "FileVersion" "0.3.3.0"
VIAddVersionKey "ProductVersion" "0.3.3.0"
# --- Visual Graphics & Branding ---
!define MUI_ICON "assets/logo.ico"
+163
View File
@@ -0,0 +1,163 @@
# LOGAR Brand Identity & Design Guide
> **Official Design System & Visual Identity Standards for LOGAR**
> *Fleet Log Aggregation, PKI Fleet Licensing & Centralized Telemetry Provisioning Hub*
---
## 1. Brand Identity & Positioning
**LOGAR** is an enterprise log aggregation, normalization, and centralized provisioning system built for heterogeneous server fleets (Windows & Linux). It connects lightweight, zero-state edge forwarders to a centralized hub that enforces mutual TLS 1.3 (**mTLS**), cryptographic seat leasing, rolling 12-hour temporal persistence tracking, and direct anomaly streaming to **Hermes AI**.
```mermaid
flowchart LR
A["Edge Forwarders<br/>(Win & Linux)"] -->|mTLS 1.3 Stream| B["LOGAR Server Hub<br/>(Central Aggregator)"]
B -->|Verified Telemetry| C["Hermes AI<br/>(Deep Reasoning Engine)"]
D["License Authority<br/>(Master PKI)"] <==>|WebSocket Quota| B
```
### Brand Positioning Rules:
* **Log Aggregator & Telemetry Hub**: LOGAR is a high-throughput, zero-state log aggregation, filtering, and telemetry provisioning hub.
* **Strict Naming Constraint**: **LOGAR is NOT a SIEM** (Security Information and Event Management) system. It does not provide intrusion detection, security rule engines, or threat intelligence feeds. Never describe LOGAR as a SIEM in documentation, user interfaces, installer scripts, or promotional material.
---
## 2. Logo Anatomy & Symbolism
The LOGAR emblem combines cybersecurity aesthetics with real-time log streaming geometry:
<p align="center">
<img src="../assets/logo_banner.svg" alt="LOGAR Banner" width="600"/>
</p>
```
/\ [ Hexagon Shield: PKI Cryptographic Integrity ]
/ \
/ \ [ Left 'L' Pillar: Zero-State Forwarder Pipeline ]
| || |
| ||. | [ Stepped Telemetry Bars: Structured Log Stream ]
| |___|
\ / [ Spark Points: Dynamic Seat Sync & Handshake ]
\ /
\/
```
### Key Components:
1. **Hexagonal Shield**: Represents mutual TLS 1.3 cryptographic verification and authoritative PKI trust boundaries.
2. **The Stylized 'L' Glyph**: Represents the high-performance forwarder pipeline and log ingestion stream.
3. **Stepped Telemetry Bars**: Depicts normalized structured log records propagating from edge forwarders to the central temporal engine.
4. **Spark & Sync Points**: Visualizes live WebSocket connection nodes and mTLS handshake synchronization.
---
## 3. Official Color Palette
LOGAR uses a cyber-slate and neon telemetry palette designed for high contrast in dark mode environments, with seamless light-mode compatibility for native operating system dialogs and installer wizards.
### Primary Colors
| Swatch | Color Name | Hex Code | RGB | HSL | Usage |
| :--- | :--- | :--- | :--- | :--- | :--- |
| ![#00E5FF](https://via.placeholder.com/15/00E5FF/000000?text=+) | **Cyber Cyan** | `#00E5FF` | `0, 229, 255` | `186°, 100%, 50%` | Primary brand accent, glowing telemetry lines, active links, primary CTA buttons |
| ![#00FFA3](https://via.placeholder.com/15/00FFA3/000000?text=+) | **Emerald Pulse** | `#00FFA3` | `0, 255, 163` | `158°, 100%, 50%` | Healthy node indicators, approved client seats, online PKI status, success badges |
| ![#0072FF](https://via.placeholder.com/15/0072FF/000000?text=+) | **Electric Blue** | `#0072FF` | `0, 114, 255` | `213°, 100%, 50%` | Gradient stop with Cyber Cyan, secondary action highlights |
| ![#0E1A2E](https://via.placeholder.com/15/0E1A2E/000000?text=+) | **Dark Navy** | `#0E1A2E` | `14, 26, 46` | `218°, 53%, 12%` | Emblem background, card surfaces, modal dialogs |
| ![#070C18](https://via.placeholder.com/15/070C18/000000?text=+) | **Midnight Slate**| `#070C18` | `7, 12, 24` | `222°, 55%, 6%` | Application canvas background, dark-mode body |
### Semantic & Status Colors
| Swatch | Color Name | Hex Code | RGB | Usage |
| :--- | :--- | :--- | :--- | :--- |
| ![#EF4444](https://via.placeholder.com/15/EF4444/000000?text=+) | **Crimson Alert** | `#EF4444` | `239, 68, 68` | Critical anomalies, revoked seats, connection errors |
| ![#F59E0B](https://via.placeholder.com/15/F59E0B/000000?text=+) | **Amber Warning** | `#F59E0B` | `245, 158, 11` | Pending enrollment approvals, seat quota thresholds (>85%) |
| ![#94A3B8](https://via.placeholder.com/15/94A3B8/000000?text=+) | **Text Muted** | `#94A3B8` | `148, 163, 184` | Table headers, secondary descriptions, timestamps |
| ![#FFFFFF](https://via.placeholder.com/15/FFFFFF/000000?text=+) | **Pure White** | `#FFFFFF` | `255, 255, 255` | Installer header background, text on dark cards |
---
## 4. Typography System
LOGAR uses clean, modern sans-serif typography for user interfaces and clear monospace fonts for log telemetry and cryptographic fingerprints.
### Monospace (Telemetry, Fingerprints & Code)
* **Primary**: `'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, monospace`
* **Usage**: Raw log frames, JSON schemas, X.509 serials, SHA-256 fingerprints, port mappings, command-line snippets.
### Interface Sans-Serif (WebUI & Marketing)
* **Primary**: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif`
* **Usage**: Headings, navigation bars, modal forms, buttons, dashboard metrics.
### Type Scale
* **Hero Title**: `48px` - `56px` / Bold (900) / Tracking: `-0.02em`
* **Page Header (H1)**: `24px` - `32px` / Extra Bold (800)
* **Section Title (H2)**: `20px` - `24px` / Bold (700)
* **Card Header (H3)**: `16px` - `18px` / Semi-Bold (600)
* **Body Text**: `14px` - `15px` / Regular (400) / Line Height: `1.6`
* **Code / Badges / Monospace**: `12px` - `13px` / Medium (500)
---
## 5. Asset Library Inventory
All brand visual assets are maintained in the central [`assets/`](../assets/) directory:
| Filename | Format | Dimensions | Purpose |
| :--- | :--- | :--- | :--- |
| [`logo.svg`](../assets/logo.svg) | SVG | Vector | Full emblem with dark shield background |
| [`logo_transparent.svg`](../assets/logo_transparent.svg) | SVG | Vector | **Primary WebUI Emblem**: Transparent background for headers, tabs, and light/dark themes |
| [`logo_dark.svg`](../assets/logo_dark.svg) | SVG | Vector | Shield emblem optimized for dark mode backgrounds |
| [`logo_banner.svg`](../assets/logo_banner.svg) | SVG | 960x240 | Wide brand banner with emblem, typography, and tagline |
| [`logo.png`](../assets/logo.png) | PNG (RGBA) | 512x512 | High-resolution master raster asset |
| [`logo_256x256.png`](../assets/logo_256x256.png) | PNG (RGBA) | 256x256 | App icon and README graphics |
| [`logo_128x128.png`](../assets/logo_128x128.png) | PNG (RGBA) | 128x128 | Medium display icon |
| [`logo_64x64.png`](../assets/logo_64x64.png) | PNG (RGBA) | 64x64 | Small UI asset |
| [`logo_32x32.png`](../assets/logo_32x32.png) | PNG (RGBA) | 32x32 | Standard favicon raster |
| [`logo_16x16.png`](../assets/logo_16x16.png) | PNG (RGBA) | 16x16 | Small favicon raster |
| [`logo.ico`](../assets/logo.ico) | ICO | Multi (16-256) | Windows executable icon & installer icon |
| [`favicon.ico`](../assets/favicon.ico) | ICO | Multi (16-256) | WebUI dashboard favicon |
| [`wizard_header.bmp`](../assets/wizard_header.bmp) | BMP (24-bit) | 150x57 | Inno Setup & NSIS top header bitmap (white background) |
| [`wizard_small.bmp`](../assets/wizard_small.bmp) | BMP (24-bit) | 55x55 | Inno Setup small wizard bitmap |
| [`wizard_sidebar.bmp`](../assets/wizard_sidebar.bmp) | BMP (24-bit) | 164x314 | Inno Setup & NSIS welcome wizard sidebar graphic |
---
## 6. Logo Usage Guidelines
### 1. WebUI Navigation & Tabs
* **Rule**: Always use the **transparent background vector emblem** (`logo_transparent.svg`) aligned to the **far left** of headers and tab bars.
* **Style**: `.logo-icon { background: transparent; box-shadow: none; display: flex; align-items: center; justify-content: center; }`
* **Clear Space**: Maintain a minimum margin of `12px` between the logo and adjacent title text.
### 2. Windows Installers & Native Wizards
* **Rule**: The top header banner (`wizard_header.bmp`) uses a pure white background (`#FFFFFF`) with the emblem positioned on the left, blending seamlessly with native Windows wizard backgrounds.
* **Sidebar**: The welcome screen uses `wizard_sidebar.bmp` with cyber-navy gradients and pulse log lines.
### 3. CLI & Linux Setup Scripts
* **Rule**: CLI installers output branded cyan/emerald ANSI banners and formatted step indicators:
```
============================================================
LOGAR Fleet Log Aggregation & Centralized Provisioning
============================================================
```
---
## 7. Dos and Don'ts
| Do | Don't |
| :--- | :--- |
| ✅ **DO** use `assets/logo_transparent.svg` for web tabs and navigation bars. | ❌ **DON'T** put a solid dark box behind the logo in web tabs or navbar headers. |
| ✅ **DO** refer to LOGAR as a **Log Aggregator** or **Telemetry Hub**. | ❌ **DON'T** refer to LOGAR as a **SIEM** or security monitor. |
| ✅ **DO** maintain the SVG aspect ratio (`1:1` for emblem, `4:1` for banner). | ❌ **DON'T** stretch or skew the logo geometry. |
| ✅ **DO** use the official Cyber Cyan (`#00E5FF`) and Emerald (`#00FFA3`) accent colors. | ❌ **DON'T** substitute arbitrary neon colors (such as hot pink or bright orange). |
| ✅ **DO** link to documentation using standard Gitea Wiki URLs. | ❌ **DON'T** hardcode stale wiki links in installer dialogs. |
---
## 8. Regenerating Branding Assets
To programmatically regenerate all vector, raster, icon, and installer bitmap assets across the codebase:
```bash
python compilation/generate_branding_assets.py
```
+2
View File
@@ -1306,6 +1306,7 @@ def login_page(request: Request):
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LOGAR Hub - Login</title>
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpolygon points='256,24 456,139 456,373 256,488 56,373 56,139' fill='%230E1A2E' stroke='%2300E5FF' stroke-width='24'/%3E%3Crect x='140' y='140' width='46' height='232' rx='10' fill='%2300E5FF'/%3E%3Crect x='140' y='326' width='220' height='46' rx='10' fill='%2300E5FF'/%3E%3Crect x='220' y='210' width='36' height='80' rx='8' fill='%2300FFA3'/%3E%3Crect x='286' y='150' width='36' height='140' rx='8' fill='%2300E5FF'/%3E%3C/svg%3E">
<style>
:root { --bg: #0b0f19; --card: #151c2e; --primary: #3b82f6; --primary-hover: #2563eb; --border: #1e293b; --text: #f8fafc; --text-muted: #94a3b8; --danger: #ef4444; }
* { box-sizing: border-box; margin: 0; padding: 0; }
@@ -2241,6 +2242,7 @@ def serve_webui(request: Request = None):
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LOGAR Hub - Fleet Aggregation & Management</title>
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpolygon points='256,24 456,139 456,373 256,488 56,373 56,139' fill='%230E1A2E' stroke='%2300E5FF' stroke-width='24'/%3E%3Crect x='140' y='140' width='46' height='232' rx='10' fill='%2300E5FF'/%3E%3Crect x='140' y='326' width='220' height='46' rx='10' fill='%2300E5FF'/%3E%3Crect x='220' y='210' width='36' height='80' rx='8' fill='%2300FFA3'/%3E%3Crect x='286' y='150' width='36' height='140' rx='8' fill='%2300E5FF'/%3E%3C/svg%3E">
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;800&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
:root {{
+163
View File
@@ -0,0 +1,163 @@
# LOGAR Brand Identity & Design Guide
> **Official Design System & Visual Identity Standards for LOGAR**
> *Fleet Log Aggregation, PKI Fleet Licensing & Centralized Telemetry Provisioning Hub*
---
## 1. Brand Identity & Positioning
**LOGAR** is an enterprise log aggregation, normalization, and centralized provisioning system built for heterogeneous server fleets (Windows & Linux). It connects lightweight, zero-state edge forwarders to a centralized hub that enforces mutual TLS 1.3 (**mTLS**), cryptographic seat leasing, rolling 12-hour temporal persistence tracking, and direct anomaly streaming to **Hermes AI**.
```mermaid
flowchart LR
A["Edge Forwarders<br/>(Win & Linux)"] -->|mTLS 1.3 Stream| B["LOGAR Server Hub<br/>(Central Aggregator)"]
B -->|Verified Telemetry| C["Hermes AI<br/>(Deep Reasoning Engine)"]
D["License Authority<br/>(Master PKI)"] <==>|WebSocket Quota| B
```
### Brand Positioning Rules:
* **Log Aggregator & Telemetry Hub**: LOGAR is a high-throughput, zero-state log aggregation, filtering, and telemetry provisioning hub.
* **Strict Naming Constraint**: **LOGAR is NOT a SIEM** (Security Information and Event Management) system. It does not provide intrusion detection, security rule engines, or threat intelligence feeds. Never describe LOGAR as a SIEM in documentation, user interfaces, installer scripts, or promotional material.
---
## 2. Logo Anatomy & Symbolism
The LOGAR emblem combines cybersecurity aesthetics with real-time log streaming geometry:
<p align="center">
<img src="../assets/logo_banner.svg" alt="LOGAR Banner" width="600"/>
</p>
```
/\ [ Hexagon Shield: PKI Cryptographic Integrity ]
/ \
/ \ [ Left 'L' Pillar: Zero-State Forwarder Pipeline ]
| || |
| ||. | [ Stepped Telemetry Bars: Structured Log Stream ]
| |___|
\ / [ Spark Points: Dynamic Seat Sync & Handshake ]
\ /
\/
```
### Key Components:
1. **Hexagonal Shield**: Represents mutual TLS 1.3 cryptographic verification and authoritative PKI trust boundaries.
2. **The Stylized 'L' Glyph**: Represents the high-performance forwarder pipeline and log ingestion stream.
3. **Stepped Telemetry Bars**: Depicts normalized structured log records propagating from edge forwarders to the central temporal engine.
4. **Spark & Sync Points**: Visualizes live WebSocket connection nodes and mTLS handshake synchronization.
---
## 3. Official Color Palette
LOGAR uses a cyber-slate and neon telemetry palette designed for high contrast in dark mode environments, with seamless light-mode compatibility for native operating system dialogs and installer wizards.
### Primary Colors
| Swatch | Color Name | Hex Code | RGB | HSL | Usage |
| :--- | :--- | :--- | :--- | :--- | :--- |
| ![#00E5FF](https://via.placeholder.com/15/00E5FF/000000?text=+) | **Cyber Cyan** | `#00E5FF` | `0, 229, 255` | `186°, 100%, 50%` | Primary brand accent, glowing telemetry lines, active links, primary CTA buttons |
| ![#00FFA3](https://via.placeholder.com/15/00FFA3/000000?text=+) | **Emerald Pulse** | `#00FFA3` | `0, 255, 163` | `158°, 100%, 50%` | Healthy node indicators, approved client seats, online PKI status, success badges |
| ![#0072FF](https://via.placeholder.com/15/0072FF/000000?text=+) | **Electric Blue** | `#0072FF` | `0, 114, 255` | `213°, 100%, 50%` | Gradient stop with Cyber Cyan, secondary action highlights |
| ![#0E1A2E](https://via.placeholder.com/15/0E1A2E/000000?text=+) | **Dark Navy** | `#0E1A2E` | `14, 26, 46` | `218°, 53%, 12%` | Emblem background, card surfaces, modal dialogs |
| ![#070C18](https://via.placeholder.com/15/070C18/000000?text=+) | **Midnight Slate**| `#070C18` | `7, 12, 24` | `222°, 55%, 6%` | Application canvas background, dark-mode body |
### Semantic & Status Colors
| Swatch | Color Name | Hex Code | RGB | Usage |
| :--- | :--- | :--- | :--- | :--- |
| ![#EF4444](https://via.placeholder.com/15/EF4444/000000?text=+) | **Crimson Alert** | `#EF4444` | `239, 68, 68` | Critical anomalies, revoked seats, connection errors |
| ![#F59E0B](https://via.placeholder.com/15/F59E0B/000000?text=+) | **Amber Warning** | `#F59E0B` | `245, 158, 11` | Pending enrollment approvals, seat quota thresholds (>85%) |
| ![#94A3B8](https://via.placeholder.com/15/94A3B8/000000?text=+) | **Text Muted** | `#94A3B8` | `148, 163, 184` | Table headers, secondary descriptions, timestamps |
| ![#FFFFFF](https://via.placeholder.com/15/FFFFFF/000000?text=+) | **Pure White** | `#FFFFFF` | `255, 255, 255` | Installer header background, text on dark cards |
---
## 4. Typography System
LOGAR uses clean, modern sans-serif typography for user interfaces and clear monospace fonts for log telemetry and cryptographic fingerprints.
### Monospace (Telemetry, Fingerprints & Code)
* **Primary**: `'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, monospace`
* **Usage**: Raw log frames, JSON schemas, X.509 serials, SHA-256 fingerprints, port mappings, command-line snippets.
### Interface Sans-Serif (WebUI & Marketing)
* **Primary**: `-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif`
* **Usage**: Headings, navigation bars, modal forms, buttons, dashboard metrics.
### Type Scale
* **Hero Title**: `48px` - `56px` / Bold (900) / Tracking: `-0.02em`
* **Page Header (H1)**: `24px` - `32px` / Extra Bold (800)
* **Section Title (H2)**: `20px` - `24px` / Bold (700)
* **Card Header (H3)**: `16px` - `18px` / Semi-Bold (600)
* **Body Text**: `14px` - `15px` / Regular (400) / Line Height: `1.6`
* **Code / Badges / Monospace**: `12px` - `13px` / Medium (500)
---
## 5. Asset Library Inventory
All brand visual assets are maintained in the central [`assets/`](../assets/) directory:
| Filename | Format | Dimensions | Purpose |
| :--- | :--- | :--- | :--- |
| [`logo.svg`](../assets/logo.svg) | SVG | Vector | Full emblem with dark shield background |
| [`logo_transparent.svg`](../assets/logo_transparent.svg) | SVG | Vector | **Primary WebUI Emblem**: Transparent background for headers, tabs, and light/dark themes |
| [`logo_dark.svg`](../assets/logo_dark.svg) | SVG | Vector | Shield emblem optimized for dark mode backgrounds |
| [`logo_banner.svg`](../assets/logo_banner.svg) | SVG | 960x240 | Wide brand banner with emblem, typography, and tagline |
| [`logo.png`](../assets/logo.png) | PNG (RGBA) | 512x512 | High-resolution master raster asset |
| [`logo_256x256.png`](../assets/logo_256x256.png) | PNG (RGBA) | 256x256 | App icon and README graphics |
| [`logo_128x128.png`](../assets/logo_128x128.png) | PNG (RGBA) | 128x128 | Medium display icon |
| [`logo_64x64.png`](../assets/logo_64x64.png) | PNG (RGBA) | 64x64 | Small UI asset |
| [`logo_32x32.png`](../assets/logo_32x32.png) | PNG (RGBA) | 32x32 | Standard favicon raster |
| [`logo_16x16.png`](../assets/logo_16x16.png) | PNG (RGBA) | 16x16 | Small favicon raster |
| [`logo.ico`](../assets/logo.ico) | ICO | Multi (16-256) | Windows executable icon & installer icon |
| [`favicon.ico`](../assets/favicon.ico) | ICO | Multi (16-256) | WebUI dashboard favicon |
| [`wizard_header.bmp`](../assets/wizard_header.bmp) | BMP (24-bit) | 150x57 | Inno Setup & NSIS top header bitmap (white background) |
| [`wizard_small.bmp`](../assets/wizard_small.bmp) | BMP (24-bit) | 55x55 | Inno Setup small wizard bitmap |
| [`wizard_sidebar.bmp`](../assets/wizard_sidebar.bmp) | BMP (24-bit) | 164x314 | Inno Setup & NSIS welcome wizard sidebar graphic |
---
## 6. Logo Usage Guidelines
### 1. WebUI Navigation & Tabs
* **Rule**: Always use the **transparent background vector emblem** (`logo_transparent.svg`) aligned to the **far left** of headers and tab bars.
* **Style**: `.logo-icon { background: transparent; box-shadow: none; display: flex; align-items: center; justify-content: center; }`
* **Clear Space**: Maintain a minimum margin of `12px` between the logo and adjacent title text.
### 2. Windows Installers & Native Wizards
* **Rule**: The top header banner (`wizard_header.bmp`) uses a pure white background (`#FFFFFF`) with the emblem positioned on the left, blending seamlessly with native Windows wizard backgrounds.
* **Sidebar**: The welcome screen uses `wizard_sidebar.bmp` with cyber-navy gradients and pulse log lines.
### 3. CLI & Linux Setup Scripts
* **Rule**: CLI installers output branded cyan/emerald ANSI banners and formatted step indicators:
```
============================================================
LOGAR Fleet Log Aggregation & Centralized Provisioning
============================================================
```
---
## 7. Dos and Don'ts
| Do | Don't |
| :--- | :--- |
| ✅ **DO** use `assets/logo_transparent.svg` for web tabs and navigation bars. | ❌ **DON'T** put a solid dark box behind the logo in web tabs or navbar headers. |
| ✅ **DO** refer to LOGAR as a **Log Aggregator** or **Telemetry Hub**. | ❌ **DON'T** refer to LOGAR as a **SIEM** or security monitor. |
| ✅ **DO** maintain the SVG aspect ratio (`1:1` for emblem, `4:1` for banner). | ❌ **DON'T** stretch or skew the logo geometry. |
| ✅ **DO** use the official Cyber Cyan (`#00E5FF`) and Emerald (`#00FFA3`) accent colors. | ❌ **DON'T** substitute arbitrary neon colors (such as hot pink or bright orange). |
| ✅ **DO** link to documentation using standard Gitea Wiki URLs. | ❌ **DON'T** hardcode stale wiki links in installer dialogs. |
---
## 8. Regenerating Branding Assets
To programmatically regenerate all vector, raster, icon, and installer bitmap assets across the codebase:
```bash
python compilation/generate_branding_assets.py
```