diff --git a/.codex/README.md b/.codex/README.md new file mode 100644 index 00000000..d247566f --- /dev/null +++ b/.codex/README.md @@ -0,0 +1,24 @@ +# Codex Configuration for SecuBox OpenWrt + +This `.codex/` directory captures the working agreements for Codex when editing the SecuBox OpenWrt feed. Every section is sourced from the local documentation (`README.md`, `DEVELOPMENT-GUIDELINES.md`, `CLAUDE.md`, `QUICK-START.md`, `DOCUMENTATION-INDEX.md`, `VALIDATION-GUIDE.md`, `PERMISSIONS-GUIDE.md`, `CODE-TEMPLATES.md`, `MODULE-IMPLEMENTATION-GUIDE.md`, etc.) plus the `.claude/` guidance. Follow these notes before touching any LuCI module, RPC backend, CSS, or deployment script. + +Use these files as checkpoints: +- `context.md`: what the suite is and how the repository is organized +- `requirements.md`: functional and non-functional expectations +- `architecture.md`: how data flows between LuCI views, RPCD, and system services +- `conventions.md`: naming, packaging, ACL, CSS, and JavaScript standards +- `workflows.md`: validated procedures for setup, build, deploy, release, and debugging +- `rules.md`: enforceable guardrails Codex must respect before shipping any change +- `prompting.md`: templates for requesting contributions from Codex or other AIs +- `claudeia-notes.md`: how the existing Claude guidance maps onto Codex rules + +Always cross-check instructions here with the source docs referenced above. When documentation conflicts, prioritize: repository source files → `.claude` rules → markdown guides. + +## First 5 Commands to Run in this Repo +1. `./secubox-tools/fix-permissions.sh --local` — normalize RPCD (755) and web assets (644) before editing +2. `./secubox-tools/validate-modules.sh` — run the 7 critical checks (RPCD names, menu paths, JSON, permissions, etc.) +3. `./secubox-tools/install-git-hooks.sh` — installs the pre-push validator so mistakes are caught automatically +4. `./secubox-tools/local-build.sh validate` — replicates the CI validation locally using the OpenWrt SDK cache +5. `./secubox-tools/local-build.sh build luci-app-` — builds the module you are changing (use the exact package name) + +Refer back to this README whenever you onboard a new contributor or need to explain how `.codex/` should be used in the SecuBox OpenWrt repository. diff --git a/.codex/architecture.md b/.codex/architecture.md new file mode 100644 index 00000000..37e4c1a8 --- /dev/null +++ b/.codex/architecture.md @@ -0,0 +1,37 @@ +# Architecture + +## High-Level View +The SecuBox suite is a collection of LuCI packages that all share the same pattern: + +1. **LuCI Views** (`htdocs/luci-static/resources/view//*.js`) build the UI using `view.extend`, `ui`, and DOM helpers. Views import per-module API helpers and shared CSS (`system-hub/common.css`, plus module-specific `.css`). +2. **API Helpers** (`htdocs/luci-static/resources//api.js`) declare ubus calls with `rpc.declare` and export a `baseclass.extend` instance that exposes typed methods (`getStatus`, `listServices`, etc.). +3. **RPCD Backend** (`root/usr/libexec/rpcd/luci.`) receives `list`/`call` requests from ubus, executes shell or UCI logic, and emits JSON via `json_*` helpers. +4. **Navigation & ACL** (`root/usr/share/luci/menu.d/*.json`, `root/usr/share/rpcd/acl.d/*.json`) describe where the module appears in LuCI and who may access each ubus method. +5. **Deployment Tooling** (`deploy-module-template.sh`, `secubox-tools/*.sh`) automates copying files to routers, backing up, fixing permissions, clearing caches, and restarting `rpcd`/`uhttpd`. + +System Hub and SecuBox provide “umbrella” tabs (`admin/secubox/...`) but each module is otherwise isolated and should not reach into another module's files unless explicitly documented (e.g., System Hub reading SecuBox theme preferences via `luci.secubox get_theme`). + +## Data Flow +1. User opens `admin/secubox/.../` in LuCI. +2. Menu JSON loads `luci-static/resources/view//.js`. +3. The view's `load()` issues `Promise.all([...API calls...])` to `api.js` helpers. +4. `api.js` uses `rpc.declare({object: 'luci.', method: ...})` to talk to ubus. +5. ubus dispatches to `/usr/libexec/rpcd/luci.`, which handles `list`/`call` requests, touches UCI/system services, and replies JSON. +6. View `render()` updates DOM components, sets up `poll.add` for periodic refresh, and attaches event handlers that call more RPC actions. +7. Deploy scripts copy updated JS/CSS/RPC/menu/ACL to the router, fix permissions, and restart `rpcd`/`uhttpd` to expose the changes. + +## Boundaries & Dependency Rules +- Modules must keep JS, CSS, RPC, menu, and ACL files self-contained under their own directory; shared assets go in `system-hub/common.css` or `templates/`. +- Do not import code from another module's `htdocs/.../view` folder. Shared logic should be duplicated intentionally or moved into a common helper under `system-hub/` or a new shared location documented in `DEVELOPMENT-GUIDELINES.md`. +- Any ubus interaction between modules must be explicitly documented (e.g., System Hub calling `luci.secubox get_theme`). Otherwise, treat every `luci.` namespace as private. +- Keep RPCD scripts shell-only unless the repo adds other interpreters; they must rely on standard OpenWrt utilities (`ubus`, `uci`, `/lib/functions.sh`, `/usr/share/libubox/jshn.sh`). + +## Adding a New Module – Checklist +1. **Scaffold**: Copy `templates/luci-app-template` or an existing module directory and rename files (`PKG_NAME`, `LUCI_TITLE`, etc.). +2. **Implement RPCD**: Create `/root/usr/libexec/rpcd/luci.` with `list`/`call`, JSON helpers, and method coverage for every UI action. +3. **Add API Helper**: In `htdocs/luci-static/resources//api.js` extend `baseclass` and declare each ubus call. +4. **Build Views**: Under `htdocs/luci-static/resources/view//` add `overview.js` plus additional tabs as needed. Include CSS via `` to `system-hub/common.css` and module-specific files. Follow design system rules. +5. **Wire Menu/ACL**: Create `root/usr/share/luci/menu.d/luci-app-.json` with the correct `admin/secubox/...` path and `firstchild` entry; create `root/usr/share/rpcd/acl.d/luci-app-.json` enumerating read/write ubus methods. +6. **Docs**: Write `luci-app-/README.md` describing purpose, features, install commands, and troubleshooting steps. +7. **Permissions**: Update `Makefile` with `PKG_FILE_MODES:=/usr/libexec/rpcd/luci.:755` (and any other executables). Confirm CSS/JS remain 644. +8. **Validation & Build**: Run `./secubox-tools/fix-permissions.sh --local`, `./secubox-tools/validate-module-generation.sh luci-app-`, and `./secubox-tools/local-build.sh build luci-app-` before submitting. diff --git a/.codex/claudeia-notes.md b/.codex/claudeia-notes.md new file mode 100644 index 00000000..ff4be1cf --- /dev/null +++ b/.codex/claudeia-notes.md @@ -0,0 +1,23 @@ +# Claude Guidance Alignment + +## Key Directives from `.claude/` and `CLAUDE.md` +1. **Read the docs first** – Always consult `DEVELOPMENT-GUIDELINES.md`, `QUICK-START.md`, and `CLAUDE.md` before coding. `.claude/README.md` reiterates this and links every critical guide. +2. **Naming & paths** – RPCD filename ≡ ubus object string (with `luci.` prefix) and menu `path` ≡ view path. Violations lead to `-32000` RPC errors or HTTP 404s. +3. **Permissions** – RPCD scripts/scripts under `/usr/libexec` need 755, web assets 644. Use `PKG_FILE_MODES` in Makefiles plus `./secubox-tools/fix-permissions.sh --local/--remote`. +4. **Validation** – Mandatory: `./secubox-tools/validate-modules.sh` (7 checks). For new modules use `validate-module-generation.sh`, and install pre-push hooks. +5. **Design system** – Use `system-hub/common.css` variables (`--sh-*`), gradients, `.sh-*` classes, Inter/JetBrains fonts, and dark-mode selectors. No hardcoded colors or fonts. +6. **Workflow** – Deploy via `deploy-module-template.sh` (with ROUTER env), fix perms, clear LuCI caches, restart `rpcd/uhttpd`. Build via `local-build.sh` or `make package/...`. +7. **Prompting** – `.claude/module-implementation-guide.md` provides a template for AI prompts, expecting all files (Makefile, README, RPCD, API, views, menu, ACL) plus validation outputs. + +## Mapping to Codex Rules +- The Codex prime directive (protect RPC naming, menu paths, permissions, design system, validation) mirrors `.claude` rules; no conflicts. +- Our `workflows.md` codifies the same commands Claude expects (fix perms, validate, local-build, deploy scripts). +- The `prompting.md` templates derive from `.claude/module-implementation-guide.md` so Codex and Claude share the same deliverable expectations. +- Design constraints (dark mode, gradients, fonts) from `.claude/README.md` and `DEVELOPMENT-GUIDELINES.md` appear in `conventions.md` and `requirements.md`. + +## Conflict Resolution +If `.claude` guidance ever diverges from repo truth, follow this priority chain (per instructions): +1. Source code & current repo configuration (Makefiles, scripts, actual files) +2. `.claude/` rules and `CLAUDE.md` +3. Markdown guides (`DEVELOPMENT-GUIDELINES.md`, `CODE-TEMPLATES.md`, etc.) +Flag any contradictions as TODOs in the relevant `.codex` file when discovered. diff --git a/.codex/context.md b/.codex/context.md new file mode 100644 index 00000000..8f21de36 --- /dev/null +++ b/.codex/context.md @@ -0,0 +1,55 @@ +# SecuBox Context + +## What SecuBox OpenWrt Suite Is +SecuBox is a suite of LuCI applications that ship advanced security, monitoring, and automation dashboards for OpenWrt routers. Each `luci-app-*` package combines LuCI JavaScript views, RPCD backends, UCI integration, ACL policies, and shared CSS built on the SecuBox design system (dark-first palette, Inter + JetBrains Mono). GitHub Actions builds the packages for every supported architecture (`x86`, `ARM`, `MIPS`) and the repo also carries tooling for validation, repair, deployment, and firmware image creation. + +## Repository Layout +- `.claude/` – authoritative assistant guidance, prompts, and settings +- `.github/workflows/` – CI definitions (package build matrix, validation, firmware images) +- `luci-app-*/` – one directory per LuCI module (Makefile, README, `htdocs/`, `root/`) +- `secubox-tools/` – validation/build/deploy helpers (`local-build.sh`, `validate-modules.sh`, etc.) +- `templates/` – scaffolding for new LuCI packages +- Root docs: `README.md`, `QUICK-START.md`, `DEVELOPMENT-GUIDELINES.md`, `CLAUDE.md`, `DOCUMENTATION-INDEX.md`, `CODE-TEMPLATES.md`, `FEATURE-REGENERATION-PROMPTS.md`, `MODULE_STATUS.md`, `PERMISSIONS-GUIDE.md`, `VALIDATION-GUIDE.md`, etc. +- Deploy scripts: `deploy-module-template.sh`, `deploy-*.sh` (system hub, secubox, beta releases, etc.) +- Test fixtures: `test-direct.js`, `test-modules-simple.js` + +## Module Map (Purpose & Entry Points) +Each module follows the same structure: `Makefile`, module-specific README, JavaScript views under `htdocs/luci-static/resources/view//`, API helpers under `htdocs/luci-static/resources//api.js`, CSS in the same folder, RPCD backend in `root/usr/libexec/rpcd/luci.`, menu JSON under `root/usr/share/luci/menu.d/`, and ACL JSON under `root/usr/share/rpcd/acl.d/`. + +| Module | Purpose | Primary Views (JS) | +|--------|---------|--------------------| +| `luci-app-secubox` | Central SecuBox hub (module launcher, dashboard, dev status) | `secubox/dashboard.js`, `modules.js`, `modules-minimal.js`, `dev-status.js`, `alerts.js`, `monitoring.js`, `settings.js` +| `luci-app-system-hub` | System control center (health, services, diagnostics, remote) | `system-hub/overview.js`, `health.js`, `services.js`, `components.js`, `logs.js`, `backup.js`, `diagnostics.js`, `remote.js`, `settings.js`, `dev-status.js` +| `luci-app-crowdsec-dashboard` | CrowdSec decision, alerts, bouncer management | `crowdsec-dashboard/overview.js`, `alerts.js`, `decisions.js`, `bouncers.js`, `metrics.js`, `settings.js` +| `luci-app-netdata-dashboard` | Netdata monitoring integration | `netdata-dashboard/dashboard.js`, `system.js`, `network.js`, `processes.js`, `realtime.js`, `settings.js` +| `luci-app-netifyd-dashboard` | DPI / application intelligence | `netifyd-dashboard/overview.js`, `applications.js`, `devices.js`, `flows.js`, `risks.js`, `talkers.js`, `settings.js` +| `luci-app-network-modes` | Switch router/AP/bridge/sniffer modes | `network-modes/overview.js`, `wizard.js`, `sniffer.js`, `accesspoint.js`, `relay.js`, `router.js`, `settings.js` +| `luci-app-wireguard-dashboard` | WireGuard VPN monitoring/config | `wireguard-dashboard/overview.js`, `peers.js`, `traffic.js`, `config.js`, `settings.js`, `qrcodes.js` +| `luci-app-client-guardian` | NAC + captive portal + parental controls | `client-guardian/overview.js`, `clients.js`, `zones.js`, `portal.js`, `captive.js`, `alerts.js`, `parental.js`, `settings.js`, `logs.js` +| `luci-app-auth-guardian` | Authentication/voucher/OAuth portal | `auth-guardian/overview.js`, `sessions.js`, `vouchers.js`, `oauth.js`, `splash.js`, `bypass.js` +| `luci-app-bandwidth-manager` | QoS, quotas, priority classes | `bandwidth-manager/overview.js`, `classes.js`, `rules.js`, `schedules.js`, `media.js`, `clients.js`, `usage.js`, `quotas.js`, `settings.js` +| `luci-app-media-flow` | Streaming/media traffic analytics | `media-flow/dashboard.js`, `services.js`, `clients.js`, `history.js`, `alerts.js` +| `luci-app-cdn-cache` | Local CDN cache policies & stats | `cdn-cache/overview.js`, `policies.js`, `cache.js`, `statistics.js`, `maintenance.js`, `settings.js` +| `luci-app-vhost-manager` | Virtual hosts & SSL orchestration | `vhost-manager/overview.js`, `vhosts.js`, `internal.js`, `redirects.js`, `ssl.js`, `certificates.js`, `logs.js` +| `luci-app-traffic-shaper` | Advanced traffic shaping presets | `traffic-shaper/overview.js`, `classes.js`, `rules.js`, `stats.js`, `presets.js` +| `luci-app-ksm-manager` | Secure key/certificate management | `ksm-manager/overview.js`, `keys.js`, `secrets.js`, `certificates.js`, `ssh.js`, `hsm.js`, `audit.js`, `settings.js` + +(Modules not listed explicitly above share the same structure; inspect each `luci-app-*/htdocs/luci-static/resources/view//` directory for the definitive entrypoints.) + +## Stack & Integration Points +- **Frontend**: LuCI JavaScript views (`view.extend`) + SecuBox design system CSS. Every view imports the per-module `api.js` module for ubus calls and includes shared styles like `system-hub/common.css`. +- **Backend**: RPCD shell scripts under `root/usr/libexec/rpcd/luci.` expose ubus methods (`status`, `get_*`, `set_*`, etc.). Modules often also ship helper scripts under `/usr/libexec/secubox/` and UCI defaults under `root/etc/uci-defaults/`. +- **UBus / RPC**: JavaScript uses `rpc.declare` with `object: 'luci.'`. RPCD `list` and `call` cases must mirror these names. +- **Menu/ACL**: JSON files in `root/usr/share/luci/menu.d/` and `root/usr/share/rpcd/acl.d/` keep navigation and permissions consistent with the views and RPCD backend. +- **Packaging**: OpenWrt LuCI package Makefiles include `luci.mk`, define `PKG_FILE_MODES` for executable scripts (typically RPCD 755), and mark packages as `LUCI_PKGARCH:=all` because they are script-only. + +## Glossary +- **LuCI** – OpenWrt web interface framework (Lua backend + JS frontend) +- **RPCD** – Daemon providing ubus RPC endpoints; modules drop scripts in `/usr/libexec/rpcd/` +- **ubus** – OpenWrt message bus used for remote procedure calls +- **UCI** – Unified Configuration Interface (files in `/etc/config/`) +- **ACL** – RPCD permission JSON files in `/usr/share/rpcd/acl.d/` +- **PKG_FILE_MODES** – Makefile variable forcing specific permissions for installed files +- **SecuBox Design System** – Shared CSS variables (`--sh-*`) and components defined in `system-hub/common.css` +- **Validation suite** – `./secubox-tools/validate-modules.sh`, `validate-module-generation.sh`, `pre-push-validation.sh` +- **Deploy script** – `deploy-module-template.sh` (backup, copy JS/CSS/RPCD/menu/ACL, fix perms, restart services) diff --git a/.codex/conventions.md b/.codex/conventions.md new file mode 100644 index 00000000..6f1cf80c --- /dev/null +++ b/.codex/conventions.md @@ -0,0 +1,46 @@ +# Conventions + +## OpenWrt Packaging +- Every `luci-app-*` Makefile includes `$(TOPDIR)/rules.mk` and `$(TOPDIR)/feeds/luci/luci.mk`, sets `PKG_NAME`, `PKG_VERSION`, `PKG_RELEASE`, `PKG_LICENSE`, `PKG_MAINTAINER`, `LUCI_TITLE`, `LUCI_DESCRIPTION`, `LUCI_DEPENDS`, and `LUCI_PKGARCH:=all`. +- Use `PKG_FILE_MODES` to mark executables, e.g. `PKG_FILE_MODES:=/usr/libexec/rpcd/luci.system-hub:755`. CSS/JS/Menu/ACL files inherit 644 automatically—never mark them executable. +- Structure: `htdocs/luci-static/resources/view//*.js`, `htdocs/luci-static/resources//api.js` + CSS, `root/usr/libexec/rpcd/luci.`, `root/usr/share/luci/menu.d/luci-app-.json`, `root/usr/share/rpcd/acl.d/luci-app-.json`, optional `/etc/config/` and UCI defaults. +- Run `./secubox-tools/local-build.sh build luci-app-` or `make package/luci-app-/compile V=s` before pushing. + +## LuCI JavaScript & CSS +- Always start JS files with `'use strict';` and use `return view.extend({ ... })`. API modules must `return baseclass.extend({ ... })`. +- Import dependencies with `'require ...'` statements (`view`, `form`, `ui`, `rpc`, `system-hub/api as API`, etc.). +- Use `Promise.all` inside `load()` and update DOM in `render()`. Register periodic refresh with `poll.add` for live data. +- Styling: link to `system-hub/common.css` + module CSS. Use `.sh-*` classes, gradient headers, `.sh-stats-grid`, `.sh-card`, `.sh-btn-*`, `.sh-filter-tab`, etc. Always support `[data-theme="dark"]` selectors. +- Component patterns: page header with `.sh-page-title` gradient, stats badges (min 130px, JetBrains Mono values), cards with 3px top border, sticky nav/filter tabs. +- No hardcoded colors/gradients: reference `var(--sh-*)`. Typography: Inter for text, JetBrains Mono for numeric values. + +## RPC/ubus Backends +- Script filename **must** match ubus object (`/usr/libexec/rpcd/luci.`). The ubus object string in JS, ACL, and CLI (`ubus call`) must use the same dotted name. +- RPCD scripts shell template: `#!/bin/sh`, `. /lib/functions.sh`, `. /usr/share/libubox/jshn.sh`, `case "$1" in list|call ) ... esac`. `list` advertises each method; `call` routes to handler functions, returning JSON via `json_init/json_add_*`. +- Methods should validate input parameters, sanitize user data, interact with UCI/CLI commands safely, and return success/error payloads with clear keys. + +## ACLs & Menu Files +- Menu JSON lives in `root/usr/share/luci/menu.d/` and must align with view files: `"path": "/"` referencing `htdocs/luci-static/resources/view//.js`. +- Provide a `"firstchild"` entry for the module root under `admin/secubox/...`, then `"view"` entries per tab with `order` values. +- ACL JSON in `root/usr/share/rpcd/acl.d/` should grant read (typically `status`, `get_*`, `list_*`) and write (`set_*`, `apply`, `service_action`) methods separately. Include any UCI sections if config files exist. +- Least privilege: never expose shell commands via ubus without validation, and never add ubus methods to ACLs unless needed by the UI. + +## Logging & Debugging +- Use `ui.addNotification` in JS to display success/error states. For RPC backends, write diagnostics to syslog with `logger` as needed. +- Common field debugging: `ubus list | grep luci.`, `ubus call luci. status`, `logread | grep -i `. +- To inspect remote files: `ssh root@router 'ls -la /www/luci-static/resources/view//'` and `wget -qO- http://router/luci-static/resources//api.js`. +- Automated scripts: `./secubox-tools/secubox-debug.sh luci-app-`, `./secubox-tools/secubox-repair.sh`, `./secubox-tools/fix-permissions.sh --remote root@`. + +## Testing & Validation +- Always run `./secubox-tools/fix-permissions.sh --local` followed by `./secubox-tools/validate-modules.sh` (7 checks) before committing. +- For new modules or major changes, run `./secubox-tools/validate-module-generation.sh luci-app-` and `./secubox-tools/local-build.sh full`. +- Install git hooks via `./secubox-tools/install-git-hooks.sh` so `pre-push-validation.sh` runs automatically. +- On devices: after deploying, run `ubus list`, `ubus call luci. status`, `logread | grep -i error`, ensure LuCI tab loads, and rerun `./secubox-tools/fix-permissions.sh --remote`. + +## Anti-Patterns (Do Not Do) +- ❌ Creating RPCD scripts without the `luci.` prefix or mismatching JS/ACL names (causes `-32000` errors). +- ❌ Hardcoding colors/fonts, or ignoring `[data-theme="dark"]` (breaks design system). +- ❌ Adding files without updating `menu.d`/`acl.d`, or leaving stale menu paths (causes HTTP 404 / unauthorized tabs). +- ❌ Shipping CSS/JS with executable permissions (403 errors) or RPCD scripts without 755 (permission denied). +- ❌ Bypassing validation/deploy scripts (risk of missing dependencies, wrong permissions, or no backups). +- ❌ Calling other modules’ ubus endpoints without documentation; share data through defined APIs only. diff --git a/.codex/prompting.md b/.codex/prompting.md new file mode 100644 index 00000000..98755f6a --- /dev/null +++ b/.codex/prompting.md @@ -0,0 +1,94 @@ +# Prompting Templates +Use these templates when asking Codex (or any assistant) to perform work in this repository. Fill in the placeholders and include the validation commands listed so the change respects SecuBox standards. + +## 1. Add a New LuCI Module +``` +Goal: Create luci-app- for . +Features: +1. ... +2. ... +Backend service(s): ... (CLI commands/paths) +UI requirements: tabs/views + metrics/cards needed. +Dependencies: (packages, daemons, config files) +Deliverables: +- Makefile (PKG_NAME, deps, PKG_FILE_MODES) +- README.md (install, usage, troubleshooting) +- htdocs: view//*.js, /api.js + CSS +- root/usr/libexec/rpcd/luci. +- root/usr/share/luci/menu.d/luci-app-.json +- root/usr/share/rpcd/acl.d/luci-app-.json +Tests: +- ./secubox-tools/fix-permissions.sh --local +- ./secubox-tools/validate-module-generation.sh luci-app- +- ./secubox-tools/local-build.sh build luci-app- +``` + +## 2. Add a Dashboard Widget to an Existing Module +``` +Module/view to update: luci-app- (view//.js) +Widget purpose: (metrics, chart, status) +Data source: RPC method(s) or static content +Design requirements: (sh-card, sh-stats-grid, icons, auto-refresh interval) +Also update: CSS file? API helper? README section? +Validation: +- ./secubox-tools/validate-modules.sh +- Manual test steps (open admin/secubox/.../, confirm widget renders) +``` + +## 3. Add a New ubus Method + LuCI Client +``` +Module: luci-app- +Method name: +Parameters: {...} +Backend behavior: (what RPCD does, commands run, JSON shape) +UI hook: (button/form/action invoking the method) +Files to touch: +- htdocs/...//api.js (rpc.declare) +- htdocs/...//.js (UI wiring) +- root/usr/libexec/rpcd/luci. (implement method) +- root/usr/share/rpcd/acl.d/luci-app-.json (permissions) +Validation/tests: +- ubus call luci. '{"..."}' +- ./secubox-tools/validate-module-generation.sh luci-app- +``` + +## 4. Change ACL / Permissions Safely +``` +Module: luci-app- +Reason for ACL change: (new method, tightened access) +New methods to expose: [list] +Read vs write access requirements: +Files to update: +- root/usr/share/rpcd/acl.d/luci-app-.json +- Any README or docs referencing permissions +Tests: +- jsonlint root/usr/share/rpcd/acl.d/luci-app-.json +- ./secubox-tools/validate-modules.sh (ensures ACL covers RPC methods) +``` + +## 5. Fix Packaging / Makefile Issues +``` +Module: luci-app- +Problem: (missing PKG_FILE_MODES, wrong deps, version bump) +Required updates: +- Makefile fields (PKG_VERSION, PKG_RELEASE, LUCI_DEPENDS, PKG_FILE_MODES) +- Add/remove files from install sections? +Validation: +- ./secubox-tools/secubox-repair.sh (optional) +- ./secubox-tools/local-build.sh build luci-app- +- ./secubox-tools/validate-modules.sh +``` + +## 6. Improve Deploy Scripts +``` +Script to change: deploy-module-template.sh / deploy-.sh / secubox-tools/