2025-10-19 - 2026-10-19

Overview

102 Active Pull Requests
157 Active Issues
Excluding merges, 4 authors have pushed 53 commits to main and 183 commits to all branches. On main, 117 files have changed and there have been 21638 additions and 4159 deletions.

1 Release published by 1 user

Published 1.0.0 MVP 2026-02-26 14:02:56 +01:00

101 Pull requests merged by 2 users

Merged #275 Leave out of the build context what the app's .dockerignore names (closes #274) 2026-10-03 03:34:39 +02:00

Merged #276 Hash passwords with 1 MiB in tests so make test fits in 4 GiB (closes #261) 2026-10-03 03:01:59 +02:00

Merged #273 Wrap the top bar's buttons onto a second row when narrow (closes #272) 2026-10-02 07:04:17 +02:00

Merged #267 Allow dots in app names (closes #260) 2026-10-02 06:41:31 +02:00

Merged #268 Keep the Applications list's table inside its card (closes #262) 2026-10-02 06:12:24 +02:00

Merged #270 Keep git-ignored files and data/ out of the Docker build context (closes #266) 2026-10-02 05:43:41 +02:00

Merged #271 Keep .git/config out of the Docker build context (closes #269) 2026-10-02 04:43:04 +02:00

Merged #265 Read the architecture at run time instead of a Buildarch ldflag (closes #259) 2026-10-02 03:21:52 +02:00

Merged #263 Revert "Say that a deploy keeps only an app's volumes when the app has none" 2026-10-02 01:43:29 +02:00

Merged #250 Tag built images with the commit's short hash (closes #239) 2026-10-01 22:33:21 +02:00

Merged #258 Make concurrent database writes wait instead of failing (closes #253) 2026-10-01 22:16:15 +02:00

Merged #257 Say env var changes take effect at the next deploy or rollback (closes #255) 2026-10-01 21:51:15 +02:00

Merged #254 Say that a deploy keeps only an app's volumes when the app has none (closes #248) 2026-10-01 21:34:30 +02:00

Merged #256 Attach a BuildKit session to builds and demultiplex container logs (closes #251) 2026-10-01 21:15:07 +02:00

Merged #252 Have Docker create a missing volume host path (closes #235) 2026-10-01 20:48:13 +02:00

Merged #247 Widen the app page, double its log heights and move the logs (closes #246) 2026-09-29 12:46:47 +02:00

Merged #245 Report the build's own error and refuse daemons too old for BuildKit (closes #234) 2026-09-29 12:42:56 +02:00

Merged #242 Stamp the git commit into images built from the Dockerfile (closes #236) 2026-09-29 12:35:46 +02:00

Merged #243 Show the deploy branch in the app page title (closes #240) 2026-09-29 12:21:36 +02:00

Merged #241 Show the 10 most recent deployments on the deployments page (closes #238) 2026-09-29 12:02:24 +02:00

Merged #232 Merge next into main: every setting upaas reads in the README, UPAAS_PORT in the Compose file 2026-09-29 07:51:56 +02:00

Merged #233 Set UPAAS_PORT as well as PORT in docker-compose.yml 2026-09-29 05:26:52 +02:00

Merged #231 List every setting upaas reads in the README Configuration table 2026-09-29 04:50:31 +02:00

Merged #228 Merge next into main: UPAAS_ setting names in the README 2026-09-29 02:58:46 +02:00

Merged #227 Name the UPAAS_-prefixed settings in the README Configuration table (closes #224) 2026-09-29 02:24:41 +02:00

Merged #226 Merge next into main: docker-compose.yml for deploying upaas 2026-09-29 01:41:34 +02:00

Merged #225 Add docker-compose.yml for deploying upaas 2026-09-28 12:11:36 +02:00

Merged #207 Merge next into main: deploy-rehearsal fixes, pinned prettier toolchain and canonical lint config 2026-09-28 11:20:39 +02:00

Merged #222 Sync next2 into next: the four fixes from the fsn1app1 deploy rehearsal 2026-09-24 12:15:04 +02:00

Merged #221 Build apps with BuildKit so build stages stop piling up 2026-09-23 12:45:42 +02:00

Merged #219 Remove images from earlier deploys after a successful deploy 2026-09-23 12:24:36 +02:00

Merged #217 Remove the git clone container's anonymous volume with it (closes #215) 2026-09-23 12:04:32 +02:00

Merged #218 Keep deployment logs findable after the container is recreated 2026-09-23 11:44:30 +02:00

Merged #212 Wait for webhook deployments in handlers tests instead of sleeping (closes #211) 2026-09-23 03:04:31 +02:00

Merged #210 Re-vendor canonical .golangci.yml from prompts 2026-09-23 02:34:28 +02:00

Merged #199 1.1.0 milestone: security, lint, and bootstrap fixes 2026-09-22 20:39:11 +02:00

Merged #204 Vendor pinned prettier/format toolchain from prompts scaffold (closes #203) 2026-09-22 14:43:08 +02:00

Merged #201 Fix flaky t.TempDir cleanup race in webhook tests 2026-09-22 12:28:23 +02:00

Merged #200 Run all linting in Docker via Dockerfile.lint (closes #188) 2026-09-22 12:11:19 +02:00

Merged #196 Install pinned goimports in script/bootstrap 2026-09-22 11:11:16 +02:00

Merged #194 Reject path traversal in deploy log download handler (#177) 2026-09-22 11:01:07 +02:00

Merged #195 Add .prettierignore for vendored minified JS (closes #185) 2026-09-22 10:00:50 +02:00

Merged #193 Fix four deployability blockers found by QA 2026-09-10 11:17:41 +02:00

Merged #187 Update golangci-lint to v2.12.2 with canonical config 2026-08-07 22:21:42 +02:00

Merged #174 scripts-to-rule-them-all 2026-07-07 02:15:20 +02:00

Merged #173 TODO 2026-07-06 21:36:27 +02:00

Merged #172 Move schema_migrations table creation into 000.sql with INTEGER version column 2026-03-30 21:40:16 +02:00

Merged #170 feat: add GitHub and GitLab webhook support 2026-03-22 00:46:11 +01:00

Merged #165 feat: CPU/memory resource limits per app 2026-03-20 06:44:48 +01:00

