2025-10-19 - 2026-10-19
Overview
1 Release published by 1 user
Published
1.0.0
MVP
101 Pull requests merged by 2 users
Merged
#275 Leave out of the build context what the app's .dockerignore names (closes #274)
Merged
#276 Hash passwords with 1 MiB in tests so make test fits in 4 GiB (closes #261)
Merged
#273 Wrap the top bar's buttons onto a second row when narrow (closes #272)
Merged
#267 Allow dots in app names (closes #260)
Merged
#268 Keep the Applications list's table inside its card (closes #262)
Merged
#270 Keep git-ignored files and data/ out of the Docker build context (closes #266)
Merged
#271 Keep .git/config out of the Docker build context (closes #269)
Merged
#265 Read the architecture at run time instead of a Buildarch ldflag (closes #259)
Merged
#263 Revert "Say that a deploy keeps only an app's volumes when the app has none"
Merged
#250 Tag built images with the commit's short hash (closes #239)
Merged
#258 Make concurrent database writes wait instead of failing (closes #253)
Merged
#257 Say env var changes take effect at the next deploy or rollback (closes #255)
Merged
#254 Say that a deploy keeps only an app's volumes when the app has none (closes #248)
Merged
#256 Attach a BuildKit session to builds and demultiplex container logs (closes #251)
Merged
#252 Have Docker create a missing volume host path (closes #235)
Merged
#247 Widen the app page, double its log heights and move the logs (closes #246)
Merged
#245 Report the build's own error and refuse daemons too old for BuildKit (closes #234)
Merged
#242 Stamp the git commit into images built from the Dockerfile (closes #236)
Merged
#243 Show the deploy branch in the app page title (closes #240)
Merged
#241 Show the 10 most recent deployments on the deployments page (closes #238)
Merged
#232 Merge next into main: every setting upaas reads in the README, UPAAS_PORT in the Compose file
Merged
#233 Set UPAAS_PORT as well as PORT in docker-compose.yml
Merged
#231 List every setting upaas reads in the README Configuration table
Merged
#228 Merge next into main: UPAAS_ setting names in the README
Merged
#227 Name the UPAAS_-prefixed settings in the README Configuration table (closes #224)
Merged
#226 Merge next into main: docker-compose.yml for deploying upaas
Merged
#225 Add docker-compose.yml for deploying upaas
Merged
#207 Merge next into main: deploy-rehearsal fixes, pinned prettier toolchain and canonical lint config
Merged
#222 Sync next2 into next: the four fixes from the fsn1app1 deploy rehearsal
Merged
#221 Build apps with BuildKit so build stages stop piling up
Merged
#219 Remove images from earlier deploys after a successful deploy
Merged
#217 Remove the git clone container's anonymous volume with it (closes #215)
Merged
#218 Keep deployment logs findable after the container is recreated
Merged
#212 Wait for webhook deployments in handlers tests instead of sleeping (closes #211)
Merged
#210 Re-vendor canonical .golangci.yml from prompts
Merged
#199 1.1.0 milestone: security, lint, and bootstrap fixes
Merged
#204 Vendor pinned prettier/format toolchain from prompts scaffold (closes #203)
Merged
#201 Fix flaky t.TempDir cleanup race in webhook tests
Merged
#200 Run all linting in Docker via Dockerfile.lint (closes #188)
Merged
#196 Install pinned goimports in script/bootstrap
Merged
#194 Reject path traversal in deploy log download handler (#177)
Merged
#195 Add .prettierignore for vendored minified JS (closes #185)
Merged
#193 Fix four deployability blockers found by QA
Merged
#187 Update golangci-lint to v2.12.2 with canonical config
Merged
#174 scripts-to-rule-them-all
Merged
#173 TODO
Merged
#172 Move schema_migrations table creation into 000.sql with INTEGER version column
Merged
#170 feat: add GitHub and GitLab webhook support
Merged
#165 feat: CPU/memory resource limits per app
Merged
#158 feat: monolithic env var editing with bulk save
Merged
#164 feat: add webhook event history UI page
Merged
#159 fix: add missing Makefile targets (docker, hooks) and test timeout
Merged
#160 fix: pass notification settings from create form to service
Merged
#155 chore: add REPO_POLICIES compliance files
Merged
#154 fix: add COPY --from=lint to builder stage to force lint execution
Merged
#149 fix: change module path to sneak.berlin/go/upaas (closes #143)
Merged
#152 Split Dockerfile into lint + build stages for faster CI feedback
Merged
#148 tidy
Merged
#147 Fix dashboard CSRFField crash (closes #146)
Merged
#131 fix: simplify CI to docker build only (closes #130)
Merged
#126 Fix 1.0 audit bugs (closes #120, closes #121, closes #122, closes #123, closes #124, closes #125)
Merged
#129 Refactor: break up app.js into smaller modules
Merged
#127 fix: use imageID in createAndStartContainer (closes #124)
Merged
#119 fix: pin all external refs to cryptographic identity (closes #118)
Merged
#115 fix: disable API v1 write methods (closes #112)
Merged
#109 fix: resolve 1.0 audit bugs (closes #104, #105, #106, #107, #108)
Merged
#100 ci: add Gitea Actions workflow for make check (closes #96)
Merged
#95 chore: code cleanup and best practices (closes #45)
Merged
#91 fix: validate repo URL format on app creation (closes #88)
Merged
#102 Fix all main branch lint issues (closes #101)
Merged
#99 revert: undo PR #98 (CI + linter config changes)
Merged
#98 feat: add Gitea Actions CI for make check (closes #96)
Merged
#93 fix: clean up orphan resources on deploy cancellation (closes #89)
Merged
#92 fix: restrict CORS to configured origins (closes #40)
Merged
#74 feat: add JSON API with token auth (closes #69)
Merged
#65 chore: remove TODO.md — all items tracked as Gitea issues
Merged
#77 feat: edit existing env vars, labels, and volume mounts (closes #67)
Merged
#55 Update TODO.md with current status (closes #54)
Merged
#75 feat: deployment rollback to previous image (closes #71)
Merged
#73 feat: add user-facing deployment cancel endpoint (closes #66)
Merged
#52 fix: cancel in-progress deploy when webhook triggers new deploy (closes #38)
Merged
#51 Fix all golangci-lint issues (closes #32)
Merged
#50 fix: set DestroySession MaxAge to -1 instead of -1*time.Second (closes #39)
Merged
#49 Add server-side app name validation (closes #37)
Merged
#48 fix: buffer template execution to prevent corrupt HTML responses (closes #42)
Merged
#46 perf: adaptive frontend polling intervals (closes #43)
Merged
#47 fix: only trust proxy headers from RFC1918/loopback sources (closes #44)
Merged
#34 Fix all golangci-lint issues (closes #32)
Merged
#33 fix: validate and clamp container log tail parameter (closes #24)
Merged
#31 fix: prevent setup endpoint race condition (closes #26)
Merged
#29 Fix command injection in git clone arguments (closes #18)
Merged
#30 fix: validate port range 1-65535 in parsePortValues (closes #25)
Merged
#9 Wait for final log flush before closing deploymentLogWriter (closes #4)
Merged
#14 Add rate limiting to login endpoint to prevent brute force (closes #12)
Merged
#28 Add ownership verification on resource deletion (closes #19)
Merged
#10 Set Secure flag on session cookie in production mode (closes #5)
Merged
#7 Clean up Docker container when deleting an app (closes #2)
Merged
#6 Limit webhook request body size to 1MB to prevent DoS (closes #1)
Merged
#15 Use hashed webhook secrets for constant-time comparison (closes #13)
Merged
#16 Add CSRF protection to state-changing POST endpoints (closes #11)
Merged
#27 rewrite log viewer panes (closes #17)
1 Pull request proposed by 1 user
Proposed
#244 Merge next into main: fix builds failing with "no active sessions", commit-hash image tags, dotted app names, build context secrets, layout fixes
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
Closed
#264 TOP PRIORITY: fix every open issue now, one parallel worker each
Closed
#261 TOP PRIORITY: docker build . fails on next
Closed
#272 Top bar: "by @sneak" runs into the New App button in a narrow window
Closed
#260 Allow dots in app names (e.g. sneak.berlin)
Closed
#262 Application list: the table overflows its card, so the Action column and Deploy buttons are clipped
Closed
#266 Git-ignored secrets reach the Docker build stages; data/ is not git-ignored
Closed
#269 Keep .git/config out of the Docker build context
Closed
#259 Remove buildarch: read the architecture at runtime from runtime.GOARCH
Closed
#180 Verify branch protection on main requires the Check workflow before merge
Closed
#181 Deploy µPaaS to fsn1app1 and verify end-to-end
Closed
#239 Tag built images with the commit short hash instead of the deployment number
Closed
#253 Concurrent database writes fail with "database is locked" instead of waiting
Closed
#255 The app page says environment variable changes need a restart; they need a deploy
Closed
#248 Say that a deploy keeps only an app's volumes when the app has none
Closed
#251 Build fails with "no active sessions" when a base image is not already on the host (webhooker deploy on fsn1app1)
Closed
#235 Create a missing volume host directory before starting an app container
Closed
#249 Run every build, test and lint step in the Dockerfiles at nice -n 19
Closed
#246 App page: 50% wider, logs twice as tall, build log and container log moved
Closed
#234 Builds fall back to the legacy builder: webhooker deploy fails on RUN --network=none
Closed
#236 The footer says dev instead of the running commit
Closed
#240 Show the deploy branch in the app page title next to the status badge
Closed
#238 The deployments page shows only the 10 most recent deployments
Closed
#237 upaas does not start on a database from before PR 172 (migration versions stored as file names)
Closed
#230 UPAAS_PORT in .env overrides the port docker-compose.yml sets
Closed
#229 README Configuration table leaves out settings upaas reads and misstates some defaults and effects
Closed
#224 README Configuration table lists four settings without the UPAAS_ prefix upaas reads
Closed
#223 docker-compose.yml for deploying upaas (urgent)
Closed
#220 Untagged images from multi-stage builds still build up after every deploy
Closed
#216 Images from earlier deploys are never removed, so disk use grows with every deploy
Closed
#215 Every deploy leaves an anonymous Docker volume behind from the git clone container
Closed
#214 Deployment log downloads return 404 after the upaas container is recreated
Closed
#213 Rehearse the fsn1app1 deploy on the build host with homoicon as the app
Closed
#211 Flaky test: t.TempDir cleanup race in TestHandleWebhookProcessesValidWebhook (handlers)
Closed
#208 Disable deprecated gomodguard linter (replaced by gomodguard_v2)
Closed
#182 Tag and publish release 1.1.0
Closed
#206 Sidecar container support: deploy a second container per app with ingress (traefik) labels on the sidecar
Closed
#205 Determine whether upaas can deploy a second container beside an app with the traefik labels moved onto it
Closed
#203 Vendor canonical prettier/format toolchain from the prompts scaffold
Closed
#197 Add .prettierrc to pin prettier formatting settings
Closed
#198 Flaky test: t.TempDir cleanup race in internal/service/webhook TestExtractBranch
Closed
#188 Run all linting in Docker via Dockerfile.lint + script/lint
Closed
#184 script/bootstrap does not install goimports, which script/fmt requires
Closed
#177 lint: fix gosec G703 path traversal finding in deploy log download handler
Closed
#185 make fmt rewrites vendored static/js/alpine.min.js (missing .prettierignore)
Closed
#190 Deployments always fail on a fresh host: the pinned alpine/git image is never pulled
Closed
#191 Environment variable editor always fails with 403: CSRF token read from the wrong element
Closed
#192 Adding a port mapping makes the app detail page 500 forever (CSRFField inside range .Ports)
Closed
#189 Setup and every other POST return 403 over plain HTTP, so the documented docker run is unusable
Closed
#179 Bump Dockerfile lint stage golangci-lint pin from v2.10.1 to current v2.12.x
Closed
#178 lint: fix all 24 goconst findings (repeated string literals)
Closed
#176 lint: fix 22 gosec G710 open-redirect findings in internal/handlers/app.go
Closed
#175 lint: fix all 47 noctx findings (httptest.NewRequest without context)
Closed
#171 Move schema_migrations table creation into 000.sql with INTEGER version column
Closed
#79 FEATURE: Backup/restore of app configurations
Closed
#80 FEATURE: Private Docker registry authentication
Closed
#84 FEATURE: Observability improvements (structured logging, metrics, audit log)
Closed
#81 FEATURE: Custom health check commands per app
Closed
#68 FEATURE: GitHub and GitLab webhook support
Closed
#72 FEATURE: CPU/memory resource limits per app
Closed
#161 Run make fmt on JS static files
Closed
#156 getting a 404 trying to change env vars from app page
Closed
#163 Redesign env var editing to use monolithic list approach
Closed
#85 FEATURE: Webhook event history UI
Closed
#136 Makefile missing required targets: fmt-check, docker, hooks
Closed
#137 make test missing 30-second timeout
Closed
#157 bug: app slack/ntfy settings are not saved or properly displayed on edit
Closed
#132 Missing .gitignore file
Closed
#133 Missing .editorconfig file
Closed
#134 Missing REPO_POLICIES.md
Closed
#135 Missing .dockerignore file
Closed
#153 Dockerfile lint stage is skipped by BuildKit (unreferenced stage)
Closed
#151 Split Dockerfile into lint + build stages for faster CI feedback
Closed
#145 POLICY: make fmt uses npx instead of yarn for prettier
Closed
#144 POLICY: make test missing 30-second timeout
Closed
#143 POLICY: Go module path should be sneak.berlin/go/upaas
Closed
#142 POLICY: Makefile missing required targets (fmt-check, docker, hooks)
Closed
#141 POLICY: Missing REPO_POLICIES.md in repo root
Closed
#140 POLICY: Missing .dockerignore
Closed
#139 POLICY: Missing .editorconfig
Closed
#138 POLICY: Missing .gitignore
Closed
#86 FEATURE: Settings page (webhook secret, SSH public key)
Closed
#146 CRITICAL: error in template prevents login
Closed
#130 the gitea action doesn't comply with repo policies.
Closed
#120 CRITICAL: docker-compose.yml missing HOST_DATA_DIR — git clone fails in containerized deployment
Closed
#121 HIGH: Template rendering bypass in HandleAppCreate/HandleAppUpdate can produce partial HTML
Closed
#122 HIGH: No size limit on deployment logs stored in SQLite
Closed
#123 LOW: GetBuildDir parameter named appID but always called with app.Name
Closed
#125 LOW: applyMigration deferred rollback skipped when Commit() fails
Closed
#128 Refactor: break up app.js into smaller modules
Closed
#124 LOW: createAndStartContainer has unused imageID parameter
Closed
#118 CRITICAL: rce in docker build
Closed
#112 CRITICAL: API v1 routes use cookie auth without CSRF protection — cross-site request forgery
Closed
#110 CRITICAL: Deployed containers have no security constraints (capabilities, seccomp, resource limits)
Closed
#111 CRITICAL: Volume mounts allow access to any host path (Docker socket, /etc/shadow, etc.)
Closed
#114 CRITICAL: API exposes webhook secret and SSH private key in app detail response
Closed
#113 CRITICAL: Port mappings bind to 0.0.0.0 with no restriction on privileged ports or conflicts
Closed
#105 BUG: API deploy handler uses request context — deployment cancelled on client disconnect
Closed
#106 BUG: API delete endpoint does not stop/remove Docker container — orphaned containers
Closed
#107 BUG: HandleVolumeAdd missing path validation — path traversal possible on volume creation
Closed
#108 BUG: SetupRequired middleware blocks /health, /s/*, and /api/* before initial setup
Closed
#104 BUG: HandleEnvVarDelete uses wrong route parameter name — env var deletion always 404s
Closed
#103 Add branch protection to main branch
Closed
#96 needs actions for code standard checks
Closed
#45 Code cleanup: minor best practice improvements for 1.0
Closed
#88 1.0: Validate repo URL format on app creation
Closed
#87 1.0: API token authentication (bearer token support)
Closed
#101 CRITICAL: main branch build failure
Closed
#89 1.0: Cancelled deployments may leave orphan Docker resources
Closed
#40 SECURITY: CORS allows all origins (*) — review for CSRF implications
Closed
#82 FEATURE: Multi-user support with roles
Closed
#83 FEATURE: Scheduled deployments
Closed
#90 1.0: Improve test coverage for HTTP handlers
Closed
#64 Observability improvements (structured logging, metrics, audit log)
Closed
#63 Multi-user support with roles
Closed
#60 Webhook event history UI
Closed
#61 GitHub/GitLab webhook support
Closed
#59 Resource limits - CPU/memory (Phase 4.2)
Closed
#58 Deployment rollback (Phase 3.2)
Closed
#62 Real-time deployment log streaming (WebSocket/SSE)
Closed
#57 Edit existing env vars, labels, and volumes (Phase 3.1)
Closed
#56 JSON API (Phase 4.1)
Closed
#69 FEATURE: JSON API (/api/v1)
Closed
#67 FEATURE: Edit existing env vars, labels, and volume mounts
Closed
#54 update TODO.md
Closed
#71 FEATURE: Deployment rollback
Closed
#70 FEATURE: Real-time deployment log streaming (WebSocket/SSE)
Closed
#66 FEATURE: User-facing deployment cancellation endpoint
Closed
#38 BUG: Race condition between manual deploy and webhook deploy on same app
Closed
#39 BUG: DestroySession sets MaxAge to -1 second instead of -1
Closed
#35 SECURITY: No validation on volume host paths allows arbitrary filesystem access
Closed
#37 BUG: App name not validated server-side, only client-side HTML pattern
Closed
#42 BUG: Template execution errors result in corrupt HTML responses
Closed
#43 PERF: Frontend polls 4 endpoints every 1 second regardless of deployment state
Closed
#44 SECURITY: realIP trusts X-Forwarded-For/X-Real-IP headers unconditionally
Closed
#41 SECURITY: Error messages from Go errors displayed unescaped could leak internals
Closed
#36 SECURITY: Webhook secret exposed in plain text in app detail page and request logs
Closed
#32 Fix all golangci-lint issues
Closed
#24 LOW: Container log tail parameter not validated — passed directly to Docker API
Closed
#26 MEDIUM: Setup endpoint race condition — multiple admin users can be created
Closed
#18 CRITICAL: Command injection via branch/repoURL/commitSHA in git clone
Closed
#25 MEDIUM: Port validation allows ports above 65535
Closed
#22 MEDIUM: Session cookie missing Secure flag — transmitted over HTTP
Closed
#23 MEDIUM: deploymentLogWriter.Close() doesn't wait for flush goroutine — data loss
Closed
#21 MEDIUM: Unbounded request body read in webhook handler — denial of service
Closed
#4 Bug: deploymentLogWriter.Close() does not wait for final flush to complete
Closed
#3 Bug: EnvVar/Label/Volume/Port deletion does not verify resource belongs to the app in URL (IDOR)
Closed
#12 Bug: No rate limiting on login endpoint allows brute force
Closed
#19 HIGH: Missing ownership verification on env var, label, volume, and port deletion
Closed
#5 Bug: Session cookie missing Secure flag, sent over HTTP in production
Closed
#2 Bug: Deleting an app does not stop/remove its Docker container
Closed
#1 Bug: Webhook endpoint reads request body without size limit (DoS vector)
Closed
#13 Bug: Webhook secret lookup via SQL is not constant-time (timing side-channel)
Closed
#11 Bug: No CSRF protection on state-changing POST endpoints
Closed
#17 Log viewer panes are not scrollable and build log does not auto-scroll
Closed
#20 HIGH: Arbitrary host path mount via volume add — no path validation
157 Issues created by 1 user
Opened
#1 Bug: Webhook endpoint reads request body without size limit (DoS vector)
Opened
#2 Bug: Deleting an app does not stop/remove its Docker container
Opened
#3 Bug: EnvVar/Label/Volume/Port deletion does not verify resource belongs to the app in URL (IDOR)
Opened
#4 Bug: deploymentLogWriter.Close() does not wait for final flush to complete
Opened
#5 Bug: Session cookie missing Secure flag, sent over HTTP in production
Opened
#11 Bug: No CSRF protection on state-changing POST endpoints
Opened
#12 Bug: No rate limiting on login endpoint allows brute force
Opened
#13 Bug: Webhook secret lookup via SQL is not constant-time (timing side-channel)
Opened
#17 Log viewer panes are not scrollable and build log does not auto-scroll
Opened
#18 CRITICAL: Command injection via branch/repoURL/commitSHA in git clone
Opened
#19 HIGH: Missing ownership verification on env var, label, volume, and port deletion
Opened
#20 HIGH: Arbitrary host path mount via volume add — no path validation
Opened
#21 MEDIUM: Unbounded request body read in webhook handler — denial of service
Opened
#22 MEDIUM: Session cookie missing Secure flag — transmitted over HTTP
Opened
#23 MEDIUM: deploymentLogWriter.Close() doesn't wait for flush goroutine — data loss
Opened
#24 LOW: Container log tail parameter not validated — passed directly to Docker API
Opened
#25 MEDIUM: Port validation allows ports above 65535
Opened
#26 MEDIUM: Setup endpoint race condition — multiple admin users can be created
Opened
#32 Fix all golangci-lint issues
Opened
#35 SECURITY: No validation on volume host paths allows arbitrary filesystem access
Opened
#36 SECURITY: Webhook secret exposed in plain text in app detail page and request logs
Opened
#37 BUG: App name not validated server-side, only client-side HTML pattern
Opened
#38 BUG: Race condition between manual deploy and webhook deploy on same app
Opened
#39 BUG: DestroySession sets MaxAge to -1 second instead of -1
Opened
#40 SECURITY: CORS allows all origins (*) — review for CSRF implications
Opened
#41 SECURITY: Error messages from Go errors displayed unescaped could leak internals
Opened
#42 BUG: Template execution errors result in corrupt HTML responses
Opened
#43 PERF: Frontend polls 4 endpoints every 1 second regardless of deployment state
Opened
#44 SECURITY: realIP trusts X-Forwarded-For/X-Real-IP headers unconditionally
Opened
#45 Code cleanup: minor best practice improvements for 1.0
Opened
#54 update TODO.md
Opened
#56 JSON API (Phase 4.1)
Opened
#57 Edit existing env vars, labels, and volumes (Phase 3.1)
Opened
#58 Deployment rollback (Phase 3.2)
Opened
#59 Resource limits - CPU/memory (Phase 4.2)
Opened
#60 Webhook event history UI
Opened
#61 GitHub/GitLab webhook support
Opened
#62 Real-time deployment log streaming (WebSocket/SSE)
Opened
#63 Multi-user support with roles
Opened
#64 Observability improvements (structured logging, metrics, audit log)
Opened
#66 FEATURE: User-facing deployment cancellation endpoint
Opened
#67 FEATURE: Edit existing env vars, labels, and volume mounts
Opened
#68 FEATURE: GitHub and GitLab webhook support
Opened
#69 FEATURE: JSON API (/api/v1)
Opened
#70 FEATURE: Real-time deployment log streaming (WebSocket/SSE)
Opened
#71 FEATURE: Deployment rollback
Opened
#72 FEATURE: CPU/memory resource limits per app
Opened
#79 FEATURE: Backup/restore of app configurations
Opened
#80 FEATURE: Private Docker registry authentication
Opened
#81 FEATURE: Custom health check commands per app
Opened
#82 FEATURE: Multi-user support with roles
Opened
#83 FEATURE: Scheduled deployments
Opened
#84 FEATURE: Observability improvements (structured logging, metrics, audit log)
Opened
#85 FEATURE: Webhook event history UI
Opened
#86 FEATURE: Settings page (webhook secret, SSH public key)
Opened
#87 1.0: API token authentication (bearer token support)
Opened
#88 1.0: Validate repo URL format on app creation
Opened
#89 1.0: Cancelled deployments may leave orphan Docker resources
Opened
#90 1.0: Improve test coverage for HTTP handlers
Opened
#96 needs actions for code standard checks
Opened
#101 CRITICAL: main branch build failure
Opened
#103 Add branch protection to main branch
Opened
#104 BUG: HandleEnvVarDelete uses wrong route parameter name — env var deletion always 404s
Opened
#105 BUG: API deploy handler uses request context — deployment cancelled on client disconnect
Opened
#106 BUG: API delete endpoint does not stop/remove Docker container — orphaned containers
Opened
#107 BUG: HandleVolumeAdd missing path validation — path traversal possible on volume creation
Opened
#108 BUG: SetupRequired middleware blocks /health, /s/*, and /api/* before initial setup
Opened
#110 CRITICAL: Deployed containers have no security constraints (capabilities, seccomp, resource limits)
Opened
#111 CRITICAL: Volume mounts allow access to any host path (Docker socket, /etc/shadow, etc.)
Opened
#112 CRITICAL: API v1 routes use cookie auth without CSRF protection — cross-site request forgery
Opened
#113 CRITICAL: Port mappings bind to 0.0.0.0 with no restriction on privileged ports or conflicts
Opened
#114 CRITICAL: API exposes webhook secret and SSH private key in app detail response
Opened
#118 CRITICAL: rce in docker build
Opened
#120 CRITICAL: docker-compose.yml missing HOST_DATA_DIR — git clone fails in containerized deployment
Opened
#121 HIGH: Template rendering bypass in HandleAppCreate/HandleAppUpdate can produce partial HTML
Opened
#122 HIGH: No size limit on deployment logs stored in SQLite
Opened
#123 LOW: GetBuildDir parameter named appID but always called with app.Name
Opened
#124 LOW: createAndStartContainer has unused imageID parameter
Opened
#125 LOW: applyMigration deferred rollback skipped when Commit() fails
Opened
#128 Refactor: break up app.js into smaller modules
Opened
#130 the gitea action doesn't comply with repo policies.
Opened
#132 Missing .gitignore file
Opened
#133 Missing .editorconfig file
Opened
#134 Missing REPO_POLICIES.md
Opened
#135 Missing .dockerignore file
Opened
#136 Makefile missing required targets: fmt-check, docker, hooks
Opened
#137 make test missing 30-second timeout
Opened
#138 POLICY: Missing .gitignore
Opened
#139 POLICY: Missing .editorconfig
Opened
#140 POLICY: Missing .dockerignore
Opened
#141 POLICY: Missing REPO_POLICIES.md in repo root
Opened
#142 POLICY: Makefile missing required targets (fmt-check, docker, hooks)
Opened
#143 POLICY: Go module path should be sneak.berlin/go/upaas
Opened
#144 POLICY: make test missing 30-second timeout
Opened
#145 POLICY: make fmt uses npx instead of yarn for prettier
Opened
#146 CRITICAL: error in template prevents login
Opened
#151 Split Dockerfile into lint + build stages for faster CI feedback
Opened
#153 Dockerfile lint stage is skipped by BuildKit (unreferenced stage)
Opened
#156 getting a 404 trying to change env vars from app page
Opened
#157 bug: app slack/ntfy settings are not saved or properly displayed on edit
Opened
#161 Run make fmt on JS static files
Opened
#163 Redesign env var editing to use monolithic list approach
Opened
#171 Move schema_migrations table creation into 000.sql with INTEGER version column
Opened
#175 lint: fix all 47 noctx findings (httptest.NewRequest without context)
Opened
#176 lint: fix 22 gosec G710 open-redirect findings in internal/handlers/app.go
Opened
#177 lint: fix gosec G703 path traversal finding in deploy log download handler
Opened
#178 lint: fix all 24 goconst findings (repeated string literals)
Opened
#179 Bump Dockerfile lint stage golangci-lint pin from v2.10.1 to current v2.12.x
Opened
#180 Verify branch protection on main requires the Check workflow before merge
Opened
#181 Deploy µPaaS to fsn1app1 and verify end-to-end
Opened
#182 Tag and publish release 1.1.0
Opened
#184 script/bootstrap does not install goimports, which script/fmt requires
Opened
#185 make fmt rewrites vendored static/js/alpine.min.js (missing .prettierignore)
Opened
#188 Run all linting in Docker via Dockerfile.lint + script/lint
Opened
#189 Setup and every other POST return 403 over plain HTTP, so the documented docker run is unusable
Opened
#190 Deployments always fail on a fresh host: the pinned alpine/git image is never pulled
Opened
#191 Environment variable editor always fails with 403: CSRF token read from the wrong element
Opened
#192 Adding a port mapping makes the app detail page 500 forever (CSRFField inside range .Ports)
Opened
#197 Add .prettierrc to pin prettier formatting settings
Opened
#198 Flaky test: t.TempDir cleanup race in internal/service/webhook TestExtractBranch
Opened
#203 Vendor canonical prettier/format toolchain from the prompts scaffold
Opened
#205 Determine whether upaas can deploy a second container beside an app with the traefik labels moved onto it
Opened
#206 Sidecar container support: deploy a second container per app with ingress (traefik) labels on the sidecar
Opened
#208 Disable deprecated gomodguard linter (replaced by gomodguard_v2)
Opened
#211 Flaky test: t.TempDir cleanup race in TestHandleWebhookProcessesValidWebhook (handlers)
Opened
#213 Rehearse the fsn1app1 deploy on the build host with homoicon as the app
Opened
#214 Deployment log downloads return 404 after the upaas container is recreated
Opened
#215 Every deploy leaves an anonymous Docker volume behind from the git clone container
Opened
#216 Images from earlier deploys are never removed, so disk use grows with every deploy
Opened
#220 Untagged images from multi-stage builds still build up after every deploy
Opened
#223 docker-compose.yml for deploying upaas (urgent)
Opened
#224 README Configuration table lists four settings without the UPAAS_ prefix upaas reads
Opened
#229 README Configuration table leaves out settings upaas reads and misstates some defaults and effects
Opened
#230 UPAAS_PORT in .env overrides the port docker-compose.yml sets
Opened
#234 Builds fall back to the legacy builder: webhooker deploy fails on RUN --network=none
Opened
#235 Create a missing volume host directory before starting an app container
Opened
#236 The footer says dev instead of the running commit
Opened
#237 upaas does not start on a database from before PR 172 (migration versions stored as file names)
Opened
#238 The deployments page shows only the 10 most recent deployments
Opened
#239 Tag built images with the commit short hash instead of the deployment number
Opened
#240 Show the deploy branch in the app page title next to the status badge
Opened
#246 App page: 50% wider, logs twice as tall, build log and container log moved
Opened
#248 Say that a deploy keeps only an app's volumes when the app has none
Opened
#249 Run every build, test and lint step in the Dockerfiles at nice -n 19
Opened
#251 Build fails with "no active sessions" when a base image is not already on the host (webhooker deploy on fsn1app1)
Opened
#253 Concurrent database writes fail with "database is locked" instead of waiting
Opened
#255 The app page says environment variable changes need a restart; they need a deploy
Opened
#259 Remove buildarch: read the architecture at runtime from runtime.GOARCH
Opened
#260 Allow dots in app names (e.g. sneak.berlin)
Opened
#261 TOP PRIORITY: docker build . fails on next
Opened
#262 Application list: the table overflows its card, so the Action column and Deploy buttons are clipped
Opened
#264 TOP PRIORITY: fix every open issue now, one parallel worker each
Opened
#266 Git-ignored secrets reach the Docker build stages; data/ is not git-ignored
Opened
#269 Keep .git/config out of the Docker build context
Opened
#272 Top bar: "by @sneak" runs into the New App button in a narrow window
Opened
#274 Build-context tar ignores the app's .dockerignore, so excluded files such as .git/config reach the build
Opened
#277 Re-vendor the canonical files from sneak/prompts at dd4027b