Commit graph

  • a7580ea759
    deploy/tests: assert both hardening drop-ins allow x86 syscalls mwiegand 2026-05-15 20:35:18 +0200
  • e28d4fad8c
    l4d2web/csp: allow Steam avatar CDN in img-src mwiegand 2026-05-15 20:23:29 +0200
  • b13d164931
    spec(uv-workspace): handoff for the venv-chain → uv workspace migration mwiegand 2026-05-15 20:16:38 +0200
  • 55b013833b
    deploy/hardening: allow x86 syscalls on web drop-in (steamcmd is 32-bit) mwiegand 2026-05-15 20:14:26 +0200
  • 450f9f1591
    deploy/docs+cleanup: describe symlink model; drop stale scripts/ tracked paths mwiegand 2026-05-15 19:48:59 +0200
  • 2834ad4911
    deploy: move scripts/{libexec,sbin}/ into deploy/scripts/ mwiegand 2026-05-15 19:38:42 +0200
  • 55d5ab4017
    plan(deployment-responsibility): mark Task 3 done mwiegand 2026-05-15 19:30:35 +0200
  • 2c4bf1a27f
    deploy/tests: add visudo syntax test for the sudoers drop-in mwiegand 2026-05-15 19:28:45 +0200
  • 3703749252
    deploy/hardening: drop ProcSubset=pid from the server drop-in (regression fix) mwiegand 2026-05-15 19:24:34 +0200
  • e9c172a619
    deploy: extract hardening into drop-in files alongside the units mwiegand 2026-05-15 19:16:59 +0200
  • 949f1bae78
    deploy/sysctl: absorb kernel.yama.ptrace_scope into the drop-in mwiegand 2026-05-15 19:00:35 +0200
  • 672fd9660b
    plan(deployment-responsibility): five-task migration with sysctl canary mwiegand 2026-05-15 18:57:45 +0200
  • ddf97b3a05
    spec(deployment-responsibility): mark handoff resolved by the design doc mwiegand 2026-05-15 18:51:12 +0200
  • c446f6c8eb
    spec(deployment-responsibility): design — symlink hardening drop-ins, sudoers, sysctl, helpers mwiegand 2026-05-15 18:48:13 +0200
  • 434ee20339
    refactor(deploy): venv + steam now under /var/lib/left4me mwiegand 2026-05-15 17:56:32 +0200
  • ff2b5c4c5a
    spec(noneditable-install): handoff for the install refactor prereq mwiegand 2026-05-15 16:53:19 +0200
  • 6cf4517a88
    fix(deploy/files): drop ProcSubset=pid from web reference unit mwiegand 2026-05-15 16:14:40 +0200
  • 15c620f95c
    spec(deployment-responsibility): handoff for brainstorming the deploy split mwiegand 2026-05-15 15:56:38 +0200
  • 8971b23617
    refactor(sandbox): collapse l4d2-sandbox user into left4me mwiegand 2026-05-15 15:50:57 +0200
  • 146cb01450
    plan(uid-collapse): drop l4d2-sandbox user; handoff to next session mwiegand 2026-05-15 15:39:51 +0200
  • f5f8db84ef
    spec(session-handoff): hardening refactor landed and verified on left4.me mwiegand 2026-05-15 15:17:06 +0200
  • f615d0de75
    spec(user-uid-split): mark superseded by the hardening refactor mwiegand 2026-05-15 14:59:13 +0200
  • 37309ba399
    spec(hardening-test-plan): fix four bugs surfaced by executor mwiegand 2026-05-15 14:58:46 +0200
  • 8e678b6765
    deploy/files: annotate reference units with per-directive hardening comments mwiegand 2026-05-15 14:54:10 +0200
  • 7c64910c90
    spec(hardening-refactor): resolve emitter open items mwiegand 2026-05-15 14:39:11 +0200
  • b1293f9952
    plan(hardening-refactor): implementation plan against the proven composition mwiegand 2026-05-15 14:25:25 +0200
  • 81dc29a9c3
    spec(hardening-refactor): revise design — inline-in-reactor, defer drop-in reshape mwiegand 2026-05-15 14:16:02 +0200
  • 3256ed2ab1
    spec(hardening-refactor): design — drop-ins owned by left4me, ckn-bw deploys mwiegand 2026-05-15 14:05:38 +0200
  • 152c313315
    spec(session-handoff): point next session at hardening-refactor plan mwiegand 2026-05-15 13:43:37 +0200
  • 461b8d028f
    spec(hardening): test plan executed on left4.me — results recorded mwiegand 2026-05-15 13:39:50 +0200
  • 1df811e62a
    spec(hardening): threat model + defenses survey + test plan; pivot handoff mwiegand 2026-05-15 13:07:40 +0200
  • 9a2ab974e6
    spec: session handoff pointing next session at uid-split mwiegand 2026-05-15 12:17:55 +0200
  • 4aa69c2461
    spec(janitorial): mark items 8, 9 resolved after on-host verification mwiegand 2026-05-15 12:14:34 +0200
  • 8f30dd7754
    docs: correct stale bubblewrap references in v1 spec + live docstring mwiegand 2026-05-15 12:12:31 +0200
  • 160911fbca
    spec(deploy-dir-rethink): plan + mark adjacent specs resolved mwiegand 2026-05-15 12:05:53 +0200
  • 5284e28af7
    refactor: move privileged scripts to scripts/{libexec,sbin}/; deploy/ is reference mwiegand 2026-05-15 12:05:30 +0200
  • e38b844978
    docs: janitorial cleanup checklist + L4D2 server cvar reference mwiegand 2026-05-15 02:05:12 +0200
  • a450491a90
    spec(uid-split): note these are system units, not user units mwiegand 2026-05-15 01:59:56 +0200
  • 62cf6cdd56
    spec: handoff for revisiting 1/2/3-user split for left4me mwiegand 2026-05-15 01:58:09 +0200
  • 28b0ff951b
    spec(build-overlay-unit): flag DB-fetch-in-ExecStartPre as an option mwiegand 2026-05-15 01:54:41 +0200
  • a9bbc209ae
    spec: handoff for replacing script-sandbox helper with template unit mwiegand 2026-05-15 01:52:57 +0200
  • 7a25c2453c
    fix(left4me-script-sandbox): self-wrap into PID 1's mount namespace mwiegand 2026-05-15 01:33:13 +0200
  • 48381089d3
    refactor(left4me-overlay): move uid translation to script-sandbox build mwiegand 2026-05-15 01:20:39 +0200
  • bc25d423aa
    plan(left4me): move idmap from gameserver mount to script-sandbox build mwiegand 2026-05-15 01:15:46 +0200
  • dd918aca4b
    fix(left4me-overlay): use /proc/self/mountinfo to detect bind mounts mwiegand 2026-05-15 01:02:18 +0200
  • 2b20bffeb8
    spec: handoff doc for rethinking deploy/ dir architecture mwiegand 2026-05-15 00:53:55 +0200
  • f5e36eef79
    deploy: claim /usr/local/sbin/left4me admin CLI in deploy/files mwiegand 2026-05-15 00:41:06 +0200
  • f231ebcb0d
    doc(deploy): clarify ckn-bw verbatim-sync workflow for shipped files mwiegand 2026-05-14 23:57:31 +0200
  • e4101de7a5
    test(deploy): assert left4me-overlay idmaps sandbox-owned lowerdirs mwiegand 2026-05-14 23:56:36 +0200
  • 90531864b3
    harden(left4me-overlay): fix idmap collision risk, gate test stubs on PRINT_ONLY, wrap os.stat mwiegand 2026-05-14 23:53:32 +0200
  • 2f6a9cfba0
    feat(left4me-overlay): idmap bind mounts for l4d2-sandbox-owned lowerdirs mwiegand 2026-05-14 23:48:07 +0200
  • 3a2c379b71
    plan(left4me-overlay): idmap lowerdir bind mounts for cross-uid copy-up mwiegand 2026-05-14 23:42:36 +0200
  • bbb2b983bc
    harden(l4d2web): per-username login rate limit alongside per-IP mwiegand 2026-05-14 22:26:20 +0200
  • 0e2a78e065
    secure(l4d2web): block non-admin writes on system overlays; last-admin guard on deactivate mwiegand 2026-05-14 22:24:19 +0200
  • 74b7f61437
    harden(l4d2web): default security response headers and generic error handlers mwiegand 2026-05-14 22:21:36 +0200
  • 2902c9cc82
    harden(l4d2web): auth/session — clear on login+logout, constant-time CSRF, role-change invalidation mwiegand 2026-05-14 22:18:46 +0200
  • 66d14feca5
    refactor(l4d2-web): harden console-history.js against HTMX version drift and races mwiegand 2026-05-14 21:42:05 +0200
  • 6f49efd44a
    feat(l4d2-web): console panel UI on server detail page mwiegand 2026-05-14 21:39:21 +0200
  • ecc4aa28c6
    refactor(l4d2-web): tighten console route limit test and dedupe is_error mwiegand 2026-05-14 21:35:22 +0200
  • 553b280e40
    feat(l4d2-web): backend for RCON console with persisted transcript mwiegand 2026-05-14 21:32:13 +0200
  • c4dffd471b
    feat(l4d2-web): add command_history table for RCON console transcript mwiegand 2026-05-14 21:26:56 +0200
  • 9ef9ffdbde
    chore(l4d2-web): clarify rcon req_id constants and helper docstring mwiegand 2026-05-14 21:24:41 +0200
  • 085fd714a5
    feat(l4d2-web): add execute_command to rcon service with full test coverage mwiegand 2026-05-14 21:21:41 +0200
  • 1d3eb51871
    docs(plan): RCON console on server detail page mwiegand 2026-05-14 21:14:06 +0200
  • 6cc1736f17
    feat(l4d2-web): add hostname edit form to server detail page mwiegand 2026-05-13 15:42:46 +0200
  • 963851c0e1
    feat(l4d2-web): emit hostname in spec config with ephemeral fallback mwiegand 2026-05-13 15:31:12 +0200
  • d42383dc37
    chore: add dev.db and opencode.json to gitignore mwiegand 2026-05-13 14:29:57 +0200
  • 69d93dda4f
    feat(l4d2-web): accept hostname on server update, default empty on create mwiegand 2026-05-13 14:26:46 +0200
  • 0a7f48f174
    feat(l4d2-web): add hostname column to Server model mwiegand 2026-05-13 14:24:47 +0200
  • f3f0a8927a
    docs: add server hostname implementation plan mwiegand 2026-05-13 14:21:30 +0200
  • fcf3143b39
    docs: add server hostname cvar design spec mwiegand 2026-05-13 14:19:57 +0200
  • fe43f67b51
    feat: include password-reveal.js in base template mwiegand 2026-05-13 11:37:47 +0200
  • ab83f5fd2b
    feat: add RCON password row to server detail page mwiegand 2026-05-13 11:37:28 +0200
  • d9aa6bd395
    feat: add password reveal toggle JS mwiegand 2026-05-13 11:36:40 +0200
  • e75feb0649
    docs: add rcon password display implementation plan mwiegand 2026-05-13 11:36:08 +0200
  • 358a835d65
    docs: add rcon password display design spec mwiegand 2026-05-13 11:35:46 +0200
  • d113b7821c
    fix(live-state): remove loading=lazy from avatars to fix Firefox/Safari flash mwiegand 2026-05-12 23:34:53 +0200
  • 175e4e653c
    fix(live-state): eliminate flash on poll by switching to innerHTML swap mwiegand 2026-05-12 23:26:54 +0200
  • 096d18ac64
    feat(live-state): use Steam avatarfull (184x184), downscale in CSS mwiegand 2026-05-12 23:17:51 +0200
  • 6cbe7dc9f2
    feat(live-state): link player cards to their Steam profile mwiegand 2026-05-12 22:51:50 +0200
  • 674c4df360
    deploy: add STEAM_WEB_API_KEY to web.env template mwiegand 2026-05-12 22:25:03 +0200
  • 37a9ad68a2
    fix(live-state): cast poll_seconds to int for HTMX hx-trigger mwiegand 2026-05-12 22:23:15 +0200
  • 9aaa26d9a9
    feat(servers): add live-state panel with current and recent players mwiegand 2026-05-12 22:20:01 +0200
  • b00a3cceea
    test(live-state): assert stale server's map is not rendered in the badge mwiegand 2026-05-12 22:17:02 +0200
  • 072d9f78e7
    feat(servers): show live counts + map badge in server list mwiegand 2026-05-12 22:14:57 +0200
  • 0dc61d5de4
    feat(live-state): start daemon poller, prune history, close stuck sessions mwiegand 2026-05-12 22:10:55 +0200
  • be476112ee
    feat(live-state): enrich roster with cached Steam profiles mwiegand 2026-05-12 22:02:58 +0200
  • 33899f8c17
    feat(live-state): reconcile player sessions on each poll mwiegand 2026-05-12 21:58:30 +0200
  • c9cd2557fd
    style(live-state): drop unused imports staged for later tasks mwiegand 2026-05-12 21:55:36 +0200
  • f48d624dcc
    feat(live-state): poller writes RLE snapshots to server_live_state mwiegand 2026-05-12 21:53:58 +0200
  • f88d07a473
    feat(steam): add GetPlayerSummaries client mwiegand 2026-05-12 21:48:02 +0200
  • 465a103c3a
    feat(servers): generate rcon_password on server create mwiegand 2026-05-12 21:43:56 +0200
  • 2a440dae45
    feat(facade): append rcon_password as final server.cfg line mwiegand 2026-05-12 21:40:56 +0200
  • 83d2a9932c
    refactor(rcon): harden _parse_duration; surface fixture handler errors mwiegand 2026-05-12 21:39:32 +0200
  • b95a82b8a4
    feat(rcon): add Source RCON client + status parser mwiegand 2026-05-12 21:31:32 +0200
  • e25e7098f6
    refactor(live-state): drop redundant ix_sps_server_recent index mwiegand 2026-05-12 21:27:01 +0200
  • 0f825686c6
    feat(live-state): add schema for snapshots, sessions, steam profiles mwiegand 2026-05-12 21:18:24 +0200
  • a5f7b736a2
    docs/plan: server live-state display implementation plan mwiegand 2026-05-12 21:10:33 +0200
  • 202026e11a
    docs/spec: add server live-state display design mwiegand 2026-05-12 21:03:26 +0200
  • e52219b1e9
    deploy: weaken refresh-timer dep on web.service from Requires to Wants mwiegand 2026-05-11 23:22:42 +0200