Description
Create single-view gists that auto-delete after viewing.
Priority
HIGH - Critical security feature for sensitive code sharing.
Tasks
Technical Requirements
- One-time flag must be stored in gist metadata
- Implement atomic read-and-delete operation
- Handle race conditions for concurrent access
- Ensure complete deletion from R2
- Add clear warnings before viewing
- Support "download without viewing" option
- Implement view attempt logging
Acceptance Criteria
Dependencies
Security Considerations
- Implement server-side view tracking
- Use database transactions or R2 conditional requests
- Ensure idempotent deletion
- Add rate limiting to prevent abuse
- Consider adding view token for extra security
- Log all access attempts (success and failure)
Implementation Details
// API endpoint modification
async function getGist(id: string) {
const gist = await fetchGist(id);
if (gist.oneTime) {
// Atomic operation
await Promise.all([
deleteGist(id),
deleteBlobs(gist.files),
logViewEvent(id)
]);
}
return gist;
}
UI Flow
- User navigates to one-time gist
- Warning modal appears
- Options: "View and Delete" or "Download Only"
- If view: decrypt, display, then delete
- If download: provide files without displaying
- Show deletion confirmation
Estimated Time
3-4 days
References
Description
Create single-view gists that auto-delete after viewing.
Priority
HIGH - Critical security feature for sensitive code sharing.
Tasks
Technical Requirements
Acceptance Criteria
Dependencies
Security Considerations
Implementation Details
UI Flow
Estimated Time
3-4 days
References
docs/PHASE_6_ISSUE_TRACKING.md(Issue feat: create comprehensive content pages and update navigation #116)docs/SECURITY.md