# Files overlay (user-managed file content) ## Context In the prior `ckn-bw` setup, per-server config-style files (`admins.txt`, `motd.txt`, mapcycle, etc.) lived under `bundles/left4dead2/files/scripts/overlays/standard`. `left4me` has no equivalent: today an overlay's contents come from either Steam Workshop (`workshop` type) or a user-authored bash build script (`script` type). Both have an external source-of-truth, so neither is the right home for files the user owns directly. The user wants both online editing of text files *and* arbitrary file upload, and we unify them into a single mechanism. ## Goal Add a third overlay type `files` whose source-of-truth IS the overlay directory itself. Provide a web UI to: - **Upload** any file or whole folder by dragging it onto a folder row in the tree (drag from the OS). - **Move** files and folders by dragging rows inside the tree (internal drag). - **Create / edit / rename / replace** files through a single modal editor, opened from row buttons. Modal adapts to text or binary content. - **Download** files (or zip an entire folder). - **Delete** files and empty folders. - **Create new folders** explicitly (including nested intermediates in one shot). Reuse the existing overlayfs / spec / mount / `expose_server_cfg` pipeline unchanged: a `files` overlay is a normal overlay attached to blueprints. ## Non-goals (v1) - Per-server overrides (servers still bind to a blueprint without per-instance file changes). - Concurrency policing when an overlay is in use by a running server. Overlayfs technically calls lower-layer mutation undefined behavior, but L4D2 reads most config at boot, so "edits visible on next start" is acceptable. - Versioning / undo / history. - Syntax highlighting (CodeMirror-style). Plain `