+45
-1
progress.md
+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