From a70ce9162d42e9e91096ae2823dc4ca23a656e03 Mon Sep 17 00:00:00 2001 From: max Date: Sun, 27 Sep 2026 17:17:57 +0200 Subject: [PATCH] brand asset library, wiki branding guide, and v0.3.3 release --- LOGAR-LICENSING | 2 +- README.md | 25 +++- RELEASE_NOTES.md | 18 ++- assets/favicon.ico | Bin 0 -> 14609 bytes assets/logo.ico | Bin 0 -> 14609 bytes assets/logo.png | Bin 0 -> 22524 bytes assets/logo.svg | 43 ++++++ assets/logo_128x128.png | Bin 0 -> 3017 bytes assets/logo_16x16.png | Bin 0 -> 351 bytes assets/logo_256x256.png | Bin 0 -> 8341 bytes assets/logo_32x32.png | Bin 0 -> 650 bytes assets/logo_48x48.png | Bin 0 -> 921 bytes assets/logo_512x512.png | Bin 0 -> 22524 bytes assets/logo_64x64.png | Bin 0 -> 1227 bytes assets/logo_banner.svg | 54 ++++++++ assets/logo_dark.svg | 43 ++++++ assets/logo_transparent.svg | 41 ++++++ assets/wizard_header.bmp | Bin 0 -> 25818 bytes assets/wizard_sidebar.bmp | Bin 0 -> 154542 bytes assets/wizard_small.bmp | Bin 0 -> 9294 bytes compilation/assets/favicon.ico | Bin 0 -> 14609 bytes compilation/assets/logo_128x128.png | Bin 0 -> 3017 bytes compilation/assets/logo_16x16.png | Bin 0 -> 351 bytes compilation/assets/logo_32x32.png | Bin 0 -> 650 bytes compilation/assets/logo_48x48.png | Bin 0 -> 921 bytes compilation/assets/logo_512x512.png | Bin 0 -> 22524 bytes compilation/assets/logo_64x64.png | Bin 0 -> 1227 bytes compilation/assets/logo_banner.svg | 54 ++++++++ compilation/assets/logo_dark.svg | 43 ++++++ compilation/assets/logo_transparent.svg | 41 ++++++ compilation/generate_branding_assets.py | 171 +++++++++++++++++------- compilation/installer_client.iss | 10 +- compilation/installer_client.nsi | 10 +- compilation/installer_server.iss | 10 +- compilation/installer_server.nsi | 10 +- docs/Branding-Guide.md | 163 ++++++++++++++++++++++ src/Server.py | 2 + wiki/Branding-Guide.md | 163 ++++++++++++++++++++++ 38 files changed, 828 insertions(+), 75 deletions(-) create mode 100644 assets/favicon.ico create mode 100644 assets/logo.ico create mode 100644 assets/logo.png create mode 100644 assets/logo.svg create mode 100644 assets/logo_128x128.png create mode 100644 assets/logo_16x16.png create mode 100644 assets/logo_256x256.png create mode 100644 assets/logo_32x32.png create mode 100644 assets/logo_48x48.png create mode 100644 assets/logo_512x512.png create mode 100644 assets/logo_64x64.png create mode 100644 assets/logo_banner.svg create mode 100644 assets/logo_dark.svg create mode 100644 assets/logo_transparent.svg create mode 100644 assets/wizard_header.bmp create mode 100644 assets/wizard_sidebar.bmp create mode 100644 assets/wizard_small.bmp create mode 100644 compilation/assets/favicon.ico create mode 100644 compilation/assets/logo_128x128.png create mode 100644 compilation/assets/logo_16x16.png create mode 100644 compilation/assets/logo_32x32.png create mode 100644 compilation/assets/logo_48x48.png create mode 100644 compilation/assets/logo_512x512.png create mode 100644 compilation/assets/logo_64x64.png create mode 100644 compilation/assets/logo_banner.svg create mode 100644 compilation/assets/logo_dark.svg create mode 100644 compilation/assets/logo_transparent.svg create mode 100644 docs/Branding-Guide.md create mode 100644 wiki/Branding-Guide.md diff --git a/LOGAR-LICENSING b/LOGAR-LICENSING index e6d7fa5..ac2ec07 160000 --- a/LOGAR-LICENSING +++ b/LOGAR-LICENSING @@ -1 +1 @@ -Subproject commit e6d7fa5b541f9a1e4b52ddbb89a59fcc9f50271d +Subproject commit ac2ec07c1220f5c1ab0b8d75d334b36b6ae8226b diff --git a/README.md b/README.md index 29bea9b..dbcc9f3 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,18 @@ +

