├── icons ├── icon16.png ├── icon32.png ├── icon48.png ├── icon128.png ├── icon16.svg ├── icon32.svg ├── icon48.svg └── icon128.svg ├── .gitignore ├── assets └── screenshots │ ├── en │ ├── ai_en.png │ ├── newtab_en.png │ ├── deadlinks_en.png │ ├── navigation_en.png │ ├── organize_ai_en.png │ ├── classification_en.png │ ├── organize_deadlinks_en.png │ └── organize_classification_en.png │ ├── ru │ ├── ai_ru.png │ ├── newtab_ru.png │ ├── deadlinks_ru.png │ ├── navigation_ru.png │ ├── organize_ai_ru.png │ ├── classification_ru.png │ ├── organize_deadlinks_ru.png │ └── organize_classification_ru.png │ ├── zh-CN │ ├── ai_zh-CN.png │ ├── newtab_zh-CN.png │ ├── deadlinks_zh-CN.png │ ├── navigation_zh-CN.png │ ├── organize_ai_zh-CN.png │ ├── classification_zh-CN.png │ ├── organize_deadlinks_zh-CN.png │ └── organize_classification_zh-CN.png │ └── zh-TW │ ├── ai_zh-TW.png │ ├── newtab_zh-TW.png │ ├── deadlinks_zh-TW.png │ ├── navigation_zh-TW.png │ ├── organize_ai_zh-TW.png │ ├── classification_zh-TW.png │ ├── organize_deadlinks_zh-TW.png │ └── organize_classification_zh-TW.png ├── extensions └── organize │ ├── icons │ ├── icon16.png │ ├── icon32.png │ ├── icon48.png │ ├── icon128.png │ ├── icon16.svg │ ├── icon32.svg │ ├── icon48.svg │ └── icon128.svg │ ├── _locales │ ├── zh_CN │ │ └── messages.json │ ├── zh_TW │ │ └── messages.json │ ├── en │ │ └── messages.json │ └── ru │ │ └── messages.json │ ├── src │ └── pages │ │ └── options │ │ └── overlay.js │ ├── manifest.json │ └── services │ ├── bookmarkService.js │ ├── storageService.js │ └── cloudSyncService.js ├── _locales ├── zh_CN │ └── messages.json ├── zh_TW │ └── messages.json ├── en │ └── messages.json └── ru │ └── messages.json ├── package.json ├── LICENSE ├── src └── pages │ ├── reset │ └── index.html │ ├── newtab │ ├── index.html │ └── index.css │ ├── search │ ├── index.html │ └── index.js │ └── preview │ └── index.html ├── .github └── workflows │ └── release.yml ├── README.zh-CN.md ├── manifest.json ├── scripts ├── sync_shared.mjs └── capture_screenshots.mjs ├── README.md ├── PRIVACY.md ├── services ├── bookmarkService.js ├── storageService.js └── cloudSyncService.js └── CHANGELOG.md /icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/icons/icon16.png -------------------------------------------------------------------------------- /icons/icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/icons/icon32.png -------------------------------------------------------------------------------- /icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/icons/icon48.png -------------------------------------------------------------------------------- /icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/icons/icon128.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | playwright/.cache/ 3 | claude.md 4 | .claude 5 | .DS_Store 6 | dist -------------------------------------------------------------------------------- /assets/screenshots/en/ai_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/en/ai_en.png -------------------------------------------------------------------------------- /assets/screenshots/ru/ai_ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/ru/ai_ru.png -------------------------------------------------------------------------------- /assets/screenshots/en/newtab_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/en/newtab_en.png -------------------------------------------------------------------------------- /assets/screenshots/ru/newtab_ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/ru/newtab_ru.png -------------------------------------------------------------------------------- /extensions/organize/icons/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/extensions/organize/icons/icon16.png -------------------------------------------------------------------------------- /extensions/organize/icons/icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/extensions/organize/icons/icon32.png -------------------------------------------------------------------------------- /extensions/organize/icons/icon48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/extensions/organize/icons/icon48.png -------------------------------------------------------------------------------- /assets/screenshots/en/deadlinks_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/en/deadlinks_en.png -------------------------------------------------------------------------------- /assets/screenshots/en/navigation_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/en/navigation_en.png -------------------------------------------------------------------------------- /assets/screenshots/ru/deadlinks_ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/ru/deadlinks_ru.png -------------------------------------------------------------------------------- /assets/screenshots/ru/navigation_ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/ru/navigation_ru.png -------------------------------------------------------------------------------- /assets/screenshots/zh-CN/ai_zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-CN/ai_zh-CN.png -------------------------------------------------------------------------------- /assets/screenshots/zh-TW/ai_zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-TW/ai_zh-TW.png -------------------------------------------------------------------------------- /extensions/organize/icons/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/extensions/organize/icons/icon128.png -------------------------------------------------------------------------------- /assets/screenshots/en/organize_ai_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/en/organize_ai_en.png -------------------------------------------------------------------------------- /assets/screenshots/ru/organize_ai_ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/ru/organize_ai_ru.png -------------------------------------------------------------------------------- /assets/screenshots/zh-CN/newtab_zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-CN/newtab_zh-CN.png -------------------------------------------------------------------------------- /assets/screenshots/zh-TW/newtab_zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-TW/newtab_zh-TW.png -------------------------------------------------------------------------------- /assets/screenshots/en/classification_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/en/classification_en.png -------------------------------------------------------------------------------- /assets/screenshots/ru/classification_ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/ru/classification_ru.png -------------------------------------------------------------------------------- /assets/screenshots/zh-CN/deadlinks_zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-CN/deadlinks_zh-CN.png -------------------------------------------------------------------------------- /assets/screenshots/zh-TW/deadlinks_zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-TW/deadlinks_zh-TW.png -------------------------------------------------------------------------------- /assets/screenshots/zh-CN/navigation_zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-CN/navigation_zh-CN.png -------------------------------------------------------------------------------- /assets/screenshots/zh-CN/organize_ai_zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-CN/organize_ai_zh-CN.png -------------------------------------------------------------------------------- /assets/screenshots/zh-TW/navigation_zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-TW/navigation_zh-TW.png -------------------------------------------------------------------------------- /assets/screenshots/zh-TW/organize_ai_zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-TW/organize_ai_zh-TW.png -------------------------------------------------------------------------------- /assets/screenshots/en/organize_deadlinks_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/en/organize_deadlinks_en.png -------------------------------------------------------------------------------- /assets/screenshots/ru/organize_deadlinks_ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/ru/organize_deadlinks_ru.png -------------------------------------------------------------------------------- /assets/screenshots/zh-CN/classification_zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-CN/classification_zh-CN.png -------------------------------------------------------------------------------- /assets/screenshots/zh-TW/classification_zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-TW/classification_zh-TW.png -------------------------------------------------------------------------------- /assets/screenshots/en/organize_classification_en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/en/organize_classification_en.png -------------------------------------------------------------------------------- /assets/screenshots/ru/organize_classification_ru.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/ru/organize_classification_ru.png -------------------------------------------------------------------------------- /assets/screenshots/zh-CN/organize_deadlinks_zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-CN/organize_deadlinks_zh-CN.png -------------------------------------------------------------------------------- /assets/screenshots/zh-TW/organize_deadlinks_zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-TW/organize_deadlinks_zh-TW.png -------------------------------------------------------------------------------- /assets/screenshots/zh-CN/organize_classification_zh-CN.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-CN/organize_classification_zh-CN.png -------------------------------------------------------------------------------- /assets/screenshots/zh-TW/organize_classification_zh-TW.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Rhan2020/TidyMark/master/assets/screenshots/zh-TW/organize_classification_zh-TW.png -------------------------------------------------------------------------------- /_locales/zh_CN/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { "message": "TidyMark" }, 3 | "appShortName": { "message": "TidyMark" }, 4 | "appDesc": { "message": "简洁新标签页:书签导航、智能分类、壁纸与天气、默认搜索。" }, 5 | "actionTitle": { "message": "TidyMark - 书签管理" } 6 | } -------------------------------------------------------------------------------- /_locales/zh_TW/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { "message": "TidyMark" }, 3 | "appShortName": { "message": "TidyMark" }, 4 | "appDesc": { "message": "簡潔新分頁:書籤導覽、智慧分類、桌布與天氣、預設搜尋。" }, 5 | "actionTitle": { "message": "TidyMark - 書籤管理" } 6 | } -------------------------------------------------------------------------------- /extensions/organize/_locales/zh_CN/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { "message": "TidyMark" }, 3 | "appShortName": { "message": "TidyMark" }, 4 | "appDesc": { "message": "简洁新标签页:书签导航、智能分类、壁纸与天气、默认搜索。" }, 5 | "actionTitle": { "message": "TidyMark - 书签管理" } 6 | } -------------------------------------------------------------------------------- /extensions/organize/_locales/zh_TW/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { "message": "TidyMark" }, 3 | "appShortName": { "message": "TidyMark" }, 4 | "appDesc": { "message": "簡潔新分頁:書籤導覽、智慧分類、桌布與天氣、預設搜尋。" }, 5 | "actionTitle": { "message": "TidyMark - 書籤管理" } 6 | } -------------------------------------------------------------------------------- /_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { "message": "TidyMark" }, 3 | "appShortName": { "message": "TidyMark" }, 4 | "appDesc": { "message": "Minimal new tab: bookmark navigation, smart categorization, wallpaper & weather, default search." }, 5 | "actionTitle": { "message": "TidyMark — Bookmark Manager" } 6 | } -------------------------------------------------------------------------------- /_locales/ru/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { "message": "TidyMark" }, 3 | "appShortName": { "message": "TidyMark" }, 4 | "appDesc": { "message": "Минималистичная новая вкладка: навигация по закладкам, умная категоризация, обои и погода, поиск по умолчанию." }, 5 | "actionTitle": { "message": "TidyMark — менеджер закладок" } 6 | } -------------------------------------------------------------------------------- /extensions/organize/_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { "message": "TidyMark" }, 3 | "appShortName": { "message": "TidyMark" }, 4 | "appDesc": { "message": "Minimal new tab: bookmark navigation, smart categorization, wallpaper & weather, default search." }, 5 | "actionTitle": { "message": "TidyMark — Bookmark Manager" } 6 | } -------------------------------------------------------------------------------- /extensions/organize/_locales/ru/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { "message": "TidyMark" }, 3 | "appShortName": { "message": "TidyMark" }, 4 | "appDesc": { "message": "Минималистичная новая вкладка: навигация по закладкам, умная категоризация, обои и погода, поиск по умолчанию." }, 5 | "actionTitle": { "message": "TidyMark — менеджер закладок" } 6 | } -------------------------------------------------------------------------------- /icons/icon16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /extensions/organize/icons/icon16.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tidymark-screenshots", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "devDependencies": { 7 | "playwright": "^1.47.0" 8 | }, 9 | "scripts": { 10 | "shots:install": "npx playwright install chromium", 11 | "shots:serve": "npx --yes http-server . -p 5500 -c-1 --silent", 12 | "shots:full": "node scripts/capture_screenshots.mjs --variant=full --base=http://localhost:5500 --width=1280 --height=800 --langs=zh-CN,zh-TW,en,ru --out=assets/screenshots", 13 | "shots:organize": "node scripts/capture_screenshots.mjs --variant=organize --base=http://localhost:5500 --width=1280 --height=800 --langs=zh-CN,zh-TW,en,ru --out=assets/screenshots", 14 | "shots": "npm run shots:full", 15 | "sync:organize": "node scripts/sync_shared.mjs" 16 | } 17 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Hywel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /icons/icon32.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /extensions/organize/icons/icon32.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/pages/reset/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |点击下面的按钮清除使用记录,重新显示首次使用引导
28 | 29 | 30 | 31 | 41 | 42 | -------------------------------------------------------------------------------- /extensions/organize/src/pages/options/overlay.js: -------------------------------------------------------------------------------- 1 | (() => { 2 | function removeNavElements() { 3 | try { 4 | const navTabBtn = document.querySelector('.tabs .tab-btn[data-tab="nav"]'); 5 | if (navTabBtn) navTabBtn.remove(); 6 | const navSection = document.getElementById('nav'); 7 | if (navSection) navSection.remove(); 8 | const activeBtn = document.querySelector('.tabs .tab-btn.active'); 9 | if (!activeBtn) { 10 | const organizeBtn = document.querySelector('.tabs .tab-btn[data-tab="organize"]'); 11 | if (organizeBtn) organizeBtn.classList.add('active'); 12 | } 13 | const activeContent = document.querySelector('.tab-content.active'); 14 | if (!activeContent) { 15 | const organizeContent = document.getElementById('organize'); 16 | if (organizeContent) organizeContent.classList.add('active'); 17 | } 18 | } catch (e) {} 19 | } 20 | function patchOptionsManager() { 21 | try { 22 | if (typeof optionsManager !== 'undefined' && optionsManager) { 23 | optionsManager.updateWidgetConfig = function() {}; 24 | } 25 | } catch (e) {} 26 | } 27 | function hideHelpQuickSearchToggle() { 28 | try { 29 | const toggle = document.getElementById('quickSearchShortcutEnabled'); 30 | if (toggle) { 31 | const card = toggle.closest('.info-card'); 32 | if (card) { 33 | card.remove(); 34 | } else { 35 | const row = toggle.closest('.setting-item'); 36 | if (row) row.style.display = 'none'; 37 | } 38 | } 39 | } catch (e) {} 40 | } 41 | document.addEventListener('DOMContentLoaded', () => { 42 | removeNavElements(); 43 | patchOptionsManager(); 44 | hideHelpQuickSearchToggle(); 45 | }); 46 | })(); 47 | -------------------------------------------------------------------------------- /icons/icon48.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /extensions/organize/icons/icon48.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /extensions/organize/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "TidyMark · 纯书签整理版", 4 | "short_name": "TidyMark · 书签整理", 5 | "version": "1.4.27", 6 | "description": "__MSG_appDesc__", 7 | "default_locale": "en", 8 | 9 | "permissions": [ 10 | "bookmarks", 11 | "storage", 12 | "downloads", 13 | "alarms", 14 | "contextMenus", 15 | "notifications" 16 | ], 17 | "host_permissions": [ 18 | "https://api.github.com/*", 19 | "https://raw.githubusercontent.com/*", 20 | "https://dns.google/*", 21 | "https://cloudflare-dns.com/*", 22 | "https://dns.alidns.com/*" 23 | ], 24 | "optional_host_permissions": [ 25 | "
48 |
49 |
50 |
51 |
52 |
53 | — 仅保留核心信息,更多细节请参考源码与注释。
54 |
55 | ## 许可证 / License
56 |
57 | MIT License — 详见 `LICENSE`。
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "manifest_version": 3,
3 | "name": "__MSG_appName__",
4 | "short_name": "__MSG_appShortName__",
5 | "version": "1.4.27",
6 | "description": "__MSG_appDesc__",
7 | "default_locale": "en",
8 |
9 | "permissions": [
10 | "bookmarks",
11 | "storage",
12 | "downloads",
13 | "activeTab",
14 | "tabs",
15 | "alarms",
16 | "contextMenus",
17 | "notifications",
18 | "search"
19 | ],
20 | "host_permissions": [
21 | "https://*.bing.com/*",
22 | "https://geocoding-api.open-meteo.com/*",
23 | "https://api.open-meteo.com/*",
24 | "https://60s.viki.moe/*",
25 | "https://60api.09cdn.xyz/*",
26 | "https://60s.zeabur.app/*",
27 | "https://60s.crystelf.top/*",
28 | "https://cqxx.site/*",
29 | "https://api.yanyua.icu/*",
30 | "https://60s.tmini.net/*",
31 | "https://60s.7se.cn/*",
32 | "https://api.github.com/*",
33 | "https://raw.githubusercontent.com/*",
34 | "https://dav.jianguoyun.com/*",
35 | "https://dns.google/*",
36 | "https://cloudflare-dns.com/*",
37 | "https://dns.alidns.com/*"
38 | ],
39 | "optional_host_permissions": [
40 | "