diff --git a/package.json b/package.json index 81768c17..7794978e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "betterseqtaplus", - "version": "3.4.8.1", + "version": "3.4.9", "type": "module", "description": "Enhance SEQTA Learn's usability and aesthetics! A fork of BetterSEQTA to continue development add add heaps more features!", "browserslist": "> 0.5%, last 2 versions, not dead", diff --git a/settings.patch b/settings.patch deleted file mode 100644 index 01198b33..00000000 --- a/settings.patch +++ /dev/null @@ -1,126 +0,0 @@ ---- a/Users/sethburkart/Documents/Coding/betterseqta-plus/src/plugins/core/settings.ts -+++ b/Users/sethburkart/Documents/Coding/betterseqta-plus/src/plugins/core/settings.ts -@@ -2,7 +2,7 @@ - - // Base interfaces for our settings - interface BaseSettingOptions { -- title: string; -+ readonly title: string; // Mark as readonly where appropriate - description?: string; - } - -@@ -11,21 +11,21 @@ - } - - interface StringSettingOptions extends BaseSettingOptions { -- default: string; -+ readonly default: string; - maxLength?: number; - pattern?: string; - } - - interface NumberSettingOptions extends BaseSettingOptions { -- default: number; -+ readonly default: number; - min?: number; - max?: number; - step?: number; - } - - interface SelectSettingOptions extends BaseSettingOptions { -- default: T; -- options: readonly T[]; -+ readonly default: T; -+ readonly options: readonly T[]; - } - - // The actual decorators -@@ -34,14 +34,16 @@ - // Ensure the settings property exists on the constructor's prototype - const proto = target.constructor.prototype; - if (!proto.hasOwnProperty('settings')) { -- proto.settings = {}; -+ // Initialize with a base type that can be extended -+ Object.defineProperty(proto, 'settings', { -+ value: {}, -+ writable: true, // Allows adding properties -+ configurable: true, -+ enumerable: true -+ }); - } -- -+ - // Add the setting to the prototype's settings object with const assertion - proto.settings[propertyKey] = { - type: 'boolean' as const, - ...options - }; -- }; --} -- --export function StringSetting(options: StringSettingOptions): PropertyDecorator { -- return (target: Object, propertyKey: string | symbol) => { -- // Ensure the settings property exists on the constructor's prototype -- const proto = target.constructor.prototype; -- if (!proto.hasOwnProperty('settings')) { -- proto.settings = {}; -- } -- -- // Add the setting to the prototype's settings object with const assertion -- proto.settings[propertyKey] = { -- type: 'string' as const, -- ...options -- }; - }; - } - -@@ -50,14 +52,16 @@ - // Ensure the settings property exists on the constructor's prototype - const proto = target.constructor.prototype; - if (!proto.hasOwnProperty('settings')) { -- proto.settings = {}; -+ Object.defineProperty(proto, 'settings', { -+ value: {}, -+ writable: true, -+ configurable: true, -+ enumerable: true -+ }); - } -- -+ - // Add the setting to the prototype's settings object with const assertion - proto.settings[propertyKey] = { - type: 'number' as const, - ...options - }; -- }; --} -- --export function SelectSetting(options: SelectSettingOptions): PropertyDecorator { -- return (target: Object, propertyKey: string | symbol) => { -- // Ensure the settings property exists on the constructor's prototype -- const proto = target.constructor.prototype; -- if (!proto.hasOwnProperty('settings')) { -- proto.settings = {}; -- } -- -- // Add the setting to the prototype's settings object with const assertion -- proto.settings[propertyKey] = { -- type: 'select' as const, -- ...options -- }; - }; - } - - // Base plugin class that handles settings - export abstract class BasePlugin { - // The settings property will be populated by decorators -- settings!: T; -- -+ // Keep the instance property and constructor logic as is, -+ // as changing it would require changing animated-background/index.ts -+ settings!: T; // Use definite assignment assertion -+ - constructor() { - // Copy settings from the prototype to the instance - // This ensures that each instance has its own settings object \ No newline at end of file diff --git a/src/plugins/monofile.ts b/src/plugins/monofile.ts index 4a8e0433..4a692dad 100644 --- a/src/plugins/monofile.ts +++ b/src/plugins/monofile.ts @@ -24,6 +24,8 @@ import loading from "@/seqta/ui/Loading"; import { SendNewsPage } from "@/seqta/utils/SendNewsPage"; import { loadHomePage } from "@/seqta/utils/Loaders/LoadHomePage"; import { OpenWhatsNewPopup } from "@/seqta/utils/Whatsnew"; +//import { OpenMinecraftServerPopup } from "@/seqta/utils/AboutMinecraftServer"; + import { updateTimetableTimes, } from "@/seqta/utils/updateTimetableTimes"; @@ -36,7 +38,6 @@ import IconFamily from "@/resources/fonts/IconFamily.woff"; // Stylesheets import iframeCSS from "@/css/iframe.scss?raw"; -import { OpenMinecraftServerPopup } from "@/seqta/utils/AboutMinecraftServer"; function SetDisplayNone(ElementName: string) { return `li[data-key=${ElementName}]{display:var(--menuHidden) !important; transition: 1s;}`; @@ -96,8 +97,7 @@ export async function finishLoad() { } if (settingsState.justupdated && !document.getElementById("whatsnewbk")) { - OpenMinecraftServerPopup(); - //OpenWhatsNewPopup(); + OpenWhatsNewPopup(); } } diff --git a/src/seqta/utils/Whatsnew.ts b/src/seqta/utils/Whatsnew.ts index affc3b98..0f18ac70 100644 --- a/src/seqta/utils/Whatsnew.ts +++ b/src/seqta/utils/Whatsnew.ts @@ -66,6 +66,12 @@ export function OpenWhatsNewPopup() { let text = stringToHTML(/* html */ `
+

3.4.9 - Bug Fixes and Performance Improvements

+
  • Fixed performance issues with large notices on the homepage
  • +
  • Improved performance when global search is disabled
  • +
  • Improved performance of storage handling
  • +
  • Other bug fixes and improvements
  • +

    3.4.8 - Improvements!

  • Added new assessments kanban overview
  • Added custom profile pictures