-
6b4eef22c2
feat: server Reset action — wipe runtime, keep DB row
master
mwiegand
2026-05-08 18:10:32 +0200
-
c8a2d563ce
fix(l4d2-web): server delete job now removes the DB row
mwiegand
2026-05-08 18:09:45 +0200
-
fb3c6be052
feat(l4d2-web): per-overlay job list + redirect to job after build-triggering edits
mwiegand
2026-05-08 17:44:22 +0200
-
5e2c771276
chore(l4d2-web): remove orphaned 'Global map overlays' admin section
mwiegand
2026-05-08 17:25:15 +0200
-
ebddb0fab2
chore(deploy): install p7zip + coreutils for script-overlay tooling
mwiegand
2026-05-08 17:23:23 +0200
-
406f2196f8
fix(l4d2-web): write sandbox script tmpfile under LEFT4ME_ROOT, not /tmp
mwiegand
2026-05-08 17:14:21 +0200
-
023cc5c9b0
fix(deploy): chown WAL+SHM sidecars too, not just left4me.db
mwiegand
2026-05-08 17:11:42 +0200
-
f6ca85fc6f
fix(deploy): chown left4me.db to left4me:left4me, not root:left4me
mwiegand
2026-05-08 17:09:47 +0200
-
abc907b14b
docs(specs): script sandbox v3 — egress filter design + plan
mwiegand
2026-05-08 17:08:47 +0200
-
7e66936d03
feat(deploy): restrict script-sandbox egress to public internet only
mwiegand
2026-05-08 17:04:57 +0200
-
ae443299c8
chore(deploy): drop bubblewrap apt dep + tighten left4me.db mode
mwiegand
2026-05-08 16:48:26 +0200
-
4ee8f6af44
refactor(deploy): rewrite left4me-script-sandbox to systemd-only — drop bwrap
mwiegand
2026-05-08 16:47:30 +0200
-
efaaf84cd9
docs(specs): script sandbox v2 — systemd-only design + plan
mwiegand
2026-05-08 16:46:13 +0200
-
a62f26ba4a
fix(l4d2-web): normalize CRLF to LF in script overlay POST
mwiegand
2026-05-08 16:20:10 +0200
-
908bca3687
fix(l4d2-web): ScriptBuilder — chmod script tmpfile to 0644 for sandbox read
mwiegand
2026-05-08 16:18:00 +0200
-
cf865d4915
fix(deploy): one-shot cleanup of orphan overlay dirs after globals removal
mwiegand
2026-05-08 16:16:33 +0200
-
06ae84fbe4
fix(deploy): script-sandbox helper — UID drop via systemd-run, --unshare-user-try, /etc/alternatives
mwiegand
2026-05-08 16:12:46 +0200
-
1e62a44c16
docs(deploy): replace globals overlay description with script overlays
mwiegand
2026-05-08 15:56:24 +0200
-
e51a4d58a4
chore(deploy): provision l4d2-sandbox + bubblewrap; drop globals refresh timer
mwiegand
2026-05-08 15:54:57 +0200
-
75e703e1a4
feat(deploy): left4me-script-sandbox helper + sudoers fragment
mwiegand
2026-05-08 15:53:21 +0200
-
d351bcbee5
feat(l4d2-web): script overlay UI
mwiegand
2026-05-08 15:50:36 +0200
-
be22744d54
feat(l4d2-web): script overlay routes (script update / wipe / build)
mwiegand
2026-05-08 15:48:15 +0200
-
879c54cbda
refactor(l4d2-web): drop refresh_global_overlays from scheduler
mwiegand
2026-05-08 15:45:34 +0200
-
9f476e3456
refactor(l4d2-web): drop global-overlays subsystem in favor of script type
mwiegand
2026-05-08 15:43:41 +0200
-
d29afa41fa
feat(l4d2-web): ScriptBuilder + BUILDERS registry update
mwiegand
2026-05-08 15:39:13 +0200
-
43dc9b0ccf
feat(l4d2-web): script overlay schema — add overlay.script + last_build_status, drop globals tables
mwiegand
2026-05-08 15:33:04 +0200
-
78ead0b41d
docs(specs): script overlay type — design + implementation plan
mwiegand
2026-05-08 15:27:14 +0200
-
9985ecc56c
chore(deploy): cleanup left4me-web hardening + docs for kernel overlayfs
mwiegand
2026-05-08 12:29:49 +0200
-
172e574a00
chore(deploy): drop fuse-overlayfs apt dep + one-shot migrate upper/work
mwiegand
2026-05-08 12:28:00 +0200
-
93a60befb6
refactor(l4d2-host): start/stop/delete go through OverlayMounter; drop fuse module
mwiegand
2026-05-08 12:26:28 +0200
-
d5b321b557
feat(l4d2-host): KernelOverlayFSMounter + left4me-overlay helper
mwiegand
2026-05-08 12:23:58 +0200
-
db120d77d3
docs(specs): kernel overlayfs migration design + plan
mwiegand
2026-05-08 12:19:26 +0200
-
d5d710afa7
fix(l4d2-host): make stop_instance idempotent on the unmount step
mwiegand
2026-05-08 11:24:04 +0200
-
38548ab0d7
chore(deploy): raise gunicorn thread pool to 32 for SSE headroom
mwiegand
2026-05-08 11:19:03 +0200
-
4552af6544
fix(l4d2-web): keep SSE log stream from pinning gunicorn threads
mwiegand
2026-05-08 11:18:56 +0200
-
ffc4cdbd7d
refactor(l4d2-web): remove legacy external overlay type
mwiegand
2026-05-08 09:31:04 +0200
-
92d6ebbe82
feat(l4d2-web): managed global map overlays with daily refresh
mwiegand
2026-05-08 08:05:14 +0200
-
4f78574edd
fix(l4d2-web): keep workshop refresh responsive
mwiegand
2026-05-07 17:31:12 +0200
-
0e83ee07d7
fix(deploy): make test deployments safe to rerun
mwiegand
2026-05-07 17:16:58 +0200
-
b2a8d3d5e0
feat(deploy): workshop_cache provisioning
mwiegand
2026-05-07 16:53:49 +0200
-
ac020d1e77
feat(l4d2-web): initialize-time guard for uncached workshop items
mwiegand
2026-05-07 16:53:04 +0200
-
df1ccb4cca
feat(l4d2-web): workshop overlay UI (routes + templates)
mwiegand
2026-05-07 16:50:54 +0200
-
38a6fbbe1e
feat(l4d2-web): worker support for build_overlay and refresh_workshop_items
mwiegand
2026-05-07 16:44:10 +0200
-
700940d578
feat(l4d2-web): overlay builder registry with workshop builder
mwiegand
2026-05-07 16:40:30 +0200
-
f0230e17d3
feat(l4d2-web): overlay path helpers and creation
mwiegand
2026-05-07 16:38:39 +0200
-
c6b41429ee
feat(l4d2-web): steam workshop API client and downloader
mwiegand
2026-05-07 16:37:39 +0200
-
2543a05c12
feat(l4d2-web): typed overlays + workshop schema migration
mwiegand
2026-05-07 16:35:13 +0200
-
b46f52258d
docs(workshop): spec and plan for steam workshop overlays
mwiegand
2026-05-07 16:25:13 +0200
-
d18b397330
fix(host): create ~/.steam/sdk32 and sdk64 symlinks during install
mwiegand
2026-05-07 02:11:27 +0200
-
1968684c03
fix(deploy): MountFlags=shared on web service for fuse mount propagation
mwiegand
2026-05-07 02:01:24 +0200
-
593611e194
fix(deploy): drop PrivateTmp on web service so fuse mounts propagate
mwiegand
2026-05-07 01:57:43 +0200
-
56b9523d88
fix(deploy): drop NoNewPrivileges on web service so FUSE mounts work
mwiegand
2026-05-07 01:51:39 +0200
-
d14ed9c117
feat(web): blueprint-prefilled create-server flow + empty-state CTA
mwiegand
2026-05-07 01:47:33 +0200
-
923a1840f4
feat(web): forms in modals, edit/delete on detail pages, port auto-assign
mwiegand
2026-05-07 01:30:33 +0200
-
7d9939c71d
fix(deploy): exclude macOS AppleDouble files from deploy archive
mwiegand
2026-05-07 00:58:29 +0200
-
0210ecd301
config: allow SESSION_COOKIE_SECURE override and disable on test deploy
mwiegand
2026-05-07 00:56:48 +0200
-
f81e839ba2
security: harden boundary inputs and production defaults
harden-boundary-inputs
mwiegand
2026-05-07 00:53:33 +0200
-
3809f85795
fix: load environment variables for alembic upgrade in deploy script to ensure database url is set properly
mwiegand
2026-05-06 21:01:35 +0200
-
441c1db79b
fix: change directory before running alembic upgrade in deploy script to avoid pyproject.toml permission issues
mwiegand
2026-05-06 21:00:59 +0200
-
fa566db820
fix: apply alembic migrations automatically on deployment
mwiegand
2026-05-06 21:00:25 +0200
-
c01359002a
fix: enable batch operations in alembic for sqlite unique constraints
mwiegand
2026-05-06 20:59:18 +0200
-
7e5a8f89b5
docs: add server port constraint implementation plan
mwiegand
2026-05-06 20:53:50 +0200
-
114b141e2a
test: add test for duplicate port constraint
mwiegand
2026-05-06 20:53:04 +0200
-
fa002ce0f2
feat: enforce unique port constraint on servers
mwiegand
2026-05-06 20:52:46 +0200
-
833ae318cf
fix(deploy): add venv to PATH in left4me-web systemd service
mwiegand
2026-05-06 20:45:37 +0200
-
1604859f41
feat(host): add step logging to steam_install
mwiegand
2026-05-06 20:36:24 +0200
-
005d2d8458
fix(host): enforce flush=True to prevent pipeline block buffering
mwiegand
2026-05-06 20:30:00 +0200
-
27a905c22b
feat(web): add boundary log lines to job worker execution
mwiegand
2026-05-06 20:12:26 +0200
-
38d04e8551
feat(host): emit steps during start, stop, and delete operations
mwiegand
2026-05-06 20:07:00 +0200
-
d977098344
feat(host): emit steps during initialize_instance
mwiegand
2026-05-06 20:02:02 +0200
-
700b5be6f8
feat(host): add _emit_step helper for lifecycle logging
mwiegand
2026-05-06 19:57:56 +0200
-
ee144fad96
feat(l4d2-web): add server creation form
mwiegand
2026-05-06 19:41:04 +0200
-
bbfc528354
feat(deploy): add production-like test deployment
mwiegand
2026-05-06 19:30:10 +0200
-
de86139323
feat(l4d2): add l4d2ctl host command boundary
mwiegand
2026-05-06 16:35:20 +0200
-
a347829608
feat(l4d2-web): add job pages and cancellation
mwiegand
2026-05-06 15:05:13 +0200
-
91d042cf33
feat(l4d2-web): execute queued lifecycle jobs
mwiegand
2026-05-06 14:08:18 +0200
-
df680f6226
fix(l4d2-web): reject encoded unsafe redirects
mwiegand
2026-05-06 13:24:04 +0200
-
58fb8b2b63
fix(l4d2-web): harden auth redirect targets
mwiegand
2026-05-06 13:01:48 +0200
-
deca2c9153
docs(l4d2-web): update auth contract
mwiegand
2026-05-06 12:55:38 +0200
-
0aca36506f
feat(l4d2-web): add login page and safe redirects
mwiegand
2026-05-06 12:52:22 +0200
-
942dada807
docs(l4d2-web): plan auth pages
mwiegand
2026-05-06 12:48:03 +0200
-
84f325bb03
chore(l4d2-web): remove obsolete admin overlay template
mwiegand
2026-05-06 12:44:06 +0200
-
08b32bb26f
docs(l4d2-web): design auth pages
mwiegand
2026-05-06 12:40:15 +0200
-
07495f9319
docs(l4d2-web): update ui color contract
mwiegand
2026-05-06 12:10:15 +0200
-
4b326736fe
feat(l4d2-web): add admin landing and system pages
mwiegand
2026-05-06 12:09:36 +0200
-
feab09db07
feat(l4d2-web): add form-based blueprint editor
mwiegand
2026-05-06 12:09:08 +0200
-
71004a9deb
feat(l4d2-web): add server pages and lifecycle forms
mwiegand
2026-05-06 12:08:19 +0200
-
6559cf314e
feat(l4d2-web): consolidate overlay catalog page
mwiegand
2026-05-06 12:07:28 +0200
-
881b6635f9
feat(l4d2-web): add neutral shell and theme tokens
mwiegand
2026-05-06 12:06:23 +0200
-
98872727a7
chore(l4d2): add worktree constraint and update color contract
mwiegand
2026-05-06 11:57:04 +0200
-
d090750a50
docs(l4d2-web): plan functional web ui
mwiegand
2026-05-06 11:34:23 +0200
-
a766fe631d
chore: ignore code index files
mwiegand
2026-05-05 23:48:39 +0200
-
288eda7c37
chore(l4d2): flatten component layout
mwiegand
2026-05-05 23:47:06 +0200
-
7bac34c886
docs(l4d2): document host prerequisites
mwiegand
2026-05-05 23:30:34 +0200
-
16412f37f2
fix(l4d2): stabilize host smoke lifecycle
mwiegand
2026-05-05 23:23:26 +0200
-
2621b56627
chore: ignore local sqlite runtime artifacts
mwiegand
2026-04-23 01:24:53 +0200
-
d76d72f37e
docs(l4d2-web): finalize blueprint-driven ui and deployment contracts
mwiegand
2026-04-23 01:23:17 +0200
-
ec74563705
feat(l4d2-web): add csrf, rate limiting, and sqlite reliability settings
mwiegand
2026-04-23 01:19:29 +0200
-
f9c98506bd
feat(l4d2-web): add live server logs and desired-vs-actual status model
mwiegand
2026-04-23 01:16:37 +0200
-
271b2d347c
feat(l4d2-web): persist command logs and stream them with sse
mwiegand
2026-04-23 01:15:12 +0200