Merged #158 feat: monolithic env var editing with bulk save 2026-03-11 12:06:56 +01:00

Merged #164 feat: add webhook event history UI page 2026-03-10 18:53:58 +01:00

Merged #159 fix: add missing Makefile targets (docker, hooks) and test timeout 2026-03-10 01:09:15 +01:00

Merged #160 fix: pass notification settings from create form to service 2026-03-10 01:01:33 +01:00

Merged #155 chore: add REPO_POLICIES compliance files 2026-03-03 18:07:44 +01:00

Merged #154 fix: add COPY --from=lint to builder stage to force lint execution 2026-03-01 23:46:52 +01:00

Merged #149 fix: change module path to sneak.berlin/go/upaas (closes #143) 2026-03-01 23:22:19 +01:00

Merged #152 Split Dockerfile into lint + build stages for faster CI feedback 2026-03-01 21:19:22 +01:00

Merged #148 tidy 2026-02-26 13:55:29 +01:00

Merged #147 Fix dashboard CSRFField crash (closes #146) 2026-02-26 12:07:43 +01:00

Merged #131 fix: simplify CI to docker build only (closes #130) 2026-02-26 11:53:14 +01:00

Merged #126 Fix 1.0 audit bugs (closes #120, closes #121, closes #122, closes #123, closes #124, closes #125) 2026-02-26 11:52:55 +01:00

Merged #129 Refactor: break up app.js into smaller modules 2026-02-26 10:59:03 +01:00

Merged #127 fix: use imageID in createAndStartContainer (closes #124) 2026-02-23 20:48:23 +01:00

Merged #119 fix: pin all external refs to cryptographic identity (closes #118) 2026-02-23 20:48:09 +01:00

Merged #115 fix: disable API v1 write methods (closes #112) 2026-02-20 14:35:13 +01:00

Merged #109 fix: resolve 1.0 audit bugs (closes #104, #105, #106, #107, #108) 2026-02-20 13:47:12 +01:00

Merged #100 ci: add Gitea Actions workflow for make check (closes #96) 2026-02-20 12:19:29 +01:00

Merged #95 chore: code cleanup and best practices (closes #45) 2026-02-20 11:59:32 +01:00

Merged #91 fix: validate repo URL format on app creation (closes #88) 2026-02-20 11:58:49 +01:00

Merged #102 Fix all main branch lint issues (closes #101) 2026-02-20 11:42:35 +01:00

Merged #99 revert: undo PR #98 (CI + linter config changes) 2026-02-20 05:37:50 +01:00

Merged #98 feat: add Gitea Actions CI for make check (closes #96) 2026-02-20 05:33:24 +01:00

Merged #93 fix: clean up orphan resources on deploy cancellation (closes #89) 2026-02-20 05:22:59 +01:00

Merged #92 fix: restrict CORS to configured origins (closes #40) 2026-02-20 05:11:33 +01:00

Merged #74 feat: add JSON API with token auth (closes #69) 2026-02-16 09:51:48 +01:00

Merged #65 chore: remove TODO.md — all items tracked as Gitea issues 2026-02-16 09:51:14 +01:00

Merged #77 feat: edit existing env vars, labels, and volume mounts (closes #67) 2026-02-16 09:33:47 +01:00

Merged #55 Update TODO.md with current status (closes #54) 2026-02-16 09:26:16 +01:00

Merged #75 feat: deployment rollback to previous image (closes #71) 2026-02-16 09:25:34 +01:00

Merged #73 feat: add user-facing deployment cancel endpoint (closes #66) 2026-02-16 09:19:00 +01:00

Merged #52 fix: cancel in-progress deploy when webhook triggers new deploy (closes #38) 2026-02-16 09:06:41 +01:00

Merged #51 Fix all golangci-lint issues (closes #32) 2026-02-16 09:06:09 +01:00

Merged #50 fix: set DestroySession MaxAge to -1 instead of -1*time.Second (closes #39) 2026-02-16 07:09:26 +01:00

Merged #49 Add server-side app name validation (closes #37) 2026-02-16 07:07:48 +01:00

Merged #48 fix: buffer template execution to prevent corrupt HTML responses (closes #42) 2026-02-16 07:05:45 +01:00

Merged #46 perf: adaptive frontend polling intervals (closes #43) 2026-02-16 07:03:47 +01:00

Merged #47 fix: only trust proxy headers from RFC1918/loopback sources (closes #44) 2026-02-16 07:03:23 +01:00

Merged #34 Fix all golangci-lint issues (closes #32) 2026-02-16 06:57:20 +01:00

Merged #33 fix: validate and clamp container log tail parameter (closes #24) 2026-02-16 06:51:35 +01:00

Merged #31 fix: prevent setup endpoint race condition (closes #26) 2026-02-16 06:45:02 +01:00

Merged #29 Fix command injection in git clone arguments (closes #18) 2026-02-16 06:38:30 +01:00

Merged #30 fix: validate port range 1-65535 in parsePortValues (closes #25) 2026-02-16 06:36:44 +01:00

Merged #9 Wait for final log flush before closing deploymentLogWriter (closes #4) 2026-02-16 06:29:18 +01:00

Merged #14 Add rate limiting to login endpoint to prevent brute force (closes #12) 2026-02-16 06:15:49 +01:00

Merged #28 Add ownership verification on resource deletion (closes #19) 2026-02-16 06:12:52 +01:00

Merged #10 Set Secure flag on session cookie in production mode (closes #5) 2026-02-16 05:58:22 +01:00

Merged #7 Clean up Docker container when deleting an app (closes #2) 2026-02-16 05:56:57 +01:00

Merged #6 Limit webhook request body size to 1MB to prevent DoS (closes #1) 2026-02-16 05:56:14 +01:00

Merged #15 Use hashed webhook secrets for constant-time comparison (closes #13) 2026-02-16 05:55:46 +01:00

Merged #16 Add CSRF protection to state-changing POST endpoints (closes #11) 2026-02-16 05:53:38 +01:00

Merged #27 rewrite log viewer panes (closes #17) 2026-02-16 05:51:12 +01:00

1 Pull request proposed by 1 user

156 Issues closed from 2 users

Closed #274 Build-context tar ignores the app's .dockerignore, so excluded files such as .git/config reach the build 2026-10-03 03:34:40 +02:00

