feat: merge attacks into PineAP menu; auto channel; recon fixes; richer reports

- Rail: Attacks tab removed; PineAP becomes a grouped menu (Evil WPA /
  Evil Open / Evil Enterprise / Impersonation / Clients / Filtering);
  old #/attacks* hashes redirect to their PineAP equivalents.
- PineAP tabs gain Evil Enterprise; stock Open AP / Evil WPA / Enterprise
  pages replaced by the verified one-click launchers (status, capture,
  export, deauth, playbooks).
- Channel selects gain an Auto option: deploy resolves the target SSID's
  last-seen channel from recon.db (verified unit-tested end to end).
- Harness: pi.dev prompt section removed; Copy Token inline; robot icon.
- Recon: compare checkboxes no longer hide the AP list (multi-select
  stays visible, rows highlighted, clients table no longer suppressed);
  Previous Scans buttons moved above the dropdown with a Delete All;
  encryption chips + buckets now distinguish WPA2/WPA3 PSK vs Enterprise
  (AKM suites decoded from recon bitfield bits 32-47); scan JSON carries
  GPS when a fix exists; Reports tab shows a GPS column.
- fix: restore top-level EVIL_ENC definition lost in the repo (deployed
  build had it; repo would have thrown at init).
This commit is contained in:
2026-08-18 22:35:51 -05:00
parent 72f6a68897
commit e93359fb69
8 changed files with 375 additions and 572 deletions
@@ -143,6 +143,12 @@ body {
align-items: center; justify-content: center; margin-right: 14px; flex: none;
}
.entry-icon svg { width: 24px; height: 24px; display: block; }
#rail .entry.sub {
height: 36px; padding-left: 34px; font-size: 13px;
}
#rail .entry.sub .entry-icon { width: 18px; height: 18px; margin-right: 10px; }
#rail .entry.sub .entry-icon svg { width: 18px; height: 18px; }
#rail.open .entry.sub .entry-text { font-size: 12px; }
#topbar .btn.ghost { color: #fff; border-color: #fff; }
.entry-text { white-space: nowrap; opacity: 0; transition: opacity .2s; }
#rail.open .entry-text { opacity: 1; }
@@ -335,6 +341,9 @@ html.dark .recon-scan-status.warn { color: #ffb74d; }
.recon-paginator .icon-btn svg { width: 18px; height: 18px; }
.recon-row-selected td { background: #eaeaea; }
html.dark .recon-row-selected td { background: #565656; }
.recon-row-compare td { background: rgba(25, 118, 210, .08); }
html.dark .recon-row-compare td { background: rgba(25, 118, 210, .18); }
.recon-gps-cell { font-variant-numeric: tabular-nums; }
.recon-settings-sidebar {
position: fixed; top: 64px; right: 0; bottom: 0; width: 270px; z-index: 50;
background: var(--surface); box-shadow: -2px 0 6px rgba(0,0,0,.24); padding: 16px;