From af4b7c2edd2701d95a355a4cc452fb747af7ba56 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 17:51:25 +0800 Subject: [PATCH 01/13] fix: fixed the display issue that when changing the text color --- preferences-renderer.js | 1 + supporter.js | 1 + 2 files changed, 2 insertions(+) diff --git a/preferences-renderer.js b/preferences-renderer.js index 9aeaf35..beb4a2d 100644 --- a/preferences-renderer.js +++ b/preferences-renderer.js @@ -1091,6 +1091,7 @@ function colorSet(id) { ipc.send("logger", $("#color-" + id).val()); themeColorList[id] = $("#color-" + id).val(); store.set("theme-color", themeColorList); + ipc.send("theme-color-changed"); } function colorInitializer() { diff --git a/supporter.js b/supporter.js index 39a44b0..c8610ab 100644 --- a/supporter.js +++ b/supporter.js @@ -100,6 +100,7 @@ function isInDark() { ipc.on('darkModeChanges', () => { isInDark(); + if (typeof reloadTheme === 'function') reloadTheme(); });//dark mode settings ipc.on('darkModeChanges-settings', function () { isInDark(); From 087ed4ee39a31dbf1eba592eb1781b682b022743 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 17:58:27 +0800 Subject: [PATCH 02/13] fix: change the four colors of the "Use Statistical Interface" to custom colors --- statistics.html | 1 + 1 file changed, 1 insertion(+) diff --git a/statistics.html b/statistics.html index 1658b2a..d99b6f5 100644 --- a/statistics.html +++ b/statistics.html @@ -586,6 +586,7 @@

+ \ No newline at end of file From 5764743960146770f799842742751108d968cf30 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 17:59:43 +0800 Subject: [PATCH 03/13] feat: in the settings interface, use folded detailed explanations to optimize the visual experience --- preferences-renderer.js | 30 ++++++++++++++++++++++++++++++ style.css | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/preferences-renderer.js b/preferences-renderer.js index beb4a2d..3b88231 100644 --- a/preferences-renderer.js +++ b/preferences-renderer.js @@ -18,6 +18,36 @@ function preferenceCreator(items, container, inner) { break; } } + initializeSettingsTipToggles(container); +} + +function initializeSettingsTipToggles(container) { + $(container).find('p.settings-msg').each(function () { + let tip = $(this); + if (tip.data('settings-tip-ready') || tip.hasClass('d-none')) return; + if ($.trim(tip.text()) === '' && tip.find('a').length === 0) return; + + let button = $(` + + `); + + tip.data('settings-tip-ready', true); + tip.addClass('settings-tip-content settings-tip-collapsed'); + tip.attr('aria-hidden', 'true'); + + let label = tip.prevAll('label:first'); + if (label.length > 0) label.after(button); + else tip.before(button); + + button.on('click', function () { + let expanded = button.attr('aria-expanded') === 'true'; + button.attr('aria-expanded', expanded ? 'false' : 'true'); + tip.toggleClass('settings-tip-collapsed', expanded); + tip.attr('aria-hidden', expanded ? 'true' : 'false'); + }); + }); } function titleSolution(obj, parent) { diff --git a/style.css b/style.css index 8c2b3ad..dae1357 100644 --- a/style.css +++ b/style.css @@ -357,6 +357,38 @@ li input:nth-last-child(4)::after { padding-top: 5px; } +.settings-tip-toggle { + width: 18px; + height: 18px; + margin: 0 0 2px 6px; + padding: 0; + border: 1px solid #6c757d55; + border-radius: 50%; + background: transparent; + color: #6c757d; + font-size: 12px; + line-height: 16px; + text-align: center; + vertical-align: middle; + cursor: pointer; +} + +.settings-tip-toggle:hover, .settings-tip-toggle:focus { + color: #5490ea; + border-color: #5490ea; + outline: none; +} + +.settings-tip-toggle[aria-expanded="true"] { + color: #5490ea; + border-color: #5490ea; + background: #5490ea12; +} + +.settings-tip-content.settings-tip-collapsed { + display: none; +} + .settings-check { margin: -4px 6px 2px 2px !important; } From fafbf10044381b3c64559365c53783127f279016 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 19:33:33 +0800 Subject: [PATCH 04/13] style: change the text size of the settings interface --- style.css | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/style.css b/style.css index dae1357..3250b12 100644 --- a/style.css +++ b/style.css @@ -602,6 +602,14 @@ li input:nth-last-child(4)::after { margin-bottom: 0; } +#settings-container .settings-title { + display: block; + font-size: 1rem; + font-weight: 600; + line-height: 1.35; + margin-bottom: 2px; +} + #settings-container a { border: 0; } From a1de21eacd1f50216c0f9acd8bafc70ec0b01ab2 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 19:55:35 +0800 Subject: [PATCH 05/13] fix: fix the click-hit areas for "Countdown" and "Positive Countdown" on the homepage --- style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/style.css b/style.css index 3250b12..a432693 100644 --- a/style.css +++ b/style.css @@ -1058,6 +1058,7 @@ li input:nth-last-child(4)::after { color: #6c757d !important; line-height: 2; font-weight: 500 !important; + -webkit-app-region: no-drag; } #time-statistics-sub-bar a { From d1dcffbac56a194740647e0ed8e7c35cf70fe43c Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 20:14:28 +0800 Subject: [PATCH 06/13] style: move the "Start Countdown" and "Stop Countdown" buttons to the lower left corner to enhance the user experience --- index.html | 4 ++-- renderer.js | 4 ++-- style.css | 19 ++++++++++++++++++- timer.html | 20 +++++++++----------- 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/index.html b/index.html index 1087e2b..5d82f85 100644 --- a/index.html +++ b/index.html @@ -19,7 +19,7 @@ - +
@@ -722,4 +722,4 @@
- \ No newline at end of file + diff --git a/renderer.js b/renderer.js index 38680c7..d6f7405 100644 --- a/renderer.js +++ b/renderer.js @@ -24,7 +24,7 @@ let titleAlternative = { y: 20, tipElements: "a, i, span, img, div, input", noTitle: false, - bottomTooltipSelectors: ['#statistics-back', '#back-index', '#statistics-back i'], + bottomTooltipSelectors: [], bottomTooltipMargin: 80, isBottomTooltipElement: function(element) { let $element = $(element); @@ -123,4 +123,4 @@ ipc.on('zoom-ratio-feedback', () => zoomRatioChange()); ipc.on('alert', (event, message) => { alert(message); -}) \ No newline at end of file +}) diff --git a/style.css b/style.css index a432693..8643afb 100644 --- a/style.css +++ b/style.css @@ -539,6 +539,17 @@ li input:nth-last-child(4)::after { line-height: 150%; } +.timer-back-home { + position: absolute; + top: 8px; + left: 10px; + z-index: 9999; + font-size: 18px; + text-align: left; + -webkit-app-region: no-drag; + -webkit-user-select: none; +} + #stopper i::before { font-size: 2rem; } @@ -749,7 +760,7 @@ li input:nth-last-child(4)::after { } #time-bar { - left: 10px; + left: 40px; padding: 2px; } @@ -1106,6 +1117,12 @@ li input:nth-last-child(4)::after { -webkit-user-select: none; } +.index-page #statistics-back { + top: 8px; + bottom: auto; + font-size: 18px; +} + .reserved-cycle, .dropdown-reserved-button, .dropdown-menu-reserved { width: 96px !important; font-size: small; diff --git a/timer.html b/timer.html index 03dfeef..7a45b2f 100644 --- a/timer.html +++ b/timer.html @@ -52,6 +52,12 @@ $('#exit').attr('title', i18n.__('exit'));
+ +
+ +
  

- - - -        + @@ -198,10 +199,6 @@
-
- -

@@ -1276,6 +1273,7 @@

positive: false }); if (systemName !== "darwin") $("#controller").css("display", "block"); + $("#back-index").css("display", "none"); $("#backer").css("display", "block"); $("#more-options").css("display", "none"); if (styleCache.get('isdark')) $('html').css("border", "#ffffff33 1px solid"); @@ -1601,4 +1599,4 @@