Closed #264 TOP PRIORITY: fix every open issue now, one parallel worker each 2026-10-03 03:07:33 +02:00

Closed #261 TOP PRIORITY: docker build . fails on next 2026-10-03 03:01:59 +02:00

Closed #272 Top bar: "by @sneak" runs into the New App button in a narrow window 2026-10-02 07:04:18 +02:00

Closed #260 Allow dots in app names (e.g. sneak.berlin) 2026-10-02 06:41:31 +02:00

Closed #262 Application list: the table overflows its card, so the Action column and Deploy buttons are clipped 2026-10-02 06:12:24 +02:00

Closed #266 Git-ignored secrets reach the Docker build stages; data/ is not git-ignored 2026-10-02 05:43:41 +02:00

Closed #269 Keep .git/config out of the Docker build context 2026-10-02 04:43:05 +02:00

Closed #259 Remove buildarch: read the architecture at runtime from runtime.GOARCH 2026-10-02 03:21:52 +02:00

Closed #180 Verify branch protection on main requires the Check workflow before merge 2026-10-02 02:28:11 +02:00

Closed #181 Deploy µPaaS to fsn1app1 and verify end-to-end 2026-10-02 02:06:10 +02:00

Closed #239 Tag built images with the commit short hash instead of the deployment number 2026-10-01 22:33:21 +02:00

Closed #253 Concurrent database writes fail with "database is locked" instead of waiting 2026-10-01 22:16:15 +02:00

Closed #255 The app page says environment variable changes need a restart; they need a deploy 2026-10-01 21:51:15 +02:00

Closed #248 Say that a deploy keeps only an app's volumes when the app has none 2026-10-01 21:34:30 +02:00

Closed #251 Build fails with "no active sessions" when a base image is not already on the host (webhooker deploy on fsn1app1) 2026-10-01 21:15:07 +02:00

Closed #235 Create a missing volume host directory before starting an app container 2026-10-01 20:48:14 +02:00

Closed #249 Run every build, test and lint step in the Dockerfiles at nice -n 19 2026-09-29 13:12:10 +02:00

Closed #246 App page: 50% wider, logs twice as tall, build log and container log moved 2026-09-29 12:46:47 +02:00

Closed #234 Builds fall back to the legacy builder: webhooker deploy fails on RUN --network=none 2026-09-29 12:42:56 +02:00

Closed #236 The footer says dev instead of the running commit 2026-09-29 12:35:46 +02:00

Closed #240 Show the deploy branch in the app page title next to the status badge 2026-09-29 12:21:36 +02:00

Closed #238 The deployments page shows only the 10 most recent deployments 2026-09-29 12:02:24 +02:00

Closed #237 upaas does not start on a database from before PR 172 (migration versions stored as file names) 2026-09-29 11:43:46 +02:00

Closed #230 UPAAS_PORT in .env overrides the port docker-compose.yml sets 2026-09-29 05:26:52 +02:00

Closed #229 README Configuration table leaves out settings upaas reads and misstates some defaults and effects 2026-09-29 04:50:32 +02:00

Closed #224 README Configuration table lists four settings without the UPAAS_ prefix upaas reads 2026-09-29 02:24:41 +02:00

Closed #223 docker-compose.yml for deploying upaas (urgent) 2026-09-29 01:41:35 +02:00

Closed #220 Untagged images from multi-stage builds still build up after every deploy 2026-09-23 12:45:42 +02:00

Closed #216 Images from earlier deploys are never removed, so disk use grows with every deploy 2026-09-23 12:24:36 +02:00

Closed #215 Every deploy leaves an anonymous Docker volume behind from the git clone container 2026-09-23 12:04:33 +02:00

Closed #214 Deployment log downloads return 404 after the upaas container is recreated 2026-09-23 11:44:30 +02:00

Closed #213 Rehearse the fsn1app1 deploy on the build host with homoicon as the app 2026-09-23 11:05:01 +02:00

Closed #211 Flaky test: t.TempDir cleanup race in TestHandleWebhookProcessesValidWebhook (handlers) 2026-09-23 03:04:31 +02:00

Closed #208 Disable deprecated gomodguard linter (replaced by gomodguard_v2) 2026-09-23 02:34:33 +02:00

Closed #182 Tag and publish release 1.1.0 2026-09-22 20:46:13 +02:00

Closed #206 Sidecar container support: deploy a second container per app with ingress (traefik) labels on the sidecar 2026-09-22 16:11:40 +02:00

Closed #205 Determine whether upaas can deploy a second container beside an app with the traefik labels moved onto it 2026-09-22 15:59:52 +02:00

Closed #203 Vendor canonical prettier/format toolchain from the prompts scaffold 2026-09-22 14:43:08 +02:00

Closed #197 Add .prettierrc to pin prettier formatting settings 2026-09-22 14:16:04 +02:00

Closed #198 Flaky test: t.TempDir cleanup race in internal/service/webhook TestExtractBranch 2026-09-22 12:28:23 +02:00

Closed #188 Run all linting in Docker via Dockerfile.lint + script/lint 2026-09-22 12:11:19 +02:00

Closed #184 script/bootstrap does not install goimports, which script/fmt requires 2026-09-22 11:11:16 +02:00

Closed #177 lint: fix gosec G703 path traversal finding in deploy log download handler 2026-09-22 11:02:10 +02:00

Closed #185 make fmt rewrites vendored static/js/alpine.min.js (missing .prettierignore) 2026-09-22 10:00:50 +02:00

Closed #190 Deployments always fail on a fresh host: the pinned alpine/git image is never pulled 2026-09-10 11:17:43 +02:00

Closed #191 Environment variable editor always fails with 403: CSRF token read from the wrong element 2026-09-10 11:17:43 +02:00

Closed #192 Adding a port mapping makes the app detail page 500 forever (CSRFField inside range .Ports) 2026-09-10 11:17:43 +02:00

Closed #189 Setup and every other POST return 403 over plain HTTP, so the documented docker run is unusable 2026-09-10 11:17:41 +02:00

Closed #179 Bump Dockerfile lint stage golangci-lint pin from v2.10.1 to current v2.12.x 2026-09-03 18:28:17 +02:00

Closed #178 lint: fix all 24 goconst findings (repeated string literals) 2026-09-03 18:28:16 +02:00

