This happens even when nothing is deploying and the app is in a stable state. For a single-user app this is wasteful but tolerable; for multiple browser tabs it multiplies.
Suggested Fix
Poll every 1s only during active deployments (building/deploying status)
When idle (running/stopped/error), poll every 10-30 seconds
Only poll container-logs and build-logs when the respective pane is visible
## Severity: MEDIUM
## File: `static/js/app.js` — appDetail component, init()
## Description
```js
setInterval(() => this.fetchAll(), 1000);
```
`fetchAll()` calls 4 endpoints every second:
- `/apps/{id}/status`
- `/apps/{id}/container-logs`
- `/apps/{id}/deployments/{id}/logs`
- `/apps/{id}/recent-deployments`
This happens **even when nothing is deploying** and the app is in a stable state. For a single-user app this is wasteful but tolerable; for multiple browser tabs it multiplies.
## Suggested Fix
1. Poll every 1s only during active deployments (`building`/`deploying` status)
2. When idle (running/stopped/error), poll every 10-30 seconds
3. Only poll container-logs and build-logs when the respective pane is visible
```js
const interval = Alpine.store("utils").isDeploying(this.appStatus) ? 1000 : 15000;
```
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity: MEDIUM
File:
static/js/app.js— appDetail component, init()Description
fetchAll()calls 4 endpoints every second:/apps/{id}/status/apps/{id}/container-logs/apps/{id}/deployments/{id}/logs/apps/{id}/recent-deploymentsThis happens even when nothing is deploying and the app is in a stable state. For a single-user app this is wasteful but tolerable; for multiple browser tabs it multiplies.
Suggested Fix
building/deployingstatus)implement all fixes on a PR. idle interval check should be 10s.