secubox-deb/packages
CyberMind-FR f9302df075 feat(billets): emoji hashtags, quick views, and feed resumes
Authors already typed #hashtags in their bodies (37 of the 46 billets on gk2
carry one), so tags are EXTRACTED from the body rather than added via a picker:
tagging costs the author nothing and applies retroactively.

- migration 0004: tag(slug,emoji,label) + billet_tag, indexed on tag_slug.
  Extracted into rows rather than re-parsed per request, so filtering hits an
  index instead of LIKE-scanning every body. slug is accent-folded + lowercased
  (#Réseau == #reseau); emoji is STORED so a later curation change never
  silently restyles an already-published billet.
- services/tags.py: curated map + extraction. The lookbehind keeps a URL anchor
  (page#anchor) from becoming a tag; unknown tags fall back to a neutral badge
  rather than being rejected. Map covers this box's real content (podcast/media)
  as well as the security/box vocabulary; genuinely ambiguous topics are left on
  the default rather than editorialised.
- quick views: ?tag=slug on / and /feed.json, plus /tags.json and
  /admin/api/tags for the chip bar. Uses EXISTS, not a JOIN, so keyset paging
  cannot duplicate a row per matching tag; the pager carries the active tag.
- feed resumes: long billets show a short excerpt + "Lire la suite"; short ones
  render whole. `is_long` is measured on the markdown-collapsed text, so a short
  billet padded with link syntax is not "resumed" into a copy of itself.
- feed.json gains `summary` + `tags` (both JSON Feed 1.1 standard) with the
  emoji in the spec-legal `_secubox` extension; optional keys are omitted, not
  nulled.
- GET /admin/api/billets: the authoring list. The public feed cannot serve it —
  its item id is a permalink URL (so edit/delete could not address a row, which
  is why they 404'd) and it hides drafts, which an authoring client must see.
- manage.py backfill-tags: idempotent; also re-applies the curated map to
  existing tags as an explicit operator step.

Verified on gk2: backfill tagged 37/46 billets; ?tag=podcast→37, jfk→4, nope→0;
a draft's tag correctly stays out of the public chip bar; delete cascades.

Co-Authored-By: Gerald KERMA <devel@cybermind.fr>
2026-07-17 10:35:24 +02:00
..
secubox-ad-guard release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-admin release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-aggregator
secubox-ai-gateway release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-ai-insights release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-annuaire release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-appstore release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-auth fix(auth): record client IP + user-agent on the MFA login paths 2026-07-17 10:35:07 +02:00
secubox-avatar release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-backup release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-billets feat(billets): emoji hashtags, quick views, and feed resumes 2026-07-17 10:35:24 +02:00
secubox-c3box release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-cdn release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-certs release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-cloner release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-config-advisor release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-console
secubox-cookies release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-core
secubox-crowdsec release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-cve-triage release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-cyberfeed release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-daemon/debian
secubox-defaults
secubox-device-intel feat(#817): Device Guardian consolidation — merge 5 device modules into secubox-nac (Project A) (#818) 2026-07-13 09:58:01 +02:00
secubox-dns release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-dns-guard release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-dns-provider release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-domoticz release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-dpi feat(dpi): /exfil serves cumulative R3 devices + engine liveness; webui regen on real engine 2026-07-16 10:12:32 +02:00
secubox-droplet fix(droplet): own /etc/secubox/droplet.toml as secubox (was root:root 0600) 2026-07-11 13:32:36 +02:00
secubox-egress
secubox-exposure release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-eye-remote release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-eye-square
secubox-fmrelay release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-frigate release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-full/debian
secubox-gitea release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-glances release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-gotosocial release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-grafana release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-haproxy release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-hardening release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-health-doctor
secubox-hexo release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-homeassistant release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-hub fix(billets): communiqué always-light + CSP-safe health-banner opt-out on public blog (ref #851) 2026-07-14 08:42:00 +02:00
secubox-identity release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-interceptor release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-iot-guard feat(#817): Device Guardian consolidation — merge 5 device modules into secubox-nac (Project A) (#818) 2026-07-13 09:58:01 +02:00
secubox-ipblock release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-jabber release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-jellyfin release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-jitsi release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-ksm release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-led-heartbeat
secubox-lite/debian
secubox-localai release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-localrecall release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-lyrion release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mac-guard feat(#817): Device Guardian consolidation — merge 5 device modules into secubox-nac (Project A) (#818) 2026-07-13 09:58:01 +02:00
secubox-macro feat(macro): auto-detect firewall table (secubox_filter|filter) via /etc/secubox/macro.conf — tor-exit works on gk2's inet filter too (closes #772) (ref #771) 2026-07-01 13:40:25 +02:00
secubox-magicmirror release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-maigret feat(maigret): stylized PDF report from raw lookup (ref #845) 2026-07-12 15:24:00 +02:00
secubox-mail fix(mail): /user/password writes the real dovecot passwd-file (admin reset was a no-op) 2026-07-16 12:00:41 +02:00
secubox-mail-lxc/debian
secubox-master-link
secubox-matrix release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mcp-server release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mediaflow release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mesh release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mesh-bt
secubox-meshname release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-metablogizer fix(metablogizer): WAF route gates publish (vhost advisory); portable safe tar-extract 2026-07-11 13:49:38 +02:00
secubox-metabolizer release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-metacatalog release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-metoblizer fix(metoblizer): install api + fix ExecStart (was crash-looping 4042x) 2026-07-10 15:08:24 +02:00
secubox-metrics release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mirror release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mitmproxy release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mmpm/debian
secubox-modem release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-mqtt release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-nac feat(#817): Device Guardian consolidation — merge 5 device modules into secubox-nac (Project A) (#818) 2026-07-13 09:58:01 +02:00
secubox-ndpid feat(ndpid): bridge dashboard to ndpiReader/dpi collector when nDPId DB is empty 2026-07-10 15:01:01 +02:00
secubox-netdata release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-netdiag release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-netifyd release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-netmodes release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-nettweak release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-network-anomaly feat(#817): Device Guardian consolidation — merge 5 device modules into secubox-nac (Project A) (#818) 2026-07-13 09:58:01 +02:00
secubox-newsbin release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-nextcloud fix(nextcloud): working status probe + cyan webui reskin 2026-07-17 05:00:37 +02:00
secubox-ollama release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-openclaw fix(openclaw): certSpotter fallback for CT lookup + whois registrable domain 2026-07-16 10:12:32 +02:00
secubox-ossec release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-p2p release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-peertube release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-photoprism release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-picobrew release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-podcaster feat(podcaster): 'Add from YouTube/URL' button — full mirror (podcaster + PeerTube + billets) (closes #857) 2026-07-14 11:41:11 +02:00
secubox-portal feat(portal): full in-browser TOTP flow in login.html (mfa + enrollment + backup codes) 2026-07-11 07:01:39 +02:00
secubox-proxypac build(proxypac): mark debian/rules executable (0755) 2026-07-11 14:44:39 +02:00
secubox-publish build(publish): changelog 2.0.1 — delegate provisioning to metablogizer wizard (#832) 2026-07-11 14:38:18 +02:00
secubox-qos release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-rbs-sensor
secubox-reality release(reality): 0.1.1 fleet skin + navbar 2026-07-09 15:08:40 +02:00
secubox-redroid release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-repo release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-reporter release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-rezapp release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-roadmap release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-routes release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-rtty release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-rustdesk release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-saas-relay release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-security-posture release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-sentinelle-gsm feat(webui): extend hybrid-dark overlay to remaining custom panels 2026-07-10 08:56:47 +02:00
secubox-simplex release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-smart-strip
secubox-smtp-relay release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-soc release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-soc-agent
secubox-soc-gateway
secubox-soc-web
secubox-spiderfoot feat(spiderfoot): expose UI at https://spiderfoot.gk2.secubox.in (root proxy) (ref #845) 2026-07-12 15:05:48 +02:00
secubox-streamforge release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-streamlit release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-system release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-system-hub
secubox-system-tuning
secubox-threat-analyst release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-threatmesh release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-threats release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-toolbox release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-toolbox-ng fix(waf): make sbxwaf auto-bans reach the firewall (cscli bridge + dedup) 2026-07-16 16:28:34 +02:00
secubox-tor release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-torrent release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-traffic release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-turn release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-ui-manager
secubox-users feat(auth): webui-toggleable admin-TOTP requirement (default off) + per-user 2FA reset 2026-07-11 06:52:56 +02:00
secubox-vault release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-vhost feat(vhost): remove the Actions tab from the webui (ref #858) 2026-07-15 09:01:40 +02:00
secubox-vm release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-voip release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-vortex-dns release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-vortex-firewall release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-waf feat(waf): rework sbxwaf dashboard to cyan hybrid-skin look 2026-07-16 15:42:15 +02:00
secubox-waf-ng
secubox-watchdog release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-wazuh release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-webext
secubox-webmail
secubox-webmail-lxc/debian
secubox-webradio release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-wireguard release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-yacy release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-yggdrasil release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-zigbee release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
secubox-zkp release(webui): bump 127 arch:all packages for hybrid-dark reskin bake-in 2026-07-10 09:07:42 +02:00
zkp-hamiltonian