mirror of
https://github.com/HeyPuter/puter.git
synced 2026-10-23 03:51:14 +00:00
The abuse guard counted every dismissal that sent nothing as a strike against the app, so closing the dialog blocked the app's next showFeedbackDialog() for 10s, then 60s, then for the rest of the page's life. The key is the app uuid, so relaunching the app did not clear it, and a blocked call replies sent:false — the app just sees nothing happen. Key the guard off how fast the app comes back instead. A reopen within a second of the app's last dialog activity is machine-paced and gets the same escalating backoff; attempts made while backed off count as activity too, so a loop cannot wait out a tier and start from zero strikes. Any human-paced reopen clears the app's record, so the tiers are only reached by an app that reopens at machine speed several times running. One dialog at a time, and a successful send clearing the record, are unchanged.