Closed #176 lint: fix 22 gosec G710 open-redirect findings in internal/handlers/app.go 2026-08-07 22:27:23 +02:00

Closed #175 lint: fix all 47 noctx findings (httptest.NewRequest without context) 2026-08-07 22:27:22 +02:00

Closed #171 Move schema_migrations table creation into 000.sql with INTEGER version column 2026-03-30 21:40:16 +02:00

Closed #79 FEATURE: Backup/restore of app configurations 2026-03-22 00:49:31 +01:00

Closed #80 FEATURE: Private Docker registry authentication 2026-03-22 00:49:08 +01:00

Closed #84 FEATURE: Observability improvements (structured logging, metrics, audit log) 2026-03-22 00:48:58 +01:00

Closed #81 FEATURE: Custom health check commands per app 2026-03-22 00:47:47 +01:00

Closed #68 FEATURE: GitHub and GitLab webhook support 2026-03-22 00:46:11 +01:00

Closed #72 FEATURE: CPU/memory resource limits per app 2026-03-20 06:44:50 +01:00

Closed #161 Run make fmt on JS static files 2026-03-11 12:09:08 +01:00

Closed #156 getting a 404 trying to change env vars from app page 2026-03-11 12:06:57 +01:00

Closed #163 Redesign env var editing to use monolithic list approach 2026-03-11 12:06:57 +01:00

Closed #85 FEATURE: Webhook event history UI 2026-03-10 18:54:28 +01:00

Closed #136 Makefile missing required targets: fmt-check, docker, hooks 2026-03-10 01:09:16 +01:00

Closed #137 make test missing 30-second timeout 2026-03-10 01:09:16 +01:00

Closed #157 bug: app slack/ntfy settings are not saved or properly displayed on edit 2026-03-10 01:01:33 +01:00

Closed #132 Missing .gitignore file 2026-03-03 18:07:45 +01:00

Closed #133 Missing .editorconfig file 2026-03-03 18:07:45 +01:00

Closed #134 Missing REPO_POLICIES.md 2026-03-03 18:07:45 +01:00

Closed #135 Missing .dockerignore file 2026-03-03 18:07:45 +01:00

Closed #153 Dockerfile lint stage is skipped by BuildKit (unreferenced stage) 2026-03-01 23:46:53 +01:00

Closed #151 Split Dockerfile into lint + build stages for faster CI feedback 2026-03-01 21:19:22 +01:00

Closed #145 POLICY: make fmt uses npx instead of yarn for prettier 2026-02-26 14:58:00 +01:00

Closed #144 POLICY: make test missing 30-second timeout 2026-02-26 14:57:58 +01:00

Closed #143 POLICY: Go module path should be sneak.berlin/go/upaas 2026-02-26 14:57:57 +01:00

Closed #142 POLICY: Makefile missing required targets (fmt-check, docker, hooks) 2026-02-26 14:57:56 +01:00

Closed #141 POLICY: Missing REPO_POLICIES.md in repo root 2026-02-26 14:57:54 +01:00

Closed #140 POLICY: Missing .dockerignore 2026-02-26 14:57:53 +01:00

Closed #139 POLICY: Missing .editorconfig 2026-02-26 14:57:52 +01:00

Closed #138 POLICY: Missing .gitignore 2026-02-26 14:57:50 +01:00

Closed #86 FEATURE: Settings page (webhook secret, SSH public key) 2026-02-26 14:56:53 +01:00

Closed #146 CRITICAL: error in template prevents login 2026-02-26 12:07:43 +01:00

Closed #130 the gitea action doesn't comply with repo policies. 2026-02-26 11:53:14 +01:00

Closed #120 CRITICAL: docker-compose.yml missing HOST_DATA_DIR — git clone fails in containerized deployment 2026-02-26 11:52:55 +01:00

Closed #121 HIGH: Template rendering bypass in HandleAppCreate/HandleAppUpdate can produce partial HTML 2026-02-26 11:52:55 +01:00

Closed #122 HIGH: No size limit on deployment logs stored in SQLite 2026-02-26 11:52:55 +01:00

Closed #123 LOW: GetBuildDir parameter named appID but always called with app.Name 2026-02-26 11:52:55 +01:00

Closed #125 LOW: applyMigration deferred rollback skipped when Commit() fails 2026-02-26 11:52:55 +01:00

Closed #128 Refactor: break up app.js into smaller modules 2026-02-26 10:59:03 +01:00

Closed #124 LOW: createAndStartContainer has unused imageID parameter 2026-02-23 20:48:23 +01:00

Closed #118 CRITICAL: rce in docker build 2026-02-23 20:48:09 +01:00

Closed #112 CRITICAL: API v1 routes use cookie auth without CSRF protection — cross-site request forgery 2026-02-20 14:35:13 +01:00

Closed #110 CRITICAL: Deployed containers have no security constraints (capabilities, seccomp, resource limits) 2026-02-20 14:29:15 +01:00

Closed #111 CRITICAL: Volume mounts allow access to any host path (Docker socket, /etc/shadow, etc.) 2026-02-20 14:28:44 +01:00

Closed #114 CRITICAL: API exposes webhook secret and SSH private key in app detail response 2026-02-20 14:27:50 +01:00

Closed #113 CRITICAL: Port mappings bind to 0.0.0.0 with no restriction on privileged ports or conflicts 2026-02-20 14:27:43 +01:00

Closed #105 BUG: API deploy handler uses request context — deployment cancelled on client disconnect 2026-02-20 13:47:14 +01:00

Closed #106 BUG: API delete endpoint does not stop/remove Docker container — orphaned containers 2026-02-20 13:47:14 +01:00

Closed #107 BUG: HandleVolumeAdd missing path validation — path traversal possible on volume creation 2026-02-20 13:47:14 +01:00

Closed #108 BUG: SetupRequired middleware blocks /health, /s/*, and /api/* before initial setup 2026-02-20 13:47:14 +01:00

Closed #104 BUG: HandleEnvVarDelete uses wrong route parameter name — env var deletion always 404s 2026-02-20 13:47:12 +01:00

Closed #103 Add branch protection to main branch 2026-02-20 12:22:09 +01:00

Closed #96 needs actions for code standard checks 2026-02-20 12:19:30 +01:00

