secubox-openwrt/site/codex/index.html
2026-01-04 19:50:25 +01:00

1864 lines
51 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="OpenWrt LuCI Security & Management Suite">
<meta name="author" content="CyberMind.fr">
<link rel="canonical" href="https://gkerma.github.io/secubox-openwrt/codex/">
<link rel="prev" href="../luci-development-reference/">
<link rel="next" href="../module-status/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
<title>Codex Manual - SecuBox Documentation</title>
<link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Inter";--md-code-font:"JetBrains Mono"}</style>
<link rel="stylesheet" href="../stylesheets/extra.css">
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="purple">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#secubox-codex-field-manual" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<div data-md-color-scheme="default" data-md-component="outdated" hidden>
</div>
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href=".." title="SecuBox Documentation" class="md-header__button md-logo" aria-label="SecuBox Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
SecuBox Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Codex Manual
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="purple" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/gkerma/secubox-openwrt" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
gkerma/secubox-openwrt
</div>
</a>
</div>
</nav>
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href=".." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../quick-start/" class="md-tabs__link">
Getting Started
</a>
</li>
<li class="md-tabs__item">
<a href="../development-guidelines/" class="md-tabs__link">
Development
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="../claude/" class="md-tabs__link">
Reference
</a>
</li>
<li class="md-tabs__item">
<a href="../module-status/" class="md-tabs__link">
Modules
</a>
</li>
<li class="md-tabs__item">
<a href="../todo-analyse/" class="md-tabs__link">
Tools & Roadmap
</a>
</li>
<li class="md-tabs__item">
<a href="../archive/" class="md-tabs__link">
Archive
</a>
</li>
</ul>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="SecuBox Documentation" class="md-nav__button md-logo" aria-label="SecuBox Documentation" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
SecuBox Documentation
</label>
<div class="md-nav__source">
<a href="https://github.com/gkerma/secubox-openwrt" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</div>
<div class="md-source__repository">
gkerma/secubox-openwrt
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2" >
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
<span class="md-ellipsis">
Getting Started
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
Getting Started
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../quick-start/" class="md-nav__link">
<span class="md-ellipsis">
Quick Start
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../documentation-index/" class="md-nav__link">
<span class="md-ellipsis">
Documentation Index
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../repository-guidelines/" class="md-nav__link">
<span class="md-ellipsis">
Repository Guidelines
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
Development
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../development-guidelines/" class="md-nav__link">
<span class="md-ellipsis">
Development Guidelines
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../code-templates/" class="md-nav__link">
<span class="md-ellipsis">
Code Templates
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../module-implementation-guide/" class="md-nav__link">
<span class="md-ellipsis">
Module Implementation
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" checked>
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="">
<span class="md-ellipsis">
Reference
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
Reference
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../claude/" class="md-nav__link">
<span class="md-ellipsis">
RPCD & Architecture
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../validation-guide/" class="md-nav__link">
<span class="md-ellipsis">
Validation Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../permissions-guide/" class="md-nav__link">
<span class="md-ellipsis">
Permissions Guide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../luci-development-reference/" class="md-nav__link">
<span class="md-ellipsis">
LuCI Development
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Codex Manual
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Codex Manual
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#context-scope" class="md-nav__link">
<span class="md-ellipsis">
Context &amp; Scope
</span>
</a>
<nav class="md-nav" aria-label="Context &amp; Scope">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#module-documentation-map" class="md-nav__link">
<span class="md-ellipsis">
Module &amp; Documentation Map
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#best-practice-snapshot" class="md-nav__link">
<span class="md-ellipsis">
Best-Practice Snapshot
</span>
</a>
<nav class="md-nav" aria-label="Best-Practice Snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#non-negotiables-bake-into-every-prompt-or-pr" class="md-nav__link">
<span class="md-ellipsis">
Non-Negotiables (bake into every prompt or PR)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#validation-toolchain-flow" class="md-nav__link">
<span class="md-ellipsis">
Validation &amp; Toolchain Flow
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#design-ux-reminders" class="md-nav__link">
<span class="md-ellipsis">
Design &amp; UX Reminders
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#prompt-playbook" class="md-nav__link">
<span class="md-ellipsis">
Prompt Playbook
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#help-troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Help &amp; Troubleshooting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#history" class="md-nav__link">
<span class="md-ellipsis">
History
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#todo-radar-keep-codex-aligned" class="md-nav__link">
<span class="md-ellipsis">
TODO Radar (keep Codex aligned)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#quick-reference-checklist-for-codex-runs" class="md-nav__link">
<span class="md-ellipsis">
Quick Reference Checklist for Codex Runs
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5" >
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
Modules
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
Modules
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../module-status/" class="md-nav__link">
<span class="md-ellipsis">
Module Status
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../feature-regeneration-prompts/" class="md-nav__link">
<span class="md-ellipsis">
Feature Prompts
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6" >
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
<span class="md-ellipsis">
Tools & Roadmap
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
Tools & Roadmap
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../todo-analyse/" class="md-nav__link">
<span class="md-ellipsis">
TODO Roadmap
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7" >
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
<span class="md-ellipsis">
Archive
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
Archive
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../archive/" class="md-nav__link">
<span class="md-ellipsis">
Archive Index
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../archive/build-issues/" class="md-nav__link">
<span class="md-ellipsis">
Build Issues
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../archive/completion-report/" class="md-nav__link">
<span class="md-ellipsis">
Completion Report
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../archive/module-enable-disable-design/" class="md-nav__link">
<span class="md-ellipsis">
Module Enable/Disable
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#context-scope" class="md-nav__link">
<span class="md-ellipsis">
Context &amp; Scope
</span>
</a>
<nav class="md-nav" aria-label="Context &amp; Scope">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#module-documentation-map" class="md-nav__link">
<span class="md-ellipsis">
Module &amp; Documentation Map
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#best-practice-snapshot" class="md-nav__link">
<span class="md-ellipsis">
Best-Practice Snapshot
</span>
</a>
<nav class="md-nav" aria-label="Best-Practice Snapshot">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#non-negotiables-bake-into-every-prompt-or-pr" class="md-nav__link">
<span class="md-ellipsis">
Non-Negotiables (bake into every prompt or PR)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#validation-toolchain-flow" class="md-nav__link">
<span class="md-ellipsis">
Validation &amp; Toolchain Flow
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#design-ux-reminders" class="md-nav__link">
<span class="md-ellipsis">
Design &amp; UX Reminders
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#prompt-playbook" class="md-nav__link">
<span class="md-ellipsis">
Prompt Playbook
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#help-troubleshooting" class="md-nav__link">
<span class="md-ellipsis">
Help &amp; Troubleshooting
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#history" class="md-nav__link">
<span class="md-ellipsis">
History
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#todo-radar-keep-codex-aligned" class="md-nav__link">
<span class="md-ellipsis">
TODO Radar (keep Codex aligned)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#quick-reference-checklist-for-codex-runs" class="md-nav__link">
<span class="md-ellipsis">
Quick Reference Checklist for Codex Runs
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="secubox-codex-field-manual">SecuBox Codex Field Manual<a class="headerlink" href="#secubox-codex-field-manual" title="Permanent link">&para;</a></h1>
<p><strong>Version:</strong> 1.0.0<br />
<strong>Last Updated:</strong> 2025-12-28<br />
<strong>Status:</strong> Active</p>
<hr />
<h2 id="context-scope">Context &amp; Scope<a class="headerlink" href="#context-scope" title="Permanent link">&para;</a></h2>
<p>SecuBox bundles fifteen+ security and network dashboards for OpenWrt with a unified build/validation toolchain and CI that ships <code>.ipk</code>/<code>.apk</code> artifacts automatically (see <code>README.md</code> for the module catalogue and CI badges, <code>README.md:7-34</code>). The documentation set is intentionally layered—<code>DOCS/DOCUMENTATION-INDEX.md</code> routes newcomers, AI assistants, and maintainers to the right depth, so always start requests there before diving into large guides (<code>DOCS/DOCUMENTATION-INDEX.md:15-31</code>).</p>
<p>Use this file when you need to brief Codex (or any automation agent) quickly about SecuBox expectations: what standards are immutable, how to craft prompts, where to get help, which decisions shaped todays tree, and what TODOs should stay in sight during automation runs.</p>
<h3 id="module-documentation-map">Module &amp; Documentation Map<a class="headerlink" href="#module-documentation-map" title="Permanent link">&para;</a></h3>
<ul>
<li><code>README.md</code>: one-page overview, compatibility matrix, and “whats new” callouts (<code>README.md:7-34</code>).</li>
<li><code>DOCS/QUICK-START.md</code>: critical rules, design tokens, commands, and error playbooks (<code>DOCS/QUICK-START.md:9-195</code>).</li>
<li><code>DOCS/DEVELOPMENT-GUIDELINES.md</code>: deep dive into architecture, RPCD, ubus, CSS/JS conventions, and deployment (see summary in <code>DOCS/DOCUMENTATION-INDEX.md:68-82</code>).</li>
<li><code>DOCS/MODULE-IMPLEMENTATION-GUIDE.md</code> + <code>DOCS/FEATURE-REGENERATION-PROMPTS.md</code>: regeneration workflow plus ready-to-use prompts for all modules (<code>DOCS/DOCUMENTATION-INDEX.md:102-149</code>).</li>
<li><code>DOCS/CODE-TEMPLATES.md</code>: copy/paste-safe scaffolding for LuCI JS, RPCD scripts, and APIs (<code>DOCS/DOCUMENTATION-INDEX.md:153-159</code>).</li>
</ul>
<hr />
<h2 id="best-practice-snapshot">Best-Practice Snapshot<a class="headerlink" href="#best-practice-snapshot" title="Permanent link">&para;</a></h2>
<h3 id="non-negotiables-bake-into-every-prompt-or-pr">Non-Negotiables (bake into every prompt or PR)<a class="headerlink" href="#non-negotiables-bake-into-every-prompt-or-pr" title="Permanent link">&para;</a></h3>
<ul>
<li>RPCD filename <strong>must</strong> equal the ubus object (prevents <code>-32000 Object not found</code>, <code>DOCS/QUICK-START.md:11-18</code>).</li>
<li>Menu JSON <code>path</code> <strong>must</strong> mirror the view path (avoids 404s, <code>DOCS/QUICK-START.md:20-26</code>).</li>
<li>Permissions: RPCD 755, LuCI assets 644, otherwise RPCD wont execute or LuCI returns 403 (<code>DOCS/QUICK-START.md:28-37</code>).</li>
<li>Always run <code>./secubox-tools/validate-modules.sh</code> before opening PRs or tagging builds (reinforced in <code>README.md:18-23</code> and <code>DOCS/QUICK-START.md:122-134</code>).</li>
<li>Keep design tokens consistent: dark palette (<code>#0a0a0f</code> base, <code>#6366f1→#8b5cf6</code> gradients), Inter + JetBrains Mono fonts, <code>.sh-*</code>/<code>.sb-*</code> components, and responsive grid widths defined in the quick start (<code>DOCS/QUICK-START.md:74-114</code>).</li>
</ul>
<h3 id="validation-toolchain-flow">Validation &amp; Toolchain Flow<a class="headerlink" href="#validation-toolchain-flow" title="Permanent link">&para;</a></h3>
<ol>
<li><strong>Permissions Repair (local/remote):</strong> <code>./secubox-tools/fix-permissions.sh --local|--remote</code> for automated chmod sanity (<code>DOCS/QUICK-START.md:55-66, 125-127</code>).</li>
<li><strong>Full Validation:</strong> <code>./secubox-tools/validate-modules.sh</code> (runs seven structural checks including permission scan) (<code>DOCS/QUICK-START.md:122-134,185-189</code>).</li>
<li><strong>Module Builds:</strong> <code>./secubox-tools/local-build.sh build &lt;module&gt;</code> for quick smoke tests or <code>make package/&lt;module&gt;/compile V=s</code> inside SDK (<code>DOCS/QUICK-START.md:135-143</code>).</li>
<li><strong>Deploy/Fix:</strong> Copy to router via <code>scp</code>, normalize perms, flush <code>luci</code> caches, restart <code>rpcd</code>/<code>uhttpd</code> (<code>DOCS/QUICK-START.md:144-167</code>).</li>
<li><strong>Debug:</strong> Validate ubus objects, inspect LuCI resources, and tail <code>logread</code> immediately after deployment (<code>DOCS/QUICK-START.md:156-167</code>).</li>
</ol>
<h3 id="design-ux-reminders">Design &amp; UX Reminders<a class="headerlink" href="#design-ux-reminders" title="Permanent link">&para;</a></h3>
<ul>
<li>Stats tiles minimum 130px width, metrics 240px, detail cards 300px: encode these CSS grid rules to keep dashboards fluid on 720p+ viewports (<code>DOCS/QUICK-START.md:105-114</code>).</li>
<li>Buttons, tabs, and cards expose <code>.sh-</code> utility classes; prefer gradient borders and neon states over inline styles for maintainability (same section).</li>
<li>Align copy with README taxonomy (Core Control, Security &amp; Monitoring, Network Intelligence, etc.) so documentation and UI stay in sync (<code>README.md:37-152</code> excerpt).</li>
</ul>
<hr />
<h2 id="prompt-playbook">Prompt Playbook<a class="headerlink" href="#prompt-playbook" title="Permanent link">&para;</a></h2>
<p>When drafting Codex/LLM prompts, supply enough structure so the assistant can reuse existing patterns instead of inventing them. Reuse this outline:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>Context:
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>- Target module + file(s) + desired change.
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>- Any relevant excerpts from CODE-TEMPLATES or existing JS/RPCD files.
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a>Requirements:
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a>- Restate non-negotiables (RPCD naming, menu path, permissions, design tokens).
<a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a>- Mention validation commands Codex should run or assume.
<a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a>- Call out API endpoints, ubus objects, or metrics to surface.
<a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a>
<a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a>Deliverables:
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a>- Files to touch (path + rationale).
<a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a>- Expected tests/validations (e.g., run ./secubox-tools/validate-modules.sh).
<a id="__codelineno-0-13" name="__codelineno-0-13" href="#__codelineno-0-13"></a>- UX cues (colors, grid sizes, component classes) referencing QUICK-START.
<a id="__codelineno-0-14" name="__codelineno-0-14" href="#__codelineno-0-14"></a>
<a id="__codelineno-0-15" name="__codelineno-0-15" href="#__codelineno-0-15"></a>Guardrails:
<a id="__codelineno-0-16" name="__codelineno-0-16" href="#__codelineno-0-16"></a>- Note TODO items or documentation standards (version headers, cross-links, etc.).
<a id="__codelineno-0-17" name="__codelineno-0-17" href="#__codelineno-0-17"></a>- Remind Codex where to log changes (README, module changelog, etc.).
</code></pre></div>
<p>Pair the template with module-specific prompts from <code>DOCS/FEATURE-REGENERATION-PROMPTS.md</code> and the workflow from <code>DOCS/MODULE-IMPLEMENTATION-GUIDE.md</code> (<code>DOCS/DOCUMENTATION-INDEX.md:102-149</code>). That combination lets Codex inherit existing layout structures, RPCD shells, and API modules without brittle guesswork.</p>
<hr />
<h2 id="help-troubleshooting">Help &amp; Troubleshooting<a class="headerlink" href="#help-troubleshooting" title="Permanent link">&para;</a></h2>
<ul>
<li><strong>Pre-deploy Sanity:</strong> Run the overlay disk/permission SSH checks before copying files; they are scripted inside the quick start so you can paste directly into terminal sessions (<code>DOCS/QUICK-START.md:40-53</code>).</li>
<li><strong>Common Error Fixes:</strong> Keep the quick fixes near: HTTP 403 (chmod assets), “No space left” (purge <code>/tmp/*.ipk</code> and backups), ubus <code>-32000</code> (chmod 755 + ubus list). Automate via <code>secubox-tools</code> whenever possible (<code>DOCS/QUICK-START.md:55-70,171-180</code>).</li>
<li><strong>Design Drift:</strong> If CSS feels inconsistent, cross-check against the palette/fonts/components found in this manual and in the design section of the quick start (<code>DOCS/QUICK-START.md:74-114</code>).</li>
<li><strong>Need Examples?:</strong> Pull actual JS/RPCD snippets from <code>DOCS/CODE-TEMPLATES.md</code> or live modules under <code>luci-app-*</code> to keep generated code idiomatic (<code>DOCS/DOCUMENTATION-INDEX.md:153-159</code>).</li>
<li><strong>Still Blocked?:</strong> <code>DOCS/DEVELOPMENT-GUIDELINES.md</code> holds the long-form reasoning for every standard; cite relevant sections when escalating issues so maintainers see the source of truth quickly (<code>DOCS/DOCUMENTATION-INDEX.md:68-82</code>).</li>
</ul>
<hr />
<h2 id="history">History<a class="headerlink" href="#history" title="Permanent link">&para;</a></h2>
<ul>
<li><strong>2025-12-26 Full Dev Guides Released:</strong> README announces the arrival of the comprehensive dev guides set (README badge section, <code>README.md:7-16</code>).</li>
<li><strong>2025-12-27 Documentation Index v1.0.0:</strong> Central index formalized the document map and AI workflow branches (<code>DOCS/DOCUMENTATION-INDEX.md:1-31</code>).</li>
<li><strong>2025-12-28 Documentation Improvement Plan:</strong> <code>TODO-ANALYSE.md</code> generated to coordinate versioning, cross-links, and archival tasks (<code>TODO-ANALYSE.md:1-34,71-150</code>).</li>
<li><strong>2025-12-28 Codex Manual Drafted:</strong> This CODEX field manual formalizes how automation agents should operate going forward.</li>
</ul>
<hr />
<h2 id="todo-radar-keep-codex-aligned">TODO Radar (keep Codex aligned)<a class="headerlink" href="#todo-radar-keep-codex-aligned" title="Permanent link">&para;</a></h2>
<ol>
<li><strong>Standardize version headers &amp; dates</strong> ensure every <code>.md</code> shows <code>Version/Last Updated/Status</code> with consistent <code>YYYY-MM-DD</code> formatting; DOCUMENTATION-INDEX must describe the policy once updates land (<code>TODO-ANALYSE.md:24-68</code>).</li>
<li><strong>Add “See Also” cross-links</strong> wire QUICK-START, PERMISSIONS-GUIDE, VALIDATION-GUIDE, and other quick refs back to their parent guides and vice-versa so AI/users dont get orphaned instructions (<code>TODO-ANALYSE.md:71-116</code>).</li>
<li><strong>Archive historical docs</strong> create <code>docs/archive/</code>, move outdated references (COMPLETION_REPORT, MODULE-ENABLE-DISABLE-DESIGN, BUILD_ISSUES, etc.), and drop an archive README describing contents (<code>TODO-ANALYSE.md:120-153</code>).</li>
<li><strong>Future work (Monthly/Quarterly)</strong> new diagrams, TESTING/SECURITY/PERFORMANCE guides, automation for doc freshness, and i18n decisions are queued later in <code>TODO-ANALYSE.md</code>; mention them when prompts may impact scope or format downstream.</li>
</ol>
<p>Codex should treat the TODOs above as guardrails: if a task touches documentation, prefer solutions that inch us toward these goals (e.g., add version headers while editing a doc, or cross-link when touching quick references).</p>
<hr />
<h2 id="quick-reference-checklist-for-codex-runs">Quick Reference Checklist for Codex Runs<a class="headerlink" href="#quick-reference-checklist-for-codex-runs" title="Permanent link">&para;</a></h2>
<ul class="task-list">
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> Confirm the request references the right guide/template to minimize hallucinations (<code>DOCS/DOCUMENTATION-INDEX.md</code> paths).</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> Copy/paste the non-negotiables + validation flow into the prompt.</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> State which TODO radar items the change advances (or at least does not regress).</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> Cite commands/scripts to run post-change.</li>
<li class="task-list-item"><label class="task-list-control"><input type="checkbox" disabled/><span class="task-list-indicator"></span></label> Capture findings in PR/commit descriptions referencing this CODEX manual when relevant.</li>
</ul>
<p>Use this living manual as both a pre-flight briefing and a debrief log for automation work. Update it whenever the standards above evolve so every future Codex session starts with the correct mental model.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://github.com/gkerma/secubox-openwrt" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
</a>
<a href="https://secubox.cybermood.eu" target="_blank" rel="noopener" title="secubox.cybermood.eu" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M351.9 280H161c2.9 64.5 17.2 123.9 37.5 167.4 11.4 24.5 23.7 41.8 35.1 52.4 11.2 10.5 18.9 12.2 22.9 12.2s11.7-1.7 22.9-12.2c11.4-10.6 23.7-28 35.1-52.4 20.3-43.5 34.6-102.9 37.5-167.4zm-191-48h190.9c-2.8-64.5-17.1-123.9-37.4-167.4-11.4-24.4-23.7-41.8-35.1-52.4C268.1 1.7 260.4 0 256.4 0s-11.7 1.7-22.9 12.2c-11.4 10.6-23.7 28-35.1 52.4-20.3 43.5-34.6 102.9-37.5 167.4m-48 0c3.5-85.6 25.6-165.1 57.9-217.3C78.7 47.3 10.9 131.2 1.5 232zM1.5 280c9.4 100.8 77.2 184.7 169.3 217.3-32.3-52.2-54.4-131.7-57.9-217.3zm398.4 0c-3.5 85.6-25.6 165.1-57.9 217.3 92.1-32.7 159.9-116.5 169.3-217.3zm111.4-48C501.9 131.2 434.1 47.3 342 14.7c32.3 52.2 54.4 131.7 57.9 217.3z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.top", "search.suggest", "search.highlight", "content.code.copy", "content.code.annotate"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"provider": "mike"}}</script>
<script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
</body>
</html>