Fix 8 frontend bugs from deep code review#13
Open
ppastabtw wants to merge 1 commit into
Open
Conversation
- Wrap async setTimeout in transitionFromSkeletonsToResults with try/catch to prevent UI stuck in SCANNING state
- Fall back to startDate+1h in ICS generator when endTime parsing fails, preventing DTEND:null in .ics files
- Add normalizeTimeStr() in dateTime.js to handle AM/PM time strings before ISO parsing
- Remove { once: true } from settings button listener so it survives failed tab creation
- Clamp end-before-start dates in calendarUrl.js resolveEndDate to startDate+1h
- Rewrite ICS foldLine to use TextEncoder for byte-accurate folding per RFC 5545
- Remove racing theme IIFE from theme.js (popup.js and settings.js already handle initialization)
- Track deferred poll timeouts in scanPolling.js so clearAll() can cancel them
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
Summary
transitionFromSkeletonsToResultswith try/catch so render errors fall back to IDLE instead of leaving the popup stuck with skeleton loadersstartDate + 1 hourin ICS generator whentoDate()returns null for unparseable endTime, preventing invalid.icsfilesnormalizeTimeStr()indateTime.jsto convert AM/PM strings to 24h format before ISO parsing, fixing raw-string fallback display{ once: true }so the listener persists ifchrome.tabs.create()fails silentlyresolveEndDateto clamp tostartDate + 1 hourwhen the resolved end date is before startfoldLineto useTextEncoderfor byte-accurate folding per RFC 5545 (75 octets, not 75 characters)theme.js— bothpopup.jsandsettings.jsalready handle theme loading explicitlydeferredTimeoutIdtracking inscanPolling.jssoclearAll()can cancel deferred polls on popup closeTest plan
npm test)🤖 Generated with Claude Code