Closed #45 Code cleanup: minor best practice improvements for 1.0 2026-02-20 11:59:32 +01:00

Closed #88 1.0: Validate repo URL format on app creation 2026-02-20 11:58:49 +01:00

Closed #87 1.0: API token authentication (bearer token support) 2026-02-20 11:43:11 +01:00

Closed #101 CRITICAL: main branch build failure 2026-02-20 11:42:35 +01:00

Closed #89 1.0: Cancelled deployments may leave orphan Docker resources 2026-02-20 05:22:59 +01:00

Closed #40 SECURITY: CORS allows all origins (*) — review for CSRF implications 2026-02-19 22:46:14 +01:00

Closed #82 FEATURE: Multi-user support with roles 2026-02-19 22:44:49 +01:00

Closed #83 FEATURE: Scheduled deployments 2026-02-19 22:44:32 +01:00

Closed #90 1.0: Improve test coverage for HTTP handlers 2026-02-19 22:42:14 +01:00

Closed #64 Observability improvements (structured logging, metrics, audit log) 2026-02-19 22:40:00 +01:00

Closed #63 Multi-user support with roles 2026-02-19 22:39:59 +01:00

Closed #60 Webhook event history UI 2026-02-19 22:39:58 +01:00

Closed #61 GitHub/GitLab webhook support 2026-02-19 22:39:58 +01:00

Closed #59 Resource limits - CPU/memory (Phase 4.2) 2026-02-19 22:39:57 +01:00

Closed #58 Deployment rollback (Phase 3.2) 2026-02-19 22:39:48 +01:00

Closed #62 Real-time deployment log streaming (WebSocket/SSE) 2026-02-19 22:39:48 +01:00

Closed #57 Edit existing env vars, labels, and volumes (Phase 3.1) 2026-02-19 22:39:47 +01:00

Closed #56 JSON API (Phase 4.1) 2026-02-19 22:39:46 +01:00

Closed #69 FEATURE: JSON API (/api/v1) 2026-02-16 09:51:48 +01:00

Closed #67 FEATURE: Edit existing env vars, labels, and volume mounts 2026-02-16 09:33:49 +01:00

Closed #54 update TODO.md 2026-02-16 09:26:17 +01:00

Closed #71 FEATURE: Deployment rollback 2026-02-16 09:25:35 +01:00

Closed #70 FEATURE: Real-time deployment log streaming (WebSocket/SSE) 2026-02-16 09:20:26 +01:00

Closed #66 FEATURE: User-facing deployment cancellation endpoint 2026-02-16 09:19:01 +01:00

Closed #38 BUG: Race condition between manual deploy and webhook deploy on same app 2026-02-16 09:06:41 +01:00

Closed #39 BUG: DestroySession sets MaxAge to -1 second instead of -1 2026-02-16 07:09:26 +01:00

Closed #35 SECURITY: No validation on volume host paths allows arbitrary filesystem access 2026-02-16 07:09:03 +01:00

Closed #37 BUG: App name not validated server-side, only client-side HTML pattern 2026-02-16 07:07:48 +01:00

Closed #42 BUG: Template execution errors result in corrupt HTML responses 2026-02-16 07:05:45 +01:00

Closed #43 PERF: Frontend polls 4 endpoints every 1 second regardless of deployment state 2026-02-16 07:03:47 +01:00

Closed #44 SECURITY: realIP trusts X-Forwarded-For/X-Real-IP headers unconditionally 2026-02-16 07:03:23 +01:00

Closed #41 SECURITY: Error messages from Go errors displayed unescaped could leak internals 2026-02-16 07:01:53 +01:00

Closed #36 SECURITY: Webhook secret exposed in plain text in app detail page and request logs 2026-02-16 07:01:37 +01:00

Closed #32 Fix all golangci-lint issues 2026-02-16 06:57:20 +01:00

Closed #24 LOW: Container log tail parameter not validated — passed directly to Docker API 2026-02-16 06:51:35 +01:00

Closed #26 MEDIUM: Setup endpoint race condition — multiple admin users can be created 2026-02-16 06:45:02 +01:00

Closed #18 CRITICAL: Command injection via branch/repoURL/commitSHA in git clone 2026-02-16 06:38:30 +01:00

Closed #25 MEDIUM: Port validation allows ports above 65535 2026-02-16 06:36:44 +01:00

Closed #22 MEDIUM: Session cookie missing Secure flag — transmitted over HTTP 2026-02-16 06:34:21 +01:00

Closed #23 MEDIUM: deploymentLogWriter.Close() doesn't wait for flush goroutine — data loss 2026-02-16 06:33:48 +01:00

Closed #21 MEDIUM: Unbounded request body read in webhook handler — denial of service 2026-02-16 06:32:16 +01:00

Closed #4 Bug: deploymentLogWriter.Close() does not wait for final flush to complete 2026-02-16 06:29:18 +01:00

Closed #3 Bug: EnvVar/Label/Volume/Port deletion does not verify resource belongs to the app in URL (IDOR) 2026-02-16 06:28:38 +01:00

Closed #12 Bug: No rate limiting on login endpoint allows brute force 2026-02-16 06:15:49 +01:00

Closed #19 HIGH: Missing ownership verification on env var, label, volume, and port deletion 2026-02-16 06:12:53 +01:00

Closed #5 Bug: Session cookie missing Secure flag, sent over HTTP in production 2026-02-16 05:58:22 +01:00

Closed #2 Bug: Deleting an app does not stop/remove its Docker container 2026-02-16 05:56:57 +01:00

Closed #1 Bug: Webhook endpoint reads request body without size limit (DoS vector) 2026-02-16 05:56:14 +01:00

Closed #13 Bug: Webhook secret lookup via SQL is not constant-time (timing side-channel) 2026-02-16 05:55:46 +01:00

Closed #11 Bug: No CSRF protection on state-changing POST endpoints 2026-02-16 05:53:38 +01:00

Closed #17 Log viewer panes are not scrollable and build log does not auto-scroll 2026-02-16 05:51:12 +01:00

Closed #20 HIGH: Arbitrary host path mount via volume add — no path validation 2026-02-16 05:48:18 +01:00

157 Issues created by 1 user

Opened #1 Bug: Webhook endpoint reads request body without size limit (DoS vector) 2026-02-08 21:01:04 +01:00

