HuskyGC Website Bridge — 0.9.86

Update the files in your existing unpacked extension folder, reload the extension in chrome://extensions, refresh HuskyCT, and click Classroom.

This version uses one tab throughout. It visits the real HuskyCT Courses page in your current tab when necessary, reads the course cards and profile, and navigates that same tab to the website. It does not create a course-discovery tab or keep a background HuskyCT tab.

Once on the website, the extension service worker retrieves Blackboard API data and files with your existing browser session and the extension's existing host permissions. Passwords and cookies are never sent to the website. The notification anti-forgery token stays in the extension worker.

Back navigates through Classroom views and then returns to the HuskyCT page where you initially clicked Classroom. Return to HuskyCT skips the Classroom views and the temporary Courses collection step to return directly to that initial page.

The website currently remains private to the owner's ChatGPT account. No separate application connection page exists. The interface, fonts, course processing, previews, and completion markers use the original extension code. Use the SAME unpacked extension folder to retain the same extension ID and saved preferences.

Files up to 30 MB are supported. External providers and institution-controlled pages retain their original links. Connections reset when their tab closes or Chrome restarts.

Verified: course-card detection, same-tab staged navigation, no tab creation, tab-bound bridge access, authenticated worker requests, request allowlist, preference access, notification-token handling, and history return offsets. Live institution authentication and visual browser tests require the user's signed-in session.

Media fixes: avatar API paths are permitted, images wait for authenticated extension requests before rendering, binary image content is detected when MIME is generic, banner colors use the displayed banner, and Back/Forward cache keeps image URLs valid.

Performance update: concurrent identical API reads share one request without caching stale grades, media DOM updates are processed in animation-frame batches, repeated banner-color decoding is avoided, and the course-card readiness wait is shorter.

Appearance parity: capture actual course metadata, instructor rosters, selected instructor photos, and banners in the signed-in HuskyCT page before leaving. Reuse a five-minute device-local, account-scoped cache, and migrate matching-account preferences between the two supported HuskyCT addresses. Preferences from a different extension ID are not readable automatically; update the same unpacked installation to retain them.

Reopening fix: photo bytes use a separate device-local IndexedDB cache, bridge session records exclude large duplicated storage/photo snapshots, and a stale extension context reloads the current HuskyCT tab before retrying.

Syllabus/notification fix: authorized extension requests use the matching LMS Origin and Referer, scoped to this extension and the existing two LMS domains. Real notification anti-forgery tokens and browser-session cookies are still required. PDF bytes receive the correct MIME type for inline previews, HTML error pages are rejected as documents, and cached-page restoration preserves syllabus preview URLs.

Refresh-state and syllabus continuity: the website restores navigation before any home render. Saved syllabus blobs from the original extension’s LMS document database are transferred with the appearance bootstrap and reused directly on the website. Notifications remain unchanged.

Fast reopening: for ten minutes after verified course discovery, reopening from the same tab confirms the signed-in account and reuses the existing course/appearance/document bootstrap directly. It skips the Courses detour and photo/document recapture. Expired or mismatched accounts fall back to normal detection. Assignment and notification requests still refresh on the website.

Context routing: launch captures the current native course/assignment view through both warm and cold launches. Slow native instruction pages no longer trigger the two-second gradebook fallback; explicit unavailable errors still fall back and open the matching assignment link. File-based instructions use the native file route.

Preview/fallback update: assignment pages with no visible instructions fall back after ten seconds; explicit errors fall back immediately. Attachment previews request the actual download URL instead of Blackboard’s HTML viewer wrapper, accept supported API attachment routes, and retain file MIME types for PDFs and Word previews.