- \ No newline at end of file + From cbff4172c0c5a9e740c7f9723af79a75e9c634f2 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 20:55:46 +0800 Subject: [PATCH 07/13] fix: using "reset" to explain skipping --- floating.html | 14 +++++++++++++- locales/en.json | 2 ++ locales/zh-CN.json | 2 ++ locales/zh-TW.json | 2 ++ style.css | 12 ++++++++++++ timer.html | 6 +++++- 6 files changed, 36 insertions(+), 2 deletions(-) diff --git a/floating.html b/floating.html index f97fcdb..2caeb90 100644 --- a/floating.html +++ b/floating.html @@ -102,6 +102,16 @@ } } + function renderSkipperIcon(isReset) { + if (isReset) { + $("#floating-skipper a").html(''); + $('#skipper').attr('title', i18n.__('positive-reset-tip')); + } else { + $("#floating-skipper a").html(""); + $('#skipper').attr('title', i18n.__('skipper')); + } + } + const STOPPER_DEBOUNCE_MS = 320; function stopper(ev) { if (ev && ev.preventDefault) ev.preventDefault(); @@ -222,6 +232,7 @@ .addClass("work") .removeClass("positive rest onlyRest"); $("#time-left-msg").text(i18n.__('min-left')); + renderSkipperIcon(false); $('#floating-bottom-bar').css("background-color", newWorkColor + "19"); $('#floating-bottom-bar').css("display", "block"); method = 1; @@ -233,6 +244,7 @@ $(".work").removeClass("onlyRest"); $('#floating-bottom-bar').css("display", "none"); $("#time-left-msg").text(i18n.__('min-already')); + renderSkipperIcon(true); method = 3; } @@ -282,4 +294,4 @@ - \ No newline at end of file + diff --git a/locales/en.json b/locales/en.json index a88291a..2f75043 100644 --- a/locales/en.json +++ b/locales/en.json @@ -42,6 +42,8 @@ "tip": "Press Enter to submit", "back-index": "Give up the schedule & Back", "skipper": "Skip current timer", + "positive-reset": "Reset", + "positive-reset-tip": "Reset the current stopwatch to zero and start again; saved statistics will not be cleared.", "not-enough": "Some items weren't set or the time is less than 5s, so the timer cannot start.", "too-long": "The time is too long. Please make it less than a day.", "back": "Back", diff --git a/locales/zh-CN.json b/locales/zh-CN.json index e602e6d..2ce79ed 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -40,6 +40,8 @@ "tip": "输入各个项目,然后按 Enter 键开始计时", "back-index": "结束当前计时返回首页", "skipper": "提前跳过当前的时间", + "positive-reset": "重置", + "positive-reset-tip": "将当前正计时归零并重新开始;已记录的统计不会被清空。", "not-enough": "请合法输入工作时间、休息时间和循环次数。暂时不支持 5 秒以下的时间。", "too-long": "长度超过一天的计划暂时不能添加。", "back": "返回", diff --git a/locales/zh-TW.json b/locales/zh-TW.json index 1b6276d..cf0cabd 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -40,6 +40,8 @@ "tip": "輸入各個項目,然後按 Enter 鍵開始計時", "back-index": "結束當前計時返回首頁", "skipper": "提前跳過當前的時間", + "positive-reset": "重置", + "positive-reset-tip": "將當前正計時歸零並重新開始;已記錄的統計不會被清空。", "not-enough": "請合法輸入工作時間、休息時間和循環次數。暫時不支持 5 秒以下的時間。", "too-long": "長度超過一天的計劃暫時不能添加。", "back": "返回", diff --git a/style.css b/style.css index 8643afb..70025d9 100644 --- a/style.css +++ b/style.css @@ -174,6 +174,14 @@ li input:nth-last-child(4)::after { font-size: inherit; } +.reset-icon { + display: inline-block; + font-size: 1rem; + line-height: 1; + font-style: normal; + vertical-align: 0em; +} + .display-1 { font-weight: lighter; } @@ -250,6 +258,10 @@ li input:nth-last-child(4)::after { transform: translateY(-2px); } +.positive-reset-label { + font-size: 0.72rem; +} + .controller-msg-big { padding: 0; margin: 0 3px 0 3px; diff --git a/timer.html b/timer.html index 7a45b2f..6e11190 100644 --- a/timer.html +++ b/timer.html @@ -190,7 +190,7 @@ + class="focuser extreme-small controller-msg" id="skipper-label"> @@ -652,6 +652,10 @@

if (methodFromStart === 3) { $(".work").addClass("positive"); $("#bottom-bar").css("display", "none"); + $("#skipper-label").text(i18n.__('positive-reset')); + $("#skipper-label").addClass("positive-reset-label"); + $("#skipper-container").attr('title', i18n.__('positive-reset-tip')); + $("#skipper").replaceWith(''); timingData.set("last-recorded-minutes-left", 0); timingData.set("last-recorded-hours-left", 0); From 93fca1c4ebffecd37249ec876f18e790ce7bb861 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 21:03:03 +0800 Subject: [PATCH 08/13] fix: change the height of the timebar --- style.css | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/style.css b/style.css index 70025d9..d68e021 100644 --- a/style.css +++ b/style.css @@ -553,10 +553,10 @@ li input:nth-last-child(4)::after { .timer-back-home { position: absolute; - top: 8px; + top: 6px; left: 10px; z-index: 9999; - font-size: 18px; + font-size: 20px; text-align: left; -webkit-app-region: no-drag; -webkit-user-select: none; @@ -774,6 +774,7 @@ li input:nth-last-child(4)::after { #time-bar { left: 40px; padding: 2px; + top: 10px; } #logo-bar { @@ -1130,9 +1131,9 @@ li input:nth-last-child(4)::after { } .index-page #statistics-back { - top: 8px; + top: 6px; bottom: auto; - font-size: 18px; + font-size: 20px; } .reserved-cycle, .dropdown-reserved-button, .dropdown-menu-reserved { From e9a4d876f314f72720a9abec0348127dd3b4b27c Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 21:08:09 +0800 Subject: [PATCH 09/13] fix: center the pause button in the mini mode --- floating.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/floating.html b/floating.html index 2caeb90..17e761d 100644 --- a/floating.html +++ b/floating.html @@ -25,7 +25,7 @@

-
+
From 8a402274c2310d51fcc0d224ba3e83042b3584c7 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 21:31:00 +0800 Subject: [PATCH 10/13] fix: fixed the bug where the "Simple Timing" mode could still open the mini mode after skipping I found that in the "Simple Timing" mode, if you click "Skip", the page will switch to "Completed", but the icon in the upper right corner does not return, which causes the mini mode to still be accessible and potentially cause system bugs. --- timer.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/timer.html b/timer.html index 6e11190..6f03661 100644 --- a/timer.html +++ b/timer.html @@ -1259,8 +1259,10 @@

function ender() { canStop = false; + canOpenFloating = false; call('floating-destroy'); window.clearInterval(int); + $("#mini-mode").css("display", "none"); $("#time-cnt").css("display", "none"); $("#stop-count").css("display", "none"); $("#only-one").css("display", "none"); From 6873053074f8ecf228314a105dc68ac8001a1001 Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 23:11:08 +0800 Subject: [PATCH 11/13] fix: fixed the issue where the back button in full-screen mode did not hide --- timer.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/timer.html b/timer.html index 6f03661..959bba7 100644 --- a/timer.html +++ b/timer.html @@ -748,6 +748,7 @@

ipc.send('warning-giver-restend', times === 0); $("#controller").css("display", "none"); $("#more-options").css("display", "none"); + $("#back-index").css("display", "none"); $timeBar.addClass("time-bar-focus"); $timeBarMacOS.addClass("time-bar-focus"); $nowTiming.addClass("display-1"); @@ -1156,6 +1157,7 @@

$bottomBar.css("height", "100%"); $("#controller").css("display", "none"); $("#more-options").css("display", "none"); + $("#back-index").css("display", "none"); $timeBarMacOS.addClass("time-bar-focus"); $timeBar.addClass("time-bar-focus"); $nowTiming.addClass("display-1"); @@ -1224,6 +1226,7 @@

$bottomBar.css("height", "100%"); $("#controller").css("display", "none"); $("#more-options").css("display", "none"); + $("#back-index").css("display", "none"); $timeBar.addClass("time-bar-focus"); $timeBarMacOS.addClass("time-bar-focus"); $nowTiming.addClass("display-1"); From 447f3d7c3896265637e90cc95b6f4d1f3535585e Mon Sep 17 00:00:00 2001 From: Yixiao GUO <12411152@mail.sustech.edu.cn> Date: Fri, 15 May 2026 23:14:17 +0800 Subject: [PATCH 12/13] fix: fix the issue of the color changes in the charts used in the statistics section --- statistics.html | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/statistics.html b/statistics.html index d99b6f5..fa915e2 100644 --- a/statistics.html +++ b/statistics.html @@ -478,16 +478,16 @@

topPadding: 19, bottomPadding: 39, datasets: [{ - fillColor: '#5490eacc', + fillColor: newWorkColor + 'cc', data: thisWeekWorkTimesInHour }, { - fillColor: '#ea5454cc', + fillColor: newRestColor + 'cc', data: thisWeekRestTimesInHour }, { - fillColor: '#a26ae5cc', + fillColor: newOnlyRestColor + 'cc', data: thisWeekOnlyRestTimesInHour }, { - fillColor: '#17a2b8cc', + fillColor: newPositiveColor + 'cc', data: thisWeekPositiveTimesInHour }] } @@ -527,16 +527,16 @@

bottomPadding: 59, showValue: false, datasets: [{ - fillColor: '#5490eacc', + fillColor: newWorkColor + 'cc', data: thisYearWorkTimesInHour }, { - fillColor: '#ea5454cc', + fillColor: newRestColor + 'cc', data: thisYearRestTimesInHour }, { - fillColor: '#a26ae5cc', + fillColor: newOnlyRestColor + 'cc', data: thisYearOnlyRestTimesInHour }, { - fillColor: '#17a2b8cc', + fillColor: newPositiveColor + 'cc', data: thisYearPositiveTimesInHour }] } @@ -589,4 +589,4 @@

- \ No newline at end of file + From 17184689e3e5ce9d9573919bbff6389ac6cd00a3 Mon Sep 17 00:00:00 2001 From: Tianrun Qiu Date: Sat, 16 May 2026 01:55:18 +0800 Subject: [PATCH 13/13] fix: revert unwanted UI and package changes Restore the intended timer, settings, and package metadata behavior after unwanted follow-up edits. --- .yarnrc.yml | 5 +++++ custom-dialog.html | 15 ++++++++++++++ index.html | 2 +- preferences-renderer.js | 4 ++-- renderer.js | 2 +- style.css | 44 ++++++++++++++++++++++------------------- timer.html | 18 ++++++++++------- yarn.lock | 6 +++--- 8 files changed, 62 insertions(+), 34 deletions(-) diff --git a/.yarnrc.yml b/.yarnrc.yml index 91b1101..3f8de62 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,5 +1,10 @@ +approvedGitRepositories: + - "**" + compressionLevel: mixed enableGlobalCache: false +enableScripts: true + nodeLinker: node-modules diff --git a/custom-dialog.html b/custom-dialog.html index 4917094..84d982b 100644 --- a/custom-dialog.html +++ b/custom-dialog.html @@ -17,13 +17,28 @@