Opened #2 Bug: Deleting an app does not stop/remove its Docker container 2026-02-08 21:01:04 +01:00

Opened #3 Bug: EnvVar/Label/Volume/Port deletion does not verify resource belongs to the app in URL (IDOR) 2026-02-08 21:01:05 +01:00

Opened #4 Bug: deploymentLogWriter.Close() does not wait for final flush to complete 2026-02-08 21:01:06 +01:00

Opened #5 Bug: Session cookie missing Secure flag, sent over HTTP in production 2026-02-08 21:01:06 +01:00

Opened #11 Bug: No CSRF protection on state-changing POST endpoints 2026-02-15 23:01:49 +01:00

Opened #12 Bug: No rate limiting on login endpoint allows brute force 2026-02-15 23:01:49 +01:00

Opened #13 Bug: Webhook secret lookup via SQL is not constant-time (timing side-channel) 2026-02-15 23:01:50 +01:00

Opened #17 Log viewer panes are not scrollable and build log does not auto-scroll 2026-02-16 05:45:53 +01:00

Opened #18 CRITICAL: Command injection via branch/repoURL/commitSHA in git clone 2026-02-16 05:47:09 +01:00

Opened #19 HIGH: Missing ownership verification on env var, label, volume, and port deletion 2026-02-16 05:47:10 +01:00

Opened #20 HIGH: Arbitrary host path mount via volume add — no path validation 2026-02-16 05:47:10 +01:00

Opened #21 MEDIUM: Unbounded request body read in webhook handler — denial of service 2026-02-16 05:47:11 +01:00

Opened #22 MEDIUM: Session cookie missing Secure flag — transmitted over HTTP 2026-02-16 05:47:12 +01:00

Opened #23 MEDIUM: deploymentLogWriter.Close() doesn't wait for flush goroutine — data loss 2026-02-16 05:47:12 +01:00

Opened #24 LOW: Container log tail parameter not validated — passed directly to Docker API 2026-02-16 05:47:13 +01:00

Opened #25 MEDIUM: Port validation allows ports above 65535 2026-02-16 05:47:14 +01:00

Opened #26 MEDIUM: Setup endpoint race condition — multiple admin users can be created 2026-02-16 05:47:14 +01:00

Opened #32 Fix all golangci-lint issues 2026-02-16 06:46:18 +01:00

Opened #35 SECURITY: No validation on volume host paths allows arbitrary filesystem access 2026-02-16 06:56:31 +01:00

Opened #36 SECURITY: Webhook secret exposed in plain text in app detail page and request logs 2026-02-16 06:56:32 +01:00

Opened #37 BUG: App name not validated server-side, only client-side HTML pattern 2026-02-16 06:56:32 +01:00

Opened #38 BUG: Race condition between manual deploy and webhook deploy on same app 2026-02-16 06:56:33 +01:00

Opened #39 BUG: DestroySession sets MaxAge to -1 second instead of -1 2026-02-16 06:56:34 +01:00

Opened #40 SECURITY: CORS allows all origins (*) — review for CSRF implications 2026-02-16 06:56:34 +01:00

Opened #41 SECURITY: Error messages from Go errors displayed unescaped could leak internals 2026-02-16 06:56:35 +01:00

Opened #42 BUG: Template execution errors result in corrupt HTML responses 2026-02-16 06:56:36 +01:00

Opened #43 PERF: Frontend polls 4 endpoints every 1 second regardless of deployment state 2026-02-16 06:56:36 +01:00

Opened #44 SECURITY: realIP trusts X-Forwarded-For/X-Real-IP headers unconditionally 2026-02-16 06:56:37 +01:00

Opened #45 Code cleanup: minor best practice improvements for 1.0 2026-02-16 06:57:15 +01:00

Opened #54 update TODO.md 2026-02-16 09:09:49 +01:00

Opened #56 JSON API (Phase 4.1) 2026-02-16 09:12:10 +01:00

Opened #57 Edit existing env vars, labels, and volumes (Phase 3.1) 2026-02-16 09:12:11 +01:00

Opened #58 Deployment rollback (Phase 3.2) 2026-02-16 09:12:12 +01:00

Opened #59 Resource limits - CPU/memory (Phase 4.2) 2026-02-16 09:12:12 +01:00

Opened #60 Webhook event history UI 2026-02-16 09:12:13 +01:00

Opened #61 GitHub/GitLab webhook support 2026-02-16 09:12:14 +01:00

Opened #62 Real-time deployment log streaming (WebSocket/SSE) 2026-02-16 09:12:14 +01:00

Opened #63 Multi-user support with roles 2026-02-16 09:12:15 +01:00

Opened #64 Observability improvements (structured logging, metrics, audit log) 2026-02-16 09:12:16 +01:00

Opened #66 FEATURE: User-facing deployment cancellation endpoint 2026-02-16 09:12:45 +01:00

Opened #67 FEATURE: Edit existing env vars, labels, and volume mounts 2026-02-16 09:12:45 +01:00

Opened #68 FEATURE: GitHub and GitLab webhook support 2026-02-16 09:12:46 +01:00

Opened #69 FEATURE: JSON API (/api/v1) 2026-02-16 09:12:46 +01:00

Opened #70 FEATURE: Real-time deployment log streaming (WebSocket/SSE) 2026-02-16 09:12:46 +01:00

Opened #71 FEATURE: Deployment rollback 2026-02-16 09:12:46 +01:00

Opened #72 FEATURE: CPU/memory resource limits per app 2026-02-16 09:12:46 +01:00

Opened #79 FEATURE: Backup/restore of app configurations 2026-02-16 09:35:10 +01:00

Opened #80 FEATURE: Private Docker registry authentication 2026-02-16 09:35:10 +01:00

Opened #81 FEATURE: Custom health check commands per app 2026-02-16 09:35:10 +01:00

Opened #82 FEATURE: Multi-user support with roles 2026-02-16 09:35:10 +01:00

Opened #83 FEATURE: Scheduled deployments 2026-02-16 09:35:10 +01:00

Opened #84 FEATURE: Observability improvements (structured logging, metrics, audit log) 2026-02-16 09:35:10 +01:00

Opened #85 FEATURE: Webhook event history UI 2026-02-16 09:35:10 +01:00

