Open
Conversation
Security: - Remove unverified third-party script (cdn.gpteng.co/gptengineer.js) - Add Content Security Policy meta tag (connect-src, frame-src, object-src, base-uri) - Patch 12 high-severity npm vulnerabilities via audit fix + overrides - Move Gemini API calls server-side via Supabase Edge Function (ai-proxy); VITE_GEMINI_API_KEY no longer exposed to the browser Stability: - Wrap all localStorage.setItem calls in try-catch to handle QuotaExceededError and private/incognito mode (Safari) without crashing - Fix beforeunload handler: async save replaced with synchronous localStorage write as a crash-safe backup (async saves cannot be awaited on page unload) - Replace Promise.all with Promise.allSettled in forceSyncToDatabase so a single failed save no longer silently leaves other data in an inconsistent state - Show destructive toast when endDay save fails instead of only logging to console - Add private requireUser() helper in SupabaseService to validate user ID before every DB operation; removes scattered inconsistent null-check pattern - Wrap localStorage access in InstallPrompt in try-catch for private mode safety - Sanitize chart ID and color values before interpolation into dangerouslySetInnerHTML - Add SCHEMA_VERSION stamp to all localStorage writes; version mismatch on read clears stale data and returns safe defaults instead of passing corrupt state through the application; legacy bare-array format remains readable https://claude.ai/code/session_01JorBRWb89cm8BakhSoeWVx
The saveArchivedDays test checked the raw localStorage value as a bare
array, but after adding schema versioning the format is now the envelope
{ days: [...], _v: 1 }. Update assertions to match the new structure and
also verify the version field is present.
https://claude.ai/code/session_01JorBRWb89cm8BakhSoeWVx
Deploying timetrackerpro with
|
| Latest commit: |
413e807
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://7b1c376c.timetrackerpro.pages.dev |
| Branch Preview URL: | https://claude-improve-safety-securi.timetrackerpro.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Security:
VITE_GEMINI_API_KEY no longer exposed to the browser
Stability:
and private/incognito mode (Safari) without crashing
write as a crash-safe backup (async saves cannot be awaited on page unload)
failed save no longer silently leaves other data in an inconsistent state
every DB operation; removes scattered inconsistent null-check pattern
clears stale data and returns safe defaults instead of passing corrupt state
through the application; legacy bare-array format remains readable