slack status without the slack status.zzstoatzz.io/
quickslice

docs: update progress with Sept 2 evening work

- Testing infrastructure and resilience improvements
- Admin moderation system implementation
- UI alignment fixes
- Review apps setup
- Code quality improvements

Changed files
+45 -1
+45 -1
progress.md
··· 98 98 - SmokeSignal event integration 99 99 - Location-based discovery 100 100 101 + ## Progress Update (Sept 2, 2025 - Evening) 102 + 103 + ### Testing Infrastructure & Resilience 104 + - **Test Framework Setup**: Established comprehensive testing with `just test` command 105 + - 9 tests covering rate limiting, error handling, and API endpoints 106 + - All tests passing 107 + - **Rate Limiting**: Implemented token bucket algorithm 108 + - 30 requests per minute per IP address on `/status` endpoint 109 + - Prevents spam and abuse 110 + - Closes GitHub issue #5 111 + - **Error Handling**: Centralized error handling with `AppError` enum 112 + - Consistent error responses across the application 113 + - Better debugging and user feedback 114 + 115 + ### Admin Moderation System 116 + - **Soft Hide Capability**: Added ability to hide inappropriate content 117 + - Posts remain in database but excluded from global feed 118 + - Admin DID hardcoded: `did:plc:xbtmt2zjwlrfegqvch7fboei` (zzstoatzz.io) 119 + - `/admin/hide-status` endpoint for toggling visibility 120 + - Hide button in UI visible only to admin 121 + - Confirmation dialog before hiding 122 + 123 + ### UI Improvements 124 + - **Fixed Emoji Alignment**: Resolved custom emoji sizing issues in status history 125 + - Standardized container dimensions (1.5rem x 1.5rem for history items) 126 + - Consistent layout regardless of emoji type 127 + 128 + ### DevOps & CI/CD 129 + - **Review Apps**: Set up automatic preview deployments for PRs 130 + - Uses GitHub Actions with `superfly/fly-pr-review-apps@1.2.1` 131 + - Deploys to `pr-<number>-zzstoatzz-status.fly.dev` 132 + - Smaller resources for review apps (256MB RAM) 133 + - Updated FLY_API_TOKEN to org-level token for app creation 134 + 135 + ### Code Quality 136 + - **Refactoring**: Cleaned up parameter passing 137 + - Replaced verbose `&dyn rusqlite::ToSql` with `rusqlite::params!` macro 138 + - More idiomatic Rust code 139 + 101 140 ## Technical Debt 141 + - ✅ ~~No rate limiting on API endpoints~~ (RESOLVED with issue #5) 102 142 - OAuth scopes too broad (waiting on AT Protocol) 103 143 - Session persistence needed 104 144 - Location feature architecture planned but not implemented 145 + - #2: Excessive unwrap() usage (57 instances) 146 + - #3: Duplicated handle resolution code 147 + - #4: Hardcoded configuration values 105 148 106 149 ## Resources 107 150 - OAuth research: `/tmp/atproto-oauth-research/` 108 - - Location proposal: `/tmp/atproto-oauth-research/location_integration_proposal.md` 151 + - Location proposal: `/tmp/atproto-oauth-research/location_integration_proposal.md` 152 + - PR #7: Testing, rate limiting, and moderation features