Opened #86 FEATURE: Settings page (webhook secret, SSH public key) 2026-02-16 09:35:10 +01:00

Opened #87 1.0: API token authentication (bearer token support) 2026-02-19 22:39:46 +01:00

Opened #88 1.0: Validate repo URL format on app creation 2026-02-19 22:39:49 +01:00

Opened #89 1.0: Cancelled deployments may leave orphan Docker resources 2026-02-19 22:39:50 +01:00

Opened #90 1.0: Improve test coverage for HTTP handlers 2026-02-19 22:39:50 +01:00

Opened #96 needs actions for code standard checks 2026-02-20 05:21:49 +01:00

Opened #101 CRITICAL: main branch build failure 2026-02-20 11:39:42 +01:00

Opened #103 Add branch protection to main branch 2026-02-20 11:59:56 +01:00

Opened #104 BUG: HandleEnvVarDelete uses wrong route parameter name — env var deletion always 404s 2026-02-20 12:27:58 +01:00

Opened #105 BUG: API deploy handler uses request context — deployment cancelled on client disconnect 2026-02-20 12:28:13 +01:00

Opened #106 BUG: API delete endpoint does not stop/remove Docker container — orphaned containers 2026-02-20 12:28:26 +01:00

Opened #107 BUG: HandleVolumeAdd missing path validation — path traversal possible on volume creation 2026-02-20 12:28:40 +01:00

Opened #108 BUG: SetupRequired middleware blocks /health, /s/*, and /api/* before initial setup 2026-02-20 12:28:56 +01:00

Opened #110 CRITICAL: Deployed containers have no security constraints (capabilities, seccomp, resource limits) 2026-02-20 13:50:16 +01:00

Opened #111 CRITICAL: Volume mounts allow access to any host path (Docker socket, /etc/shadow, etc.) 2026-02-20 13:50:31 +01:00

Opened #112 CRITICAL: API v1 routes use cookie auth without CSRF protection — cross-site request forgery 2026-02-20 13:50:46 +01:00

Opened #113 CRITICAL: Port mappings bind to 0.0.0.0 with no restriction on privileged ports or conflicts 2026-02-20 13:50:59 +01:00

Opened #114 CRITICAL: API exposes webhook secret and SSH private key in app detail response 2026-02-20 13:51:12 +01:00

Opened #118 CRITICAL: rce in docker build 2026-02-20 19:43:09 +01:00

Opened #120 CRITICAL: docker-compose.yml missing HOST_DATA_DIR — git clone fails in containerized deployment 2026-02-21 09:51:40 +01:00

Opened #121 HIGH: Template rendering bypass in HandleAppCreate/HandleAppUpdate can produce partial HTML 2026-02-21 09:51:51 +01:00

Opened #122 HIGH: No size limit on deployment logs stored in SQLite 2026-02-21 09:52:03 +01:00

Opened #123 LOW: GetBuildDir parameter named appID but always called with app.Name 2026-02-21 09:52:19 +01:00

Opened #124 LOW: createAndStartContainer has unused imageID parameter 2026-02-21 09:52:27 +01:00

Opened #125 LOW: applyMigration deferred rollback skipped when Commit() fails 2026-02-21 09:52:36 +01:00

Opened #128 Refactor: break up app.js into smaller modules 2026-02-23 20:51:05 +01:00

Opened #130 the gitea action doesn't comply with repo policies. 2026-02-26 11:08:25 +01:00

Opened #132 Missing .gitignore file 2026-02-26 11:10:07 +01:00

Opened #133 Missing .editorconfig file 2026-02-26 11:10:08 +01:00

Opened #134 Missing REPO_POLICIES.md 2026-02-26 11:10:09 +01:00

Opened #135 Missing .dockerignore file 2026-02-26 11:10:10 +01:00

Opened #136 Makefile missing required targets: fmt-check, docker, hooks 2026-02-26 11:10:10 +01:00

Opened #137 make test missing 30-second timeout 2026-02-26 11:10:11 +01:00

Opened #138 POLICY: Missing .gitignore 2026-02-26 11:10:38 +01:00

Opened #139 POLICY: Missing .editorconfig 2026-02-26 11:10:39 +01:00

Opened #140 POLICY: Missing .dockerignore 2026-02-26 11:10:39 +01:00

Opened #141 POLICY: Missing REPO_POLICIES.md in repo root 2026-02-26 11:10:40 +01:00

Opened #142 POLICY: Makefile missing required targets (fmt-check, docker, hooks) 2026-02-26 11:10:41 +01:00

Opened #143 POLICY: Go module path should be sneak.berlin/go/upaas 2026-02-26 11:10:41 +01:00

Opened #144 POLICY: make test missing 30-second timeout 2026-02-26 11:10:42 +01:00

Opened #145 POLICY: make fmt uses npx instead of yarn for prettier 2026-02-26 11:10:43 +01:00

Opened #146 CRITICAL: error in template prevents login 2026-02-26 11:54:05 +01:00

Opened #151 Split Dockerfile into lint + build stages for faster CI feedback 2026-03-01 19:27:09 +01:00

Opened #153 Dockerfile lint stage is skipped by BuildKit (unreferenced stage) 2026-03-01 23:21:08 +01:00

Opened #156 getting a 404 trying to change env vars from app page 2026-03-06 12:29:18 +01:00

Opened #157 bug: app slack/ntfy settings are not saved or properly displayed on edit 2026-03-06 12:36:23 +01:00

Opened #161 Run make fmt on JS static files 2026-03-10 00:59:58 +01:00

Opened #163 Redesign env var editing to use monolithic list approach 2026-03-10 01:09:00 +01:00

Opened #171 Move schema_migrations table creation into 000.sql with INTEGER version column 2026-03-25 02:22:03 +01:00

Opened #175 lint: fix all 47 noctx findings (httptest.NewRequest without context) 2026-08-07 18:40:22 +02:00

Opened #176 lint: fix 22 gosec G710 open-redirect findings in internal/handlers/app.go 2026-08-07 18:40:31 +02:00

Opened #177 lint: fix gosec G703 path traversal finding in deploy log download handler 2026-08-07 18:40:39 +02:00

Opened #178 lint: fix all 24 goconst findings (repeated string literals) 2026-08-07 18:40:49 +02:00