+ LOGAR Banner +

+ # 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) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index d54c177..108f8a7 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -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. diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d8cfc0a1a67e2dd1e249a5df773af74ace600494 GIT binary patch literal 14609 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 literal 0 HcmV?d00001 diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 0000000..49eafb9 --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/logo_128x128.png b/assets/logo_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..83bd9d00495432ec4b008bfe85ed0f2f35dc33ca GIT binary patch literal 3017 zcmYLLc{tQv8~)92W-!Jw#=gX0q%2v=+KaK(j44~mzH39)#u|R8D9bQPlCq@LHc3o~ zvBbQD-m*+3CQ1vTWF6@n-+O)6cdqN4^WXE_&;8uzIrk+;`-8%Qa)JN=2$P65&b%Ai z-U58Qv&-DS9{|vKBpb`4ac{rh3=h3JBFl7;+k5JgrdtoY+S@CHtbXCl86l;$vb3M! zWwZf~p_F;(8};9vQ}?c)(MxupDIEA682X05f9y-lHwy=b6*SR*nnl!ky*}5{Zx+#{H{{N*Kt+xmf{xI zI+n~T#?&d9fBWiin#fuBY}GVzKgnL@C1frEsSw9b;w znXzVoA0v`|Iy89#A;W4xgj>Px=C=x#u}k-gaYQSqXP1OwGf6S-?m?DNeY6o0IO`qt za&vd2+>LNS`YHE$IugTeKpc58zUlM+92xq{Fr^T25!huJUSrS(kCR~dq4Pe^aIq4C z5wO`2C-guayb)BL5;C-~fpmU_s!HqhtyWS}Jb{1e)MPrEM_gI}O-LQmYy_61D0)N) zaHWT7K76`KzA7+l`XaRP*smmb`kHLn!^4~KJJb|zT2yp@Q>e{HO>6vK)sleU< zz8gbe9s-l(ktSOm81e)~w>8@#9^OIFf-&Bx;dK$1q0^}0BR$$9!<%88lgv9fn4DkP zAzfwAt1}_S)p|)jbpd|6dA$%A58_8@!5q_^szU-tk#5L2L~T8gFBl;?+pN()5Dru1 z+xgr*v`v}NRdFX2B3nc0e*&x?2vu)-B zGfi*{#NFp6+b|Cs1`=tRb8Uq{g)3P%XF1#1g(Kt{BGL?qy*DBNSIU&Q zj@KFhGp57xzB&LF{Am5OAcyR@i;0}Gc6imknj&h99}MJ4!%n#JPNL@5<)~W8vER2b zWffdcF!SCMLFW+7PZX=$OaZ+Fncmq3)1NTR=zghM>2%t z6c{piLRY7b?dA4hcK-bZrDAD!NG2L3#Zg)L+PLe6h0;CM9b$jFXXL?deZ~=*jUw{p zIxn`FN17_TZruqLp-zX#SrDNFB0hLC2~@bGn!#+%1iNoJ(1C@(_WA5@A(Ntz_>^x1 zoD8w~Vw`ELDxi(`BBts*(!|+KGrQVWzQfE(MU__U+fAHAewwL z?p_gKl(hWrqfOUDVB7oxcbaH`;^=Qh1^LiwtZ~;(oPQ=9g>}|iOX50;2l`%P0X25j zhG+Hq8738qet=%A$9I6ns0b16yJMk8GL(NPZPzvhmnp!zL6Da=tUFA*!;y1Bd~qsj z{5TeFgU!qAJ}eus=EvAC-rsYI+6K@26tqe^ci+!NZ7K%w$byrvyp zG&&Vi`Ei*Ap7+YoV$z0D7($K4TYq$fvsd@bNlVC@hCp-nKRhHN@isY61Km;MSkvm9$^4X*Q!yJ{IN-JqWK$9p8d^5;W74G-Cm^@h6nmYcRTPEX)_ z4R84`^`^%8shjRJ&WyAq)M&~+o&qdf9O!S#D-cSgt~ak0RF)fNC3LZkPGMt3P5eXg z>&vS?wfSjS zzy3GOD@NdY3#ZUcEal2R{oPFMOW3a>%6k$K&rOSN(hdwFGtW_RW8R$s@-Ib5s=Z)$ zBe|&GJoS1 zY)$s@rbQP2N(f0c1H?CaGG^mp`6BbKyaWj1W-D+_+WGD)=nYkDt|tIq?{9x=^Qn|IzVu7kuLMav3Po0P z1M*`CSj|**sJ{`g#EvuOZG%y>;rbd55GIWg;e|2ruY};|A>xQUYb)vMBRdcQi40@5_F$TZ2&d@G&cZ5TMQM z`Y$45ICfv7e(sl=a4lE_h59f&ixo_Ws)BAZT|9w8=;b*w;Nnm{tC9bS`5E!Y*F|C% zQ~Emgya1zQ2i7(=G{n5CIAk+zi zly)JkA2>UPe`tVPmt1REmXu<811>t%?*yF&QpFGQTuUR+h$vmyFnt=qqp5~FJ0mTq zn?|V;A5qlJ6yZ3TB~=rk8_`s4z<$Yj`5Wem#D)p)LoXU^LTt3ATfq`+Yxso1`lN7m z*foA18Su--Z~_x&p@HGNHoA7fVsf%%X<>ld^m!|B>5s2o?k$Vp5-aoIY9xIOu3%`d z@njTv+-Eyb_NY%7dcTH5ll_sR7coRHaI zRDJ5F%Q4UldAD@Y>!Tkkt_U-_o(8DS`<5~IpGrT~fd=?2|I9xdYblKVp3`Gy9R#E@} literal 0 HcmV?d00001 diff --git a/assets/logo_16x16.png b/assets/logo_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..f245889d94ff0bba57dad3086e6ea17def0df63a GIT binary patch literal 351 zcmV-l0igbgP)Ah`l)+A~?B znE#w2T42m@>OUBR*&m?vmj7^h5C*9S>4TW?04OP}3C9fk|AR4@{Q*jEK~)15TLN_j zr?AF zru~qF1d|70ka|QIKx2VjP!)_BCjEzCGy`DrU^Oey(gG-6*#%Vo6N@p^0W>AD^D7g? xSW_Y_FR<||{Rd$w-H`tn1n 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 literal 0 HcmV?d00001 diff --git a/assets/logo_32x32.png b/assets/logo_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..d2292c7ea8e2fb321aba11d386180386c94aaec5 GIT binary patch literal 650 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 literal 0 HcmV?d00001 diff --git a/assets/logo_64x64.png b/assets/logo_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..69a438b36a88ce5dfb8717643971aa1ff91934c3 GIT binary patch literal 1227 zcmV;+1T_1JP)J>w*43Xt;;2pCb`7V(2aYzPfK0ZpM0OI`$d?UVunZIl9+)qH|)J3rnyEFuO?Gyt3 zX`>JjcaC0s>Q5kc&Dh`fYB;3s!lLd(_kHm)(KLTqM4fc){uCmC{-(5fq`wI zD7C^=wYU|@7pq#FIxkRYa&wxu#7a)5e^Jj1P$xzzYU)#?=qE;~GeZ@V>Xn!{Gc<1e p)Xof*PmPt&4VF)imaqTd`U6?$UZxygT3i4C002ovPDHLkV1mq!7F7TM literal 0 HcmV?d00001 diff --git a/assets/logo_banner.svg b/assets/logo_banner.svg new file mode 100644 index 0000000..211be86 --- /dev/null +++ b/assets/logo_banner.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LOGAR + Fleet Log Aggregation & Telemetry Hub + ZERO-STATE FORWARDERS • MUTUAL TLS 1.3 • TEMPORAL PERSISTENCE + \ No newline at end of file diff --git a/assets/logo_dark.svg b/assets/logo_dark.svg new file mode 100644 index 0000000..49eafb9 --- /dev/null +++ b/assets/logo_dark.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/logo_transparent.svg b/assets/logo_transparent.svg new file mode 100644 index 0000000..121c66a --- /dev/null +++ b/assets/logo_transparent.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/wizard_header.bmp b/assets/wizard_header.bmp new file mode 100644 index 0000000000000000000000000000000000000000..680947d828bfb3ae4159ec54cdbf26189a26e30d GIT binary patch literal 25818 zcmeI4U1$|Y6vvM*`2=H3OhpuFteR+Juvn>xAYy&Xi~T@QsSnnNTKZBc_*Bssu@8b2 z5wr*)JLq+gUMuJ|1!mF`ppUkCMNJP5X1S+ zwQ=DAC`ylEJP27N!_PnYNHoXAFaxO!U;h2#<8>>E;r!;hlEOn!lrF>4p(s9{0MQ&5 z!wjS{{C3|Sd;)0<4+AQ>V2H>0I>V4)nQM#H-R;D1L37=P?%A}A3%`S+^ccp2NDDPV z{g4>aPblM~sO}2M{g7_@;ZqO{r`IJ3dqFA5$H*@FVK0cLxoBq~nc-)f))T{Y0;1>m zO83;?N(@EQT(mQg!0>~$@8L68IK3`i;_}>=^u+%msDhF1`}#@`NLxk6KE`K7ZGy?? z!{?yI@C=|YR}2M4W@vygagOkF=xC`gE7iMbMLGvNA*~mTekW9JnMN!v>DOnfO5PcO0gnyS7jM@zO`p}S{a8G6^wmuct z_?@lwNfHxEeMz5aKlJJbfBGbaBD)-?`Fh88(KHwB45TuYV{MCC>o>hKhn8{S9Z-^6 zBMb}1KtGHJkrrx#$J(^9g&b2Es{0m6i5K&{eI@yjJ=hP^-1xplh>h->RE8Af)UhM- z{^6q5hPd!PD8;ubOPFDaIOIw9fT;=PV@RRpJn!tpA`y6=w-vTfC2fYc z#zx+q*GA73ux9A*jnV(7A!olH|87o)=7)vto&dZ8s-!2v literal 0 HcmV?d00001 diff --git a/assets/wizard_sidebar.bmp b/assets/wizard_sidebar.bmp new file mode 100644 index 0000000000000000000000000000000000000000..13082afd836d6c9fcb7d9dd1e932a63594f67a8a GIT binary patch literal 154542 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 literal 0 HcmV?d00001 diff --git a/assets/wizard_small.bmp b/assets/wizard_small.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d9c7e1c7ac0c55e5cb24776e8810cf3e2f416afc GIT binary patch literal 9294 zcmeI1NoW;85QfW3mKQLqF^7m4w`hz(i3^AzLA}L;q6jK_(SwQ?MewBPMHCT4C5MRO zzTuukO^h*aphly?Anv%J;>CLiW%aA1Q*U~fe)Hx9g*5+5db(?>zp0*?UZ$pY(Kv{w zne?}uezW?1!=NNyUPASSIsA(k&>#FC(hz5~y)+che=432+gjT1+-hrXYP;Qdr|Ei2 z1lS1J0C+v=mrNMWE*LXBL&}m#E>knf$;A<$$&4@&OoR_Rn?Kx}bPK%b4E>^|!5`6jeA@Jd{=fpSA&zV`48;zKA z?~ZLzac*9>ia5vSWu`-T0hE8=WE0QJXHVc;NGm6v2i1yq3grC#>*tEv8sbbxB-tm$ zlQ>l?-YJlCL3KI41L7Q)mzh2hC!T|@&JHiqKu&xQuAI0J67*7xO*}BskaRCTB9G{=*5FUU8S#vu4=tGJpo&jo++BIo?;(6|PJ$?k@ z)UIR(4?%)b<|OCDiKjueYa}nuAK$+%TR4X}$LD9c3hN+2NpQM5q*jJc)~o&Ug3RavnZxqsvYDmh2=A;t?<4K(5h1r3UA)>st zmz-SaWvNf`%81(&&3@;2dY!Aw)rw4Lpj`Aj7lz{uj3?ipx?Qh~T15(Jvq<7;bARgR zeNthzkJOr1NLxxyE_B3GTl!>dIO(ofzj86XmwfzCm6{6)Y2&Ck6@y4F_b1o(k4KY= zvR$Qi6@;`+0%!bOXFNR|vWKL`BO=w~`^xE~CKqL!QX3#b+CXx0p@UOfx@M9c-w*ED z#pAoHH!8#qkkV$UaPoXfjhjaD>~};x|D0SDGljIpBxD-s5+j~2-q<+A{F5$7&gUzN zVh+*9h?JvN9y&N>mCT2p&l4(b3G%w5Vnoa#we29}sFjCKPQw)&6K7TFaMhw)^67Ur z*XvE$bW(X6&eYeNb^CYodUMK%SU5R2O((p5SN-mt0^>=i>irP2iAYMAGsXQ7zC_+% ziiFB^LY$H8FA?hF_Ez=ObVFrvELzbdcE;FZ<=;2i^gBDy`=6D?IZ-Jc`=5G0IWkDz z_l|l$xwp4>?ebcBw@)q3acE8TXh(^8Xxi|;xAJL`?E8JdSr<$lnImQSy+fWt`SgD8 zVBFNdA6@f%TMopeKNlvRd~WAI|DCJ<8VB=#_;?N`CAzJP2N%GywV`-g2FlWGD4v#q JvNWT3{sk<4D98W+ literal 0 HcmV?d00001 diff --git a/compilation/assets/favicon.ico b/compilation/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d8cfc0a1a67e2dd1e249a5df773af74ace600494 GIT binary patch literal 14609 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 literal 0 HcmV?d00001 diff --git a/compilation/assets/logo_16x16.png b/compilation/assets/logo_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..f245889d94ff0bba57dad3086e6ea17def0df63a GIT binary patch literal 351 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 literal 0 HcmV?d00001 diff --git a/compilation/assets/logo_64x64.png b/compilation/assets/logo_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..69a438b36a88ce5dfb8717643971aa1ff91934c3 GIT binary patch literal 1227 zcmV;+1T_1JP)J>w*43Xt;;2pCb`7V(2aYzPfK0ZpM0OI`$d?UVunZIl9+)qH|)J3rnyEFuO?Gyt3 zX`>JjcaC0s>Q5kc&Dh`fYB;3s!lLd(_kHm)(KLTqM4fc){uCmC{-(5fq`wI zD7C^=wYU|@7pq#FIxkRYa&wxu#7a)5e^Jj1P$xzzYU)#?=qE;~GeZ@V>Xn!{Gc<1e p)Xof*PmPt&4VF)imaqTd`U6?$UZxygT3i4C002ovPDHLkV1mq!7F7TM literal 0 HcmV?d00001 diff --git a/compilation/assets/logo_banner.svg b/compilation/assets/logo_banner.svg new file mode 100644 index 0000000..211be86 --- /dev/null +++ b/compilation/assets/logo_banner.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LOGAR + Fleet Log Aggregation & Telemetry Hub + ZERO-STATE FORWARDERS • MUTUAL TLS 1.3 • TEMPORAL PERSISTENCE + \ No newline at end of file diff --git a/compilation/assets/logo_dark.svg b/compilation/assets/logo_dark.svg new file mode 100644 index 0000000..49eafb9 --- /dev/null +++ b/compilation/assets/logo_dark.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/compilation/assets/logo_transparent.svg b/compilation/assets/logo_transparent.svg new file mode 100644 index 0000000..121c66a --- /dev/null +++ b/compilation/assets/logo_transparent.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/compilation/generate_branding_assets.py b/compilation/generate_branding_assets.py index 894021f..9981c81 100644 --- a/compilation/generate_branding_assets.py +++ b/compilation/generate_branding_assets.py @@ -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 """ + bg_polygon = "" if transparent_bg else """ + """ + + return f""" @@ -288,9 +298,7 @@ def generate_svg_logo() -> str: - - +{bg_polygon} str: """ +def generate_svg_banner() -> str: + """Generates a wide SVG banner with emblem and modern typography.""" + return """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + LOGAR + Fleet Log Aggregation & Telemetry Hub + ZERO-STATE FORWARDERS • MUTUAL TLS 1.3 • TEMPORAL PERSISTENCE +""" + + 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__": diff --git a/compilation/installer_client.iss b/compilation/installer_client.iss index e407587..f5213de 100644 --- a/compilation/installer_client.iss +++ b/compilation/installer_client.iss @@ -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 diff --git a/compilation/installer_client.nsi b/compilation/installer_client.nsi index bc7e768..7ca8de9 100644 --- a/compilation/installer_client.nsi +++ b/compilation/installer_client.nsi @@ -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" diff --git a/compilation/installer_server.iss b/compilation/installer_server.iss index dfbd209..d3a5ab5 100644 --- a/compilation/installer_server.iss +++ b/compilation/installer_server.iss @@ -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 diff --git a/compilation/installer_server.nsi b/compilation/installer_server.nsi index 025afd7..9469184 100644 --- a/compilation/installer_server.nsi +++ b/compilation/installer_server.nsi @@ -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" diff --git a/docs/Branding-Guide.md b/docs/Branding-Guide.md new file mode 100644 index 0000000..55b51cf --- /dev/null +++ b/docs/Branding-Guide.md @@ -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
(Win & Linux)"] -->|mTLS 1.3 Stream| B["LOGAR Server Hub
(Central Aggregator)"] + B -->|Verified Telemetry| C["Hermes AI
(Deep Reasoning Engine)"] + D["License Authority
(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: + +

+ LOGAR Banner +

+ +``` + /\ [ 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 +``` diff --git a/src/Server.py b/src/Server.py index d20235c..3950531 100644 --- a/src/Server.py +++ b/src/Server.py @@ -1306,6 +1306,7 @@ def login_page(request: Request): LOGAR Hub - Login +