feat: prep fopr v3.7.0 as well as minor tweaks

This commit is contained in:
2026-06-02 08:42:24 +09:30
parent 9e521722f1
commit 337f85c3cc
13 changed files with 176 additions and 31 deletions
@@ -11,7 +11,7 @@ export function OpenPrivacyStatement() {
).firstChild as HTMLElement;
const text = stringToHTML(/* html */ `
<div class="whatsnewTextContainer" style="overflow-y: auto; max-height: 60vh;">
<div class="whatsnewTextContainer privacyStatement">
<h2 style="margin-top: 0;">Privacy Policy</h2>
<p>At BetterSEQTA+, we take your privacy seriously. We want to be completely transparent about how we handle your data.</p>
@@ -43,6 +43,7 @@ export function OpenPrivacyStatement() {
openPopup({
header,
content: [text],
containerClass: "whatsnewContainer--scrollBody",
});
}
+30 -17
View File
@@ -19,27 +19,40 @@ export function OpenWhatsNewPopup(onDismissed?: () => void) {
const video = document.createElement("video");
const source = document.createElement("source");
source.setAttribute(
"src",
"https://raw.githubusercontent.com/BetterSEQTA/BetterSEQTA-Plus/main/src/resources/update-video.webm",
);
video.autoplay = true;
video.muted = true;
video.loop = true;
video.appendChild(source);
video.classList.add("whatsnewImg");
imageContainer.appendChild(video);
attachPopupMediaFullscreen(video);
//source.setAttribute(
// "src",
// "https://raw.githubusercontent.com/BetterSEQTA/BetterSEQTA-Plus/main/src/resources/update-video.webm",
//);
//video.autoplay = true;
//video.muted = true;
//video.loop = true;
//video.appendChild(source);
//video.classList.add("whatsnewImg");
//imageContainer.appendChild(video);
//attachPopupMediaFullscreen(video);
const heroImage = document.createElement("img");
heroImage.src =
"https://raw.githubusercontent.com/BetterSEQTA/BetterSEQTA-Plus/main/src/resources/updateimage1.webp";
heroImage.alt = "BetterSEQTA+ update preview";
heroImage.classList.add("whatsnewImg");
imageContainer.appendChild(heroImage);
attachPopupMediaFullscreen(heroImage);
const text = stringToHTML(/* html */ `
<div class="whatsnewTextContainer" style="height: 50%;overflow-y: auto;">
<h1>3.6.6 Global Search improvements!</h1>
<li>Tuned hybrid search and indexing reliability.</li>
<li>Clearer progress UI and green “Done!” when a pass finishes.</li>
<li>Merged duplicate course hits that opened the same page.</li>
<li>Reset Index reminds you to reload the tab to rebuild.</li>
<li>Index now captures all content accross the site, not just assessments and courses.</li>
<h1>3.7.0 Grade Analytics, Global Search & SEQTA Engage Improvements</h1>
<li>Added Grade Analytics, new sidebar page with grade trend charts synced from SEQTA.</li>
<li>Added Grade distribution auto-detects your schools letter scale from released marks for analytics page.</li>
<li>Added documents, notices, portals, folios, goals, and more to Global Search.</li>
<li>Added shortcuts to SEQTA Engage home page.</li>
<li>Added assessments overview and assessment weighting overrides for SEQTA Engage.</li>
<li>Added BetterSEQTA sidebar icons to SEQTA Engage.</li>
<li>Added runtime handlers for upcoming interactive theme.</li>
<li>Fixed BetterSEQTA sidebar injection issues on some pages.</li>
<li>Tweak Theme of the Month popup making it more clear about dismissals and respecting “Dont show again”.</li>
<li>Fixed duplicate-result fixes.</li>
<h1>3.6.5 - Theme of the Month, custom message folders & assessment weighting overrides</h1>
<li>Added Theme of the Month — a monthly featured theme popup with a link to view it in the theme store.</li>
+8
View File
@@ -53,6 +53,8 @@ interface OpenPopupOptions {
afterClose?: () => void;
/** When true, clears the post-update flag when this popup opens (What's New only). */
clearJustUpdated?: boolean;
/** Extra classes on `.whatsnewContainer` (e.g. `whatsnewContainer--scrollBody`). */
containerClass?: string;
}
export function openPopup({
@@ -61,6 +63,7 @@ export function openPopup({
animateSelector = ".whatsnewTextContainer *",
afterClose,
clearJustUpdated = false,
containerClass,
}: OpenPopupOptions = {}) {
pendingAfterClose = afterClose;
@@ -70,6 +73,11 @@ export function openPopup({
const container = document.createElement("div");
container.classList.add("whatsnewContainer");
if (containerClass) {
for (const name of containerClass.split(/\s+/)) {
if (name) container.classList.add(name);
}
}
if (header) container.append(header);
for (const node of content) if (node) container.append(node);
+5 -2
View File
@@ -40,8 +40,11 @@ export const SENSITIVE_DEVICE_STORAGE_KEYS_EXACT = [
"plugin.assessments-average.storage.weightings",
] as const;
/** e.g. any future `plugin.global-search.storage.*` keys in chrome.storage */
export const SENSITIVE_DEVICE_STORAGE_KEY_PREFIXES = ["plugin.global-search.storage."] as const;
/** School-specific caches; never sync across devices. */
export const SENSITIVE_DEVICE_STORAGE_KEY_PREFIXES = [
"plugin.global-search.storage.",
"bsplus.analytics.",
] as const;
const CLIENT_ONLY_CLOUD_KEYS_EXACT = [
BSPLUS_CLOUD_KNOWN_REMOTE_UPDATED_AT_KEY,