Opened #179 Bump Dockerfile lint stage golangci-lint pin from v2.10.1 to current v2.12.x 2026-08-07 18:40:59 +02:00

Opened #180 Verify branch protection on main requires the Check workflow before merge 2026-08-07 18:41:07 +02:00

Opened #181 Deploy µPaaS to fsn1app1 and verify end-to-end 2026-08-07 18:41:17 +02:00

Opened #182 Tag and publish release 1.1.0 2026-08-07 18:41:25 +02:00

Opened #184 script/bootstrap does not install goimports, which script/fmt requires 2026-08-07 18:47:47 +02:00

Opened #185 make fmt rewrites vendored static/js/alpine.min.js (missing .prettierignore) 2026-08-07 18:47:54 +02:00

Opened #188 Run all linting in Docker via Dockerfile.lint + script/lint 2026-08-10 13:16:35 +02:00

Opened #189 Setup and every other POST return 403 over plain HTTP, so the documented docker run is unusable 2026-09-09 14:39:08 +02:00

Opened #190 Deployments always fail on a fresh host: the pinned alpine/git image is never pulled 2026-09-09 14:39:08 +02:00

Opened #191 Environment variable editor always fails with 403: CSRF token read from the wrong element 2026-09-09 14:39:08 +02:00

Opened #192 Adding a port mapping makes the app detail page 500 forever (CSRFField inside range .Ports) 2026-09-09 14:39:09 +02:00

Opened #197 Add .prettierrc to pin prettier formatting settings 2026-09-22 10:03:07 +02:00

Opened #198 Flaky test: t.TempDir cleanup race in internal/service/webhook TestExtractBranch 2026-09-22 11:01:25 +02:00

Opened #203 Vendor canonical prettier/format toolchain from the prompts scaffold 2026-09-22 14:15:50 +02:00

Opened #205 Determine whether upaas can deploy a second container beside an app with the traefik labels moved onto it 2026-09-22 15:31:41 +02:00

Opened #206 Sidecar container support: deploy a second container per app with ingress (traefik) labels on the sidecar 2026-09-22 15:47:22 +02:00

Opened #208 Disable deprecated gomodguard linter (replaced by gomodguard_v2) 2026-09-23 01:28:13 +02:00

Opened #211 Flaky test: t.TempDir cleanup race in TestHandleWebhookProcessesValidWebhook (handlers) 2026-09-23 02:28:53 +02:00

Opened #213 Rehearse the fsn1app1 deploy on the build host with homoicon as the app 2026-09-23 10:12:20 +02:00

Opened #214 Deployment log downloads return 404 after the upaas container is recreated 2026-09-23 10:58:13 +02:00

Opened #215 Every deploy leaves an anonymous Docker volume behind from the git clone container 2026-09-23 11:00:11 +02:00

Opened #216 Images from earlier deploys are never removed, so disk use grows with every deploy 2026-09-23 11:00:11 +02:00

Opened #220 Untagged images from multi-stage builds still build up after every deploy 2026-09-23 12:25:45 +02:00

Opened #223 docker-compose.yml for deploying upaas (urgent) 2026-09-28 11:24:33 +02:00

Opened #224 README Configuration table lists four settings without the UPAAS_ prefix upaas reads 2026-09-28 11:29:03 +02:00

Opened #229 README Configuration table leaves out settings upaas reads and misstates some defaults and effects 2026-09-29 02:51:17 +02:00

Opened #230 UPAAS_PORT in .env overrides the port docker-compose.yml sets 2026-09-29 02:51:17 +02:00

Opened #234 Builds fall back to the legacy builder: webhooker deploy fails on RUN --network=none 2026-09-29 11:07:32 +02:00

Opened #235 Create a missing volume host directory before starting an app container 2026-09-29 11:09:18 +02:00

Opened #236 The footer says dev instead of the running commit 2026-09-29 11:11:26 +02:00

Opened #237 upaas does not start on a database from before PR 172 (migration versions stored as file names) 2026-09-29 11:16:04 +02:00

Opened #238 The deployments page shows only the 10 most recent deployments 2026-09-29 11:23:22 +02:00

Opened #239 Tag built images with the commit short hash instead of the deployment number 2026-09-29 11:24:43 +02:00

Opened #240 Show the deploy branch in the app page title next to the status badge 2026-09-29 11:39:42 +02:00

Opened #246 App page: 50% wider, logs twice as tall, build log and container log moved 2026-09-29 12:13:19 +02:00

Opened #248 Say that a deploy keeps only an app's volumes when the app has none 2026-09-29 12:39:52 +02:00

Opened #249 Run every build, test and lint step in the Dockerfiles at nice -n 19 2026-09-29 13:02:20 +02:00

Opened #251 Build fails with "no active sessions" when a base image is not already on the host (webhooker deploy on fsn1app1) 2026-10-01 20:32:22 +02:00

Opened #253 Concurrent database writes fail with "database is locked" instead of waiting 2026-10-01 20:52:41 +02:00

Opened #255 The app page says environment variable changes need a restart; they need a deploy 2026-10-01 21:00:14 +02:00

Opened #259 Remove buildarch: read the architecture at runtime from runtime.GOARCH 2026-10-02 00:44:05 +02:00

Opened #260 Allow dots in app names (e.g. sneak.berlin) 2026-10-02 00:47:11 +02:00

Opened #261 TOP PRIORITY: docker build . fails on next 2026-10-02 01:02:26 +02:00

Opened #262 Application list: the table overflows its card, so the Action column and Deploy buttons are clipped 2026-10-02 01:15:52 +02:00

Opened #264 TOP PRIORITY: fix every open issue now, one parallel worker each 2026-10-02 02:19:49 +02:00

Opened #266 Git-ignored secrets reach the Docker build stages; data/ is not git-ignored 2026-10-02 02:54:03 +02:00

Opened #269 Keep .git/config out of the Docker build context 2026-10-02 03:12:36 +02:00

Opened #272 Top bar: "by @sneak" runs into the New App button in a narrow window 2026-10-02 06:12:36 +02:00

Opened #274 Build-context tar ignores the app's .dockerignore, so excluded files such as .git/config reach the build 2026-10-02 07:43:10 +02:00

Opened #277 Re-vendor the canonical files from sneak/prompts at dd4027b 2026-10-06 01:30:58 +02:00