From 57a9dc67922e794a744503f8cf487846c88a1157 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E2=88=9A=28noham=29=C2=B2?=
<100566912+NohamR@users.noreply.github.com>
Date: Mon, 6 Jul 2026 15:39:01 +0200
Subject: [PATCH] Add QMD ports for reMarkable 3.24-3.27
Add new extension sets for versions 3.24.0.149, 3.25.1.1, 3.26.0.68, and 3.27.1.0, including battery percentage, clock, quick settings clock/timer, convert-to-text remover, and uncompress dock variants. Refresh the README with a compatibility matrix, per-extension availability by firmware version, and clearer installation/extension documentation.
---
3.24.0.149/batteryPercentage.qmd | 14 +
3.24.0.149/clock.qmd | 62 +++++
3.24.0.149/convertToText_remover.qmd | 11 +
3.24.0.149/quickSettingsClock.qmd | 68 +++++
3.24.0.149/quickSettingsTimer.qmd | 368 +++++++++++++++++++++++++++
3.24.0.149/uncompressDock.qmd | 48 ++++
3.25.1.1/batteryPercentage.qmd | 14 +
3.25.1.1/clock.qmd | 62 +++++
3.25.1.1/convertToText_remover.qmd | 11 +
3.25.1.1/quickSettingsClock.qmd | 68 +++++
3.25.1.1/quickSettingsTimer.qmd | 368 +++++++++++++++++++++++++++
3.25.1.1/uncompressDock.qmd | 48 ++++
3.26.0.68/batteryPercentage.qmd | 14 +
3.26.0.68/clock.qmd | 62 +++++
3.26.0.68/convertToText_remover.qmd | 11 +
3.26.0.68/quickSettingsClock.qmd | 68 +++++
3.26.0.68/quickSettingsTimer.qmd | 368 +++++++++++++++++++++++++++
3.26.0.68/uncompressDock.qmd | 89 +++++++
3.27.1.0/batteryPercentage.qmd | 14 +
3.27.1.0/clock.qmd | 62 +++++
3.27.1.0/convertToText_remover.qmd | 11 +
3.27.1.0/quickSettingsClock.qmd | 68 +++++
3.27.1.0/quickSettingsTimer.qmd | 368 +++++++++++++++++++++++++++
3.27.1.0/uncompressDock.qmd | 89 +++++++
README.md | 168 +++++++-----
25 files changed, 2466 insertions(+), 68 deletions(-)
create mode 100644 3.24.0.149/batteryPercentage.qmd
create mode 100644 3.24.0.149/clock.qmd
create mode 100644 3.24.0.149/convertToText_remover.qmd
create mode 100644 3.24.0.149/quickSettingsClock.qmd
create mode 100644 3.24.0.149/quickSettingsTimer.qmd
create mode 100644 3.24.0.149/uncompressDock.qmd
create mode 100644 3.25.1.1/batteryPercentage.qmd
create mode 100644 3.25.1.1/clock.qmd
create mode 100644 3.25.1.1/convertToText_remover.qmd
create mode 100644 3.25.1.1/quickSettingsClock.qmd
create mode 100644 3.25.1.1/quickSettingsTimer.qmd
create mode 100644 3.25.1.1/uncompressDock.qmd
create mode 100644 3.26.0.68/batteryPercentage.qmd
create mode 100644 3.26.0.68/clock.qmd
create mode 100644 3.26.0.68/convertToText_remover.qmd
create mode 100644 3.26.0.68/quickSettingsClock.qmd
create mode 100644 3.26.0.68/quickSettingsTimer.qmd
create mode 100644 3.26.0.68/uncompressDock.qmd
create mode 100644 3.27.1.0/batteryPercentage.qmd
create mode 100644 3.27.1.0/clock.qmd
create mode 100644 3.27.1.0/convertToText_remover.qmd
create mode 100644 3.27.1.0/quickSettingsClock.qmd
create mode 100644 3.27.1.0/quickSettingsTimer.qmd
create mode 100644 3.27.1.0/uncompressDock.qmd
diff --git a/3.24.0.149/batteryPercentage.qmd b/3.24.0.149/batteryPercentage.qmd
new file mode 100644
index 0000000..111878d
--- /dev/null
+++ b/3.24.0.149/batteryPercentage.qmd
@@ -0,0 +1,14 @@
+AFFECT [[16664384747789373392]]
+ TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&6503165774&~ {
+ ~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ ~&6503823200&~.~&254543497768871654&~: 24
+ ~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.24.0.149/clock.qmd b/3.24.0.149/clock.qmd
new file mode 100644
index 0000000..ee59c72
--- /dev/null
+++ b/3.24.0.149/clock.qmd
@@ -0,0 +1,62 @@
+; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
+AFFECT [[4911547370760691430]]
+ TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
+ LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
+ INSERT {
+ ~&16385778650434842232&~ {
+ ~&5972374&~: clockSidebarItem
+ ~&8399878573055752961&~: "clockSidebarObject"
+ ~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
+ ~&8399601734642709923&~: ~&"4628214070783643584&~
+ ~&7082453764421&~: ~&214625660372&~
+ ~&233726547792244&~: ~&6504329801&~
+
+ /* 1000 = 1 second / 60000 = 1 minute */
+ property ~&197088788&~ set_Timer: 60000
+ property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
+
+ function getCestTime() {
+ ~&7083121450889&~ new ~&6502586279&~();
+ }
+
+ ~&254480451320573660&~.~&495334332051582499&~: {
+ ~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
+ }
+
+ ~&254542236275632405&~: {
+
+ ~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
+ clockSidebarItem.set_Timer = 1000;
+ clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
+ } ~&6503784146&~ {
+ clockSidebarItem.set_Timer = 60000;
+ clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
+ }
+
+ ~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
+ clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
+ }
+
+ /* Timer for update time */
+ ~&214604601930&~ {
+ ~&5972374&~: ~&214642551402&~
+ ~&7713147298280334&~: clockSidebarItem.set_Timer
+ ~&7083121289162&~: ~&6504329801&~
+ ~&233743626668842&~: ~&6504329801&~
+
+ ~&495358363329399331&~: {
+ clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
+ }
+ }
+
+ ~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
+ ~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
+ ~&11921478716705041271&~: ~&6504254477&~
+
+ function ~&7712792149454042&~() {
+ ~&7083211098251&~();
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.24.0.149/convertToText_remover.qmd b/3.24.0.149/convertToText_remover.qmd
new file mode 100644
index 0000000..a878604
--- /dev/null
+++ b/3.24.0.149/convertToText_remover.qmd
@@ -0,0 +1,11 @@
+AFFECT [[3197972396468700595]]
+ TRAVERSE [[6502786168]]#[[10742505294233322867]]
+ TRAVERSE [[12395602925408354507]]#[[214642769434]]
+ REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
+ END TRAVERSE
+ END TRAVERSE
+END AFFECT
+
+AFFECT [[3513522976947834303]]
+ REMOVE [[454089850271038938]]
+END AFFECT
diff --git a/3.24.0.149/quickSettingsClock.qmd b/3.24.0.149/quickSettingsClock.qmd
new file mode 100644
index 0000000..1bac250
--- /dev/null
+++ b/3.24.0.149/quickSettingsClock.qmd
@@ -0,0 +1,68 @@
+; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
+AFFECT [[12542166428983872557]]
+ IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
+
+ TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
+
+ LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
+
+ INSERT {
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+
+ ~&14397210151462632996&~ {
+ ~&5972374&~: quickSettingsClock
+ ~&233721384511543&~ {
+ ~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
+ }
+
+ property ~&6503679477&~ showSeconds: ~&214625660372&~
+ property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
+ property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
+ property ~&197088788&~ minuteInterval: 60000
+ property ~&197088788&~ secondInterval: 1000
+
+ ~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
+
+ function updateClock() {
+ ~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
+ }
+
+ ~&254480451320573660&~.~&495334332051582499&~: {
+ updateClock();
+ }
+
+ onShowSecondsChanged: {
+ quickSettingsClockTimer.~&233743006639214&~();
+ updateClock();
+ }
+
+ ~&214604601930&~ {
+ ~&5972374&~: quickSettingsClockTimer
+ ~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
+ ~&7083121289162&~: ~&6504329801&~
+ ~&233743626668842&~: ~&6504329801&~
+
+ ~&495358363329399331&~: {
+ quickSettingsClock.updateClock();
+ }
+ }
+
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&477346538929698200&~: ~&5971598&~.PointingHandCursor
+ ~&254542236275632405&~: {
+ quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
+ }
+ }
+ }
+ }
+ }
+
+ END TRAVERSE
+
+END AFFECT
diff --git a/3.24.0.149/quickSettingsTimer.qmd b/3.24.0.149/quickSettingsTimer.qmd
new file mode 100644
index 0000000..97f5a5e
--- /dev/null
+++ b/3.24.0.149/quickSettingsTimer.qmd
@@ -0,0 +1,368 @@
+; Quick Settings Timer/Chrono
+; Adds a countdown timer and stopwatch to the quick settings panel
+; Timer state lives in Values.timerManager so it persists across menu opens/closes
+
+AFFECT [[1658694193319203921]]
+ TRAVERSE [[6502786168]]
+ LOCATE AFTER ALL
+ INSERT {
+ property ~&214620122227&~ timerManager: _timerManager
+
+ ~&6502786168&~ {
+ ~&5972374&~: _timerManager
+ property ~&6503679477&~ timerMode: ~&6504329801&~
+ property ~&197088788&~ totalMs: 0
+ property ~&197088788&~ remainMs: 0
+ property ~&6503679477&~ isRunning: ~&214625660372&~
+ property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
+ property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
+ property ~&197088788&~ presetMs: 60000
+ property ~&6503679477&~ addMode: ~&6504329801&~
+
+ function fmt(ms) {
+ ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms);
+ ~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
+ ~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
+ ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
+ ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
+ ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
+
+ ~&5972376&~ (~&180977&~ > 0) {
+ ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
+ }
+ ~&7083121450889&~ mm + ~&"180931&~ + ss;
+ }
+
+ function refresh() {
+ ~&5972376&~ (timerMode) {
+ ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
+ } ~&6503784146&~ {
+ ~&478322454160073828&~ = fmt(totalMs);
+ }
+ }
+
+ function go() {
+ ~&5972376&~ (timerMode) {
+ ~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
+ }
+ ~&16765420033347753489&~ = ~&214625660372&~;
+ isRunning = ~&6504329801&~;
+ _tick.~&214641748151&~();
+ }
+
+ function ~&6504295855&~() {
+ isRunning = ~&214625660372&~;
+ _tick.~&6504295855&~();
+ }
+
+ function doReset() {
+ ~&6504295855&~();
+ ~&16765420033347753489&~ = ~&214625660372&~;
+ ~&5972376&~ (timerMode) {
+ remainMs = totalMs;
+ } ~&6503784146&~ {
+ totalMs = 0;
+ }
+ refresh();
+ }
+
+ ~&214604601930&~ {
+ ~&5972374&~: _tick
+ ~&7713147298280334&~: 100
+ ~&7083121289162&~: ~&6504329801&~
+ ~&495358363329399331&~: {
+ ~&5972376&~ (_timerManager.timerMode) {
+ _timerManager.remainMs -= 100;
+ ~&5972376&~ (_timerManager.remainMs <= 0) {
+ _timerManager.remainMs = 0;
+ _timerManager.~&6504295855&~();
+ _timerManager.~&16765420033347753489&~ = ~&6504329801&~;
+ }
+ } ~&6503784146&~ {
+ _timerManager.totalMs += 100;
+ }
+ _timerManager.refresh();
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
+
+AFFECT [[12542166428983872557]]
+ TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
+ LOCATE AFTER [[14125623155555875541]]#[[471169070310690832]]
+ INSERT {
+ ~&425121728314878811&~.~&15740235808997988493&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ }
+
+ ~&14125623155555875541&~ {
+ ~&5972374&~: _timerUI
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
+
+ /* Mode selector tabs */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: 0
+
+ ~&7712155293725601&~ {
+ ~&214634455770&~: [
+ { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
+ { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
+ ]
+ ~&7712922269353028&~: ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 68
+
+ readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
+
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&254539508423767444&~.~&197101097&~
+ ~&6503823200&~.~&254543497768871654&~: 24
+ ~&6503823200&~.~&6503679370&~: ~&7082453764421&~
+ ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&6504295855&~();
+ ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
+ ~&5972376&~ (!~&254539508423767444&~.isTimer) {
+ ~&7082020628281&~.timerManager.totalMs = 0;
+ }
+ ~&7082020628281&~.timerManager.refresh();
+ }
+ }
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
+ ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
+ ~&7082729686082&~: 3
+ ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
+ }
+ }
+ }
+ }
+
+ /* Time display (fixed width to avoid resizing) */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&7797818826744279624&~: 300
+ ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
+ ~&6503165774&~ {
+ ~&5972374&~: _display
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
+ ~&6503823200&~.~&254543497768871654&~: 56
+ ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
+ }
+ }
+
+ /* Preset buttons (timer mode only) */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
+
+ ~&7712155293725601&~ {
+ ~&214634455770&~: [
+ { ~&197101097&~: "1 m", ~&197102508&~: 60000 },
+ { ~&197101097&~: "5 m", ~&197102508&~: 300000 },
+ { ~&197101097&~: "10 m", ~&197102508&~: 600000 },
+ { ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
+ { ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
+ ]
+ ~&7712922269353028&~: ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 50
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&214622605608&~: "#EEEEEE"
+ }
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&254539508423767444&~.~&197101097&~
+ ~&6503823200&~.~&254543497768871654&~: 20
+ ~&6503823200&~.~&6503679370&~: ~&6504329801&~
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&6504295855&~();
+ ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
+ ~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
+ ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
+ ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
+ } ~&6503784146&~ {
+ ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
+ ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
+ }
+ ~&7082020628281&~.timerManager.refresh();
+ }
+ }
+ }
+ }
+ }
+
+ /* Control buttons */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+
+ /* Add/Set toggle (timer only) */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&7082507052999&~.~&214622605608&~: "#888888"
+ ~&7082507052999&~.~&214646099849&~: 1
+ ~&214622605608&~: ~&"503220030291830651&~
+ }
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
+ ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
+ }
+ }
+ }
+
+ /* Reset */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&7082507052999&~.~&214622605608&~: "#888888"
+ ~&7082507052999&~.~&214646099849&~: 1
+ ~&214622605608&~: ~&"503220030291830651&~
+ }
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
+ ~&7083172477658&~: ~&"6968812144639225076&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
+ }
+ }
+
+ /* Start / Stop */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
+ }
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
+ ~&6503823200&~.~&254543497768871654&~: 20
+ ~&6503823200&~.~&6503679370&~: ~&6504329801&~
+ ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
+ }
+ }
+ }
+ }
+ }
+
+ ~&425121728314878811&~.~&15740235808997988493&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ }
+ }
+ END TRAVERSE
+END AFFECT
+
+; Notification bar when timer finishes - visible in all modes
+AFFECT [[2328484894988065446]]
+ IMPORT [[233700934949963.233693781272506]] [[180922.180921]]
+
+ TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&425121728314878811&~.~&11119534664549952261&~ {
+ ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
+ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~
+ ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
+ ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: ~&"233701679664206&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.doReset();
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: "+1min"
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.totalMs += 60000;
+ ~&7082020628281&~.timerManager.remainMs += 60000;
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: "+5min"
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.totalMs += 300000;
+ ~&7082020628281&~.timerManager.remainMs += 300000;
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: ~&"214584551711&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.24.0.149/uncompressDock.qmd b/3.24.0.149/uncompressDock.qmd
new file mode 100644
index 0000000..1ab618a
--- /dev/null
+++ b/3.24.0.149/uncompressDock.qmd
@@ -0,0 +1,48 @@
+; credit: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/uncompressCreate.qmd
+AFFECT [[9238134294692494357]]
+ IMPORT [[7082573613689.6504391364.254540341572282132]] [[180922.180921]]
+ TRAVERSE [[6502786168]]#[[6504254477]]
+ TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
+ LOCATE AFTER [[7081201431623]]#[[6504074876]]
+ INSERT {
+ ~&254501108490678590&~ {
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
+ ~&7082729686082&~: 64
+ ~&214646099849&~: 2
+ ~&214622605608&~: ~&"214621299494&~
+ }
+ ~&7081201431623&~ {
+ ~&5972374&~: notebookButton
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
+ ~&8399601734642709923&~: ~&"8609871731041592465&~
+ ~&254542236275632405&~: ~&6504254477&~.~&7834776454199036121&~();
+ }
+ ~&254501108490678590&~ {
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
+ ~&7082729686082&~: 64
+ ~&214646099849&~: 2
+ ~&214622605608&~: ~&"214621299494&~
+ }
+ ~&7081201431623&~ {
+ ~&5972374&~: folderButton
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
+ ~&8399601734642709923&~: ~&"1888152859110688812&~
+ ~&254542236275632405&~: ~&6504254477&~.~&4100702871256454852&~();
+ }
+ ~&254501108490678590&~ {
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
+ ~&7082729686082&~: 64
+ ~&214646099849&~: 2
+ ~&214622605608&~: ~&"214621299494&~
+ }
+ ~&7081201431623&~ {
+ ~&5972374&~: quickSheetsButton
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
+ ~&8399601734642709923&~: ~&"5726907772531472741&~
+ ~&254542236275632405&~: ~&6504254477&~.~&8127652744343790830&~();
+ }
+ }
+ REMOVE [[7081201431623]]#[[6504074876]]
+ END TRAVERSE
+ END TRAVERSE
+END AFFECT
\ No newline at end of file
diff --git a/3.25.1.1/batteryPercentage.qmd b/3.25.1.1/batteryPercentage.qmd
new file mode 100644
index 0000000..111878d
--- /dev/null
+++ b/3.25.1.1/batteryPercentage.qmd
@@ -0,0 +1,14 @@
+AFFECT [[16664384747789373392]]
+ TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&6503165774&~ {
+ ~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ ~&6503823200&~.~&254543497768871654&~: 24
+ ~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.25.1.1/clock.qmd b/3.25.1.1/clock.qmd
new file mode 100644
index 0000000..186f875
--- /dev/null
+++ b/3.25.1.1/clock.qmd
@@ -0,0 +1,62 @@
+; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
+AFFECT [[4911547370760691430]]
+ TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
+ LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
+ INSERT {
+ ~&16385778650434842232&~ {
+ ~&5972374&~: clockSidebarItem
+ ~&8399878573055752961&~: "clockSidebarObject"
+ ~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
+ ~&8399601734642709923&~: ~&"4628214070783643584&~
+ ~&7082453764421&~: ~&214625660372&~
+ ~&233726547792244&~: ~&6504329801&~
+
+ /* 1000 = 1 second / 60000 = 1 minute */
+ property ~&197088788&~ set_Timer: 60000
+ property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
+
+ function getCestTime() {
+ ~&7083121450889&~ new ~&6502586279&~();
+ }
+
+ ~&254480451320573660&~.~&495334332051582499&~: {
+ ~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
+ }
+
+ ~&254542236275632405&~: {
+
+ ~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
+ clockSidebarItem.set_Timer = 1000;
+ clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
+ } ~&6503784146&~ {
+ clockSidebarItem.set_Timer = 60000;
+ clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
+ }
+
+ ~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
+ clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
+ }
+
+ /* Timer for update time */
+ ~&214604601930&~ {
+ ~&5972374&~: ~&214642551402&~
+ ~&7713147298280334&~: clockSidebarItem.set_Timer
+ ~&7083121289162&~: ~&6504329801&~
+ ~&233743626668842&~: ~&6504329801&~
+
+ ~&495358363329399331&~: {
+ clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
+ }
+ }
+
+ ~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
+ ~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
+ ~&11921478716705041271&~: ~&6504254477&~
+
+ function ~&7712792149454042&~() {
+ ~&7083211098251&~();
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.25.1.1/convertToText_remover.qmd b/3.25.1.1/convertToText_remover.qmd
new file mode 100644
index 0000000..a878604
--- /dev/null
+++ b/3.25.1.1/convertToText_remover.qmd
@@ -0,0 +1,11 @@
+AFFECT [[3197972396468700595]]
+ TRAVERSE [[6502786168]]#[[10742505294233322867]]
+ TRAVERSE [[12395602925408354507]]#[[214642769434]]
+ REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
+ END TRAVERSE
+ END TRAVERSE
+END AFFECT
+
+AFFECT [[3513522976947834303]]
+ REMOVE [[454089850271038938]]
+END AFFECT
diff --git a/3.25.1.1/quickSettingsClock.qmd b/3.25.1.1/quickSettingsClock.qmd
new file mode 100644
index 0000000..b6f5094
--- /dev/null
+++ b/3.25.1.1/quickSettingsClock.qmd
@@ -0,0 +1,68 @@
+; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
+AFFECT [[12542166428983872557]]
+ IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
+
+ TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
+
+ LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
+
+ INSERT {
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+
+ ~&14397210151462632996&~ {
+ ~&5972374&~: quickSettingsClock
+ ~&233721384511543&~ {
+ ~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
+ }
+
+ property ~&6503679477&~ showSeconds: ~&214625660372&~
+ property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
+ property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
+ property ~&197088788&~ minuteInterval: 60000
+ property ~&197088788&~ secondInterval: 1000
+
+ ~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
+
+ function updateClock() {
+ ~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
+ }
+
+ ~&254480451320573660&~.~&495334332051582499&~: {
+ updateClock();
+ }
+
+ onShowSecondsChanged: {
+ quickSettingsClockTimer.~&233743006639214&~();
+ updateClock();
+ }
+
+ ~&214604601930&~ {
+ ~&5972374&~: quickSettingsClockTimer
+ ~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
+ ~&7083121289162&~: ~&6504329801&~
+ ~&233743626668842&~: ~&6504329801&~
+
+ ~&495358363329399331&~: {
+ quickSettingsClock.updateClock();
+ }
+ }
+
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&477346538929698200&~: ~&5971598&~.PointingHandCursor
+ ~&254542236275632405&~: {
+ quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
+ }
+ }
+ }
+ }
+ }
+
+ END TRAVERSE
+
+END AFFECT
diff --git a/3.25.1.1/quickSettingsTimer.qmd b/3.25.1.1/quickSettingsTimer.qmd
new file mode 100644
index 0000000..97f5a5e
--- /dev/null
+++ b/3.25.1.1/quickSettingsTimer.qmd
@@ -0,0 +1,368 @@
+; Quick Settings Timer/Chrono
+; Adds a countdown timer and stopwatch to the quick settings panel
+; Timer state lives in Values.timerManager so it persists across menu opens/closes
+
+AFFECT [[1658694193319203921]]
+ TRAVERSE [[6502786168]]
+ LOCATE AFTER ALL
+ INSERT {
+ property ~&214620122227&~ timerManager: _timerManager
+
+ ~&6502786168&~ {
+ ~&5972374&~: _timerManager
+ property ~&6503679477&~ timerMode: ~&6504329801&~
+ property ~&197088788&~ totalMs: 0
+ property ~&197088788&~ remainMs: 0
+ property ~&6503679477&~ isRunning: ~&214625660372&~
+ property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
+ property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
+ property ~&197088788&~ presetMs: 60000
+ property ~&6503679477&~ addMode: ~&6504329801&~
+
+ function fmt(ms) {
+ ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms);
+ ~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
+ ~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
+ ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
+ ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
+ ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
+
+ ~&5972376&~ (~&180977&~ > 0) {
+ ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
+ }
+ ~&7083121450889&~ mm + ~&"180931&~ + ss;
+ }
+
+ function refresh() {
+ ~&5972376&~ (timerMode) {
+ ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
+ } ~&6503784146&~ {
+ ~&478322454160073828&~ = fmt(totalMs);
+ }
+ }
+
+ function go() {
+ ~&5972376&~ (timerMode) {
+ ~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
+ }
+ ~&16765420033347753489&~ = ~&214625660372&~;
+ isRunning = ~&6504329801&~;
+ _tick.~&214641748151&~();
+ }
+
+ function ~&6504295855&~() {
+ isRunning = ~&214625660372&~;
+ _tick.~&6504295855&~();
+ }
+
+ function doReset() {
+ ~&6504295855&~();
+ ~&16765420033347753489&~ = ~&214625660372&~;
+ ~&5972376&~ (timerMode) {
+ remainMs = totalMs;
+ } ~&6503784146&~ {
+ totalMs = 0;
+ }
+ refresh();
+ }
+
+ ~&214604601930&~ {
+ ~&5972374&~: _tick
+ ~&7713147298280334&~: 100
+ ~&7083121289162&~: ~&6504329801&~
+ ~&495358363329399331&~: {
+ ~&5972376&~ (_timerManager.timerMode) {
+ _timerManager.remainMs -= 100;
+ ~&5972376&~ (_timerManager.remainMs <= 0) {
+ _timerManager.remainMs = 0;
+ _timerManager.~&6504295855&~();
+ _timerManager.~&16765420033347753489&~ = ~&6504329801&~;
+ }
+ } ~&6503784146&~ {
+ _timerManager.totalMs += 100;
+ }
+ _timerManager.refresh();
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
+
+AFFECT [[12542166428983872557]]
+ TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
+ LOCATE AFTER [[14125623155555875541]]#[[471169070310690832]]
+ INSERT {
+ ~&425121728314878811&~.~&15740235808997988493&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ }
+
+ ~&14125623155555875541&~ {
+ ~&5972374&~: _timerUI
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
+
+ /* Mode selector tabs */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: 0
+
+ ~&7712155293725601&~ {
+ ~&214634455770&~: [
+ { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
+ { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
+ ]
+ ~&7712922269353028&~: ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 68
+
+ readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
+
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&254539508423767444&~.~&197101097&~
+ ~&6503823200&~.~&254543497768871654&~: 24
+ ~&6503823200&~.~&6503679370&~: ~&7082453764421&~
+ ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&6504295855&~();
+ ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
+ ~&5972376&~ (!~&254539508423767444&~.isTimer) {
+ ~&7082020628281&~.timerManager.totalMs = 0;
+ }
+ ~&7082020628281&~.timerManager.refresh();
+ }
+ }
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
+ ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
+ ~&7082729686082&~: 3
+ ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
+ }
+ }
+ }
+ }
+
+ /* Time display (fixed width to avoid resizing) */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&7797818826744279624&~: 300
+ ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
+ ~&6503165774&~ {
+ ~&5972374&~: _display
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
+ ~&6503823200&~.~&254543497768871654&~: 56
+ ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
+ }
+ }
+
+ /* Preset buttons (timer mode only) */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
+
+ ~&7712155293725601&~ {
+ ~&214634455770&~: [
+ { ~&197101097&~: "1 m", ~&197102508&~: 60000 },
+ { ~&197101097&~: "5 m", ~&197102508&~: 300000 },
+ { ~&197101097&~: "10 m", ~&197102508&~: 600000 },
+ { ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
+ { ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
+ ]
+ ~&7712922269353028&~: ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 50
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&214622605608&~: "#EEEEEE"
+ }
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&254539508423767444&~.~&197101097&~
+ ~&6503823200&~.~&254543497768871654&~: 20
+ ~&6503823200&~.~&6503679370&~: ~&6504329801&~
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&6504295855&~();
+ ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
+ ~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
+ ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
+ ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
+ } ~&6503784146&~ {
+ ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
+ ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
+ }
+ ~&7082020628281&~.timerManager.refresh();
+ }
+ }
+ }
+ }
+ }
+
+ /* Control buttons */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+
+ /* Add/Set toggle (timer only) */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&7082507052999&~.~&214622605608&~: "#888888"
+ ~&7082507052999&~.~&214646099849&~: 1
+ ~&214622605608&~: ~&"503220030291830651&~
+ }
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
+ ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
+ }
+ }
+ }
+
+ /* Reset */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&7082507052999&~.~&214622605608&~: "#888888"
+ ~&7082507052999&~.~&214646099849&~: 1
+ ~&214622605608&~: ~&"503220030291830651&~
+ }
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
+ ~&7083172477658&~: ~&"6968812144639225076&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
+ }
+ }
+
+ /* Start / Stop */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
+ }
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
+ ~&6503823200&~.~&254543497768871654&~: 20
+ ~&6503823200&~.~&6503679370&~: ~&6504329801&~
+ ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
+ }
+ }
+ }
+ }
+ }
+
+ ~&425121728314878811&~.~&15740235808997988493&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ }
+ }
+ END TRAVERSE
+END AFFECT
+
+; Notification bar when timer finishes - visible in all modes
+AFFECT [[2328484894988065446]]
+ IMPORT [[233700934949963.233693781272506]] [[180922.180921]]
+
+ TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&425121728314878811&~.~&11119534664549952261&~ {
+ ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
+ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~
+ ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
+ ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: ~&"233701679664206&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.doReset();
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: "+1min"
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.totalMs += 60000;
+ ~&7082020628281&~.timerManager.remainMs += 60000;
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: "+5min"
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.totalMs += 300000;
+ ~&7082020628281&~.timerManager.remainMs += 300000;
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: ~&"214584551711&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.25.1.1/uncompressDock.qmd b/3.25.1.1/uncompressDock.qmd
new file mode 100644
index 0000000..1ab618a
--- /dev/null
+++ b/3.25.1.1/uncompressDock.qmd
@@ -0,0 +1,48 @@
+; credit: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/uncompressCreate.qmd
+AFFECT [[9238134294692494357]]
+ IMPORT [[7082573613689.6504391364.254540341572282132]] [[180922.180921]]
+ TRAVERSE [[6502786168]]#[[6504254477]]
+ TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
+ LOCATE AFTER [[7081201431623]]#[[6504074876]]
+ INSERT {
+ ~&254501108490678590&~ {
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
+ ~&7082729686082&~: 64
+ ~&214646099849&~: 2
+ ~&214622605608&~: ~&"214621299494&~
+ }
+ ~&7081201431623&~ {
+ ~&5972374&~: notebookButton
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
+ ~&8399601734642709923&~: ~&"8609871731041592465&~
+ ~&254542236275632405&~: ~&6504254477&~.~&7834776454199036121&~();
+ }
+ ~&254501108490678590&~ {
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
+ ~&7082729686082&~: 64
+ ~&214646099849&~: 2
+ ~&214622605608&~: ~&"214621299494&~
+ }
+ ~&7081201431623&~ {
+ ~&5972374&~: folderButton
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
+ ~&8399601734642709923&~: ~&"1888152859110688812&~
+ ~&254542236275632405&~: ~&6504254477&~.~&4100702871256454852&~();
+ }
+ ~&254501108490678590&~ {
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
+ ~&7082729686082&~: 64
+ ~&214646099849&~: 2
+ ~&214622605608&~: ~&"214621299494&~
+ }
+ ~&7081201431623&~ {
+ ~&5972374&~: quickSheetsButton
+ ~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
+ ~&8399601734642709923&~: ~&"5726907772531472741&~
+ ~&254542236275632405&~: ~&6504254477&~.~&8127652744343790830&~();
+ }
+ }
+ REMOVE [[7081201431623]]#[[6504074876]]
+ END TRAVERSE
+ END TRAVERSE
+END AFFECT
\ No newline at end of file
diff --git a/3.26.0.68/batteryPercentage.qmd b/3.26.0.68/batteryPercentage.qmd
new file mode 100644
index 0000000..111878d
--- /dev/null
+++ b/3.26.0.68/batteryPercentage.qmd
@@ -0,0 +1,14 @@
+AFFECT [[16664384747789373392]]
+ TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&6503165774&~ {
+ ~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ ~&6503823200&~.~&254543497768871654&~: 24
+ ~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.26.0.68/clock.qmd b/3.26.0.68/clock.qmd
new file mode 100644
index 0000000..34d80c1
--- /dev/null
+++ b/3.26.0.68/clock.qmd
@@ -0,0 +1,62 @@
+; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
+AFFECT [[4911547370760691430]]
+ TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
+ LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
+ INSERT {
+ ~&16385778650434842232&~ {
+ ~&5972374&~: clockSidebarItem
+ ~&8399878573055752961&~: "clockSidebarObject"
+ ~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
+ ~&8399601734642709923&~: ~&"4628214070783643584&~
+ ~&7082453764421&~: ~&214625660372&~
+ ~&233726547792244&~: ~&6504329801&~
+
+ /* 1000 = 1 second / 60000 = 1 minute */
+ property ~&197088788&~ set_Timer: 60000
+ property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
+
+ function getCestTime() {
+ ~&7083121450889&~ new ~&6502586279&~();
+ }
+
+ ~&254480451320573660&~.~&495334332051582499&~: {
+ ~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
+ }
+
+ ~&254542236275632405&~: {
+
+ ~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
+ clockSidebarItem.set_Timer = 1000;
+ clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
+ } ~&6503784146&~ {
+ clockSidebarItem.set_Timer = 60000;
+ clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
+ }
+
+ ~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
+ clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
+ }
+
+ /* Timer for update time */
+ ~&214604601930&~ {
+ ~&5972374&~: ~&214642551402&~
+ ~&7713147298280334&~: clockSidebarItem.set_Timer
+ ~&7083121289162&~: ~&6504329801&~
+ ~&233743626668842&~: ~&6504329801&~
+
+ ~&495358363329399331&~: {
+ clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
+ }
+ }
+
+ ~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
+ ~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
+ ~&11921478716705041271&~: ~&6504254477&~
+
+ function ~&7712792149454042&~() {
+ ~&7083211098251&~();
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.26.0.68/convertToText_remover.qmd b/3.26.0.68/convertToText_remover.qmd
new file mode 100644
index 0000000..a878604
--- /dev/null
+++ b/3.26.0.68/convertToText_remover.qmd
@@ -0,0 +1,11 @@
+AFFECT [[3197972396468700595]]
+ TRAVERSE [[6502786168]]#[[10742505294233322867]]
+ TRAVERSE [[12395602925408354507]]#[[214642769434]]
+ REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
+ END TRAVERSE
+ END TRAVERSE
+END AFFECT
+
+AFFECT [[3513522976947834303]]
+ REMOVE [[454089850271038938]]
+END AFFECT
diff --git a/3.26.0.68/quickSettingsClock.qmd b/3.26.0.68/quickSettingsClock.qmd
new file mode 100644
index 0000000..aba5e42
--- /dev/null
+++ b/3.26.0.68/quickSettingsClock.qmd
@@ -0,0 +1,68 @@
+; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
+AFFECT [[12542166428983872557]]
+ IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
+
+ TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
+
+ LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
+
+ INSERT {
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+
+ ~&14397210151462632996&~ {
+ ~&5972374&~: quickSettingsClock
+ ~&233721384511543&~ {
+ ~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
+ }
+
+ property ~&6503679477&~ showSeconds: ~&214625660372&~
+ property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
+ property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
+ property ~&197088788&~ minuteInterval: 60000
+ property ~&197088788&~ secondInterval: 1000
+
+ ~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
+
+ function updateClock() {
+ ~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
+ }
+
+ ~&254480451320573660&~.~&495334332051582499&~: {
+ updateClock();
+ }
+
+ onShowSecondsChanged: {
+ quickSettingsClockTimer.~&233743006639214&~();
+ updateClock();
+ }
+
+ ~&214604601930&~ {
+ ~&5972374&~: quickSettingsClockTimer
+ ~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
+ ~&7083121289162&~: ~&6504329801&~
+ ~&233743626668842&~: ~&6504329801&~
+
+ ~&495358363329399331&~: {
+ quickSettingsClock.updateClock();
+ }
+ }
+
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&477346538929698200&~: ~&5971598&~.PointingHandCursor
+ ~&254542236275632405&~: {
+ quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
+ }
+ }
+ }
+ }
+ }
+
+ END TRAVERSE
+
+END AFFECT
diff --git a/3.26.0.68/quickSettingsTimer.qmd b/3.26.0.68/quickSettingsTimer.qmd
new file mode 100644
index 0000000..97f5a5e
--- /dev/null
+++ b/3.26.0.68/quickSettingsTimer.qmd
@@ -0,0 +1,368 @@
+; Quick Settings Timer/Chrono
+; Adds a countdown timer and stopwatch to the quick settings panel
+; Timer state lives in Values.timerManager so it persists across menu opens/closes
+
+AFFECT [[1658694193319203921]]
+ TRAVERSE [[6502786168]]
+ LOCATE AFTER ALL
+ INSERT {
+ property ~&214620122227&~ timerManager: _timerManager
+
+ ~&6502786168&~ {
+ ~&5972374&~: _timerManager
+ property ~&6503679477&~ timerMode: ~&6504329801&~
+ property ~&197088788&~ totalMs: 0
+ property ~&197088788&~ remainMs: 0
+ property ~&6503679477&~ isRunning: ~&214625660372&~
+ property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
+ property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
+ property ~&197088788&~ presetMs: 60000
+ property ~&6503679477&~ addMode: ~&6504329801&~
+
+ function fmt(ms) {
+ ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms);
+ ~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
+ ~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
+ ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
+ ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
+ ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
+
+ ~&5972376&~ (~&180977&~ > 0) {
+ ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
+ }
+ ~&7083121450889&~ mm + ~&"180931&~ + ss;
+ }
+
+ function refresh() {
+ ~&5972376&~ (timerMode) {
+ ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
+ } ~&6503784146&~ {
+ ~&478322454160073828&~ = fmt(totalMs);
+ }
+ }
+
+ function go() {
+ ~&5972376&~ (timerMode) {
+ ~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
+ }
+ ~&16765420033347753489&~ = ~&214625660372&~;
+ isRunning = ~&6504329801&~;
+ _tick.~&214641748151&~();
+ }
+
+ function ~&6504295855&~() {
+ isRunning = ~&214625660372&~;
+ _tick.~&6504295855&~();
+ }
+
+ function doReset() {
+ ~&6504295855&~();
+ ~&16765420033347753489&~ = ~&214625660372&~;
+ ~&5972376&~ (timerMode) {
+ remainMs = totalMs;
+ } ~&6503784146&~ {
+ totalMs = 0;
+ }
+ refresh();
+ }
+
+ ~&214604601930&~ {
+ ~&5972374&~: _tick
+ ~&7713147298280334&~: 100
+ ~&7083121289162&~: ~&6504329801&~
+ ~&495358363329399331&~: {
+ ~&5972376&~ (_timerManager.timerMode) {
+ _timerManager.remainMs -= 100;
+ ~&5972376&~ (_timerManager.remainMs <= 0) {
+ _timerManager.remainMs = 0;
+ _timerManager.~&6504295855&~();
+ _timerManager.~&16765420033347753489&~ = ~&6504329801&~;
+ }
+ } ~&6503784146&~ {
+ _timerManager.totalMs += 100;
+ }
+ _timerManager.refresh();
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
+
+AFFECT [[12542166428983872557]]
+ TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
+ LOCATE AFTER [[14125623155555875541]]#[[471169070310690832]]
+ INSERT {
+ ~&425121728314878811&~.~&15740235808997988493&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ }
+
+ ~&14125623155555875541&~ {
+ ~&5972374&~: _timerUI
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
+
+ /* Mode selector tabs */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: 0
+
+ ~&7712155293725601&~ {
+ ~&214634455770&~: [
+ { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
+ { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
+ ]
+ ~&7712922269353028&~: ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 68
+
+ readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
+
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&254539508423767444&~.~&197101097&~
+ ~&6503823200&~.~&254543497768871654&~: 24
+ ~&6503823200&~.~&6503679370&~: ~&7082453764421&~
+ ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&6504295855&~();
+ ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
+ ~&5972376&~ (!~&254539508423767444&~.isTimer) {
+ ~&7082020628281&~.timerManager.totalMs = 0;
+ }
+ ~&7082020628281&~.timerManager.refresh();
+ }
+ }
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
+ ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
+ ~&7082729686082&~: 3
+ ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
+ }
+ }
+ }
+ }
+
+ /* Time display (fixed width to avoid resizing) */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&7797818826744279624&~: 300
+ ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
+ ~&6503165774&~ {
+ ~&5972374&~: _display
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
+ ~&6503823200&~.~&254543497768871654&~: 56
+ ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
+ }
+ }
+
+ /* Preset buttons (timer mode only) */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
+
+ ~&7712155293725601&~ {
+ ~&214634455770&~: [
+ { ~&197101097&~: "1 m", ~&197102508&~: 60000 },
+ { ~&197101097&~: "5 m", ~&197102508&~: 300000 },
+ { ~&197101097&~: "10 m", ~&197102508&~: 600000 },
+ { ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
+ { ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
+ ]
+ ~&7712922269353028&~: ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 50
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&214622605608&~: "#EEEEEE"
+ }
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&254539508423767444&~.~&197101097&~
+ ~&6503823200&~.~&254543497768871654&~: 20
+ ~&6503823200&~.~&6503679370&~: ~&6504329801&~
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&6504295855&~();
+ ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
+ ~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
+ ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
+ ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
+ } ~&6503784146&~ {
+ ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
+ ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
+ }
+ ~&7082020628281&~.timerManager.refresh();
+ }
+ }
+ }
+ }
+ }
+
+ /* Control buttons */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+
+ /* Add/Set toggle (timer only) */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&7082507052999&~.~&214622605608&~: "#888888"
+ ~&7082507052999&~.~&214646099849&~: 1
+ ~&214622605608&~: ~&"503220030291830651&~
+ }
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
+ ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
+ }
+ }
+ }
+
+ /* Reset */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&7082507052999&~.~&214622605608&~: "#888888"
+ ~&7082507052999&~.~&214646099849&~: 1
+ ~&214622605608&~: ~&"503220030291830651&~
+ }
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
+ ~&7083172477658&~: ~&"6968812144639225076&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
+ }
+ }
+
+ /* Start / Stop */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
+ }
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
+ ~&6503823200&~.~&254543497768871654&~: 20
+ ~&6503823200&~.~&6503679370&~: ~&6504329801&~
+ ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
+ }
+ }
+ }
+ }
+ }
+
+ ~&425121728314878811&~.~&15740235808997988493&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ }
+ }
+ END TRAVERSE
+END AFFECT
+
+; Notification bar when timer finishes - visible in all modes
+AFFECT [[2328484894988065446]]
+ IMPORT [[233700934949963.233693781272506]] [[180922.180921]]
+
+ TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&425121728314878811&~.~&11119534664549952261&~ {
+ ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
+ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~
+ ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
+ ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: ~&"233701679664206&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.doReset();
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: "+1min"
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.totalMs += 60000;
+ ~&7082020628281&~.timerManager.remainMs += 60000;
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: "+5min"
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.totalMs += 300000;
+ ~&7082020628281&~.timerManager.remainMs += 300000;
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: ~&"214584551711&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.26.0.68/uncompressDock.qmd b/3.26.0.68/uncompressDock.qmd
new file mode 100644
index 0000000..3c6b361
--- /dev/null
+++ b/3.26.0.68/uncompressDock.qmd
@@ -0,0 +1,89 @@
+; ported from 3.23.0.64
+; In 3.22/3.23 the create buttons were emitted by a C++ Repeater (not QML).
+; By 3.27 the firmware migrated to a QML Repeater backed by createWidgets model,
+; so this QMD was rewritten: it keeps the Repeater (search, calendar, quick-sheet)
+; and inserts the notebook, folder and quick-sheet buttons inline after it.
+AFFECT [[13636194074538366841]]
+ TRAVERSE [[6502786168]]#[[6504254477]]
+ TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&254501108490678590&~ {
+ ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
+ ~&7081629735527&~.~&16239278111605497701&~: 2
+ ~&214622605608&~: ~&"214621299494&~
+ ~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
+ }
+ ~&254494525842443467&~ {
+ ~&5972374&~: _notebookBtn
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&16239278111605497701&~: 64
+ ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: 40
+ ~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
+ ~&14125623155555875541&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&233744706647566&~: 0
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
+ ~&7083172477658&~: ~&"8609871731041592465&~
+ }
+ }
+ ~&254542236275632405&~: {
+ ~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
+ ~&197093806&~.~&11689254259907176254&~();
+ }
+ }
+ ~&254494525842443467&~ {
+ ~&5972374&~: _folderBtn
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&16239278111605497701&~: 64
+ ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: 40
+ ~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~
+ ~&14125623155555875541&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&233744706647566&~: 0
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
+ ~&7083172477658&~: ~&"1888152859110688812&~
+ }
+ }
+ ~&254542236275632405&~: {
+ ~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
+ ~&197093806&~.~&1343967321191992457&~(~&"477188259920763378&~);
+ }
+ }
+ ~&254494525842443467&~ {
+ ~&5972374&~: _quickSheetBtn
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&16239278111605497701&~: 64
+ ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: 40
+ ~&7081629735527&~.~&499747351624466981&~: 40
+ ~&233748328658231&~: ~&6504254477&~.~&6504391364&~ !== ~&"214642862219&~
+ ~&14125623155555875541&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&233744706647566&~: 0
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
+ ~&7083172477658&~: ~&"5726907772531472741&~
+ }
+ }
+ ~&254542236275632405&~: {
+ ~&197102514&~ doc = ~&2918312801265623842&~.~&498775298796480658&~();
+ ~&5972376&~ (doc && doc.~&6504337259&~ === 1) {
+ ~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
+ ~&197093806&~.~&2766288418351025740&~.~&6504147419&~(~&"80852525132738217&~, {
+ ~&8399386052748489877&~: doc.~&5972374&~,
+ ~&6504167078&~: doc.~&254543134818768527&~ - 1
+ });
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.27.1.0/batteryPercentage.qmd b/3.27.1.0/batteryPercentage.qmd
new file mode 100644
index 0000000..111878d
--- /dev/null
+++ b/3.27.1.0/batteryPercentage.qmd
@@ -0,0 +1,14 @@
+AFFECT [[16664384747789373392]]
+ TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&6503165774&~ {
+ ~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ ~&6503823200&~.~&254543497768871654&~: 24
+ ~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.27.1.0/clock.qmd b/3.27.1.0/clock.qmd
new file mode 100644
index 0000000..ba97965
--- /dev/null
+++ b/3.27.1.0/clock.qmd
@@ -0,0 +1,62 @@
+; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
+AFFECT [[4911547370760691430]]
+ TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
+ LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
+ INSERT {
+ ~&16385778650434842232&~ {
+ ~&5972374&~: clockSidebarItem
+ ~&8399878573055752961&~: "clockSidebarObject"
+ ~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
+ ~&8399601734642709923&~: ~&"4628214070783643584&~
+ ~&7082453764421&~: ~&214625660372&~
+ ~&233726547792244&~: ~&6504329801&~
+
+ /* 1000 = 1 second / 60000 = 1 minute */
+ property ~&197088788&~ set_Timer: 60000
+ property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
+
+ function getCestTime() {
+ ~&7083121450889&~ new ~&6502586279&~();
+ }
+
+ ~&254480451320573660&~.~&495334332051582499&~: {
+ ~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
+ }
+
+ ~&254542236275632405&~: {
+
+ ~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
+ clockSidebarItem.set_Timer = 1000;
+ clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
+ } ~&6503784146&~ {
+ clockSidebarItem.set_Timer = 60000;
+ clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
+ }
+
+ ~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
+ clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
+ }
+
+ /* Timer for update time */
+ ~&214604601930&~ {
+ ~&5972374&~: ~&214642551402&~
+ ~&7713147298280334&~: clockSidebarItem.set_Timer
+ ~&7083121289162&~: ~&6504329801&~
+ ~&233743626668842&~: ~&6504329801&~
+
+ ~&495358363329399331&~: {
+ clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
+ }
+ }
+
+ ~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
+ ~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
+ ~&11921478716705041271&~: ~&6504254477&~
+
+ function ~&7712792149454042&~() {
+ ~&7083211098251&~();
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.27.1.0/convertToText_remover.qmd b/3.27.1.0/convertToText_remover.qmd
new file mode 100644
index 0000000..a878604
--- /dev/null
+++ b/3.27.1.0/convertToText_remover.qmd
@@ -0,0 +1,11 @@
+AFFECT [[3197972396468700595]]
+ TRAVERSE [[6502786168]]#[[10742505294233322867]]
+ TRAVERSE [[12395602925408354507]]#[[214642769434]]
+ REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
+ END TRAVERSE
+ END TRAVERSE
+END AFFECT
+
+AFFECT [[3513522976947834303]]
+ REMOVE [[454089850271038938]]
+END AFFECT
diff --git a/3.27.1.0/quickSettingsClock.qmd b/3.27.1.0/quickSettingsClock.qmd
new file mode 100644
index 0000000..bce58c5
--- /dev/null
+++ b/3.27.1.0/quickSettingsClock.qmd
@@ -0,0 +1,68 @@
+; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
+AFFECT [[12542166428983872557]]
+ IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
+
+ TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
+
+ LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
+
+ INSERT {
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+
+ ~&14397210151462632996&~ {
+ ~&5972374&~: quickSettingsClock
+ ~&233721384511543&~ {
+ ~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
+ }
+
+ property ~&6503679477&~ showSeconds: ~&214625660372&~
+ property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
+ property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
+ property ~&197088788&~ minuteInterval: 60000
+ property ~&197088788&~ secondInterval: 1000
+
+ ~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
+
+ function updateClock() {
+ ~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
+ }
+
+ ~&254480451320573660&~.~&495334332051582499&~: {
+ updateClock();
+ }
+
+ onShowSecondsChanged: {
+ quickSettingsClockTimer.~&233743006639214&~();
+ updateClock();
+ }
+
+ ~&214604601930&~ {
+ ~&5972374&~: quickSettingsClockTimer
+ ~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
+ ~&7083121289162&~: ~&6504329801&~
+ ~&233743626668842&~: ~&6504329801&~
+
+ ~&495358363329399331&~: {
+ quickSettingsClock.updateClock();
+ }
+ }
+
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&477346538929698200&~: ~&5971598&~.PointingHandCursor
+ ~&254542236275632405&~: {
+ quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
+ }
+ }
+ }
+ }
+ }
+
+ END TRAVERSE
+
+END AFFECT
diff --git a/3.27.1.0/quickSettingsTimer.qmd b/3.27.1.0/quickSettingsTimer.qmd
new file mode 100644
index 0000000..d828f52
--- /dev/null
+++ b/3.27.1.0/quickSettingsTimer.qmd
@@ -0,0 +1,368 @@
+; Quick Settings Timer/Chrono
+; Adds a countdown timer and stopwatch to the quick settings panel
+; Timer state lives in Values.timerManager so it persists across menu opens/closes
+
+AFFECT [[1658694193319203921]]
+ TRAVERSE [[6502786168]]
+ LOCATE AFTER ALL
+ INSERT {
+ property ~&214620122227&~ timerManager: _timerManager
+
+ ~&6502786168&~ {
+ ~&5972374&~: _timerManager
+ property ~&6503679477&~ timerMode: ~&6504329801&~
+ property ~&197088788&~ totalMs: 0
+ property ~&197088788&~ remainMs: 0
+ property ~&6503679477&~ isRunning: ~&214625660372&~
+ property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
+ property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
+ property ~&197088788&~ presetMs: 60000
+ property ~&6503679477&~ addMode: ~&6504329801&~
+
+ function fmt(~&5972521&~) {
+ ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(~&5972521&~);
+ ~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
+ ~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
+ ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
+ ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
+ ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
+
+ ~&5972376&~ (~&180977&~ > 0) {
+ ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
+ }
+ ~&7083121450889&~ mm + ~&"180931&~ + ss;
+ }
+
+ function refresh() {
+ ~&5972376&~ (timerMode) {
+ ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
+ } ~&6503784146&~ {
+ ~&478322454160073828&~ = fmt(totalMs);
+ }
+ }
+
+ function go() {
+ ~&5972376&~ (timerMode) {
+ ~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
+ }
+ ~&16765420033347753489&~ = ~&214625660372&~;
+ isRunning = ~&6504329801&~;
+ _tick.~&214641748151&~();
+ }
+
+ function ~&6504295855&~() {
+ isRunning = ~&214625660372&~;
+ _tick.~&6504295855&~();
+ }
+
+ function doReset() {
+ ~&6504295855&~();
+ ~&16765420033347753489&~ = ~&214625660372&~;
+ ~&5972376&~ (timerMode) {
+ remainMs = totalMs;
+ } ~&6503784146&~ {
+ totalMs = 0;
+ }
+ refresh();
+ }
+
+ ~&214604601930&~ {
+ ~&5972374&~: _tick
+ ~&7713147298280334&~: 100
+ ~&7083121289162&~: ~&6504329801&~
+ ~&495358363329399331&~: {
+ ~&5972376&~ (_timerManager.timerMode) {
+ _timerManager.remainMs -= 100;
+ ~&5972376&~ (_timerManager.remainMs <= 0) {
+ _timerManager.remainMs = 0;
+ _timerManager.~&6504295855&~();
+ _timerManager.~&16765420033347753489&~ = ~&6504329801&~;
+ }
+ } ~&6503784146&~ {
+ _timerManager.totalMs += 100;
+ }
+ _timerManager.refresh();
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
+
+AFFECT [[12542166428983872557]]
+ TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
+ LOCATE AFTER [[14125623155555875541]]#[[471169070310690832]]
+ INSERT {
+ ~&425121728314878811&~.~&15740235808997988493&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ }
+
+ ~&14125623155555875541&~ {
+ ~&5972374&~: _timerUI
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
+
+ /* Mode selector tabs */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: 0
+
+ ~&7712155293725601&~ {
+ ~&214634455770&~: [
+ { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
+ { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
+ ]
+ ~&7712922269353028&~: ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 68
+
+ readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
+
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&254539508423767444&~.~&197101097&~
+ ~&6503823200&~.~&254543497768871654&~: 24
+ ~&6503823200&~.~&6503679370&~: ~&7082453764421&~
+ ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&6504295855&~();
+ ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
+ ~&5972376&~ (!~&254539508423767444&~.isTimer) {
+ ~&7082020628281&~.timerManager.totalMs = 0;
+ }
+ ~&7082020628281&~.timerManager.refresh();
+ }
+ }
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
+ ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
+ ~&7082729686082&~: 3
+ ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
+ }
+ }
+ }
+ }
+
+ /* Time display (fixed width to avoid resizing) */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&7797818826744279624&~: 300
+ ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
+ ~&6503165774&~ {
+ ~&5972374&~: _display
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
+ ~&6503823200&~.~&254543497768871654&~: 56
+ ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
+ }
+ }
+
+ /* Preset buttons (timer mode only) */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
+
+ ~&7712155293725601&~ {
+ ~&214634455770&~: [
+ { ~&197101097&~: "1 m", ~&197102508&~: 60000 },
+ { ~&197101097&~: "5 m", ~&197102508&~: 300000 },
+ { ~&197101097&~: "10 m", ~&197102508&~: 600000 },
+ { ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
+ { ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
+ ]
+ ~&7712922269353028&~: ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 50
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&214622605608&~: "#EEEEEE"
+ }
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&254539508423767444&~.~&197101097&~
+ ~&6503823200&~.~&254543497768871654&~: 20
+ ~&6503823200&~.~&6503679370&~: ~&6504329801&~
+ ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&6504295855&~();
+ ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
+ ~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
+ ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
+ ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
+ } ~&6503784146&~ {
+ ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
+ ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
+ }
+ ~&7082020628281&~.timerManager.refresh();
+ }
+ }
+ }
+ }
+ }
+
+ /* Control buttons */
+ ~&254501558939456351&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+
+ /* Add/Set toggle (timer only) */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&7082507052999&~.~&214622605608&~: "#888888"
+ ~&7082507052999&~.~&214646099849&~: 1
+ ~&214622605608&~: ~&"503220030291830651&~
+ }
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
+ ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
+ }
+ }
+ }
+
+ /* Reset */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&7082507052999&~.~&214622605608&~: "#888888"
+ ~&7082507052999&~.~&214646099849&~: 1
+ ~&214622605608&~: ~&"503220030291830651&~
+ }
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
+ ~&7083172477658&~: ~&"6968812144639225076&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
+ }
+ }
+
+ /* Start / Stop */
+ ~&6502786168&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&17520348323745447649&~: 70
+ ~&254501108490678590&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&7083116119249&~: 8
+ ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
+ }
+ ~&6503165774&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
+ ~&6503823200&~.~&254543497768871654&~: 20
+ ~&6503823200&~.~&6503679370&~: ~&6504329801&~
+ ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
+ }
+ ~&254494525842443467&~ {
+ ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
+ }
+ }
+ }
+ }
+ }
+
+ ~&425121728314878811&~.~&15740235808997988493&~ {
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
+ }
+ }
+ END TRAVERSE
+END AFFECT
+
+; Notification bar when timer finishes - visible in all modes
+AFFECT [[2328484894988065446]]
+ IMPORT [[233700934949963.233693781272506]] [[180922.180921]]
+
+ TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&425121728314878811&~.~&11119534664549952261&~ {
+ ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
+ ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
+ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
+ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~
+ ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
+ ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~
+ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~
+ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: ~&"233701679664206&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.doReset();
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: "+1min"
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.totalMs += 60000;
+ ~&7082020628281&~.timerManager.remainMs += 60000;
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: "+5min"
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.totalMs += 300000;
+ ~&7082020628281&~.timerManager.remainMs += 300000;
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ ~&7082020628281&~.timerManager.go();
+ }
+ }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
+
+ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
+ ~&6504315758&~: ~&"214584551711&~
+ ~&254542236275632405&~: {
+ ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/3.27.1.0/uncompressDock.qmd b/3.27.1.0/uncompressDock.qmd
new file mode 100644
index 0000000..3c6b361
--- /dev/null
+++ b/3.27.1.0/uncompressDock.qmd
@@ -0,0 +1,89 @@
+; ported from 3.23.0.64
+; In 3.22/3.23 the create buttons were emitted by a C++ Repeater (not QML).
+; By 3.27 the firmware migrated to a QML Repeater backed by createWidgets model,
+; so this QMD was rewritten: it keeps the Repeater (search, calendar, quick-sheet)
+; and inserts the notebook, folder and quick-sheet buttons inline after it.
+AFFECT [[13636194074538366841]]
+ TRAVERSE [[6502786168]]#[[6504254477]]
+ TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
+ LOCATE AFTER ALL
+ INSERT {
+ ~&254501108490678590&~ {
+ ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
+ ~&7081629735527&~.~&16239278111605497701&~: 2
+ ~&214622605608&~: ~&"214621299494&~
+ ~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
+ }
+ ~&254494525842443467&~ {
+ ~&5972374&~: _notebookBtn
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&16239278111605497701&~: 64
+ ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: 40
+ ~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
+ ~&14125623155555875541&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&233744706647566&~: 0
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
+ ~&7083172477658&~: ~&"8609871731041592465&~
+ }
+ }
+ ~&254542236275632405&~: {
+ ~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
+ ~&197093806&~.~&11689254259907176254&~();
+ }
+ }
+ ~&254494525842443467&~ {
+ ~&5972374&~: _folderBtn
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&16239278111605497701&~: 64
+ ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: 40
+ ~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~
+ ~&14125623155555875541&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&233744706647566&~: 0
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
+ ~&7083172477658&~: ~&"1888152859110688812&~
+ }
+ }
+ ~&254542236275632405&~: {
+ ~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
+ ~&197093806&~.~&1343967321191992457&~(~&"477188259920763378&~);
+ }
+ }
+ ~&254494525842443467&~ {
+ ~&5972374&~: _quickSheetBtn
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&7081629735527&~.~&16239278111605497701&~: 64
+ ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
+ ~&7081629735527&~.~&8399743405844438450&~: 40
+ ~&7081629735527&~.~&499747351624466981&~: 40
+ ~&233748328658231&~: ~&6504254477&~.~&6504391364&~ !== ~&"214642862219&~
+ ~&14125623155555875541&~ {
+ ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
+ ~&233744706647566&~: 0
+ ~&425121728314878811&~.~&6502767986&~ {
+ ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
+ ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
+ ~&7083172477658&~: ~&"5726907772531472741&~
+ }
+ }
+ ~&254542236275632405&~: {
+ ~&197102514&~ doc = ~&2918312801265623842&~.~&498775298796480658&~();
+ ~&5972376&~ (doc && doc.~&6504337259&~ === 1) {
+ ~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
+ ~&197093806&~.~&2766288418351025740&~.~&6504147419&~(~&"80852525132738217&~, {
+ ~&8399386052748489877&~: doc.~&5972374&~,
+ ~&6504167078&~: doc.~&254543134818768527&~ - 1
+ });
+ }
+ }
+ }
+ }
+ END TRAVERSE
+END AFFECT
diff --git a/README.md b/README.md
index 5f4e5cf..5773a32 100644
--- a/README.md
+++ b/README.md
@@ -2,17 +2,17 @@
## Installation
-Installation via the [Vellum package manager](https://github.com/vellum-dev/vellum) is recommended. Dependencies are handled automatically.
+Installation via the [Vellum package manager](https://github.com/vellum-dev/vellum) is recommended. Dependencies are handled automatically.
### Manual
-All extensions require qt-resource-rebuilder, some will require other xovi extensions. See each extension for details.
+All extensions require qt-resource-rebuilder, some will require other xovi extensions. See each extension for details.
-Instructions to install xovi can be found [here](https://github.com/asivery/rmpp-xovi-extensions).
+Instructions to install xovi can be found [here](https://github.com/asivery/rmpp-xovi-extensions).
-Download the extensions from the folder matching your reMarkable software version.
+Download the extensions from the folder matching your reMarkable software version.
-Copy the `.qmd` files to `/home/root/xovi/exthome/qt-resource-rebuilder/` and restart xovi.
+Copy the `.qmd` files to `/home/root/xovi/exthome/qt-resource-rebuilder/` and restart xovi.
Some of the QMD files in this repo are my own and some are modifications I've made to extensions created by others in the community. Modifications will link to the original author.
@@ -20,22 +20,99 @@ Extensions have been tested only for the latest reMarkable OS version, though th
Beta releases are not tested nor supported.
-**Note:** QMDs for version 3.22.4.2 are the same as the ones for 3.22.0.64.
+**Note:** QMDs for version `3.22.4.2` are the same as the ones for `3.22.0.64`.
**Note 2:** Make sure to use latest version of qt-resource-rebuilder for best compatibility.
+## Compatibility
+
+| Extension | `3.22.0.64` | `3.23.0.64` | `3.24.0.149` | `3.25.1.1` | `3.26.0.68` | `3.27.1.0` | `3.27.3.0` |
+|---|---|---|---|---|---|---|---|
+| `batteryPercentage` | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| `clock` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| `convertToText_remover` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| `favoriteButton` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `forceSync` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `hideDocumentClose` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `quickSettingsClock` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| `quickSettingsTimer` | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| `tagButton` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `uncompressDock` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+
## Extensions
-### Version 3.27.3.0
-
-#### `batteryPercentage.qmd`
+### `batteryPercentage.qmd`
[](https://vellum.delivery/#/package/battery-percentage/)
- Shows the battery percentage next to the battery icon in the main view header.
-#### `quickSettingsTimer.qmd`
-
+**Available for:** `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
+
+---
+
+### `clock.qmd`
+[](https://vellum.delivery/#/package/sidebar-clock/)
+- Adds a live clock to the library sidebar; tap the entry to toggle seconds display.
+
+
+
+**Note:** You have to set the right timezone on the tablet (you can use [reManager](https://github.com/rmitchellscott/reManager) to set it)
+
+**Available for:** `3.22.0.64`, `3.23.0.64`, `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
+
+---
+
+### `convertToText_remover.qmd`
+[](https://vellum.delivery/#/package/convert-to-text-remover/)
+- Removes the `Convert to text` option from selection menus and the toolbar.
+
+
+
+**Available for:** `3.22.0.64`, `3.23.0.64`, `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
+
+---
+
+### `favoriteButton.qmd`
+[](https://vellum.delivery/#/package/favorite-button/)
+- Restores a `Favorite` action in the document list header for faster pinning.
+
+
+
+**Available for:** `3.22.0.64`, `3.23.0.64`
+
+---
+
+### `forceSync.qmd`
+[](https://vellum.delivery/#/package/force-sync/)
+- Adds a cloud button in Quick Settings that forces a library sync when tapped (need further testing to confirm it works as intended).
+
+
+
+**Available for:** `3.22.0.64`, `3.23.0.64`
+
+---
+
+### `hideDocumentClose.qmd`
+- Hides the close button in the document toolbar to prevent accidental exits.
+Use [hide-document-close](https://github.com/ingatellent) by ingatellent instead.
+
+**Available for:** `3.22.0.64`, `3.23.0.64`
+
+---
+
+### `quickSettingsClock.qmd`
+- Injects a tappable clock into the Quick Settings header; tap to toggle between minute and second precision.
+Use [quicksettings-clock-serif](https://github.com/rmitchellscott) by rmitchellscott instead.
+
+
+
+**Available for:** `3.22.0.64`, `3.23.0.64`, `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
+
+---
+
+### `quickSettingsTimer.qmd`
+
- Adds a countdown timer and stopwatch to the Quick Settings panel, under the light slider.
- Switch between Timer (presets: 1min, 5min, 10min, 30min, 1h) and Chrono (start/stop) modes.
- Preset buttons respect the add/set mode toggle :
increments,
replaces.
@@ -44,20 +121,21 @@ Beta releases are not tested nor supported.
-#### `clock.qmd`
-[](https://vellum.delivery/#/package/sidebar-clock/)
-- Adds a live clock to the library sidebar; tap the entry to toggle seconds display.
+**Available for:** `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
-
-Note: You have to set the right timezone on the tablet (you can use [reManager](https://github.com/rmitchellscott/reManager) to set it)
+---
-#### `convertToText_remover.qmd`
-[](https://vellum.delivery/#/package/convert-to-text-remover/)
-- Removes the `Convert to text` option from selection menus and the toolbar (ported from 3.23.0.64).
+### `tagButton.qmd`
+[](https://vellum.delivery/#/package/tag-button/)
+- Puts a `Tag` action next to other list controls to open the tag editor directly.
-
+
-#### `uncompressDock.qmd`
+**Available for:** `3.22.0.64`, `3.23.0.64`
+
+---
+
+### `uncompressDock.qmd`
[](https://vellum.delivery/#/package/uncompress-dock/)
- Replaces the widget-based create menu with dedicated buttons for notebook, folder, and quick sheet creation.
- **Rewritten** for the new `HomeScreen.CreateMenu` — the old `Navigator.CreateMenu` is no longer used in 3.27.
@@ -65,50 +143,4 @@ Note: You have to set the right timezone on the tablet (you can use [reManager](
-#### `quickSettingsClock.qmd`
-- Injects a tappable clock into the Quick Settings header; tap to toggle between minute and second precision.
-Use [quicksettings-clock-serif](https://github.com/rmitchellscott) by rmitchellscott instead.
-
-
-
-### `tagButton.qmd` & `favoriteButton.qmd`
-- Those tweaks have been implemented by the reMarkable team in the latest update, so they are no longer needed :)
-
-### Version 3.23.0.64
-
-#### `clock.qmd`
-- Adds a live clock to the library sidebar; tap the entry to toggle seconds display.
-
-#### `quickSettingsClock.qmd`
-- Injects a tappable clock into the Quick Settings header; tap to toggle between minute and second precision.
-
-#### `forceSync.qmd`
-[](https://vellum.delivery/#/package/force-sync/)
-
-
-
-- Adds a cloud button in Quick Settings that forces a library sync when tapped (need further testing to confirm it works as intended).
-
-#### `favoriteButton.qmd`
-[](https://vellum.delivery/#/package/favorite-button/)
-- Restores a `Favorite` action in the document list header for faster pinning.
-
-
-
-#### `tagButton.qmd`
-[](https://vellum.delivery/#/package/tag-button/)
-- Puts a `Tag` action next to other list controls to open the tag editor directly.
-
-
-
-#### `convertToText_remover.qmd`
-- Removes the `Convert to text` option from selection menus and the toolbar.
-
-#### `uncompressDock.qmd`
-- Replaces the condensed `More` menu in the new document dock with dedicated buttons for notebook, folder, and quick sheet creation.
-
-
-
-#### `hideDocumentClose.qmd`
-- Hides the close button in the document toolbar to prevent accidental exits.
-Use [hide-document-close](https://github.com/ingatellent) by ingatellent instead.
\ No newline at end of file
+**Available for:** `3.22.0.64`, `3.23.0.64`, `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`