From 4c6f31c43a03ecb5a85ffb6a3ea3905a661af0f4 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Tue, 30 Jun 2026 18:24:23 +0800
Subject: [PATCH] Remove non-source materials from source worktree
---
/dev/null | 514 ---------------------------------------------------------
.gitignore | 7
AGENTS.md | 8
readme.md | 6
CODE_GOVERNANCE.md | 4
5 files changed, 19 insertions(+), 520 deletions(-)
diff --git a/.gitignore b/.gitignore
index 7342ec4..50527e8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,13 @@
# Duplicate generated help package copied outside the canonical source tree.
/Docs/Help/
+# Non-source project knowledge, website/archive material, and local canvases live outside
+# the source worktree under /Users/ar/Projects/Taglauncher-doc/.
+/Docs/
+/docs/
+/canvas/
+/文档导读.md
+
# Local scratch notes.
/项目管理规范.md
diff --git a/AGENTS.md b/AGENTS.md
index 31d854b..f377693 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -20,7 +20,7 @@
TagLauncher 的非平凡 UI 改动必须先过 UI Preview Gate,不得直接进入 SwiftUI / AppKit 源码修改。
- 非平凡 UI 改动包括:布局、字体、间距、颜色、主题、material、窗口尺寸、Pro 状态、设置页、AppGrid、Quick Search、tips、hover、拖拽、点击热区、可访问性或任何用户可见视觉变化。
-- 开工前必须先产出 UI 合约;推荐使用 `/Users/ar/Projects/Taglauncher/Docs/KM2.项目管理-非业务直接相关/UI合约模板.md`,也可在当前 PRD / TODO / Round 文档中写入同等字段。
+- 开工前必须先产出 UI 合约;推荐使用 `/Users/ar/Projects/Taglauncher-doc/RepoWorkspace/Docs/KM2.项目管理-非业务直接相关/UI合约模板.md`,也可在当前 PRD / TODO / Round 文档中写入同等字段。
- UI 合约必须包含目标界面、影响 surface、不做范围、状态矩阵、主题 / 语言长度矩阵、交互互斥关系、验收截图或录屏要求。
- 非纯调查任务必须先提供高保真预览来源,例如 baoyu-design HTML / 静态 screen、Penpot / Figma frame、用户标注图或等价可审阅截图;用户确认视觉目标后,才允许修改生产 UI 源码。
- 实现后必须提供真实 App 截图、录屏、AX 或真实点击证据;没有真实渲染或真实交互证据,不得写视觉 PASS。
@@ -46,15 +46,15 @@
## 对话记忆保存规则
-本项目需要保存重要会话记忆,但不得为了普通会话记录频繁打断用户审批。
+本项目需要保存重要会话记忆,但不得为了普通会话记录频繁打断用户审批。会话记录不放在主源码工作区,避免造成脏状态和体积膨胀。
-- 首选保存目录:项目根目录下的 `.codex-sessionhistory/`,即 `/Users/ar/Projects/Taglauncher/.codex-sessionhistory/`。
+- 首选保存目录:`/Users/ar/Projects/Taglauncher-doc/chat-history/codex-sessionhistory/`。
- 只在发生以下情况时保存会话记录:关键决策、文件修改、发布 / 构建 / QA 结论、重大问题排查、用户明确要求保存、阶段性收尾。
- 纯询问、路径确认、状态查询、简单说明、无实质决策或无文件变更的对话,不强制保存。
- 文件名格式:`YYYY-MM-DD-主题.md`;主题必须概括本轮 session 的核心内容,控制在 20 个字符以内,优先使用中文短语,避免空格、`/`、`:` 等不适合作为文件名的字符。
- 如果同一天同主题已有记录文件,必须创建新文件并追加序号,避免覆盖:`YYYY-MM-DD-主题-01.md`、`YYYY-MM-DD-主题-02.md`。
- 保存内容至少包括:用户目标、已完成事项、关键决策、文件变更、未决问题、后续建议。
-- 如果首选目录在当前沙盒下不可写,不得发起额外权限审批;必须改存到当前 Codex 工作区的 `.codex-sessionhistory/Taglauncher/`,并在最终答复中说明实际保存位置。
+- 如果首选目录不可写,不得发起额外权限审批;必须改存到当前 Codex 工作区的 `.codex-sessionhistory/Taglauncher/`,并在最终答复中说明实际保存位置。
- 只有首选目录和当前工作区备用目录都不可写时,才允许跳过保存,并在最终答复中说明原因。
- 如果确需保存,应一次性保存本轮完整摘要,避免为了会话记录反复修正。
- 跨项目对话以主要项目保存;如果多个项目都有实质决策或改动,应按同样的首选目录 / 当前工作区备用目录规则分别保存摘要。
diff --git a/CODE_GOVERNANCE.md b/CODE_GOVERNANCE.md
index 2305e7f..4e2e128 100644
--- a/CODE_GOVERNANCE.md
+++ b/CODE_GOVERNANCE.md
@@ -136,7 +136,7 @@
TagLauncher 的 UI 工作必须先确认视觉目标,再修改生产 SwiftUI / AppKit 源码。经验复盘见:
-`/Users/ar/Projects/Taglauncher/Docs/KM2.项目管理-非业务直接相关/关于TagLauncher所有UI类问题的经验与教训.md`
+`/Users/ar/Projects/Taglauncher-doc/RepoWorkspace/Docs/KM2.项目管理-非业务直接相关/关于TagLauncher所有UI类问题的经验与教训.md`
### 10.1 触发范围
@@ -152,7 +152,7 @@
非平凡 UI 改动开工前必须先写 UI 合约。推荐模板:
-`/Users/ar/Projects/Taglauncher/Docs/KM2.项目管理-非业务直接相关/UI合约模板.md`
+`/Users/ar/Projects/Taglauncher-doc/RepoWorkspace/Docs/KM2.项目管理-非业务直接相关/UI合约模板.md`
如果当前任务已有 PRD、TODO、Round 文档或 issue,也可以在该文档中写入同等字段,不强制复制模板。UI 合约至少包含:
diff --git "a/Docs/KM02-\346\212\200\346\234\257/07-\346\236\204\345\273\272\345\217\221\345\270\203\344\270\216QA.md" "b/Docs/KM02-\346\212\200\346\234\257/07-\346\236\204\345\273\272\345\217\221\345\270\203\344\270\216QA.md"
deleted file mode 100644
index 5356d43..0000000
--- "a/Docs/KM02-\346\212\200\346\234\257/07-\346\236\204\345\273\272\345\217\221\345\270\203\344\270\216QA.md"
+++ /dev/null
@@ -1,138 +0,0 @@
-# 构建发布与 QA
-
-- 整理日期:2026-06-11
-- 复核日期:2026-06-15
-- 依据产品版本:TagLauncher 7.9.1,Build 20260614.1454
-- 版本依据:`src/Apptag/Info.plist`、`src/CHANGELOG.md`、`src/Release/AppStore-7.9.1-20260614.1454/QA_RELEASE_EVIDENCE.md`
-- 配套图示:[07-构建发布与QA.drawio](./07-构建发布与QA.drawio)
-
-## 构建方式
-
-项目没有 Xcode 工程构建入口,`src/build.sh` 是主构建脚本。它执行:
-
-1. 读取 `src/Apptag/Info.plist` 的 `CFBundleShortVersionString`。
-2. 使用 `APP_BUILD` 环境变量或当前时间生成 build 号,格式必须是 `YYYYMMDD.HHMM`。
-3. 清理并重建 `src/build/TagLauncher.app` bundle 结构。
-4. 调用 `swiftc` 编译全部 Swift 文件:
- - frameworks:AppKit、SwiftUI、Carbon、CoreServices
- - library:compression
- - target:`arm64-apple-macosx15.0`
- - optimization:`-Osize`
-5. 拷贝 Info.plist,并只修改 app bundle 内的 `CFBundleVersion`。
-6. 从 asset catalog 生成 `AppIcon.icns`。
-7. 拷贝菜单栏 SVG、本地化 JSON、Apple 默认应用资源、Smart Start 资源。
-8. 将多语言 catalog 压缩为 `.json.deflate`。
-9. 拦截禁止进入 bundle 的开发/源资源。
-10. 写入 `PkgInfo`、设置 executable、strip debug symbols、清 xattrs。
-11. 按 `APP_STORE` 和 `CODESIGN_IDENTITY` 决定签名方式。
-12. 校验源码 `Info.plist` hash 未被构建过程修改。
-
-## 资源打包边界
-
-运行时资源来自源码树下的 Research,但进入 app bundle 后名称有调整:
-
-| 源资源 | Bundle 资源 |
-| --- | --- |
-| `Research/AppleDefaultApps/AppleDefaultApps.base.json` | `AppleDefaultApps.base.json` |
-| `Research/AppleDefaultApps/AppleDefaultApps.manifest.json` | `AppleDefaultApps.manifest.json` |
-| `Research/AppleDefaultApps/AppleDefaultApps.localizations.<lang>.json` | `AppleDefaultApps.localizations.<lang>.json.deflate` |
-| `Research/SmartStart/UltimateDefaultCatalog/SmartStart_UltimateDefaultCatalog.base.json` | `SmartStartUltimateDefaultCatalog.base.json` |
-| `Research/SmartStart/UltimateDefaultCatalog/SmartStart_UltimateDefaultCatalog.manifest.json` | `SmartStartUltimateDefaultCatalog.manifest.json` |
-| `Research/SmartStart/UltimateDefaultCatalog/SmartStart_UltimateDefaultCatalog.notes.<lang>.json` | `SmartStartUltimateDefaultCatalog.notes.<lang>.json.deflate` |
-| `Apptag/Localization/*.json` | `Localization/*.json` |
-
-`build.sh` 禁止把以下源/临时资源直接放入 bundle:
-
-- `*TranslationCache*`
-- `*invalid*`
-- 未压缩的 `AppleDefaultApps.localizations.*.json`
-- 旧单体 `SmartStartUltimateDefaultCatalog.json`
-- SmartStart CSV
-- 未压缩的 notes JSON
-
-## DMG 构建
-
-`src/make_dmg.sh` 依赖已存在的 `src/build/TagLauncher.app`:
-
-1. 创建 `build/dmg_staging`。
-2. 复制 `TagLauncher.app`。
-3. 创建 `/Applications` symlink。
-4. 用 `hdiutil create -format UDZO -imagekey zlib-level=9` 生成 `build/TagLauncher.dmg`。
-5. 清理 staging。
-
-发布 archive 中的 DMG 会按版本/build 重命名,例如:
-
-`TagLauncher-7.9.1-build20260614.1454.dmg`
-
-## App Store / Sandbox
-
-`APP_STORE=1` 时:
-
-- 要求 `src/Apptag/TagLauncher.entitlements` 存在。
-- 如果未设置 `CODESIGN_IDENTITY`,脚本会 ad-hoc sign with entitlements,并打印警告。
-- 设置 `CODESIGN_IDENTITY` 后执行带 entitlements 的 codesign。
-
-7.9.1 QA 证据中记录:App Store `.pkg` 已生成,Installer certificate signature、Bundle ID、版本/build、sandbox entitlement、user-selected file read/write entitlement、Keychain access group、arm64 架构和 payload AppleDouble entries 均通过检查。
-
-## 当前 release 证据
-
-`src/Release/AppStore-7.9.1-20260614.1454/QA_RELEASE_EVIDENCE.md` 记录:
-
-- Version:7.9.1
-- Build:20260614.1454
-- Bundle ID:com.taglauncher.app
-- Source commit:`bd792cd36d57b8f0741af9a6a64e59969cdce490`
-
-自动 QA 通过项:
-
-- `Scripts/usage_tips_qa.sh`
-- `Scripts/app_ordering_data_qa.sh`
-- `Scripts/macos14_availability_typecheck_qa.sh`
-- `Scripts/macos14_build_metadata_qa.sh`
-- `Scripts/quick_search_system_app_qa.sh`
-- `Scripts/smartstart_catalog_resource_qa.sh`
-- `Scripts/quick_search_app_name_qa.sh`:本机缺少 Sunlogin wrapper fixture,记录为 SKIP
-- `hdiutil verify`、App Store `.pkg` 签名和 payload 检查
-
-发布产物:
-
-- Archive DMG:`Archive/TagLauncher-7.9.1-build20260614.1454.dmg`
-- Upload PKG:`Upload/TagLauncher-7.9.1-build20260614.1454.pkg`
-- DMG SHA256:`2cb29528ef1c137db330ff8a28baa3c622705916f8368b28c373ca95aefd6981`
-- PKG SHA256:`7ad097a23c736fc7a7b34a9575348cbc52a968d5fbf433584ace353b120a32ef`
-
-## QA 脚本分层
-
-| 脚本 | 关注点 |
-| --- | --- |
-| `Scripts/window_logic_qa.sh` | Overlay/Quick Search/Settings/文件面板/Dock/全屏/Split View/重复实例 |
-| `Scripts/quick_search_app_name_qa.sh` | 多语言显示名、wrapper/helper 过滤、Quick Search 文档过滤 |
-| `Scripts/quick_search_system_app_qa.sh` | 系统 App 扫描路径、Keychain Access、中文/拼音搜索候选 |
-| `Scripts/smartstart_catalog_resource_qa.sh` | Smart Start 资源完整性、语言覆盖、Apple 边界、runtime loader |
-| `Scripts/apple_default_apps_resource_qa.sh` | Apple catalog 资源质量、系统扫描覆盖、多语言备注质量、build 边界 |
-| `Scripts/apple_default_note_policy_qa.sh` | Apple/SmartStart/manual 备注来源隔离和语言切换重本地化 |
-| `Scripts/apple_default_note_migration_qa.sh` | 旧版 Apple 初始化备注迁移、历史默认备注 fixture、手写备注保护 |
-| `Scripts/app_ordering_data_qa.sh` | `containerAppOrder` schema、导入导出、备份恢复、SmartStart 清理、拖拽 payload 静态门禁 |
-| `Scripts/usage_tips_qa.sh` | usage tips 多语言文案、分隔符、两行渲染约束 |
-| `Scripts/macos14_availability_typecheck_qa.sh` | macOS 14 可用性和 Swift 类型检查 |
-| `Scripts/macos14_build_metadata_qa.sh` | macOS 14 最低版本、Info.plist、build metadata 边界 |
-
-## 发布前建议门禁
-
-发布或修改以下区域时,应按风险扩大 QA:
-
-- 窗口、快捷键、Dock、activation policy、Quick Search panel:跑 `window_logic_qa.sh`,并人工 smoke `Fn+Space` 连续开关、立即输入、Esc、点击结果。
-- 名称解析、AppIndexer、Quick Search 文档:跑两个 Quick Search QA。
-- Smart Start 或 Apple catalog:跑三个资源/备注 QA。
-- Apple 默认应用备注属于初始化内容,任一语种都不允许混入其他语种正文。修改 Apple catalog 或默认备注迁移时,`apple_default_apps_resource_qa.sh` 必须同时检查 translations 和运行用 localizations 的跨语种脚本污染;`apple_default_note_migration_qa.sh` 必须覆盖已知历史默认备注,不能只测单个样本。
-- App Grid 容器排序:跑 `app_ordering_data_qa.sh`,并人工验证同容器拖拽排序、跨容器移动、Option 复制和拖空白移除互不串扰。
-- 使用技巧悬浮条或 usage tips 文案:跑 `usage_tips_qa.sh`,并人工验证翻页按钮、hover 期间备注气泡抑制、Quick Search only 会话不显示悬浮条。
-- 构建脚本或资源路径:跑资源 QA、`APP_BUILD=<目标build> bash build.sh`,必要时 `make_dmg.sh` 和 `hdiutil verify`。
-- 发布包:记录 version/build、commit、命令、结果、产物路径和 SHA256。
-
-## 修改风险提示
-
-- 不要让构建脚本修改 tracked source `Info.plist`;当前 hash 校验是保护边界。
-- 不要把未压缩多语言 catalog 放入 bundle;运行时 loader 优先 `.json.deflate`,QA 也以此为边界。
-- 不要把 build 目录普通产物混入源码提交,除非明确作为 release archive。
-- 不要只跑构建不跑专项 QA;TagLauncher 的高风险主要在窗口时序、搜索名称和资源质量,不是单纯编译。
diff --git a/docs/.nojekyll b/docs/.nojekyll
deleted file mode 100644
index e69de29..0000000
--- a/docs/.nojekyll
+++ /dev/null
diff --git "a/docs/7.90/01-\345\256\271\345\231\250\345\206\205App\346\211\213\345\212\250\346\216\222\345\272\217-TODO.md" "b/docs/7.90/01-\345\256\271\345\231\250\345\206\205App\346\211\213\345\212\250\346\216\222\345\272\217-TODO.md"
deleted file mode 100644
index c299b9d..0000000
--- "a/docs/7.90/01-\345\256\271\345\231\250\345\206\205App\346\211\213\345\212\250\346\216\222\345\272\217-TODO.md"
+++ /dev/null
@@ -1,65 +0,0 @@
-# 容器内 App 手动拖拽排序 TODO
-
-## 目标
-
-用户可以在同一个容器/分组内拖动 App,改变该容器内默认显示顺序;重启、刷新、语言切换、导入导出、恢复布局后顺序仍保持。
-
-## 版本
-
-- 起始版本:`7.9.0`
-- 需求级别:较大需求
-- 当前状态:已实现,待最终用户体验验收
-
-## 核心决策
-
-- 这不是纯 UI 数组重排;App 顺序必须作为“分类与布局方案”的一部分持久化到 `TagDatabase.Store`。
-- 第一版只支持同一容器内排序,不改变 App 的标签归属。
-- 跨容器拖动继续沿用现有移动/复制标签逻辑。
-- 拖到空白区域继续沿用现有移除来源标签/归为未分类确认逻辑。
-- 不改 Quick Search 排名,不改 `appTags[path]` 语义,不存像素坐标、row/column 或 `IndexPath`。
-
-## 数据层 TODO
-
-- [x] 在 `TagDatabase.Store` 新增 `containerAppOrder: [String: [String]]`,旧 JSON 用 `decodeIfPresent` 默认空字典。
-- [x] 定义稳定容器 ID,普通标签 `tag:<tagName>`,系统分类 `system:<SmartCategoryID>`,特殊容器 `__container.uncategorized` / `__container.appleBuiltIn`。
-- [x] `TagGroup` 和分组构造链路携带稳定 container key,显示名继续只用于 UI。
-- [x] 分组生成后按 `containerAppOrder` 排组内 apps;未命中的新 App 按现有默认名称排序追加。
-- [x] 新增 `TagEditor.reorderApps(inContainer:orderedPaths:)`,走 `saveUserCategorySchemeMutation(reason: "reorder-apps")`。
-- [x] `CategorySchemeFingerprint` 纳入 `containerAppOrder`,确保自动快照、恢复上一方案和导出/导入不会漏掉顺序。
-- [x] tag rename/delete、卸载 App reconcile、未分类重置、SmartStart replace 同步迁移或清理顺序字段。
-
-## UI TODO
-
-- [x] 不使用 SwiftUI `onDrag/onDrop`;在 `AppGridCollectionView` / `AppGridGroupCardView` / `AppGridIconNSView` 链路扩展现有 AppKit 自绘拖拽。
-- [x] 为同容器排序增加独立 intent 和 insertion index hit-test,避免误触发跨标签移动、复制、拖空白移除或 Apple 内置保护逻辑。
-- [x] 第一版显示插入位置指示线,不做复杂跨容器预览。
-- [x] 排序开始时继续抑制 hover bubble;结束、取消、滚动、切换窗口时清理拖拽状态。
-- [x] 编辑模式的批量添加/移除标签界面第一版不开放 App 排序,只读取排序结果。
-
-## 推荐开发切分
-
-1. 数据层 PR:
- - schema、容器 ID、排序 helper、fingerprint、导入导出/恢复/重置/SmartStart 规则。
- - 先不接 UI。
-2. UI hit-test PR:
- - 同容器插入位置计算和本地预览。
- - 不落盘,不改变跨容器拖拽。
-3. 集成 PR:
- - `ContentView` 接入 reorder callback。
- - drop/end 时保存该容器完整顺序并刷新。
-4. 回归 PR:
- - 数据脚本 QA、macOS 14 typecheck/build、窗口/拖拽 smoke、真实鼠标手工验收。
-
-## QA 阻断项
-
-- [x] 旧 `tags.json` 无顺序字段可加载,默认顺序与现版本一致。
-- [x] 新字段导出/导入 roundtrip 保留顺序;恢复上一方案恢复顺序。
-- [x] 排序后刷新、重启、语言切换、SmartStart 备份/恢复按容器 ID 保留或清理顺序。
-- [x] 同容器排序不破坏跨容器移动、Option 复制、拖空白移除、Apple 内置保护的数据入口。
-- [x] 多标签 App 在 A 容器排序不影响 B 容器顺序。
-- [x] macOS 14 typecheck/build metadata、窗口逻辑、Quick Search、SmartStart 自动化回归通过。
-
-## 风险等级
-
-- 最小方案:中等。
-- 一次性做跨容器插入、跨机器稳定匹配、复杂拖拽 payload 和所有模式完整预览:高。
diff --git "a/docs/7.90/02-\344\270\223\351\242\230\350\256\250\350\256\272\347\272\252\350\246\201.md" "b/docs/7.90/02-\344\270\223\351\242\230\350\256\250\350\256\272\347\272\252\350\246\201.md"
deleted file mode 100644
index c83baa1..0000000
--- "a/docs/7.90/02-\344\270\223\351\242\230\350\256\250\350\256\272\347\272\252\350\246\201.md"
+++ /dev/null
@@ -1,62 +0,0 @@
-# 容器内 App 手动排序专题讨论纪要
-
-## 用户目标
-
-- 用户希望在容器中,每个 App 的位置可以拖动,改变默认显示顺序。
-- 本轮要求拉 2 个架构师、1 个代码审核员、1 个 QA 做专题讨论,评估可行性、开发风险和最优方案。
-
-## 参与视角
-
-- 架构师 A:数据模型、分类方案、导入导出、SmartStart 影响。
-- 架构师 B:App Grid / 容器视图 / 拖拽交互。
-- 代码审核员:风险、必须避免的实现方式、代码切分。
-- QA:验收矩阵、自动化与人工验证边界。
-
-## 关键结论
-
-- 功能可做,但不能只做 UI 数组重排;必须把容器内 App 顺序持久化到 `TagDatabase.Store`。
-- 当前 App 默认顺序来自扫描后名称排序,`AppIndexer.group()` 只负责分组,组内顺序没有用户字段。
-- 推荐新增 `containerAppOrder: [String: [String]]`,按稳定容器 ID 保存每个容器内的 app path 顺序。
-- 容器 ID 不能使用本地化显示名;建议使用 `tag:<tagName>`、`system:<SmartCategoryID>`、`__container.uncategorized`、`__container.appleBuiltIn` 等稳定 key。
-- 新字段必须纳入分类方案快照、导出、导入、恢复、SmartStart 回滚;否则“分类与布局”导出会丢布局。
-- 第一版只支持同一容器内拖动排序;跨容器移动/复制标签、拖到空白移除标签、Apple 内置保护等旧行为保持不变。
-- 不建议使用 SwiftUI `onDrag/onDrop`。当前 App Grid 是 AppKit `NSViewRepresentable` + 自定义拖拽,拖拽排序应在 `AppGridCollectionView` / `AppGridGroupCardView` / `AppGridIconNSView` 链路扩展。
-
-## 推荐开发切分
-
-1. 数据层:
- - `Store` 增加 `containerAppOrder`,兼容旧 JSON。
- - 增加容器 ID helper 和排序 helper。
- - `CategorySchemeFingerprint` 纳入顺序字段。
- - 导入、导出、恢复、未分类重置、SmartStart replace、tag rename/delete/relocalize 清理或迁移顺序。
-
-2. UI hit-test:
- - `AppGridCollectionView` 增加同容器插入位置计算。
- - 排序拖拽与现有跨 tag 移动/复制拖拽隔离。
- - 先做本地预览,不落盘,不改跨容器行为。
-
-3. 集成:
- - `ContentView` 增加 reorder callback。
- - drop/end 时保存该容器完整顺序。
- - 刷新 `displayGroups` 后顺序保持。
-
-4. QA:
- - 旧 JSON 兼容、新 JSON roundtrip、导入导出、恢复、重置、SmartStart 数据断言。
- - macOS 14 typecheck/build metadata/window logic/Quick Search/SmartStart 现有回归。
- - 真实鼠标拖拽、滚动拖拽、显示模式、标签位置、编辑模式必须人工 smoke。
-
-## 风险评估
-
-- 最小方案风险:中等。
-- 若一次性支持跨容器插入、跨机器稳定匹配、复杂拖拽 payload、所有显示模式完整预览,风险升为高。
-- 最大风险点:
- - 刷新/重启后顺序丢失。
- - 导入导出/恢复/SmartStart 漏掉顺序。
- - 同容器排序误触发跨容器移动、复制、移除标签确认。
- - 用本地化显示名做 key 导致语言切换后顺序错位。
- - 编辑模式、tag 拖拽排序、hover bubble、滚动抑制互相冲突。
-
-## 建议决策
-
-- 先做低风险 spike:只做同容器排序,path-based 顺序持久化,所有 display mode 读取排序,但第一版优先在容器/网格容器拖拽入口验证。
-- 暂不改 Quick Search 排名,不改 `appTags` 语义,不存像素坐标/IndexPath,不把顺序放 UserDefaults。
diff --git "a/docs/7.90/03-\344\272\247\345\223\201PRD.md" "b/docs/7.90/03-\344\272\247\345\223\201PRD.md"
deleted file mode 100644
index 8928cb7..0000000
--- "a/docs/7.90/03-\344\272\247\345\223\201PRD.md"
+++ /dev/null
@@ -1,125 +0,0 @@
-# 7.9.0 产品 PRD:容器内 App 手动排序
-
-## 1. 背景
-
-TagLauncher 当前支持按标签/容器展示 App,也支持拖动 App 改变标签归属。但在同一个容器内,App 的显示顺序主要来自扫描后的默认名称排序,用户无法把高频 App 固定到自己习惯的位置。
-
-对重度用户来说,容器不仅是分类,也是工作流入口。用户希望像整理桌面图标一样,在每个容器中把 App 摆成自己的顺序,并且这个顺序能随“分类与布局”一起保存、导入、恢复。
-
-## 2. 目标
-
-- 用户可以在同一个容器/分组内拖动 App,改变该容器内显示顺序。
-- 自定义顺序在刷新、重启、语言切换、导入导出、恢复上一方案、SmartStart 回滚后保持一致。
-- 不破坏现有跨容器拖动改标签、Option 复制、拖到空白移除标签、Apple 内置组保护等既有行为。
-- 将该需求作为 `7.9.0` 大版本需求管理。
-
-## 3. 用户价值
-
-- 高频 App 可以放到容器最前面,减少寻找成本。
-- 每个标签/容器可以形成独立工作流顺序。
-- 多标签 App 在不同容器里可以有不同位置,符合不同使用语境。
-- 导出“分类与布局”时真正包含布局顺序,便于迁移和恢复。
-
-## 4. 适用用户
-
-- 安装 App 数量较多、依赖 TagLauncher 做日常启动入口的用户。
-- 已经维护多个标签/容器,并希望在容器内进一步精细整理的用户。
-- 需要在多台 Mac 或重装后恢复分类与布局的用户。
-
-## 5. 范围
-
-### 5.1 版本 7.9.0 必做
-
-- 同一容器内拖动 App 改变顺序。
-- 每个容器独立保存顺序。
-- 多标签 App 在不同容器中的顺序互不影响。
-- 新 App 或未记录 App 在自定义顺序之后按默认规则显示。
-- 删除/卸载 App 后不显示空位、不崩溃。
-- 顺序纳入分类与布局数据,可导出、导入、恢复。
-- 旧用户数据无顺序字段时保持原有默认排序。
-
-### 5.2 版本 7.9.0 不做
-
-- 不做跨容器插入位置排序。
-- 不改变跨容器拖动的标签归属语义。
-- 不改变 Quick Search 结果排序。
-- 不提供“按名称重新排序”“重置单个容器顺序”等高级管理入口。
-- 不做跨机器 bundle id/name fallback 的完整稳定匹配;第一版以 path 为 App 顺序身份。
-
-## 6. 核心交互
-
-### 6.1 同容器排序
-
-用户在 App Grid 普通展示态中,长按并拖动某个 App 到同一容器中的另一个位置。
-
-期望:
-
-- 拖动过程中显示清晰的插入位置提示。
-- 松手后该 App 移动到目标位置。
-- 不改变该 App 的标签归属。
-- 不触发 App 启动。
-
-### 6.2 跨容器拖动
-
-用户把 App 拖到其他容器/标签。
-
-期望:
-
-- 沿用现有移动/复制标签逻辑。
-- 按住 Option 时继续执行复制标签语义。
-- 不把跨容器拖动解释为排序。
-
-### 6.3 拖到空白区域
-
-用户把 App 拖到容器外空白区域。
-
-期望:
-
-- 继续沿用现有移除来源标签或归为未分类确认逻辑。
-- 不因为新增排序功能改变提醒、确认或“不再提醒”逻辑。
-
-### 6.4 特殊容器
-
-- “未分类”容器:第一版允许读取排序;是否开放拖动排序按实现风险在开发阶段确认。
-- “Mac 自带 / Apple 内置”容器:保持现有保护逻辑,不允许通过拖动改变系统标签归属;排序是否开放需单独评估,默认不作为第一优先级。
-
-## 7. 数据行为
-
-- 自定义顺序属于“分类与布局方案”。
-- 导出分类与布局时必须包含顺序。
-- 导入分类与布局时必须恢复顺序。
-- 恢复上一方案时必须恢复顺序。
-- SmartStart 应用新方案前的备份必须包含顺序。
-- “重置为未分类”应清理旧容器顺序,避免旧布局在未来意外复活。
-
-## 8. 兼容性要求
-
-- macOS 14 起可用。
-- 旧 `tags.json` 无新增字段时可正常读取。
-- 旧版本 App 读取新 JSON 时不应破坏已知字段;新版本 App 重新读取后仍应尽量保留顺序。
-- 语言切换不影响顺序,因为顺序 key 不能依赖本地化显示名。
-
-## 9. 验收标准
-
-- 用户可在同容器内完成拖动排序。
-- 排序结果立即显示。
-- 关闭并重新打开 App Grid 后顺序保持。
-- 重启 App 后顺序保持。
-- 切换语言后顺序保持。
-- 导出再导入后顺序保持。
-- 恢复上一方案后顺序恢复。
-- 跨容器拖动、Option 复制、拖到空白、Apple 内置保护保持现有行为。
-- 旧数据用户升级后默认顺序不变。
-
-## 10. 发布要求
-
-- 版本号从 `7.9.0` 开始。
-- `CHANGELOG.md` 必须记录数据模型、交互范围和兼容性说明。
-- 发布前必须有 QA 报告,覆盖数据层、UI 手工拖拽、macOS 14、导入导出、恢复、SmartStart 回归。
-
-## 11. 未决问题
-
-- “未分类”容器是否开放拖动排序。
-- “Mac 自带 / Apple 内置”容器是否开放仅显示顺序排序。
-- 是否需要在后续版本提供“重置当前容器顺序”入口。
-- 是否需要在后续版本支持跨机器导入时基于 bundle id/name 匹配顺序。
diff --git "a/docs/7.90/04-QA\346\265\213\350\257\225\347\224\250\344\276\213\351\233\206.md" "b/docs/7.90/04-QA\346\265\213\350\257\225\347\224\250\344\276\213\351\233\206.md"
deleted file mode 100644
index 90b8c52..0000000
--- "a/docs/7.90/04-QA\346\265\213\350\257\225\347\224\250\344\276\213\351\233\206.md"
+++ /dev/null
@@ -1,130 +0,0 @@
-# 7.9.0 QA 测试用例集:容器内 App 手动排序
-
-## 1. 测试目标
-
-验证用户可以在同一容器内拖动 App 改变显示顺序,并确保顺序在刷新、重启、语言切换、导入导出、恢复、SmartStart 等路径中保持一致,同时不破坏现有跨容器拖动改标签行为。
-
-## 2. 测试范围
-
-- 数据模型兼容性。
-- 同容器拖动排序。
-- 旧拖拽行为回归。
-- 多显示模式和标签位置。
-- 导入导出、恢复、重置、SmartStart。
-- macOS 14 兼容性。
-
-## 3. 测试环境
-
-- macOS 14 Apple Silicon 真机。
-- 当前开发机最新 macOS。
-- 干净用户数据一份。
-- 旧版 `tags.json` fixture 一份。
-- 含多标签 App、未分类 App、Apple 内置 App、已卸载 path 的测试数据一份。
-
-## 4. 自动化用例
-
-| ID | 优先级 | 类型 | 用例 | 期望结果 |
-| --- | --- | --- | --- | --- |
-| DATA-001 | P0 | 自动 | 旧 `tags.json` 无 `containerAppOrder` 字段时解码 | 加载成功,默认顺序与旧版本一致 |
-| DATA-002 | P0 | 自动 | 新 `tags.json` 含 `containerAppOrder` 字段时解码 | 加载成功,顺序字段保留 |
-| DATA-003 | P0 | 自动 | 导出后再导入含顺序的分类与布局 | 导入后每个容器顺序一致 |
-| DATA-004 | P0 | 自动 | `CategorySchemeFingerprint` 包含顺序字段 | 只改变顺序也能触发上一方案快照 |
-| DATA-005 | P0 | 自动 | 恢复上一方案 | 标签、App 归属、容器内顺序都恢复 |
-| DATA-006 | P0 | 自动 | 重置为未分类 | 清空旧普通标签归属,并按既定策略清理旧容器顺序 |
-| DATA-007 | P0 | 自动 | SmartStart replace | 新方案顺序可预测,不复用旧容器顺序 |
-| DATA-008 | P1 | 自动 | tag rename/delete/relocalize | 顺序 key 正确迁移或清理 |
-| DATA-009 | P1 | 自动 | 卸载 App path 出现在顺序字段 | 不显示空位,不崩溃,必要时懒清理 |
-| DATA-010 | P1 | 自动 | 新 App 不在顺序字段内 | 已排序 App 保持,新增 App 追加并按默认名称排序 |
-
-## 5. 手工功能用例
-
-| ID | 优先级 | 用例 | 步骤 | 期望结果 |
-| --- | --- | --- | --- | --- |
-| UI-001 | P0 | 同容器拖动到最前 | 在某容器中把第 3 个 App 拖到第 1 个位置 | App 顺序立即改变,不启动 App |
-| UI-002 | P0 | 同容器拖动到中间 | 把最后一个 App 拖到中间位置 | 插入位置正确,顺序保存 |
-| UI-003 | P0 | 跨行/跨列拖动 | 在网格容器中跨行拖动 App | 目标位置正确,无错位 |
-| UI-004 | P0 | 拖回原位 | 长按拖动后放回原位置 | 不写入无意义变更,不闪烁 |
-| UI-005 | P0 | 松手未移动 | 长按 App 后直接松手 | 不启动 App,不改变顺序 |
-| UI-006 | P0 | 多标签 App 独立顺序 | App 同时在 A/B 容器,重排 A | A 顺序改变,B 顺序不变 |
-| UI-007 | P0 | 重开 App Grid | 排序后关闭再打开 App Grid | 顺序保持 |
-| UI-008 | P0 | 重启 App | 排序后退出并重启 TagLauncher | 顺序保持 |
-| UI-009 | P1 | 语言切换 | 排序后切换中英文/日文 | 顺序保持,显示名变化不影响位置 |
-| UI-010 | P1 | 新安装 App | 排序后新增一个 App 并刷新 | 旧顺序保持,新 App 按默认规则追加 |
-
-## 6. 旧拖拽行为回归
-
-| ID | 优先级 | 用例 | 步骤 | 期望结果 |
-| --- | --- | --- | --- | --- |
-| DRAG-001 | P0 | 跨容器移动标签 | 从 A 容器拖 App 到 B 容器 | App 获得/移动到 B 标签,旧逻辑保持 |
-| DRAG-002 | P0 | Option 复制标签 | 按住 Option 从 A 拖到 B | App 同时保留 A/B 标签 |
-| DRAG-003 | P0 | 拖到空白移除来源标签 | 从容器拖到空白区域 | 继续出现现有确认逻辑 |
-| DRAG-004 | P0 | 拖到未分类 | 拖到未分类目标 | 继续走未分类确认与记忆逻辑 |
-| DRAG-005 | P0 | 拖到 Apple 内置组 | 拖到 Mac 自带 / Apple 内置组 | 继续被保护,不改变标签 |
-| DRAG-006 | P1 | 标签栏拖拽排序 | 拖动顶部/侧边标签排序 | 不受 App 排序拖拽影响 |
-
-## 7. 显示模式矩阵
-
-| ID | 优先级 | displayMode | 验收 |
-| --- | --- | --- | --- |
-| MODE-001 | P0 | `flat` | 顺序读取一致;是否允许拖动按产品最终边界验收 |
-| MODE-002 | P0 | `container` | 可同容器排序 |
-| MODE-003 | P0 | `coloredContainer` | 可同容器排序,颜色填充不遮挡插入提示 |
-| MODE-004 | P0 | `gridContainer` | 可同容器排序,跨行插入正确 |
-| MODE-005 | P0 | `coloredGridContainer` | 可同容器排序,跨行插入正确 |
-
-## 8. 标签位置矩阵
-
-| ID | 优先级 | 标签位置 | 验收 |
-| --- | --- | --- | --- |
-| NAV-001 | P1 | 左侧 | App 排序和标签导航互不冲突 |
-| NAV-002 | P1 | 右侧 | App 排序和标签导航互不冲突 |
-| NAV-003 | P1 | 顶部 | App 排序和标签导航互不冲突 |
-
-## 9. 尺寸与显示矩阵
-
-| ID | 优先级 | 条件 | 验收 |
-| --- | --- | --- | --- |
-| VIEW-001 | P1 | hide app names 开 | 拖动排序时不因名称隐藏误触发气泡 |
-| VIEW-002 | P1 | hide app names 关 | 名称不遮挡插入提示 |
-| VIEW-003 | P1 | icon size 40 | 小图标可拖动,命中正确 |
-| VIEW-004 | P1 | icon size 64 | 默认尺寸可拖动 |
-| VIEW-005 | P1 | icon size 80 | 大图标可拖动,布局不重叠 |
-
-## 10. 异常与取消
-
-| ID | 优先级 | 用例 | 期望结果 |
-| --- | --- | --- | --- |
-| EDGE-001 | P0 | 拖出窗口后松手 | 状态清理干净,不残留拖拽影子 |
-| EDGE-002 | P1 | 拖动中按 Esc | 取消拖动,顺序不变 |
-| EDGE-003 | P1 | 拖动中滚动 | 不出现错位插入;若暂不支持滚动拖拽,边界表现明确 |
-| EDGE-004 | P1 | 拖动中切换 Space/窗口 | 不崩溃,不残留 hover/bubble 状态 |
-| EDGE-005 | P1 | 拖动中打开 Quick Search/Settings | 拖动状态清理,窗口行为正常 |
-
-## 11. 现有 QA 脚本
-
-实现完成后至少运行;本轮 `7.9.0 (20260611.2212)` 已按下列脚本回归:
-
-```bash
-cd /Users/ar/Projects/Taglauncher/src
-bash Scripts/app_ordering_data_qa.sh
-bash Scripts/macos14_availability_typecheck_qa.sh
-bash Scripts/macos14_build_metadata_qa.sh
-bash Scripts/quick_search_app_name_qa.sh
-bash Scripts/quick_search_system_app_qa.sh
-bash Scripts/smartstart_catalog_resource_qa.sh
-bash Scripts/window_logic_qa.sh
-```
-
-自动化覆盖说明:
-
-- `Scripts/app_ordering_data_qa.sh` 覆盖排序字段兼容、JSON roundtrip、分类方案 fingerprint、导入导出、备份恢复、SmartStart 清理、ContentView wiring、AppGrid 同容器 payload 和 AppDragCoordinator 解析。
-- `Scripts/window_logic_qa.sh` 覆盖 Dock 重开、Quick Search、Settings、文件面板、全屏/Split View、隐藏 Dock 场景下的窗口行为回归。
-- macOS 14 专项脚本覆盖 `arm64-apple-macosx14.0` typecheck 和构建 metadata。
-
-## 12. 发布阻断条件
-
-- 顺序在刷新、重启、语言切换、导入导出、恢复上一方案任一路径丢失。
-- 同容器排序破坏跨容器移动、Option 复制、拖空白移除、Apple 内置保护。
-- 旧数据无法加载或升级后默认顺序改变。
-- macOS 14 typecheck/build metadata/window logic 任一失败。
-- 手工发现拖拽残影、误启动 App、窗口关闭、UI 重叠或插入位置不可理解。
diff --git "a/docs/7.90/05-\346\212\200\346\234\257\350\256\276\350\256\241\346\226\271\346\241\210.md" "b/docs/7.90/05-\346\212\200\346\234\257\350\256\276\350\256\241\346\226\271\346\241\210.md"
deleted file mode 100644
index c743065..0000000
--- "a/docs/7.90/05-\346\212\200\346\234\257\350\256\276\350\256\241\346\226\271\346\241\210.md"
+++ /dev/null
@@ -1,262 +0,0 @@
-# 7.9.0 技术设计方案:容器内 App 手动排序
-
-## 1. 目标
-
-在现有 TagLauncher App Grid 中支持同一容器内 App 拖动排序,并将顺序作为“分类与布局方案”的一部分持久化。
-
-## 2. 当前架构现状
-
-- `AppInfo` 不包含用户顺序字段,定义在 `src/Apptag/DataLayer.swift`。
-- `TagDatabase.Store` 当前有 `appTags` 和 `tagOrder`,没有容器内 App 顺序字段。
-- `AppIndexer.group()` 负责按 tag 分组,组内 App 顺序来自扫描结果 append 顺序。
-- `ContentView.makeDisplayGroups()` 将分组名本地化后传给 App Grid。
-- `AppGridCollectionView` 是 `NSViewRepresentable` + AppKit 自绘 grid。
-- `AppGridGroupCardView` 按 `group.apps.indices` 布局 icon。
-- `AppGridIconNSView` 当前长按拖动表示跨 tag 移动/复制,不包含目标插入 index。
-
-## 3. 设计原则
-
-- 顺序是数据,不是临时 UI 状态。
-- 容器 ID 必须稳定,不能依赖本地化显示名。
-- 同容器排序不改变 `appTags`。
-- 旧拖拽语义优先保护,不为排序重写跨容器拖动。
-- 第一版以 path 作为 App 顺序身份,降低实现复杂度。
-- 不存像素坐标、row/column、`IndexPath`,因为布局会随窗口尺寸、displayMode、iconSize 改变。
-
-## 4. 数据模型
-
-### 4.1 Store 新字段
-
-建议在 `TagDatabase.Store` 增加:
-
-```swift
-var containerAppOrder: [String: [String]] = [:]
-```
-
-含义:
-
-- key:稳定容器 ID。
-- value:该容器内 app path 的完整或部分顺序。
-
-旧数据兼容:
-
-```swift
-containerAppOrder = try container.decodeIfPresent(
- [String: [String]].self,
- forKey: .containerAppOrder
-) ?? [:]
-```
-
-### 4.2 容器 ID
-
-建议新增 helper,统一生成容器 ID:
-
-```swift
-enum AppContainerID {
- static let uncategorized = "__container.uncategorized"
- static let appleBuiltIn = "__container.appleBuiltIn"
-
- static func tag(_ name: String) -> String {
- "tag:\(name)"
- }
-
- static func system(_ id: SmartCategoryID) -> String {
- "system:\(id.rawValue)"
- }
-}
-```
-
-第一版可以先支持普通 tag 和特殊容器,系统分类 ID 映射按现有 `TagDef.systemCategoryID` 补齐。
-
-### 4.3 TagGroup 扩展
-
-当前 `TagGroup.id` 使用 `name`。建议增加:
-
-```swift
-struct TagGroup: Identifiable {
- var id: String { containerID }
- let containerID: String
- let name: String
- let apps: [AppInfo]
-}
-```
-
-这样 UI 显示名可以本地化,但排序和滚动定位使用稳定 ID。
-
-兼容注意:
-
-- 现有按 `group.name` 判断特殊组的逻辑要逐步改为 container ID。
-- 滚动目标如果仍传显示名,需增加兼容查找。
-
-## 5. 排序算法
-
-输入:
-
-- 某个容器原始 apps。
-- `containerAppOrder[containerID]`。
-
-输出:
-
-- 已命中顺序的 App 先按记录顺序排列。
-- 未命中记录的新 App 追加到后面,按现有默认名称排序。
-- 顺序字段中不存在的 path 忽略,可在保存或 reconcile 时清理。
-
-伪代码:
-
-```swift
-func applyAppOrder(apps: [AppInfo], order: [String]) -> [AppInfo] {
- let byPath = Dictionary(uniqueKeysWithValues: apps.map { ($0.path.path, $0) })
- let ordered = order.compactMap { byPath[$0] }
- let orderedPaths = Set(ordered.map { $0.path.path })
- let remaining = apps
- .filter { !orderedPaths.contains($0.path.path) }
- .sorted { $0.name.localizedStandardCompare($1.name) == .orderedAscending }
- return ordered + remaining
-}
-```
-
-## 6. 写入 API
-
-建议新增:
-
-```swift
-extension TagEditor {
- static func reorderApps(inContainer containerID: String, orderedPaths: [String])
-}
-```
-
-写入规则:
-
-- 只保存当前容器内可见 App 的完整 path 顺序。
-- 去重。
-- 过滤空 path。
-- 如结果等于当前有效顺序则不写。
-- 走 `TagDatabase.saveUserCategorySchemeMutation(reason: "reorder-apps")`。
-
-## 7. 分类方案与导入导出
-
-必须更新:
-
-- `TagDatabase.Store.CodingKeys`:加入 `containerAppOrder`。
-- `CategorySchemeFingerprint`:加入规范化后的 `containerAppOrder`。
-- `exportTo` / `importFrom`:自动随 Store 编码,但要补 roundtrip QA。
-- `restore(fromBackupAt:)`:恢复顺序字段。
-- `resetAppTagAssignmentsToUncategorized()`:清理或重建顺序字段,建议清空旧普通容器顺序。
-- `SmartStartService.applyDraft(replaceExistingScheme: true)`:清空旧顺序。
-- tag rename/delete/relocalize:迁移或清理 `tag:<name>` 对应顺序。
-- reconcile removed apps:清理顺序字段里的 orphan path。
-
-## 8. UI 集成
-
-### 8.1 回调
-
-`AppGridCollectionView` 增加:
-
-```swift
-let onReorderApps: (String, [String]) -> Void
-```
-
-其中:
-
-- 第一个参数为 `containerID`。
-- 第二个参数为排序后的 app path 列表。
-
-`ContentView` 接收后调用 `TagEditor.reorderApps`,再 `refreshApps(forceLayoutRefresh: true)` 或局部刷新。
-
-### 8.2 Hit-test
-
-在 `AppGridGroupCardView` 内根据鼠标位置计算 insertion index:
-
-- 使用当前 `iconViews` frame。
-- 同容器内拖动时显示插入线/占位。
-- 松手时生成新 path 顺序。
-- 拖出当前 group 或命中其他 drop target 时走旧拖拽逻辑。
-
-### 8.3 拖拽 intent
-
-现有 payload 是 `path + sourceTag` 字符串,不适合继续扩展复杂状态。建议内部引入结构化状态:
-
-```swift
-struct AppDragPayload {
- let path: String
- let sourceContainerID: String
- let sourceDisplayName: String
-}
-```
-
-第一版如果为了控制改动范围暂不完全替换 `AppDragCoordinator` payload,也必须在同容器排序分支中独立判断 source/target 和 insertion index,避免误触发旧 drop。
-
-### 8.4 状态清理
-
-排序开始:
-
-- 抑制 hover bubble。
-- 结束 tag nav reorder。
-- 标记 app drag mode active。
-
-排序结束或取消:
-
-- 清除插入提示。
-- 恢复 bubble 状态。
-- 清理 drag image / hover target。
-
-## 9. 不改范围
-
-- 不改 Quick Search rank。
-- 不改 App 扫描规则。
-- 不改 SmartStart 分类匹配逻辑。
-- 不改跨容器拖动的标签归属规则。
-- 不改设置页现有数据面板结构。
-
-## 10. 迁移策略
-
-- 不需要一次性迁移用户数据。
-- 新字段缺省为空,表示使用旧默认顺序。
-- 第一次用户在某容器排序后,只写该容器顺序。
-- 版本升级到 `7.9.0` 时在 changelog 说明新增布局顺序字段。
-
-## 11. 开发顺序
-
-1. 数据层:
- - Store 字段、容器 ID、排序 helper、写入 API、fingerprint、导入导出/恢复/重置/SmartStart 处理。
- - 配套数据 QA。
-
-2. UI 层:
- - 同容器 insertion index hit-test。
- - 插入提示。
- - 本地顺序预览。
-
-3. 集成:
- - drop/end 写入。
- - refresh 后顺序保持。
- - 旧拖拽行为回归。
-
-4. 发布:
- - 版本号 `7.9.0`。
- - `CHANGELOG.md`。
- - DMG / App Store 资料按实际发布目标准备。
-
-## 12. 风险与控制
-
-| 风险 | 等级 | 控制 |
-| --- | --- | --- |
-| 顺序未持久化导致刷新丢失 | 高 | 数据层先行,QA roundtrip |
-| 本地化显示名作为 key 导致语言切换错位 | 高 | 统一 container ID |
-| 同容器排序误触发跨标签移动 | 高 | 独立 intent 和 hit-test |
-| 导入导出/恢复漏字段 | 高 | fingerprint + export/import QA |
-| 拖拽状态残留 | 中 | 统一 cancel/cleanup |
-| 新字段污染旧用户默认顺序 | 中 | 空字段即旧排序 |
-
-## 13. 必跑验证
-
-```bash
-cd /Users/ar/Projects/Taglauncher/src
-bash Scripts/macos14_availability_typecheck_qa.sh
-bash Scripts/macos14_build_metadata_qa.sh
-bash Scripts/quick_search_app_name_qa.sh
-bash Scripts/quick_search_system_app_qa.sh
-bash Scripts/smartstart_catalog_resource_qa.sh
-bash Scripts/window_logic_qa.sh
-```
-
-同时必须做真实鼠标手工验证,覆盖同容器排序、跨容器拖动、Option 复制、拖空白移除、macOS 14、5 种 displayMode 和 3 种标签位置。
diff --git "a/docs/7.90/06-\345\274\200\345\267\245\345\211\215\345\237\272\347\272\277\344\270\216Git\347\216\260\345\234\272.md" "b/docs/7.90/06-\345\274\200\345\267\245\345\211\215\345\237\272\347\272\277\344\270\216Git\347\216\260\345\234\272.md"
deleted file mode 100644
index 22951de..0000000
--- "a/docs/7.90/06-\345\274\200\345\267\245\345\211\215\345\237\272\347\272\277\344\270\216Git\347\216\260\345\234\272.md"
+++ /dev/null
@@ -1,85 +0,0 @@
-# 7.9.0 开工前基线与 Git 现场
-
-记录时间:2026-06-11 21:10
-
-## 目的
-
-在正式实现“容器内 App 手动拖拽排序”之前,先固定当前分支、需求文档和工作区现场,避免 7.9.0 大需求与 7.8.x 已验收改动、公开页资料、其他文档或 subagent 半成品混在一起。
-
-## 当前分支与基线
-
-- 当前分支:`codex/7.9-app-ordering`
-- 当前 HEAD:`f7495650aa7067dfbb587a1af76c90b12bc5a40a`
-- HEAD commit:`Add 7.9 app ordering planning docs`
-- 分支来源:`codex/macos14-compatibility`
-- 工作树:单一 worktree,路径 `/Users/ar/Projects/Taglauncher`
-- 计划安全 tag:`pre-7.9-app-ordering-20260611.2110`
-
-`f749565` 已包含 7.9 需求包的核心文档:
-
-- `docs/7.90/README.md`
-- `docs/7.90/01-容器内App手动排序-TODO.md`
-- `docs/7.90/02-专题讨论纪要.md`
-- `docs/7.90/03-产品PRD.md`
-- `docs/7.90/04-QA测试用例集.md`
-- `docs/7.90/05-技术设计方案.md`
-
-说明:Git 当前跟踪路径为 `docs/7.90`。用户口头指定的 `Docs/7.90` 在本机大小写不敏感路径下可访问,但后续提交统一使用 Git 已跟踪的小写路径,避免大小写重复目录。
-
-## 已完成的 Git 管理
-
-- 已从 `codex/macos14-compatibility` 创建并切到 `codex/7.9-app-ordering`。
-- 已按需求整理 7.9.0 PRD、QA 测试用例、技术设计、TODO 和专题讨论纪要。
-- 已完成 3 个文档 commit:
- - `3c5daa1 Record app ordering implementation todo`
- - `bbd86bd Organize 7.9 app ordering docs`
- - `f749565 Add 7.9 app ordering planning docs`
-- 本文档提交后,应在该提交上创建 `pre-7.9-app-ordering-20260611.2110`,作为正式代码实现前的可回退固定点。
-
-## 当前未提交工作区现场
-
-以下改动在写本文档前已经存在或由 subagent 留下,暂不纳入基线 commit:
-
-- `src/Apptag/DataLayer.swift`
- - 来源:数据层 worker 的半成品。
- - 状态:未暂存、未提交。
- - 内容:已开始加入 `AppContainerID`、`TagGroup.containerID`、`AppIndexer.group` 容器排序参数和排序 helper。
- - 风险:未补完 `Store.containerAppOrder`、`TagEditor.reorderApps`、fingerprint、清理迁移、SmartStart/reset/restore 等,当前不能视为可交付代码。
-- `src/Apptag/AppGridCollectionView.swift`
- - 来源:UI worker 的半成品。
- - 状态:未暂存、未提交。
- - 内容:已开始加入 `onReorderApps` 占位、拖拽状态字段和清理逻辑。
- - 风险:未完成 insertion index、插入提示线、drop 分支隔离和 payload 扩展,当前不能视为可交付代码。
-- `src/Scripts/app_ordering_data_qa.sh`
- - 来源:QA worker。
- - 状态:未跟踪。
- - 内容:新增数据层静态 QA 门禁,当前按预期失败,用于驱动 `Store.containerAppOrder`、fingerprint、import/export、backup/restore 的实现。
-- `docs/7.90/04-QA测试用例集.md`
- - 来源:QA worker。
- - 状态:未暂存、未提交。
- - 内容:自动化入口增加 `bash Scripts/app_ordering_data_qa.sh`。
-- `docs/index.html`
- - 来源:既有无关改动。
- - 状态:未暂存、未提交。
- - 处理:不纳入 7.9 排序需求 commit。
-- `Docs/KM02-技术/`
- - 来源:既有未跟踪技术资料。
- - 状态:未跟踪。
- - 处理:不纳入 7.9 排序需求 commit。
-
-## Subagent 分工与状态
-
-- 数据层 worker:负责 `Store.containerAppOrder`、稳定容器 ID、重排写入、fingerprint、迁移和 reset/SmartStart 生命周期;已暂停,留下 `DataLayer.swift` 半成品。
-- UI worker:负责 AppGrid 同容器拖拽排序、插入位置与视觉反馈;已暂停,留下 `AppGridCollectionView.swift` 半成品。
-- QA worker:负责数据层自动化 QA;已完成脚本入口,当前脚本按预期失败,等待实现补齐。
-- 代码审核 explorer:已完成只读审查,建议拆分为数据层、显示读取、AppGrid UI、生命周期、版本/QA 五个提交阶段。
-
-## 后续提交顺序
-
-1. 数据模型与顺序持久化:`Store.containerAppOrder`、稳定容器 ID、排序 helper、fingerprint。
-2. 读取与显示:`TagGroup.containerID`、`ContentView.makeDisplayGroups` 和 AppIndexer 排序读取。
-3. AppGrid UI:同容器拖拽排序、插入提示、drop 分支隔离。
-4. 生命周期:SmartStart、重置、恢复、导入导出、标签重命名/删除、reconcile。
-5. QA 与发布:自动化脚本、macOS 14 typecheck/build metadata、手工 smoke、版本与 changelog。
-
-每个阶段必须单独 commit;半成品 Swift 改动不得直接打包或交付。
diff --git "a/docs/7.90/07-\345\256\236\347\216\260\344\270\216QA\350\256\260\345\275\225.md" "b/docs/7.90/07-\345\256\236\347\216\260\344\270\216QA\350\256\260\345\275\225.md"
deleted file mode 100644
index 01c4ed8..0000000
--- "a/docs/7.90/07-\345\256\236\347\216\260\344\270\216QA\350\256\260\345\275\225.md"
+++ /dev/null
@@ -1,44 +0,0 @@
-# 7.9.0 容器内 App 手动排序实现与 QA 记录
-
-## 实现范围
-
-- 数据层新增 `containerAppOrder`,用稳定容器 ID 保存每个容器内的 App 路径顺序。
-- 普通标签使用 `tag:<tagName>`;系统分类使用 `system:<SmartCategoryID>`;未分类和 Apple 内置使用固定特殊 ID。
-- `TagGroup`、`AppLibrarySnapshot`、`ContentView`、`AppIndexer.group` 贯通容器 ID 和排序数据。
-- 同容器拖拽排序只改变显示顺序,不改变 App 与标签的归属关系。
-- 跨容器移动、Option 复制、拖空白移除、Apple 内置保护继续走原有逻辑。
-- 排序变化纳入分类方案 fingerprint,自动上一方案、导出导入、备份恢复都会包含排序字段。
-
-## 关键文件
-
-- `src/Apptag/DataLayer.swift`
-- `src/Apptag/AppGridCollectionView.swift`
-- `src/Apptag/AppDragCoordinator.swift`
-- `src/Apptag/ContentView.swift`
-- `src/Apptag/AppLibraryController.swift`
-- `src/Apptag/SmartCategorization/SmartStartService.swift`
-- `src/Scripts/app_ordering_data_qa.sh`
-
-## QA 结果
-
-- `bash Scripts/app_ordering_data_qa.sh`:通过。
-- `bash Scripts/macos14_availability_typecheck_qa.sh`:通过。
-- `bash Scripts/macos14_build_metadata_qa.sh`:通过。
-- `bash Scripts/quick_search_app_name_qa.sh`:通过。
-- `bash Scripts/quick_search_system_app_qa.sh`:通过。
-- `bash Scripts/smartstart_catalog_resource_qa.sh`:通过。
-- `bash Scripts/window_logic_qa.sh`:通过。
-
-## 代码复审处理
-
-- 复审发现同容器排序拖拽贴近源容器边缘释放时,可能落入旧的“拖到空白移除标签”路径;已改为识别最近同容器排序区域并取消该类 near-edge empty drop。
-- 复审发现 Apple 内置容器同容器 no-op / Option drop 会误触发保护提示;已在 AppGrid 层消费同容器 drop,并在 `ContentView.dropApp` 增加同源同目标 no-op 防线。
-- 文档引用统一使用 Git 跟踪的 `docs/7.90` 路径,避免大小写敏感环境出现断链。
-- `Scripts/app_ordering_data_qa.sh` 已补充对应静态门禁。
-
-## 风险与边界
-
-- 第一版只做同容器排序,不做跨容器插入式重排。
-- 排序 key 不依赖当前语言显示名,语言切换不会改变顺序归属。
-- 新安装或新扫描到、未出现在排序字段里的 App 会追加到已排序 App 后面,并按原有默认名称排序。
-- GUI 真实手感仍需要用户用 DMG 或本机构建做最终体验验收,重点看拖拽插入线是否符合预期。
diff --git a/docs/7.90/README.md b/docs/7.90/README.md
deleted file mode 100644
index 4c10f76..0000000
--- a/docs/7.90/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# TagLauncher 7.9.0 需求包
-
-## 版本边界
-
-- 本目录用于归档 7.9.x 大需求的方案、TODO、过程纪要和后续验收资料。
-- “容器内 App 手动拖拽排序”属于较大需求,版本记录从 `7.9.0` 开始,不继续放在 `7.8.x` 小版本序列里。
-- 当前已完成第一版实现和自动化 QA;后续只剩真实用户体验验收与是否进入发布候选的决策。
-
-## 需求主题
-
-用户希望在容器中,每个 App 的位置可以拖动,从而改变该容器内默认显示顺序。
-
-核心决策:
-
-- 这不是纯 UI 数组重排;App 顺序必须成为“分类与布局方案”的一部分。
-- 第一版只支持同一容器内排序,不改变 App 标签归属。
-- 跨容器拖动、Option 复制、拖到空白移除标签、Apple 内置保护等现有行为保持不变。
-- 不改 Quick Search 排名,不改 `appTags[path]` 语义。
-
-## 文件索引
-
-- [01-容器内App手动排序-TODO.md](./01-容器内App手动排序-TODO.md):可执行开发 TODO、切分和 QA 阻断项。
-- [02-专题讨论纪要.md](./02-专题讨论纪要.md):2 个架构师、1 个代码审核员、1 个 QA 的专题讨论结论。
-- [03-产品PRD.md](./03-产品PRD.md):产品目标、范围、交互、验收标准和发布要求。
-- [04-QA测试用例集.md](./04-QA测试用例集.md):QA 测试矩阵、自动化用例、手工用例和发布阻断条件。
-- [05-技术设计方案.md](./05-技术设计方案.md):数据模型、UI 集成、迁移策略和技术风险控制。
-- [06-开工前基线与Git现场.md](./06-开工前基线与Git现场.md):正式写代码前的分支、commit、tag、工作区现场和分工记录。
-- [07-实现与QA记录.md](./07-实现与QA记录.md):7.9.0 第一版实现范围、QA 结果和剩余验收点。
-
-## 后续记录规则
-
-- 本需求代码实现从 `7.9.0` 起记录;后续若准备发布候选,需要继续补充 Release 资料、安装包和最终验收记录。
-- 每个开发阶段单独提交、单独构建、单独 QA。
-- 完成阶段性实现后,将验证结果继续补充到本目录,而不是散落在会话记录里。
diff --git "a/docs/X-Op\350\265\204\346\226\231/AppStoreConnect/ASC_LOCALIZED_METADATA.md" "b/docs/X-Op\350\265\204\346\226\231/AppStoreConnect/ASC_LOCALIZED_METADATA.md"
deleted file mode 100644
index fd0fef9..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/AppStoreConnect/ASC_LOCALIZED_METADATA.md"
+++ /dev/null
@@ -1,853 +0,0 @@
-# App Store Connect Localized Metadata
-
-Generated from `docs/scripts/localized-content.mjs`.
-
-## zh-Hans — 简体中文
-
-- ASC locale: `zh-Hans`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/zh-Hans`
-- Subtitle: 基于标签的应用启动器
-
-### Promotional Text
-
-不用怀念 Launchpad。TagLauncher 用标签、快捷键和搜索把所有应用整理到一屏里。
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-不需要一个个打开文件夹,也不再需要翻页。只是找一个应用而已,应该更直接。
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — 基于标签的应用启动器.
-
-不用怀念 Launchpad。TagLauncher 用标签、快捷键和搜索把所有应用整理到一屏里。
-
-别再把工具塞进唯一文件夹。一个应用可以同时属于阅读、设计、AI 或任何你自定义的标签。
-
-只记得标签或用途也没关系,Quick Search 会帮你找到正确应用。
-
-分类、排序和布局可以导出为 JSON,换机或重装后可以恢复。
-
-数据留在你的 Mac。本版本没有账号、云同步、分析 SDK、广告或追踪。
-
-## en — 英语(美国)
-
-- ASC locale: `en-US`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-en.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-en.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/en`
-- Subtitle: Tag-based app launcher
-
-### Promotional Text
-
-Do not mourn Launchpad. TagLauncher puts your apps into one tag-based, keyboard-friendly grid.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-No more opening folders one by one or flipping through pages. Finding an app should be direct.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Tag-based app launcher.
-
-Do not mourn Launchpad. TagLauncher puts your apps into one tag-based, keyboard-friendly grid.
-
-Stop forcing tools into one folder. An app can belong to Reading, Design, AI, or any custom tag.
-
-Even if you remember only a tag or purpose, Quick Search helps you reach the right app.
-
-Export categories, order, and layout as JSON. Restore them after reinstalling or moving Macs.
-
-Data stays on your Mac. This build has no account, cloud sync, analytics SDK, ads, or tracking.
-
-## ar — 阿拉伯语
-
-- ASC locale: `ar`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-ar.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-ar.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ar`
-- Subtitle: مشغل تطبيقات قائم على الوسوم
-
-### Promotional Text
-
-لا تحتاج إلى Launchpad. يجمع TagLauncher تطبيقاتك في شبكة واحدة تعتمد على الوسوم وتعمل بسرعة من لوحة المفاتيح.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-لا مزيد من فتح المجلدات واحداً تلو الآخر أو تقليب الصفحات. العثور على التطبيق يجب أن يكون مباشراً.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — مشغل تطبيقات قائم على الوسوم.
-
-لا تحتاج إلى Launchpad. يجمع TagLauncher تطبيقاتك في شبكة واحدة تعتمد على الوسوم وتعمل بسرعة من لوحة المفاتيح.
-
-لا تحصر أدواتك في مجلد واحد. يمكن للتطبيق أن ينتمي إلى القراءة أو التصميم أو الذكاء الاصطناعي أو أي وسم تختاره.
-
-حتى لو تذكرت الوسم أو الغرض فقط، يساعدك Quick Search في الوصول إلى التطبيق الصحيح.
-
-صدّر التصنيفات والترتيب والتخطيط كملف JSON واستعدها عند الانتقال إلى Mac آخر.
-
-تبقى البيانات على جهاز Mac. لا حسابات، ولا مزامنة سحابية، ولا تحليلات أو إعلانات أو تتبع.
-
-## cs — 捷克语
-
-- ASC locale: `cs`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-cs.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-cs.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/cs`
-- Subtitle: Spouštěč aplikací podle štítků
-
-### Promotional Text
-
-Launchpad vám chybět nemusí. TagLauncher dá aplikace do jedné přehledné mřížky se štítky a klávesovými zkratkami.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Bez otevírání složek a listování stránkami. Najít aplikaci má být rychlé a přímé.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Spouštěč aplikací podle štítků.
-
-Launchpad vám chybět nemusí. TagLauncher dá aplikace do jedné přehledné mřížky se štítky a klávesovými zkratkami.
-
-Nenuťte nástroje do jedné složky. Aplikace může patřit do práce, designu, AI i vlastních štítků.
-
-Stačí si pamatovat štítek nebo účel. Quick Search vás dovede ke správné aplikaci.
-
-Kategorie, pořadí a rozložení exportujete jako JSON a obnovíte na jiném Macu.
-
-Data zůstávají na Macu. Bez účtu, cloudu, analytiky, reklam i sledování.
-
-## da — 丹麦语
-
-- ASC locale: `da`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-da.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-da.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/da`
-- Subtitle: Tagbaseret appstarter
-
-### Promotional Text
-
-Du behøver ikke savne Launchpad. TagLauncher samler dine apps i ét tag-baseret grid med tastaturgenveje.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Ingen mapper, der skal åbnes enkeltvis, og ingen sider at bladre igennem. Det skal være direkte at finde en app.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Tagbaseret appstarter.
-
-Du behøver ikke savne Launchpad. TagLauncher samler dine apps i ét tag-baseret grid med tastaturgenveje.
-
-Lad ikke værktøjer være låst til én mappe. En app kan høre til læsning, design, AI eller dine egne tags.
-
-Selv når du kun husker et tag eller et formål, finder Quick Search den rigtige app.
-
-Eksportér kategorier, rækkefølge og layout som JSON, og gendan på en ny Mac.
-
-Data bliver på din Mac. Ingen konto, cloudsync, analyse-SDK, reklamer eller sporing.
-
-## de — 德语
-
-- ASC locale: `de`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-de.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-de.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/de`
-- Subtitle: Tag-basierter App-Launcher
-
-### Promotional Text
-
-Launchpad musst du nicht vermissen. TagLauncher bringt deine Apps in ein tag-basiertes, tastaturfreundliches Raster.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Keine Ordner einzeln öffnen, keine Seiten durchblättern. Eine App zu finden sollte direkt sein.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Tag-basierter App-Launcher.
-
-Launchpad musst du nicht vermissen. TagLauncher bringt deine Apps in ein tag-basiertes, tastaturfreundliches Raster.
-
-Werkzeuge müssen nicht in genau einen Ordner. Eine App kann zu Lesen, Design, KI oder eigenen Tags gehören.
-
-Wenn du nur Tag oder Zweck kennst, führt Quick Search dich trotzdem zur richtigen App.
-
-Kategorien, Reihenfolge und Layout als JSON exportieren und auf einem anderen Mac wiederherstellen.
-
-Daten bleiben auf deinem Mac. Kein Konto, keine Cloud-Sync, keine Analyse, keine Werbung, kein Tracking.
-
-## es — 西班牙语(西班牙)
-
-- ASC locale: `es-ES`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-es.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-es.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/es`
-- Subtitle: Lanzador de apps basado en etiquetas
-
-### Promotional Text
-
-No hace falta echar de menos Launchpad. TagLauncher organiza tus apps en una cuadrícula con etiquetas y atajos.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Sin abrir carpetas una por una ni pasar páginas. Encontrar una app debería ser directo.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Lanzador de apps basado en etiquetas.
-
-No hace falta echar de menos Launchpad. TagLauncher organiza tus apps en una cuadrícula con etiquetas y atajos.
-
-No encierres tus herramientas en una carpeta. Una app puede pertenecer a lectura, diseño, IA o cualquier etiqueta.
-
-Aunque solo recuerdes una etiqueta o una finalidad, Quick Search te lleva a la app correcta.
-
-Exporta categorías, orden y diseño como JSON y restáuralos al cambiar de Mac.
-
-Los datos se quedan en tu Mac. Sin cuenta, nube, analítica, anuncios ni rastreo.
-
-## fr — 法语
-
-- ASC locale: `fr-FR`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-fr.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-fr.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/fr`
-- Subtitle: Lanceur d'applications par étiquettes
-
-### Promotional Text
-
-Inutile de regretter Launchpad. TagLauncher rassemble vos apps dans une grille à étiquettes, pensée pour le clavier.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Plus besoin d’ouvrir les dossiers un par un ni de tourner des pages. Trouver une app doit être direct.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Lanceur d'applications par étiquettes.
-
-Inutile de regretter Launchpad. TagLauncher rassemble vos apps dans une grille à étiquettes, pensée pour le clavier.
-
-Ne forcez plus vos outils dans un seul dossier. Une app peut appartenir à lecture, design, IA ou vos propres étiquettes.
-
-Même si vous ne retenez qu’une étiquette ou un usage, Quick Search trouve la bonne app.
-
-Exportez catégories, ordre et disposition en JSON, puis restaurez-les sur un autre Mac.
-
-Les données restent sur votre Mac. Aucun compte, cloud, SDK d’analyse, publicité ni suivi.
-
-## id — 印度尼西亚语
-
-- ASC locale: `id`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-id.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-id.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/id`
-- Subtitle: Peluncur app berbasis tag
-
-### Promotional Text
-
-Tidak perlu merindukan Launchpad. TagLauncher menaruh app Anda dalam grid bertag yang nyaman dengan keyboard.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Tidak perlu membuka folder satu per satu atau membalik halaman. Mencari app seharusnya langsung.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Peluncur app berbasis tag.
-
-Tidak perlu merindukan Launchpad. TagLauncher menaruh app Anda dalam grid bertag yang nyaman dengan keyboard.
-
-Jangan paksa alat masuk ke satu folder. Satu app bisa masuk kerja, desain, AI, atau tag buatan Anda.
-
-Meski hanya ingat tag atau kegunaan, Quick Search membantu menemukan app yang tepat.
-
-Ekspor kategori, urutan, dan tata letak sebagai JSON, lalu pulihkan di Mac lain.
-
-Data tetap di Mac Anda. Tanpa akun, sinkron cloud, analitik, iklan, atau pelacakan.
-
-## it — 意大利语
-
-- ASC locale: `it`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-it.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-it.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/it`
-- Subtitle: Launcher di app basato su tag
-
-### Promotional Text
-
-Non serve rimpiangere Launchpad. TagLauncher organizza le app in una griglia con tag e scorciatoie.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Niente cartelle da aprire una a una, niente pagine da sfogliare. Trovare un’app deve essere diretto.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Launcher di app basato su tag.
-
-Non serve rimpiangere Launchpad. TagLauncher organizza le app in una griglia con tag e scorciatoie.
-
-Non bloccare gli strumenti in una sola cartella. Un’app può appartenere a lettura, design, IA o tag personalizzati.
-
-Anche se ricordi solo un tag o uno scopo, Quick Search ti porta all’app giusta.
-
-Esporta categorie, ordine e layout in JSON e ripristinali su un altro Mac.
-
-I dati restano sul Mac. Nessun account, cloud, analisi, pubblicità o tracciamento.
-
-## ja — 日语
-
-- ASC locale: `ja`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-ja.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-ja.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ja`
-- Subtitle: タグベースのアプリランチャー
-
-### Promotional Text
-
-Launchpad に頼る必要はありません。TagLauncher はアプリをタグ付きの一覧にまとめ、キーボードですばやく呼び出せます。
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-フォルダを1つずつ開いたり、ページをめくったりする必要はありません。アプリ探しはもっと直接的であるべきです。
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — タグベースのアプリランチャー.
-
-Launchpad に頼る必要はありません。TagLauncher はアプリをタグ付きの一覧にまとめ、キーボードですばやく呼び出せます。
-
-ツールを1つのフォルダに閉じ込めないでください。読書、デザイン、AI など自由なタグに分類できます。
-
-タグや用途だけ覚えていても、Quick Search が目的のアプリへ導きます。
-
-カテゴリ、順序、レイアウトを JSON として書き出し、別の Mac で復元できます。
-
-データは Mac 内に保存されます。アカウント、クラウド同期、分析、広告、トラッキングはありません。
-
-## ko — 韩语
-
-- ASC locale: `ko`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-ko.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-ko.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ko`
-- Subtitle: 태그 기반 앱 런처
-
-### Promotional Text
-
-Launchpad를 그리워할 필요가 없습니다. TagLauncher는 앱을 태그 기반 그리드에 정리하고 키보드로 빠르게 엽니다.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-폴더를 하나씩 열거나 페이지를 넘길 필요가 없습니다. 앱 찾기는 더 직접적이어야 합니다.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — 태그 기반 앱 런처.
-
-Launchpad를 그리워할 필요가 없습니다. TagLauncher는 앱을 태그 기반 그리드에 정리하고 키보드로 빠르게 엽니다.
-
-도구를 하나의 폴더에 가두지 마세요. 앱은 읽기, 디자인, AI 또는 사용자 태그에 동시에 속할 수 있습니다.
-
-태그나 용도만 기억해도 Quick Search가 올바른 앱을 찾아줍니다.
-
-카테고리, 순서, 레이아웃을 JSON으로 내보내고 다른 Mac에서 복원하세요.
-
-데이터는 Mac에 남습니다. 계정, 클라우드 동기화, 분석, 광고, 추적이 없습니다.
-
-## ms — 马来语
-
-- ASC locale: `ms`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-ms.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-ms.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ms`
-- Subtitle: Peluncur app berbasis tag
-
-### Promotional Text
-
-Tidak perlu merindui Launchpad. TagLauncher menyusun aplikasi dalam grid bertag yang mesra papan kekunci.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Tiada lagi membuka folder satu demi satu atau menyelak halaman. Mencari aplikasi patut terus.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Peluncur app berbasis tag.
-
-Tidak perlu merindui Launchpad. TagLauncher menyusun aplikasi dalam grid bertag yang mesra papan kekunci.
-
-Jangan paksa alat ke satu folder. Aplikasi boleh berada dalam bacaan, reka bentuk, AI atau tag sendiri.
-
-Walaupun hanya ingat tag atau tujuan, Quick Search membantu mencari aplikasi yang betul.
-
-Eksport kategori, susunan dan susun atur sebagai JSON, kemudian pulihkan pada Mac lain.
-
-Data kekal pada Mac anda. Tiada akaun, awan, analitik, iklan atau penjejakan.
-
-## no — 挪威语
-
-- ASC locale: `no`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-no.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-no.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/no`
-- Subtitle: Etikettbasert appstarter
-
-### Promotional Text
-
-Du trenger ikke savne Launchpad. TagLauncher samler appene dine i ett taggbasert rutenett med tastatursnarveier.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Ingen mapper som må åpnes én og én, og ingen sider å bla i. Å finne en app bør være direkte.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Etikettbasert appstarter.
-
-Du trenger ikke savne Launchpad. TagLauncher samler appene dine i ett taggbasert rutenett med tastatursnarveier.
-
-Ikke lås verktøy til én mappe. En app kan høre til lesing, design, AI eller dine egne tagger.
-
-Selv om du bare husker en tagg eller et formål, finner Quick Search riktig app.
-
-Eksporter kategorier, rekkefølge og oppsett som JSON, og gjenopprett på en annen Mac.
-
-Data blir på Macen din. Ingen konto, skysynk, analyse, annonser eller sporing.
-
-## nl — 荷兰语
-
-- ASC locale: `nl`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-nl.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-nl.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/nl`
-- Subtitle: Taggebaseerde appstarter
-
-### Promotional Text
-
-Je hoeft Launchpad niet te missen. TagLauncher zet je apps in één tagraster dat prettig werkt met het toetsenbord.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Geen mappen één voor één openen en geen pagina’s doorbladeren. Een app vinden moet direct zijn.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Taggebaseerde appstarter.
-
-Je hoeft Launchpad niet te missen. TagLauncher zet je apps in één tagraster dat prettig werkt met het toetsenbord.
-
-Dwing tools niet in één map. Een app kan horen bij lezen, ontwerp, AI of je eigen tags.
-
-Ook als je alleen een tag of doel weet, brengt Quick Search je naar de juiste app.
-
-Exporteer categorieën, volgorde en lay-out als JSON en herstel ze op een andere Mac.
-
-Data blijft op je Mac. Geen account, cloudsync, analytics, advertenties of tracking.
-
-## pl — 波兰语
-
-- ASC locale: `pl`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-pl.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-pl.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/pl`
-- Subtitle: Launcher aplikacji oparty na tagach
-
-### Promotional Text
-
-Nie musisz tęsknić za Launchpadem. TagLauncher układa aplikacje w jedną siatkę z tagami i skrótami.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Bez otwierania folderów po kolei i przewijania stron. Znalezienie aplikacji powinno być proste.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Launcher aplikacji oparty na tagach.
-
-Nie musisz tęsknić za Launchpadem. TagLauncher układa aplikacje w jedną siatkę z tagami i skrótami.
-
-Nie zamykaj narzędzi w jednym folderze. Aplikacja może należeć do czytania, designu, AI lub własnych tagów.
-
-Wystarczy pamiętać tag lub cel. Quick Search doprowadzi do właściwej aplikacji.
-
-Eksportuj kategorie, kolejność i układ jako JSON, a potem przywróć na innym Macu.
-
-Dane zostają na Macu. Bez konta, chmury, analityki, reklam i śledzenia.
-
-## pt-BR — 葡萄牙语(巴西)
-
-- ASC locale: `pt-BR`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-pt-BR.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-pt-BR.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/pt-BR`
-- Subtitle: Inicializador de apps baseado em etiquetas
-
-### Promotional Text
-
-Você não precisa sentir falta do Launchpad. O TagLauncher organiza seus apps em uma grade com tags e atalhos.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Sem abrir pastas uma por uma ou virar páginas. Encontrar um app deve ser direto.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Inicializador de apps baseado em etiquetas.
-
-Você não precisa sentir falta do Launchpad. O TagLauncher organiza seus apps em uma grade com tags e atalhos.
-
-Não prenda suas ferramentas a uma pasta. Um app pode pertencer a leitura, design, IA ou tags próprias.
-
-Mesmo lembrando só uma tag ou finalidade, o Quick Search leva você ao app certo.
-
-Exporte categorias, ordem e layout como JSON e restaure em outro Mac.
-
-Os dados ficam no seu Mac. Sem conta, nuvem, analytics, anúncios ou rastreamento.
-
-## ro — 罗马尼亚语
-
-- ASC locale: `ro`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-ro.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-ro.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ro`
-- Subtitle: Lansator de aplicații bazat pe etichete
-
-### Promotional Text
-
-Nu trebuie să regreți Launchpad. TagLauncher pune aplicațiile într-o grilă cu etichete și scurtături.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Fără foldere deschise pe rând și fără pagini de răsfoit. Găsirea unei aplicații trebuie să fie directă.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Lansator de aplicații bazat pe etichete.
-
-Nu trebuie să regreți Launchpad. TagLauncher pune aplicațiile într-o grilă cu etichete și scurtături.
-
-Nu bloca instrumentele într-un singur folder. O aplicație poate aparține lecturii, designului, AI sau etichetelor tale.
-
-Chiar dacă îți amintești doar o etichetă sau un scop, Quick Search găsește aplicația corectă.
-
-Exportă categoriile, ordinea și aspectul ca JSON, apoi restaurează-le pe alt Mac.
-
-Datele rămân pe Mac. Fără cont, cloud, analiză, reclame sau urmărire.
-
-## ru — 俄语
-
-- ASC locale: `ru`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-ru.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-ru.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ru`
-- Subtitle: Лаунчер приложений на основе тегов
-
-### Promotional Text
-
-Launchpad больше не нужен. TagLauncher собирает приложения в одну сетку с тегами и быстрыми клавишами.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Не нужно открывать папки по одной и листать страницы. Поиск приложения должен быть прямым.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Лаунчер приложений на основе тегов.
-
-Launchpad больше не нужен. TagLauncher собирает приложения в одну сетку с тегами и быстрыми клавишами.
-
-Не загоняйте инструменты в одну папку. Приложение может относиться к чтению, дизайну, AI или вашим тегам.
-
-Даже если вы помните только тег или задачу, Quick Search найдет нужное приложение.
-
-Экспортируйте категории, порядок и раскладку в JSON и восстановите на другом Mac.
-
-Данные остаются на Mac. Без аккаунта, облака, аналитики, рекламы и отслеживания.
-
-## sv — 瑞典语
-
-- ASC locale: `sv`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-sv.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-sv.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/sv`
-- Subtitle: Taggbaserad appstartare
-
-### Promotional Text
-
-Du behöver inte sakna Launchpad. TagLauncher samlar apparna i ett taggbaserat rutnät med kortkommandon.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Inga mappar att öppna en i taget och inga sidor att bläddra igenom. Att hitta en app ska vara direkt.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Taggbaserad appstartare.
-
-Du behöver inte sakna Launchpad. TagLauncher samlar apparna i ett taggbaserat rutnät med kortkommandon.
-
-Lås inte verktyg i en enda mapp. En app kan höra till läsning, design, AI eller egna taggar.
-
-Även om du bara minns en tagg eller ett syfte hjälper Quick Search dig till rätt app.
-
-Exportera kategorier, ordning och layout som JSON och återställ på en annan Mac.
-
-Data stannar på din Mac. Inget konto, moln, analys, annonser eller spårning.
-
-## th — 泰语
-
-- ASC locale: `th`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-th.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-th.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/th`
-- Subtitle: ตัวเปิดแอปตามแท็ก
-
-### Promotional Text
-
-ไม่ต้องคิดถึง Launchpad อีกต่อไป TagLauncher จัดแอปไว้ในกริดเดียวที่ใช้แท็กและคีย์ลัดได้สะดวก
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-ไม่ต้องเปิดโฟลเดอร์ทีละอันหรือพลิกหน้าไปมา การหาแอปควรง่ายและตรงไปตรงมา
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — ตัวเปิดแอปตามแท็ก.
-
-ไม่ต้องคิดถึง Launchpad อีกต่อไป TagLauncher จัดแอปไว้ในกริดเดียวที่ใช้แท็กและคีย์ลัดได้สะดวก
-
-ไม่ต้องบังคับเครื่องมือให้อยู่ในโฟลเดอร์เดียว แอปหนึ่งอาจอยู่ในอ่าน ออกแบบ AI หรือแท็กของคุณเอง
-
-แม้จำได้แค่แท็กหรือวัตถุประสงค์ Quick Search ก็ช่วยพาคุณไปยังแอปที่ถูกต้อง
-
-ส่งออกหมวดหมู่ ลำดับ และเลย์เอาต์เป็น JSON แล้วกู้คืนบน Mac เครื่องอื่น
-
-ข้อมูลอยู่บน Mac ของคุณ ไม่มีบัญชี คลาวด์ วิเคราะห์ โฆษณา หรือการติดตาม
-
-## tr — 土耳其语
-
-- ASC locale: `tr`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-tr.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-tr.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/tr`
-- Subtitle: Etiket tabanlı uygulama başlatıcı
-
-### Promotional Text
-
-Launchpad’i özlemek zorunda değilsiniz. TagLauncher uygulamaları etiketli, klavye dostu tek bir ızgarada toplar.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Klasörleri tek tek açmak veya sayfa çevirmek yok. Bir uygulamayı bulmak doğrudan olmalı.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Etiket tabanlı uygulama başlatıcı.
-
-Launchpad’i özlemek zorunda değilsiniz. TagLauncher uygulamaları etiketli, klavye dostu tek bir ızgarada toplar.
-
-Araçları tek klasöre sıkıştırmayın. Bir uygulama okuma, tasarım, AI veya kendi etiketlerinize ait olabilir.
-
-Yalnızca etiketi veya amacı hatırlasanız bile Quick Search doğru uygulamayı bulur.
-
-Kategorileri, sırayı ve düzeni JSON olarak dışa aktarın, başka Mac’te geri yükleyin.
-
-Veriler Mac’inizde kalır. Hesap, bulut, analiz, reklam veya izleme yok.
-
-## uk — 乌克兰语
-
-- ASC locale: `uk`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-uk.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-uk.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/uk`
-- Subtitle: Запускач застосунків на основі тегів
-
-### Promotional Text
-
-Launchpad більше не потрібен. TagLauncher збирає програми в одну сітку з тегами та швидкими клавішами.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Без відкривання папок по черзі та гортання сторінок. Пошук програми має бути прямим.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Запускач застосунків на основі тегів.
-
-Launchpad більше не потрібен. TagLauncher збирає програми в одну сітку з тегами та швидкими клавішами.
-
-Не замикайте інструменти в одній папці. Програма може належати до читання, дизайну, AI або ваших тегів.
-
-Навіть якщо пам’ятаєте лише тег чи призначення, Quick Search знайде правильну програму.
-
-Експортуйте категорії, порядок і макет у JSON та відновлюйте на іншому Mac.
-
-Дані залишаються на Mac. Без акаунта, хмари, аналітики, реклами чи стеження.
-
-## vi — 越南语
-
-- ASC locale: `vi`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-vi.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-vi.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/vi`
-- Subtitle: Trình khởi chạy ứng dụng theo thẻ
-
-### Promotional Text
-
-Không cần tiếc Launchpad. TagLauncher đưa ứng dụng vào một lưới có thẻ, dễ dùng với bàn phím.
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-Không cần mở từng thư mục hay lật từng trang. Tìm ứng dụng nên trực tiếp hơn.
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — Trình khởi chạy ứng dụng theo thẻ.
-
-Không cần tiếc Launchpad. TagLauncher đưa ứng dụng vào một lưới có thẻ, dễ dùng với bàn phím.
-
-Đừng ép công cụ vào một thư mục. Một ứng dụng có thể thuộc đọc, thiết kế, AI hoặc thẻ tùy chỉnh.
-
-Dù chỉ nhớ thẻ hoặc mục đích, Quick Search vẫn giúp bạn đến đúng ứng dụng.
-
-Xuất danh mục, thứ tự và bố cục thành JSON rồi khôi phục trên Mac khác.
-
-Dữ liệu ở lại trên Mac. Không tài khoản, đám mây, phân tích, quảng cáo hay theo dõi.
-
-## zh-Hant — 繁体中文
-
-- ASC locale: `zh-Hant`
-- Marketing URL: https://shanghai3168.github.io/taglauncher/index-zh-Hant.html
-- Support URL: https://shanghai3168.github.io/taglauncher/support-zh-Hant.html
-- Screenshots: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/zh-Hant`
-- Subtitle: 基於標籤的應用程式啟動器
-
-### Promotional Text
-
-不用再懷念 Launchpad。TagLauncher 用標籤、快捷鍵與搜尋,把所有應用整理在一個畫面。
-
-### What's New
-
-Version 7.9.1 improves App Grid reliability and first-use guidance.
-
-不需要一個個打開資料夾,也不再需要翻頁。只是找一個應用,應該更直接。
-
-Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.
-
-### Description
-
-TagLauncher — 基於標籤的應用程式啟動器.
-
-不用再懷念 Launchpad。TagLauncher 用標籤、快捷鍵與搜尋,把所有應用整理在一個畫面。
-
-別再把工具塞進唯一資料夾。一個應用可以同時屬於閱讀、設計、AI 或任何自訂標籤。
-
-只記得標籤或用途也沒關係,Quick Search 會幫你找到正確應用。
-
-分類、排序與版面可以匯出為 JSON,換機或重裝後可以還原。
-
-資料留在你的 Mac。本版本沒有帳號、雲端同步、分析 SDK、廣告或追蹤。
diff --git "a/docs/X-Op\350\265\204\346\226\231/AppStoreConnect/localized-metadata.json" "b/docs/X-Op\350\265\204\346\226\231/AppStoreConnect/localized-metadata.json"
deleted file mode 100644
index cade7d0..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/AppStoreConnect/localized-metadata.json"
+++ /dev/null
@@ -1,327 +0,0 @@
-{
- "zh-Hans": {
- "ascLocale": "zh-Hans",
- "ascName": "简体中文",
- "appName": "TagLauncher",
- "subtitle": "基于标签的应用启动器",
- "promotionalText": "不用怀念 Launchpad。TagLauncher 用标签、快捷键和搜索把所有应用整理到一屏里。",
- "description": "TagLauncher — 基于标签的应用启动器.\n\n不用怀念 Launchpad。TagLauncher 用标签、快捷键和搜索把所有应用整理到一屏里。\n\n别再把工具塞进唯一文件夹。一个应用可以同时属于阅读、设计、AI 或任何你自定义的标签。\n\n只记得标签或用途也没关系,Quick Search 会帮你找到正确应用。\n\n分类、排序和布局可以导出为 JSON,换机或重装后可以恢复。\n\n数据留在你的 Mac。本版本没有账号、云同步、分析 SDK、广告或追踪。",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\n不需要一个个打开文件夹,也不再需要翻页。只是找一个应用而已,应该更直接。\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,标签,快捷搜索,备份与恢复,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/zh-Hans"
- },
- "en": {
- "ascLocale": "en-US",
- "ascName": "英语(美国)",
- "appName": "TagLauncher",
- "subtitle": "Tag-based app launcher",
- "promotionalText": "Do not mourn Launchpad. TagLauncher puts your apps into one tag-based, keyboard-friendly grid.",
- "description": "TagLauncher — Tag-based app launcher.\n\nDo not mourn Launchpad. TagLauncher puts your apps into one tag-based, keyboard-friendly grid.\n\nStop forcing tools into one folder. An app can belong to Reading, Design, AI, or any custom tag.\n\nEven if you remember only a tag or purpose, Quick Search helps you reach the right app.\n\nExport categories, order, and layout as JSON. Restore them after reinstalling or moving Macs.\n\nData stays on your Mac. This build has no account, cloud sync, analytics SDK, ads, or tracking.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nNo more opening folders one by one or flipping through pages. Finding an app should be direct.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Tags,Quick Search,Backup & Restore,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-en.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-en.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/en"
- },
- "ar": {
- "ascLocale": "ar",
- "ascName": "阿拉伯语",
- "appName": "TagLauncher",
- "subtitle": "مشغل تطبيقات قائم على الوسوم",
- "promotionalText": "لا تحتاج إلى Launchpad. يجمع TagLauncher تطبيقاتك في شبكة واحدة تعتمد على الوسوم وتعمل بسرعة من لوحة المفاتيح.",
- "description": "TagLauncher — مشغل تطبيقات قائم على الوسوم.\n\nلا تحتاج إلى Launchpad. يجمع TagLauncher تطبيقاتك في شبكة واحدة تعتمد على الوسوم وتعمل بسرعة من لوحة المفاتيح.\n\nلا تحصر أدواتك في مجلد واحد. يمكن للتطبيق أن ينتمي إلى القراءة أو التصميم أو الذكاء الاصطناعي أو أي وسم تختاره.\n\nحتى لو تذكرت الوسم أو الغرض فقط، يساعدك Quick Search في الوصول إلى التطبيق الصحيح.\n\nصدّر التصنيفات والترتيب والتخطيط كملف JSON واستعدها عند الانتقال إلى Mac آخر.\n\nتبقى البيانات على جهاز Mac. لا حسابات، ولا مزامنة سحابية، ولا تحليلات أو إعلانات أو تتبع.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nلا مزيد من فتح المجلدات واحداً تلو الآخر أو تقليب الصفحات. العثور على التطبيق يجب أن يكون مباشراً.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,الوسوم,Quick Search,نسخ احتياطي واستعادة,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-ar.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-ar.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ar"
- },
- "cs": {
- "ascLocale": "cs",
- "ascName": "捷克语",
- "appName": "TagLauncher",
- "subtitle": "Spouštěč aplikací podle štítků",
- "promotionalText": "Launchpad vám chybět nemusí. TagLauncher dá aplikace do jedné přehledné mřížky se štítky a klávesovými zkratkami.",
- "description": "TagLauncher — Spouštěč aplikací podle štítků.\n\nLaunchpad vám chybět nemusí. TagLauncher dá aplikace do jedné přehledné mřížky se štítky a klávesovými zkratkami.\n\nNenuťte nástroje do jedné složky. Aplikace může patřit do práce, designu, AI i vlastních štítků.\n\nStačí si pamatovat štítek nebo účel. Quick Search vás dovede ke správné aplikaci.\n\nKategorie, pořadí a rozložení exportujete jako JSON a obnovíte na jiném Macu.\n\nData zůstávají na Macu. Bez účtu, cloudu, analytiky, reklam i sledování.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nBez otevírání složek a listování stránkami. Najít aplikaci má být rychlé a přímé.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Štítky,Quick Search,Záloha a obnovení,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-cs.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-cs.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/cs"
- },
- "da": {
- "ascLocale": "da",
- "ascName": "丹麦语",
- "appName": "TagLauncher",
- "subtitle": "Tagbaseret appstarter",
- "promotionalText": "Du behøver ikke savne Launchpad. TagLauncher samler dine apps i ét tag-baseret grid med tastaturgenveje.",
- "description": "TagLauncher — Tagbaseret appstarter.\n\nDu behøver ikke savne Launchpad. TagLauncher samler dine apps i ét tag-baseret grid med tastaturgenveje.\n\nLad ikke værktøjer være låst til én mappe. En app kan høre til læsning, design, AI eller dine egne tags.\n\nSelv når du kun husker et tag eller et formål, finder Quick Search den rigtige app.\n\nEksportér kategorier, rækkefølge og layout som JSON, og gendan på en ny Mac.\n\nData bliver på din Mac. Ingen konto, cloudsync, analyse-SDK, reklamer eller sporing.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nIngen mapper, der skal åbnes enkeltvis, og ingen sider at bladre igennem. Det skal være direkte at finde en app.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Tags,Quick Search,Sikkerhedskopi og gendannelse,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-da.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-da.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/da"
- },
- "de": {
- "ascLocale": "de",
- "ascName": "德语",
- "appName": "TagLauncher",
- "subtitle": "Tag-basierter App-Launcher",
- "promotionalText": "Launchpad musst du nicht vermissen. TagLauncher bringt deine Apps in ein tag-basiertes, tastaturfreundliches Raster.",
- "description": "TagLauncher — Tag-basierter App-Launcher.\n\nLaunchpad musst du nicht vermissen. TagLauncher bringt deine Apps in ein tag-basiertes, tastaturfreundliches Raster.\n\nWerkzeuge müssen nicht in genau einen Ordner. Eine App kann zu Lesen, Design, KI oder eigenen Tags gehören.\n\nWenn du nur Tag oder Zweck kennst, führt Quick Search dich trotzdem zur richtigen App.\n\nKategorien, Reihenfolge und Layout als JSON exportieren und auf einem anderen Mac wiederherstellen.\n\nDaten bleiben auf deinem Mac. Kein Konto, keine Cloud-Sync, keine Analyse, keine Werbung, kein Tracking.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nKeine Ordner einzeln öffnen, keine Seiten durchblättern. Eine App zu finden sollte direkt sein.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Tags,Quick Search,Sichern & Wiederherstellen,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-de.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-de.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/de"
- },
- "es": {
- "ascLocale": "es-ES",
- "ascName": "西班牙语(西班牙)",
- "appName": "TagLauncher",
- "subtitle": "Lanzador de apps basado en etiquetas",
- "promotionalText": "No hace falta echar de menos Launchpad. TagLauncher organiza tus apps en una cuadrícula con etiquetas y atajos.",
- "description": "TagLauncher — Lanzador de apps basado en etiquetas.\n\nNo hace falta echar de menos Launchpad. TagLauncher organiza tus apps en una cuadrícula con etiquetas y atajos.\n\nNo encierres tus herramientas en una carpeta. Una app puede pertenecer a lectura, diseño, IA o cualquier etiqueta.\n\nAunque solo recuerdes una etiqueta o una finalidad, Quick Search te lleva a la app correcta.\n\nExporta categorías, orden y diseño como JSON y restáuralos al cambiar de Mac.\n\nLos datos se quedan en tu Mac. Sin cuenta, nube, analítica, anuncios ni rastreo.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nSin abrir carpetas una por una ni pasar páginas. Encontrar una app debería ser directo.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Etiquetas,Quick Search,Copia de seguridad,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-es.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-es.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/es"
- },
- "fr": {
- "ascLocale": "fr-FR",
- "ascName": "法语",
- "appName": "TagLauncher",
- "subtitle": "Lanceur d'applications par étiquettes",
- "promotionalText": "Inutile de regretter Launchpad. TagLauncher rassemble vos apps dans une grille à étiquettes, pensée pour le clavier.",
- "description": "TagLauncher — Lanceur d'applications par étiquettes.\n\nInutile de regretter Launchpad. TagLauncher rassemble vos apps dans une grille à étiquettes, pensée pour le clavier.\n\nNe forcez plus vos outils dans un seul dossier. Une app peut appartenir à lecture, design, IA ou vos propres étiquettes.\n\nMême si vous ne retenez qu’une étiquette ou un usage, Quick Search trouve la bonne app.\n\nExportez catégories, ordre et disposition en JSON, puis restaurez-les sur un autre Mac.\n\nLes données restent sur votre Mac. Aucun compte, cloud, SDK d’analyse, publicité ni suivi.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nPlus besoin d’ouvrir les dossiers un par un ni de tourner des pages. Trouver une app doit être direct.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Étiquettes,Quick Search,Sauvegarde et restauration,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-fr.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-fr.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/fr"
- },
- "id": {
- "ascLocale": "id",
- "ascName": "印度尼西亚语",
- "appName": "TagLauncher",
- "subtitle": "Peluncur app berbasis tag",
- "promotionalText": "Tidak perlu merindukan Launchpad. TagLauncher menaruh app Anda dalam grid bertag yang nyaman dengan keyboard.",
- "description": "TagLauncher — Peluncur app berbasis tag.\n\nTidak perlu merindukan Launchpad. TagLauncher menaruh app Anda dalam grid bertag yang nyaman dengan keyboard.\n\nJangan paksa alat masuk ke satu folder. Satu app bisa masuk kerja, desain, AI, atau tag buatan Anda.\n\nMeski hanya ingat tag atau kegunaan, Quick Search membantu menemukan app yang tepat.\n\nEkspor kategori, urutan, dan tata letak sebagai JSON, lalu pulihkan di Mac lain.\n\nData tetap di Mac Anda. Tanpa akun, sinkron cloud, analitik, iklan, atau pelacakan.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nTidak perlu membuka folder satu per satu atau membalik halaman. Mencari app seharusnya langsung.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Tag,Quick Search,Cadangkan & pulihkan,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-id.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-id.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/id"
- },
- "it": {
- "ascLocale": "it",
- "ascName": "意大利语",
- "appName": "TagLauncher",
- "subtitle": "Launcher di app basato su tag",
- "promotionalText": "Non serve rimpiangere Launchpad. TagLauncher organizza le app in una griglia con tag e scorciatoie.",
- "description": "TagLauncher — Launcher di app basato su tag.\n\nNon serve rimpiangere Launchpad. TagLauncher organizza le app in una griglia con tag e scorciatoie.\n\nNon bloccare gli strumenti in una sola cartella. Un’app può appartenere a lettura, design, IA o tag personalizzati.\n\nAnche se ricordi solo un tag o uno scopo, Quick Search ti porta all’app giusta.\n\nEsporta categorie, ordine e layout in JSON e ripristinali su un altro Mac.\n\nI dati restano sul Mac. Nessun account, cloud, analisi, pubblicità o tracciamento.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nNiente cartelle da aprire una a una, niente pagine da sfogliare. Trovare un’app deve essere diretto.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Tag,Quick Search,Backup e ripristino,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-it.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-it.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/it"
- },
- "ja": {
- "ascLocale": "ja",
- "ascName": "日语",
- "appName": "TagLauncher",
- "subtitle": "タグベースのアプリランチャー",
- "promotionalText": "Launchpad に頼る必要はありません。TagLauncher はアプリをタグ付きの一覧にまとめ、キーボードですばやく呼び出せます。",
- "description": "TagLauncher — タグベースのアプリランチャー.\n\nLaunchpad に頼る必要はありません。TagLauncher はアプリをタグ付きの一覧にまとめ、キーボードですばやく呼び出せます。\n\nツールを1つのフォルダに閉じ込めないでください。読書、デザイン、AI など自由なタグに分類できます。\n\nタグや用途だけ覚えていても、Quick Search が目的のアプリへ導きます。\n\nカテゴリ、順序、レイアウトを JSON として書き出し、別の Mac で復元できます。\n\nデータは Mac 内に保存されます。アカウント、クラウド同期、分析、広告、トラッキングはありません。",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nフォルダを1つずつ開いたり、ページをめくったりする必要はありません。アプリ探しはもっと直接的であるべきです。\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,タグ,Quick Search,バックアップと復元,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-ja.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-ja.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ja"
- },
- "ko": {
- "ascLocale": "ko",
- "ascName": "韩语",
- "appName": "TagLauncher",
- "subtitle": "태그 기반 앱 런처",
- "promotionalText": "Launchpad를 그리워할 필요가 없습니다. TagLauncher는 앱을 태그 기반 그리드에 정리하고 키보드로 빠르게 엽니다.",
- "description": "TagLauncher — 태그 기반 앱 런처.\n\nLaunchpad를 그리워할 필요가 없습니다. TagLauncher는 앱을 태그 기반 그리드에 정리하고 키보드로 빠르게 엽니다.\n\n도구를 하나의 폴더에 가두지 마세요. 앱은 읽기, 디자인, AI 또는 사용자 태그에 동시에 속할 수 있습니다.\n\n태그나 용도만 기억해도 Quick Search가 올바른 앱을 찾아줍니다.\n\n카테고리, 순서, 레이아웃을 JSON으로 내보내고 다른 Mac에서 복원하세요.\n\n데이터는 Mac에 남습니다. 계정, 클라우드 동기화, 분석, 광고, 추적이 없습니다.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\n폴더를 하나씩 열거나 페이지를 넘길 필요가 없습니다. 앱 찾기는 더 직접적이어야 합니다.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,태그,Quick Search,백업 및 복원,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-ko.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-ko.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ko"
- },
- "ms": {
- "ascLocale": "ms",
- "ascName": "马来语",
- "appName": "TagLauncher",
- "subtitle": "Peluncur app berbasis tag",
- "promotionalText": "Tidak perlu merindui Launchpad. TagLauncher menyusun aplikasi dalam grid bertag yang mesra papan kekunci.",
- "description": "TagLauncher — Peluncur app berbasis tag.\n\nTidak perlu merindui Launchpad. TagLauncher menyusun aplikasi dalam grid bertag yang mesra papan kekunci.\n\nJangan paksa alat ke satu folder. Aplikasi boleh berada dalam bacaan, reka bentuk, AI atau tag sendiri.\n\nWalaupun hanya ingat tag atau tujuan, Quick Search membantu mencari aplikasi yang betul.\n\nEksport kategori, susunan dan susun atur sebagai JSON, kemudian pulihkan pada Mac lain.\n\nData kekal pada Mac anda. Tiada akaun, awan, analitik, iklan atau penjejakan.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nTiada lagi membuka folder satu demi satu atau menyelak halaman. Mencari aplikasi patut terus.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Tag,Quick Search,Sandaran & pulih,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-ms.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-ms.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ms"
- },
- "no": {
- "ascLocale": "no",
- "ascName": "挪威语",
- "appName": "TagLauncher",
- "subtitle": "Etikettbasert appstarter",
- "promotionalText": "Du trenger ikke savne Launchpad. TagLauncher samler appene dine i ett taggbasert rutenett med tastatursnarveier.",
- "description": "TagLauncher — Etikettbasert appstarter.\n\nDu trenger ikke savne Launchpad. TagLauncher samler appene dine i ett taggbasert rutenett med tastatursnarveier.\n\nIkke lås verktøy til én mappe. En app kan høre til lesing, design, AI eller dine egne tagger.\n\nSelv om du bare husker en tagg eller et formål, finner Quick Search riktig app.\n\nEksporter kategorier, rekkefølge og oppsett som JSON, og gjenopprett på en annen Mac.\n\nData blir på Macen din. Ingen konto, skysynk, analyse, annonser eller sporing.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nIngen mapper som må åpnes én og én, og ingen sider å bla i. Å finne en app bør være direkte.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Etiketter,Quick Search,Sikkerhetskopi og gjenoppretting,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-no.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-no.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/no"
- },
- "nl": {
- "ascLocale": "nl",
- "ascName": "荷兰语",
- "appName": "TagLauncher",
- "subtitle": "Taggebaseerde appstarter",
- "promotionalText": "Je hoeft Launchpad niet te missen. TagLauncher zet je apps in één tagraster dat prettig werkt met het toetsenbord.",
- "description": "TagLauncher — Taggebaseerde appstarter.\n\nJe hoeft Launchpad niet te missen. TagLauncher zet je apps in één tagraster dat prettig werkt met het toetsenbord.\n\nDwing tools niet in één map. Een app kan horen bij lezen, ontwerp, AI of je eigen tags.\n\nOok als je alleen een tag of doel weet, brengt Quick Search je naar de juiste app.\n\nExporteer categorieën, volgorde en lay-out als JSON en herstel ze op een andere Mac.\n\nData blijft op je Mac. Geen account, cloudsync, analytics, advertenties of tracking.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nGeen mappen één voor één openen en geen pagina’s doorbladeren. Een app vinden moet direct zijn.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Tags,Quick Search,Back-up en herstel,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-nl.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-nl.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/nl"
- },
- "pl": {
- "ascLocale": "pl",
- "ascName": "波兰语",
- "appName": "TagLauncher",
- "subtitle": "Launcher aplikacji oparty na tagach",
- "promotionalText": "Nie musisz tęsknić za Launchpadem. TagLauncher układa aplikacje w jedną siatkę z tagami i skrótami.",
- "description": "TagLauncher — Launcher aplikacji oparty na tagach.\n\nNie musisz tęsknić za Launchpadem. TagLauncher układa aplikacje w jedną siatkę z tagami i skrótami.\n\nNie zamykaj narzędzi w jednym folderze. Aplikacja może należeć do czytania, designu, AI lub własnych tagów.\n\nWystarczy pamiętać tag lub cel. Quick Search doprowadzi do właściwej aplikacji.\n\nEksportuj kategorie, kolejność i układ jako JSON, a potem przywróć na innym Macu.\n\nDane zostają na Macu. Bez konta, chmury, analityki, reklam i śledzenia.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nBez otwierania folderów po kolei i przewijania stron. Znalezienie aplikacji powinno być proste.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Tagi,Quick Search,Kopia zapasowa i przywracanie,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-pl.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-pl.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/pl"
- },
- "pt-BR": {
- "ascLocale": "pt-BR",
- "ascName": "葡萄牙语(巴西)",
- "appName": "TagLauncher",
- "subtitle": "Inicializador de apps baseado em etiquetas",
- "promotionalText": "Você não precisa sentir falta do Launchpad. O TagLauncher organiza seus apps em uma grade com tags e atalhos.",
- "description": "TagLauncher — Inicializador de apps baseado em etiquetas.\n\nVocê não precisa sentir falta do Launchpad. O TagLauncher organiza seus apps em uma grade com tags e atalhos.\n\nNão prenda suas ferramentas a uma pasta. Um app pode pertencer a leitura, design, IA ou tags próprias.\n\nMesmo lembrando só uma tag ou finalidade, o Quick Search leva você ao app certo.\n\nExporte categorias, ordem e layout como JSON e restaure em outro Mac.\n\nOs dados ficam no seu Mac. Sem conta, nuvem, analytics, anúncios ou rastreamento.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nSem abrir pastas uma por uma ou virar páginas. Encontrar um app deve ser direto.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Etiquetas,Quick Search,Backup e restauração,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-pt-BR.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-pt-BR.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/pt-BR"
- },
- "ro": {
- "ascLocale": "ro",
- "ascName": "罗马尼亚语",
- "appName": "TagLauncher",
- "subtitle": "Lansator de aplicații bazat pe etichete",
- "promotionalText": "Nu trebuie să regreți Launchpad. TagLauncher pune aplicațiile într-o grilă cu etichete și scurtături.",
- "description": "TagLauncher — Lansator de aplicații bazat pe etichete.\n\nNu trebuie să regreți Launchpad. TagLauncher pune aplicațiile într-o grilă cu etichete și scurtături.\n\nNu bloca instrumentele într-un singur folder. O aplicație poate aparține lecturii, designului, AI sau etichetelor tale.\n\nChiar dacă îți amintești doar o etichetă sau un scop, Quick Search găsește aplicația corectă.\n\nExportă categoriile, ordinea și aspectul ca JSON, apoi restaurează-le pe alt Mac.\n\nDatele rămân pe Mac. Fără cont, cloud, analiză, reclame sau urmărire.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nFără foldere deschise pe rând și fără pagini de răsfoit. Găsirea unei aplicații trebuie să fie directă.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Etichete,Quick Search,Backup și restaurare,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-ro.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-ro.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ro"
- },
- "ru": {
- "ascLocale": "ru",
- "ascName": "俄语",
- "appName": "TagLauncher",
- "subtitle": "Лаунчер приложений на основе тегов",
- "promotionalText": "Launchpad больше не нужен. TagLauncher собирает приложения в одну сетку с тегами и быстрыми клавишами.",
- "description": "TagLauncher — Лаунчер приложений на основе тегов.\n\nLaunchpad больше не нужен. TagLauncher собирает приложения в одну сетку с тегами и быстрыми клавишами.\n\nНе загоняйте инструменты в одну папку. Приложение может относиться к чтению, дизайну, AI или вашим тегам.\n\nДаже если вы помните только тег или задачу, Quick Search найдет нужное приложение.\n\nЭкспортируйте категории, порядок и раскладку в JSON и восстановите на другом Mac.\n\nДанные остаются на Mac. Без аккаунта, облака, аналитики, рекламы и отслеживания.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nНе нужно открывать папки по одной и листать страницы. Поиск приложения должен быть прямым.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Теги,Quick Search,Резервное копирование,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-ru.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-ru.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/ru"
- },
- "sv": {
- "ascLocale": "sv",
- "ascName": "瑞典语",
- "appName": "TagLauncher",
- "subtitle": "Taggbaserad appstartare",
- "promotionalText": "Du behöver inte sakna Launchpad. TagLauncher samlar apparna i ett taggbaserat rutnät med kortkommandon.",
- "description": "TagLauncher — Taggbaserad appstartare.\n\nDu behöver inte sakna Launchpad. TagLauncher samlar apparna i ett taggbaserat rutnät med kortkommandon.\n\nLås inte verktyg i en enda mapp. En app kan höra till läsning, design, AI eller egna taggar.\n\nÄven om du bara minns en tagg eller ett syfte hjälper Quick Search dig till rätt app.\n\nExportera kategorier, ordning och layout som JSON och återställ på en annan Mac.\n\nData stannar på din Mac. Inget konto, moln, analys, annonser eller spårning.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nInga mappar att öppna en i taget och inga sidor att bläddra igenom. Att hitta en app ska vara direkt.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Taggar,Quick Search,Säkerhetskopiera och återställ,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-sv.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-sv.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/sv"
- },
- "th": {
- "ascLocale": "th",
- "ascName": "泰语",
- "appName": "TagLauncher",
- "subtitle": "ตัวเปิดแอปตามแท็ก",
- "promotionalText": "ไม่ต้องคิดถึง Launchpad อีกต่อไป TagLauncher จัดแอปไว้ในกริดเดียวที่ใช้แท็กและคีย์ลัดได้สะดวก",
- "description": "TagLauncher — ตัวเปิดแอปตามแท็ก.\n\nไม่ต้องคิดถึง Launchpad อีกต่อไป TagLauncher จัดแอปไว้ในกริดเดียวที่ใช้แท็กและคีย์ลัดได้สะดวก\n\nไม่ต้องบังคับเครื่องมือให้อยู่ในโฟลเดอร์เดียว แอปหนึ่งอาจอยู่ในอ่าน ออกแบบ AI หรือแท็กของคุณเอง\n\nแม้จำได้แค่แท็กหรือวัตถุประสงค์ Quick Search ก็ช่วยพาคุณไปยังแอปที่ถูกต้อง\n\nส่งออกหมวดหมู่ ลำดับ และเลย์เอาต์เป็น JSON แล้วกู้คืนบน Mac เครื่องอื่น\n\nข้อมูลอยู่บน Mac ของคุณ ไม่มีบัญชี คลาวด์ วิเคราะห์ โฆษณา หรือการติดตาม",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nไม่ต้องเปิดโฟลเดอร์ทีละอันหรือพลิกหน้าไปมา การหาแอปควรง่ายและตรงไปตรงมา\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,แท็ก,Quick Search,สำรองและกู้คืน,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-th.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-th.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/th"
- },
- "tr": {
- "ascLocale": "tr",
- "ascName": "土耳其语",
- "appName": "TagLauncher",
- "subtitle": "Etiket tabanlı uygulama başlatıcı",
- "promotionalText": "Launchpad’i özlemek zorunda değilsiniz. TagLauncher uygulamaları etiketli, klavye dostu tek bir ızgarada toplar.",
- "description": "TagLauncher — Etiket tabanlı uygulama başlatıcı.\n\nLaunchpad’i özlemek zorunda değilsiniz. TagLauncher uygulamaları etiketli, klavye dostu tek bir ızgarada toplar.\n\nAraçları tek klasöre sıkıştırmayın. Bir uygulama okuma, tasarım, AI veya kendi etiketlerinize ait olabilir.\n\nYalnızca etiketi veya amacı hatırlasanız bile Quick Search doğru uygulamayı bulur.\n\nKategorileri, sırayı ve düzeni JSON olarak dışa aktarın, başka Mac’te geri yükleyin.\n\nVeriler Mac’inizde kalır. Hesap, bulut, analiz, reklam veya izleme yok.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nKlasörleri tek tek açmak veya sayfa çevirmek yok. Bir uygulamayı bulmak doğrudan olmalı.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Etiketler,Quick Search,Yedekle ve geri yükle,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-tr.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-tr.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/tr"
- },
- "uk": {
- "ascLocale": "uk",
- "ascName": "乌克兰语",
- "appName": "TagLauncher",
- "subtitle": "Запускач застосунків на основі тегів",
- "promotionalText": "Launchpad більше не потрібен. TagLauncher збирає програми в одну сітку з тегами та швидкими клавішами.",
- "description": "TagLauncher — Запускач застосунків на основі тегів.\n\nLaunchpad більше не потрібен. TagLauncher збирає програми в одну сітку з тегами та швидкими клавішами.\n\nНе замикайте інструменти в одній папці. Програма може належати до читання, дизайну, AI або ваших тегів.\n\nНавіть якщо пам’ятаєте лише тег чи призначення, Quick Search знайде правильну програму.\n\nЕкспортуйте категорії, порядок і макет у JSON та відновлюйте на іншому Mac.\n\nДані залишаються на Mac. Без акаунта, хмари, аналітики, реклами чи стеження.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nБез відкривання папок по черзі та гортання сторінок. Пошук програми має бути прямим.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Теги,Quick Search,Резервне копіювання,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-uk.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-uk.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/uk"
- },
- "vi": {
- "ascLocale": "vi",
- "ascName": "越南语",
- "appName": "TagLauncher",
- "subtitle": "Trình khởi chạy ứng dụng theo thẻ",
- "promotionalText": "Không cần tiếc Launchpad. TagLauncher đưa ứng dụng vào một lưới có thẻ, dễ dùng với bàn phím.",
- "description": "TagLauncher — Trình khởi chạy ứng dụng theo thẻ.\n\nKhông cần tiếc Launchpad. TagLauncher đưa ứng dụng vào một lưới có thẻ, dễ dùng với bàn phím.\n\nĐừng ép công cụ vào một thư mục. Một ứng dụng có thể thuộc đọc, thiết kế, AI hoặc thẻ tùy chỉnh.\n\nDù chỉ nhớ thẻ hoặc mục đích, Quick Search vẫn giúp bạn đến đúng ứng dụng.\n\nXuất danh mục, thứ tự và bố cục thành JSON rồi khôi phục trên Mac khác.\n\nDữ liệu ở lại trên Mac. Không tài khoản, đám mây, phân tích, quảng cáo hay theo dõi.",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\nKhông cần mở từng thư mục hay lật từng trang. Tìm ứng dụng nên trực tiếp hơn.\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,Thẻ,Quick Search,Sao lưu & khôi phục,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-vi.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-vi.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/vi"
- },
- "zh-Hant": {
- "ascLocale": "zh-Hant",
- "ascName": "繁体中文",
- "appName": "TagLauncher",
- "subtitle": "基於標籤的應用程式啟動器",
- "promotionalText": "不用再懷念 Launchpad。TagLauncher 用標籤、快捷鍵與搜尋,把所有應用整理在一個畫面。",
- "description": "TagLauncher — 基於標籤的應用程式啟動器.\n\n不用再懷念 Launchpad。TagLauncher 用標籤、快捷鍵與搜尋,把所有應用整理在一個畫面。\n\n別再把工具塞進唯一資料夾。一個應用可以同時屬於閱讀、設計、AI 或任何自訂標籤。\n\n只記得標籤或用途也沒關係,Quick Search 會幫你找到正確應用。\n\n分類、排序與版面可以匯出為 JSON,換機或重裝後可以還原。\n\n資料留在你的 Mac。本版本沒有帳號、雲端同步、分析 SDK、廣告或追蹤。",
- "whatsNew": "Version 7.9.1 improves App Grid reliability and first-use guidance.\n\n不需要一個個打開資料夾,也不再需要翻頁。只是找一個應用,應該更直接。\n\nEmpty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings.",
- "keywords": "TagLauncher,Launchpad,標籤,快捷搜尋,備份與還原,Mac",
- "marketingUrl": "https://shanghai3168.github.io/taglauncher/index-zh-Hant.html",
- "supportUrl": "https://shanghai3168.github.io/taglauncher/support-zh-Hant.html",
- "screenshotsDir": "/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/zh-Hant"
- }
-}
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 8dcff8e..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/02-four-views-2880x1800.png"
deleted file mode 100644
index cca21bb..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index cbf69f2..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/04-quick-search-2880x1800.png"
deleted file mode 100644
index 763af56..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/05-app-notes-2880x1800.png"
deleted file mode 100644
index 793efe1..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/06-private-offline-2880x1800.png"
deleted file mode 100644
index 57cf3df..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/_contact-sheet.png"
deleted file mode 100644
index 6f95690..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ar/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 4b04ba8..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/02-four-views-2880x1800.png"
deleted file mode 100644
index f6a6d24..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 2e416e7..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/04-quick-search-2880x1800.png"
deleted file mode 100644
index 07f8c8a..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/05-app-notes-2880x1800.png"
deleted file mode 100644
index 6babc07..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/06-private-offline-2880x1800.png"
deleted file mode 100644
index 29be850..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/_contact-sheet.png"
deleted file mode 100644
index 8726c5b..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/cs/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index c9649ba..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/02-four-views-2880x1800.png"
deleted file mode 100644
index 087fdaf..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index d0fdd18..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/04-quick-search-2880x1800.png"
deleted file mode 100644
index 08d292e..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/05-app-notes-2880x1800.png"
deleted file mode 100644
index abc93ef..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/06-private-offline-2880x1800.png"
deleted file mode 100644
index fbc528b..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/_contact-sheet.png"
deleted file mode 100644
index 91f1773..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/da/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 72f9836..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/02-four-views-2880x1800.png"
deleted file mode 100644
index 931ea3f..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index a553e1e..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/04-quick-search-2880x1800.png"
deleted file mode 100644
index 52d36c1..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/05-app-notes-2880x1800.png"
deleted file mode 100644
index ecab9c9..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/06-private-offline-2880x1800.png"
deleted file mode 100644
index 745a559..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/_contact-sheet.png"
deleted file mode 100644
index 8cf63a3..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/de/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 1f0fb15..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/02-four-views-2880x1800.png"
deleted file mode 100644
index f0d487a..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 8844afe..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/04-quick-search-2880x1800.png"
deleted file mode 100644
index bc76227..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/05-app-notes-2880x1800.png"
deleted file mode 100644
index 3210363..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/06-private-offline-2880x1800.png"
deleted file mode 100644
index 25383b1..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/_contact-sheet.png"
deleted file mode 100644
index 791c889..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/en/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index f912294..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/02-four-views-2880x1800.png"
deleted file mode 100644
index af3dd96..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 05bb596..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/04-quick-search-2880x1800.png"
deleted file mode 100644
index edcd348..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/05-app-notes-2880x1800.png"
deleted file mode 100644
index d933eb3..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/06-private-offline-2880x1800.png"
deleted file mode 100644
index ef879ae..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/_contact-sheet.png"
deleted file mode 100644
index 1339476..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/es/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index ca1c6f7..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/02-four-views-2880x1800.png"
deleted file mode 100644
index 7a8c67d..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 89f0f5c..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/04-quick-search-2880x1800.png"
deleted file mode 100644
index f6fd19e..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/05-app-notes-2880x1800.png"
deleted file mode 100644
index e878d55..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/06-private-offline-2880x1800.png"
deleted file mode 100644
index 7998e65..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/_contact-sheet.png"
deleted file mode 100644
index 10f5a99..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/fr/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index bf5dacc..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/02-four-views-2880x1800.png"
deleted file mode 100644
index 4bf3c73..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 2c24bbb..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/04-quick-search-2880x1800.png"
deleted file mode 100644
index e507336..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/05-app-notes-2880x1800.png"
deleted file mode 100644
index 49565e8..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/06-private-offline-2880x1800.png"
deleted file mode 100644
index 8e4d9c8..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/_contact-sheet.png"
deleted file mode 100644
index 44e5bd4..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/id/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 7b88cfb..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/02-four-views-2880x1800.png"
deleted file mode 100644
index e930146..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 08115d5..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/04-quick-search-2880x1800.png"
deleted file mode 100644
index 1b4d997..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/05-app-notes-2880x1800.png"
deleted file mode 100644
index 7df9d0d..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/06-private-offline-2880x1800.png"
deleted file mode 100644
index 19ab276..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/_contact-sheet.png"
deleted file mode 100644
index a2d6095..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/it/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 3b4d20a..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/02-four-views-2880x1800.png"
deleted file mode 100644
index 94885d3..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 52e00d2..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/04-quick-search-2880x1800.png"
deleted file mode 100644
index 09fb7bd..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/05-app-notes-2880x1800.png"
deleted file mode 100644
index d02ffa6..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/06-private-offline-2880x1800.png"
deleted file mode 100644
index 60c25ea..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/_contact-sheet.png"
deleted file mode 100644
index 081a368..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ja/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 0d7a7d5..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/02-four-views-2880x1800.png"
deleted file mode 100644
index 6c5cd63..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 3c031a3..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/04-quick-search-2880x1800.png"
deleted file mode 100644
index 69baeb6..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/05-app-notes-2880x1800.png"
deleted file mode 100644
index 8dedee5..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/06-private-offline-2880x1800.png"
deleted file mode 100644
index 4d3ca7a..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/_contact-sheet.png"
deleted file mode 100644
index c9ccd94..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ko/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index e0d5dc2..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/02-four-views-2880x1800.png"
deleted file mode 100644
index 6fd2adc..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index ba42aa3..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/04-quick-search-2880x1800.png"
deleted file mode 100644
index be2a21f..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/05-app-notes-2880x1800.png"
deleted file mode 100644
index d4c7ccc..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/06-private-offline-2880x1800.png"
deleted file mode 100644
index 862579a..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/_contact-sheet.png"
deleted file mode 100644
index 3a0cd0d..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ms/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 9a11af1..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/02-four-views-2880x1800.png"
deleted file mode 100644
index 41f04bc..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 03306ff..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/04-quick-search-2880x1800.png"
deleted file mode 100644
index 8eaa8e7..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/05-app-notes-2880x1800.png"
deleted file mode 100644
index fa0479e..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/06-private-offline-2880x1800.png"
deleted file mode 100644
index d3b961d..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/_contact-sheet.png"
deleted file mode 100644
index 194b703..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/nl/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 875b8fe..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/02-four-views-2880x1800.png"
deleted file mode 100644
index d21b016..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 08a3447..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/04-quick-search-2880x1800.png"
deleted file mode 100644
index 06138c9..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/05-app-notes-2880x1800.png"
deleted file mode 100644
index 0ddb4a4..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/06-private-offline-2880x1800.png"
deleted file mode 100644
index 20ff16b..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/_contact-sheet.png"
deleted file mode 100644
index 38c3fb4..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/no/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 6927037..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/02-four-views-2880x1800.png"
deleted file mode 100644
index 9076d5f..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index a2bf124..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/04-quick-search-2880x1800.png"
deleted file mode 100644
index a38e20f..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/05-app-notes-2880x1800.png"
deleted file mode 100644
index ebab9d6..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/06-private-offline-2880x1800.png"
deleted file mode 100644
index 154f4b3..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/_contact-sheet.png"
deleted file mode 100644
index 90bcd45..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pl/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index c028978..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/02-four-views-2880x1800.png"
deleted file mode 100644
index 7e6fc19..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 2053f8b..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/04-quick-search-2880x1800.png"
deleted file mode 100644
index 539f345..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/05-app-notes-2880x1800.png"
deleted file mode 100644
index 0f87a14..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/06-private-offline-2880x1800.png"
deleted file mode 100644
index 961182d..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/_contact-sheet.png"
deleted file mode 100644
index c506f1d..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/pt-BR/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 47a07c9..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/02-four-views-2880x1800.png"
deleted file mode 100644
index 442c696..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 55975a2..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/04-quick-search-2880x1800.png"
deleted file mode 100644
index 73c8cbf..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/05-app-notes-2880x1800.png"
deleted file mode 100644
index 1760f08..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/06-private-offline-2880x1800.png"
deleted file mode 100644
index b67f901..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/_contact-sheet.png"
deleted file mode 100644
index 1747fb6..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ro/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index da12da3..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/02-four-views-2880x1800.png"
deleted file mode 100644
index 0582919..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 101bf24..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/04-quick-search-2880x1800.png"
deleted file mode 100644
index a68e366..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/05-app-notes-2880x1800.png"
deleted file mode 100644
index 13d005a..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/06-private-offline-2880x1800.png"
deleted file mode 100644
index e056cd9..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/_contact-sheet.png"
deleted file mode 100644
index e3b1a6b..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/ru/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 22fce3a..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/02-four-views-2880x1800.png"
deleted file mode 100644
index 7dc6003..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index c40bb50..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/04-quick-search-2880x1800.png"
deleted file mode 100644
index 79492c4..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/05-app-notes-2880x1800.png"
deleted file mode 100644
index 2f7a18b..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/06-private-offline-2880x1800.png"
deleted file mode 100644
index fdf7a62..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/_contact-sheet.png"
deleted file mode 100644
index a03d34e..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/sv/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index b3fe696..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/02-four-views-2880x1800.png"
deleted file mode 100644
index 56880ef..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index dc576a2..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/04-quick-search-2880x1800.png"
deleted file mode 100644
index 0a76be1..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/05-app-notes-2880x1800.png"
deleted file mode 100644
index f0541c7..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/06-private-offline-2880x1800.png"
deleted file mode 100644
index f8328b3..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/_contact-sheet.png"
deleted file mode 100644
index f602e92..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/th/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index bd82159..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/02-four-views-2880x1800.png"
deleted file mode 100644
index 1b4b5f9..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 10c4eac..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/04-quick-search-2880x1800.png"
deleted file mode 100644
index c785aab..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/05-app-notes-2880x1800.png"
deleted file mode 100644
index a681256..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/06-private-offline-2880x1800.png"
deleted file mode 100644
index 6843849..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/_contact-sheet.png"
deleted file mode 100644
index ddbda4a..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/tr/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index e72d236..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/02-four-views-2880x1800.png"
deleted file mode 100644
index 566ec8c..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index adc2cf5..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/04-quick-search-2880x1800.png"
deleted file mode 100644
index 5f44317..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/05-app-notes-2880x1800.png"
deleted file mode 100644
index 9ae4426..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/06-private-offline-2880x1800.png"
deleted file mode 100644
index 526b7ef..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/_contact-sheet.png"
deleted file mode 100644
index 4258b43..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/uk/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 24098ac..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/02-four-views-2880x1800.png"
deleted file mode 100644
index 4aaa1ab..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 2f2cfcf..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/04-quick-search-2880x1800.png"
deleted file mode 100644
index 76e89f9..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/05-app-notes-2880x1800.png"
deleted file mode 100644
index c429bd0..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/06-private-offline-2880x1800.png"
deleted file mode 100644
index 6be917d..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/_contact-sheet.png"
deleted file mode 100644
index 8ef6d83..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/vi/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index b0d0ba9..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/02-four-views-2880x1800.png"
deleted file mode 100644
index ed5badf..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 2033f75..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/04-quick-search-2880x1800.png"
deleted file mode 100644
index 21153ec..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/05-app-notes-2880x1800.png"
deleted file mode 100644
index ae2126b..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/06-private-offline-2880x1800.png"
deleted file mode 100644
index 5fab392..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/_contact-sheet.png"
deleted file mode 100644
index a0681b8..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hans/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/01-hero-launcher-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/01-hero-launcher-2880x1800.png"
deleted file mode 100644
index 4f1a2a8..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/01-hero-launcher-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/02-four-views-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/02-four-views-2880x1800.png"
deleted file mode 100644
index 47a6463..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/02-four-views-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/03-multi-tag-system-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/03-multi-tag-system-2880x1800.png"
deleted file mode 100644
index 11e19bc..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/03-multi-tag-system-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/04-quick-search-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/04-quick-search-2880x1800.png"
deleted file mode 100644
index 4e2ba7c..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/04-quick-search-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/05-app-notes-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/05-app-notes-2880x1800.png"
deleted file mode 100644
index c908971..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/05-app-notes-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/06-private-offline-2880x1800.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/06-private-offline-2880x1800.png"
deleted file mode 100644
index f66041c..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/06-private-offline-2880x1800.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/_contact-sheet.png" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/_contact-sheet.png"
deleted file mode 100644
index ae9be94..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/AppStore-Marketing/zh-Hant/_contact-sheet.png"
+++ /dev/null
Binary files differ
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/render_marketing_screenshots.mjs" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/render_marketing_screenshots.mjs"
deleted file mode 100644
index cbb3ebd..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/render_marketing_screenshots.mjs"
+++ /dev/null
@@ -1,447 +0,0 @@
-import fsSync from "node:fs";
-import fs from "node:fs/promises";
-import path from "node:path";
-import { createRequire } from "node:module";
-import { fileURLToPath } from "node:url";
-import {
- LOCALES,
- getCopy,
- loadAppStrings,
- modeLabels
-} from "../../../docs/scripts/localized-content.mjs";
-
-const require = createRequire(import.meta.url);
-const { chromium } = require("playwright");
-
-const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url));
-const ROOT = path.resolve(SCRIPT_DIR, "../../..");
-const ASSETS = path.join(ROOT, "docs/assets");
-const OUT_ROOT = path.join(ROOT, "Docs/X-Op资料/Screenshots/AppStore-Marketing");
-const W = 2880;
-const H = 1800;
-
-function esc(value) {
- return String(value ?? "")
- .replaceAll("&", "&")
- .replaceAll("<", "<")
- .replaceAll(">", ">")
- .replaceAll('"', """);
-}
-
-const DATA_URL_CACHE = new Map();
-
-function dataUrl(file) {
- const absolute = path.isAbsolute(file) ? file : path.join(ASSETS, file);
- if (DATA_URL_CACHE.has(absolute)) return DATA_URL_CACHE.get(absolute);
- const ext = path.extname(absolute).toLowerCase();
- const mime = ext === ".jpg" || ext === ".jpeg" ? "image/jpeg" : "image/png";
- const value = `data:${mime};base64,${fsSync.readFileSync(absolute).toString("base64")}`;
- DATA_URL_CACHE.set(absolute, value);
- return value;
-}
-
-function keycaps(keys) {
- return `<span class="key-row">${keys.map((key) => `<span class="key">${esc(key)}</span>`).join("<span class=\"plus\">+</span>")}</span>`;
-}
-
-function baseHtml(locale, body) {
- const copy = getCopy(locale.code);
- return `<!doctype html>
-<html lang="${esc(locale.htmlLang)}" dir="${esc(locale.dir)}">
-<head>
- <meta charset="utf-8">
- <style>
- * { box-sizing: border-box; }
- html, body { width: ${W}px; height: ${H}px; margin: 0; overflow: hidden; }
- body {
- font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", Arial, "PingFang SC", "Hiragino Sans", "Noto Sans", sans-serif;
- color: #111318;
- background: #f7f9ff;
- -webkit-font-smoothing: antialiased;
- }
- .slide {
- width: ${W}px;
- height: ${H}px;
- position: relative;
- overflow: hidden;
- padding: 132px;
- background:
- radial-gradient(circle at 16% 10%, rgba(108, 160, 255, 0.20), transparent 28%),
- radial-gradient(circle at 82% 20%, rgba(255, 128, 168, 0.16), transparent 30%),
- radial-gradient(circle at 52% 92%, rgba(90, 215, 152, 0.14), transparent 28%),
- linear-gradient(180deg, #fbfcff 0%, #f7faff 48%, #f8fbf8 100%);
- }
- .hero-slide {
- background: #ffffff;
- }
- .hero-slide .floating-visual img {
- filter: none;
- }
- .brand {
- position: absolute;
- left: 132px;
- top: 112px;
- display: inline-flex;
- align-items: center;
- gap: 18px;
- min-width: 310px;
- height: 82px;
- padding: 12px 24px;
- border-radius: 999px;
- background: rgba(255, 255, 255, 0.76);
- border: 1px solid rgba(255, 255, 255, 0.8);
- box-shadow: 0 20px 50px rgba(30, 45, 90, 0.10);
- font-size: 28px;
- font-weight: 800;
- }
- .brand img { width: 52px; height: 52px; border-radius: 12px; }
- .grid2 {
- position: absolute;
- inset: 260px 132px 132px;
- display: grid;
- grid-template-columns: 0.95fr 1.05fr;
- align-items: center;
- gap: 92px;
- }
- .grid2.reverse { grid-template-columns: 1.08fr 0.92fr; }
- .rtl .grid2 { direction: rtl; }
- .copy { max-width: 1050px; }
- .eyebrow {
- display: inline-block;
- margin-bottom: 34px;
- font-size: 34px;
- color: #6c7382;
- font-weight: 750;
- }
- h1 {
- margin: 0;
- font-size: 112px;
- line-height: 1.06;
- letter-spacing: 0;
- font-weight: 900;
- text-wrap: balance;
- overflow-wrap: anywhere;
- }
- .hero-title { font-size: 124px; }
- p {
- margin: 44px 0 0;
- font-size: 47px;
- line-height: 1.38;
- color: #454b58;
- overflow-wrap: anywhere;
- }
- .visual img, .card img { display: block; width: 100%; height: 100%; object-fit: contain; }
- .floating-visual {
- width: 100%;
- height: 1220px;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .floating-visual img { max-width: 100%; max-height: 100%; object-fit: contain; filter: drop-shadow(0 44px 68px rgba(22, 34, 60, 0.12)); }
- .shot-grid {
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: 36px;
- }
- .shot-card, .glass-card {
- border-radius: 42px;
- overflow: hidden;
- background: rgba(255, 255, 255, 0.76);
- border: 1px solid rgba(255, 255, 255, 0.84);
- box-shadow: 0 32px 74px rgba(30, 45, 90, 0.14);
- }
- .shot-card { height: 390px; }
- .shot-card img { width: 100%; height: 100%; object-fit: cover; object-position: center bottom; }
- .mode-list {
- display: grid;
- gap: 34px;
- margin-top: 56px;
- padding: 0;
- list-style: none;
- font-size: 44px;
- font-weight: 850;
- }
- .mode-list li { display: flex; align-items: center; gap: 24px; }
- .mode-list li::before {
- content: "";
- width: 24px;
- height: 24px;
- border-radius: 999px;
- background: #0071e3;
- flex: 0 0 auto;
- }
- .shortcut {
- display: inline-flex;
- flex-direction: column;
- gap: 26px;
- margin-top: 58px;
- padding: 34px 46px;
- border-radius: 34px;
- background: rgba(255, 255, 255, 0.68);
- border: 1px solid rgba(215, 220, 232, 0.84);
- }
- .shortcut-label { color: #8a909d; font-size: 32px; font-weight: 800; }
- .key-row { display: inline-flex; align-items: center; gap: 18px; direction: ltr; }
- .key {
- min-width: 112px;
- height: 66px;
- padding: 12px 22px;
- border-radius: 14px;
- border: 2px solid #d8dde8;
- background: #f6f8fc;
- font: 800 32px SFMono-Regular, Menlo, Consolas, monospace;
- text-align: center;
- }
- .plus { font-size: 38px; font-weight: 900; color: #2b2f38; }
- .tag-cloud { display: flex; flex-wrap: wrap; gap: 26px; margin-top: 64px; }
- .tag {
- padding: 18px 34px;
- border-radius: 999px;
- color: #fff;
- font-size: 34px;
- font-weight: 900;
- box-shadow: 0 18px 36px rgba(30, 45, 90, 0.12);
- }
- .memo-visual, .search-visual { height: 1160px; padding: 58px; }
- .search-visual img, .memo-visual img { object-fit: contain; border-radius: 34px; }
- .privacy-layout {
- position: absolute;
- inset: 260px 132px 132px;
- display: grid;
- grid-template-columns: 0.94fr 1.06fr;
- gap: 86px;
- align-items: center;
- }
- .privacy-visual {
- position: relative;
- height: 1120px;
- }
- .privacy-visual .main { position: absolute; left: 0; top: 0; width: 1180px; height: 620px; }
- .privacy-visual .settings { position: absolute; right: 0; bottom: 80px; width: 860px; height: 520px; }
- .privacy-visual .shield { position: absolute; right: 35px; top: 0; width: 420px; height: 420px; object-fit: contain; filter: drop-shadow(0 24px 44px rgba(60, 80, 170, 0.18)); }
- .privacy-pills { display: grid; gap: 24px; margin-top: 68px; max-width: 620px; }
- .pill {
- display: inline-flex;
- width: max-content;
- max-width: 100%;
- padding: 18px 30px;
- border-radius: 999px;
- background: rgba(255, 255, 255, 0.72);
- border: 1px solid rgba(255, 255, 255, 0.8);
- font-size: 32px;
- font-weight: 850;
- color: #2f3644;
- }
- .contact-sheet {
- width: 1500px;
- height: 1450px;
- padding: 40px;
- display: grid;
- grid-template-columns: repeat(2, 1fr);
- grid-auto-rows: 450px;
- gap: 34px 40px;
- background: #f6f8fc;
- }
- .contact-sheet img { width: 690px; height: 431px; object-fit: cover; border-radius: 10px; box-shadow: 0 12px 30px rgba(30,45,90,.12); }
- .contact-item span { display: block; margin-top: 8px; font: 700 16px -apple-system, BlinkMacSystemFont, sans-serif; color: #52596a; }
- </style>
-</head>
-<body class="${locale.dir === "rtl" ? "rtl" : ""}">
- ${body}
-</body>
-</html>`;
-}
-
-function brand() {
- return `<div class="brand"><img src="${dataUrl("app-icon-256.png")}" alt="">TagLauncher</div>`;
-}
-
-function slideHero(locale, copy) {
- const languageBadge = locale.code === "zh-Hans"
- ? "macOS 14.0+ · 29 种界面语言"
- : locale.code === "zh-Hant"
- ? "macOS 14.0+ · 29 種介面語言"
- : "macOS 14.0+ · 29 UI languages";
- return baseHtml(locale, `
- <section class="slide hero-slide">
- ${brand()}
- <div class="grid2">
- <div class="copy">
- <h1 class="hero-title">${esc(copy.heroTitle)}</h1>
- <p>${esc(copy.heroLead)}</p>
- <div class="shortcut"><span class="shortcut-label">${esc(languageBadge)}</span>${keycaps(["Option", "Shift", "Space"])}</div>
- </div>
- <div class="floating-visual"><img src="${dataUrl("hero-visual.jpg")}" alt=""></div>
- </div>
- </section>`);
-}
-
-function slideViews(locale, copy, modes) {
- return baseHtml(locale, `
- <section class="slide">
- ${brand()}
- <div class="grid2 reverse">
- <div class="shot-grid">
- ${[1, 2, 3, 4].map((num) => `<div class="shot-card"><img src="${dataUrl(`views/view-0${num}.jpg`)}" alt=""></div>`).join("")}
- </div>
- <div class="copy">
- <span class="eyebrow">${esc(copy.modesTitle)}</span>
- <h1>${esc(copy.viewsTitle)}</h1>
- <p>${esc(copy.viewsLead)}</p>
- <ul class="mode-list">${modes.map((mode) => `<li>${esc(mode)}</li>`).join("")}</ul>
- </div>
- </div>
- </section>`);
-}
-
-function slideTags(locale, copy, modes, app) {
- const tags = [
- app["tag.writing"] || "Writing",
- app["tag.development"] || "Development",
- "AI",
- app["tag.design"] || "Design"
- ];
- const colors = ["#54c567", "#b165cf", "#53a0ee", "#ff635d"];
- return baseHtml(locale, `
- <section class="slide">
- ${brand()}
- <div class="grid2">
- <div class="copy">
- <h1>${esc(copy.tagsTitle)}</h1>
- <p>${esc(copy.tagsLead)}</p>
- <div class="tag-cloud">${tags.map((tag, i) => `<span class="tag" style="background:${colors[i]}">${esc(tag)}</span>`).join("")}</div>
- </div>
- <div class="glass-card memo-visual"><img src="${dataUrl("tags-management.jpg")}" alt=""></div>
- </div>
- </section>`);
-}
-
-function slideSearch(locale, copy) {
- return baseHtml(locale, `
- <section class="slide">
- ${brand()}
- <div class="grid2">
- <div class="copy">
- <h1>${esc(copy.searchTitle)}</h1>
- <p>${esc(copy.searchLead)}</p>
- <div class="shortcut"><span class="shortcut-label">${esc(copy.shortcut)}</span>${keycaps(["Fn", "Space"])}</div>
- </div>
- <div class="glass-card search-visual"><img src="${dataUrl("quick-search.png")}" alt=""></div>
- </div>
- </section>`);
-}
-
-function slideNotes(locale, copy) {
- return baseHtml(locale, `
- <section class="slide">
- ${brand()}
- <div class="grid2">
- <div class="copy">
- <h1>${esc(copy.notesTitle)}</h1>
- <p>${esc(copy.notesLead)}</p>
- </div>
- <div class="glass-card memo-visual"><img src="${dataUrl("app-memo.png")}" alt=""></div>
- </div>
- </section>`);
-}
-
-function slidePrivacy(locale, copy) {
- return baseHtml(locale, `
- <section class="slide">
- ${brand()}
- <div class="privacy-layout">
- <div class="copy">
- <h1>${esc(copy.privacyTitle)}</h1>
- <p>${esc(copy.privacyLead)}</p>
- <div class="privacy-pills">
- <span class="pill">Local data</span>
- <span class="pill">JSON backup</span>
- <span class="pill">No ads</span>
- </div>
- </div>
- <div class="privacy-visual">
- <div class="shot-card main"><img src="${dataUrl("backup-restore.jpg")}" alt=""></div>
- <div class="shot-card settings"><img src="${dataUrl("screenshot-settings.jpg")}" alt=""></div>
- <img class="shield" src="${dataUrl("shield-check.png")}" alt="">
- </div>
- </div>
- </section>`);
-}
-
-const SLIDES = [
- ["01-hero-launcher-2880x1800.png", slideHero],
- ["02-four-views-2880x1800.png", slideViews],
- ["03-multi-tag-system-2880x1800.png", slideTags],
- ["04-quick-search-2880x1800.png", slideSearch],
- ["05-app-notes-2880x1800.png", slideNotes],
- ["06-private-offline-2880x1800.png", slidePrivacy]
-];
-
-async function cleanGeneratedPngs(dir) {
- await fs.mkdir(dir, { recursive: true });
- for (const entry of await fs.readdir(dir, { withFileTypes: true })) {
- if (entry.isFile() && entry.name.endsWith(".png")) {
- await fs.rm(path.join(dir, entry.name));
- }
- }
-}
-
-async function renderLocale(browser, locale) {
- const copy = getCopy(locale.code);
- const app = loadAppStrings(ROOT, locale);
- const modes = modeLabels(app);
- const outDir = path.join(OUT_ROOT, locale.code);
- await cleanGeneratedPngs(outDir);
-
- const page = await browser.newPage({ viewport: { width: W, height: H }, deviceScaleFactor: 1 });
- for (const [name, renderer] of SLIDES) {
- const html = renderer(locale, copy, modes, app);
- await page.setContent(html, { waitUntil: "load" });
- await page.evaluate(() => document.fonts && document.fonts.ready);
- await page.screenshot({ path: path.join(outDir, name), type: "png" });
- console.log(path.join(outDir, name));
- }
- await page.close();
- await renderContactSheet(browser, outDir);
-}
-
-async function renderContactSheet(browser, outDir) {
- const items = SLIDES.map(([name]) => {
- const p = path.join(outDir, name);
- return `<div class="contact-item"><img src="${dataUrl(p)}"><span>${esc(name)}</span></div>`;
- }).join("");
- const html = `<!doctype html><html><head><meta charset="utf-8"><style>${contactSheetCss()}</style></head><body><div class="contact-sheet">${items}</div></body></html>`;
- const page = await browser.newPage({ viewport: { width: 1500, height: 1450 }, deviceScaleFactor: 1 });
- await page.setContent(html, { waitUntil: "load" });
- await page.screenshot({ path: path.join(outDir, "_contact-sheet.png"), type: "png" });
- await page.close();
- console.log(path.join(outDir, "_contact-sheet.png"));
-}
-
-function contactSheetCss() {
- return `
- * { box-sizing: border-box; }
- html, body { margin: 0; width: 1500px; height: 1450px; overflow: hidden; }
- body { background: #f6f8fc; font-family: -apple-system, BlinkMacSystemFont, sans-serif; }
- .contact-sheet { width: 1500px; height: 1450px; padding: 40px; display: grid; grid-template-columns: repeat(2, 1fr); grid-auto-rows: 450px; gap: 34px 40px; }
- .contact-item img { width: 690px; height: 431px; object-fit: cover; border-radius: 10px; box-shadow: 0 12px 30px rgba(30,45,90,.12); display: block; }
- .contact-item span { display: block; margin-top: 8px; font: 700 16px -apple-system, BlinkMacSystemFont, sans-serif; color: #52596a; }
- `;
-}
-
-async function main() {
- const browser = await chromium.launch({ executablePath: chromium.executablePath(), headless: true });
- try {
- for (const locale of LOCALES) {
- await renderLocale(browser, locale);
- }
- } finally {
- await browser.close();
- }
-}
-
-main().catch((error) => {
- console.error(error);
- process.exit(1);
-});
diff --git "a/docs/X-Op\350\265\204\346\226\231/Screenshots/render_marketing_screenshots.py" "b/docs/X-Op\350\265\204\346\226\231/Screenshots/render_marketing_screenshots.py"
deleted file mode 100644
index df54462..0000000
--- "a/docs/X-Op\350\265\204\346\226\231/Screenshots/render_marketing_screenshots.py"
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python3
-from pathlib import Path
-import os
-import shutil
-import subprocess
-import sys
-
-
-ROOT = Path("/Users/ar/Projects/Taglauncher")
-RUNTIME = Path("/Users/ar/.cache/codex-runtimes/codex-primary-runtime/dependencies")
-NODE = RUNTIME / "node/bin/node"
-NODE_MODULES = RUNTIME / "node/node_modules"
-SCRIPT = ROOT / "Docs/X-Op资料/Screenshots/render_marketing_screenshots.mjs"
-
-
-def main() -> int:
- node = str(NODE) if NODE.exists() else shutil.which("node")
- if not node:
- print("Node.js is required to render localized marketing screenshots.", file=sys.stderr)
- return 1
-
- env = os.environ.copy()
- existing = env.get("NODE_PATH")
- env["NODE_PATH"] = str(NODE_MODULES) if not existing else f"{NODE_MODULES}{os.pathsep}{existing}"
-
- completed = subprocess.run([node, str(SCRIPT)], cwd=str(ROOT), env=env)
- return completed.returncode
-
-
-if __name__ == "__main__":
- raise SystemExit(main())
diff --git a/docs/assets/app-icon-256.png b/docs/assets/app-icon-256.png
deleted file mode 100644
index a3aaad1..0000000
--- a/docs/assets/app-icon-256.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/app-icon.png b/docs/assets/app-icon.png
deleted file mode 100644
index 5266150..0000000
--- a/docs/assets/app-icon.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/app-memo.png b/docs/assets/app-memo.png
deleted file mode 100644
index 2029b98..0000000
--- a/docs/assets/app-memo.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/backup-restore.jpg b/docs/assets/backup-restore.jpg
deleted file mode 100644
index 3b5ee4b..0000000
--- a/docs/assets/backup-restore.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-design-original.jpg b/docs/assets/hero-design-original.jpg
deleted file mode 100644
index 257ddd7..0000000
--- a/docs/assets/hero-design-original.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-shot-grid.jpg b/docs/assets/hero-shot-grid.jpg
deleted file mode 100644
index 851e176..0000000
--- a/docs/assets/hero-shot-grid.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-shot-memo.jpg b/docs/assets/hero-shot-memo.jpg
deleted file mode 100644
index 838ed1b..0000000
--- a/docs/assets/hero-shot-memo.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-source-grid.jpg b/docs/assets/hero-source-grid.jpg
deleted file mode 100644
index 088b4c7..0000000
--- a/docs/assets/hero-source-grid.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-source-grid.png b/docs/assets/hero-source-grid.png
deleted file mode 100644
index a797c15..0000000
--- a/docs/assets/hero-source-grid.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-visual-only.jpg b/docs/assets/hero-visual-only.jpg
deleted file mode 100644
index 73c3e95..0000000
--- a/docs/assets/hero-visual-only.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-visual-stack.jpg b/docs/assets/hero-visual-stack.jpg
deleted file mode 100644
index cc52fce..0000000
--- a/docs/assets/hero-visual-stack.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-visual.jpg b/docs/assets/hero-visual.jpg
deleted file mode 100644
index b802f8a..0000000
--- a/docs/assets/hero-visual.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/hero-visual.png b/docs/assets/hero-visual.png
deleted file mode 100644
index b802f8a..0000000
--- a/docs/assets/hero-visual.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/quick-search.png b/docs/assets/quick-search.png
deleted file mode 100644
index 94e1741..0000000
--- a/docs/assets/quick-search.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/screenshot-app-grid.jpg b/docs/assets/screenshot-app-grid.jpg
deleted file mode 100644
index 4010ed5..0000000
--- a/docs/assets/screenshot-app-grid.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/screenshot-notes.jpg b/docs/assets/screenshot-notes.jpg
deleted file mode 100644
index c9d3b54..0000000
--- a/docs/assets/screenshot-notes.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/screenshot-settings.jpg b/docs/assets/screenshot-settings.jpg
deleted file mode 100644
index 7e9b472..0000000
--- a/docs/assets/screenshot-settings.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/screenshot-settings.png b/docs/assets/screenshot-settings.png
deleted file mode 100644
index 9458988..0000000
--- a/docs/assets/screenshot-settings.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/screenshot-tags.jpg b/docs/assets/screenshot-tags.jpg
deleted file mode 100644
index c95822b..0000000
--- a/docs/assets/screenshot-tags.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/screenshot-tags.png b/docs/assets/screenshot-tags.png
deleted file mode 100644
index 8070a63..0000000
--- a/docs/assets/screenshot-tags.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/shield-check.png b/docs/assets/shield-check.png
deleted file mode 100644
index d7ab959..0000000
--- a/docs/assets/shield-check.png
+++ /dev/null
Binary files differ
diff --git a/docs/assets/tags-management.jpg b/docs/assets/tags-management.jpg
deleted file mode 100644
index 51b1b79..0000000
--- a/docs/assets/tags-management.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/views/view-01.jpg b/docs/assets/views/view-01.jpg
deleted file mode 100644
index 050925d..0000000
--- a/docs/assets/views/view-01.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/views/view-02.jpg b/docs/assets/views/view-02.jpg
deleted file mode 100644
index 2671e9e..0000000
--- a/docs/assets/views/view-02.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/views/view-03.jpg b/docs/assets/views/view-03.jpg
deleted file mode 100644
index 8f1d5b9..0000000
--- a/docs/assets/views/view-03.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/assets/views/view-04.jpg b/docs/assets/views/view-04.jpg
deleted file mode 100644
index 715ef6e..0000000
--- a/docs/assets/views/view-04.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/index-ar.html b/docs/index-ar.html
deleted file mode 100644
index 50a2a92..0000000
--- a/docs/index-ar.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="ar" dir="rtl">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — مشغل تطبيقات قائم على الوسوم</title>
- <meta name="description" content="لا تحتاج إلى Launchpad. يجمع TagLauncher تطبيقاتك في شبكة واحدة تعتمد على الوسوم وتعمل بسرعة من لوحة المفاتيح.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-ar">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ar.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="اللغة">
- <a href="index-ar.html" aria-current="page">الرئيسية</a>
- <a href="support-ar.html">الدعم</a>
- <a href="privacy.html">الخصوصية</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">ملف المساعدة PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">اللغة</label>
- <select id="language-index" class="language-select" aria-label="اللغة" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html" selected>العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>مشغّل تطبيقات Mac قائم على الوسوم</span>
- </h1>
- <p class="hero__lead">لا تحتاج إلى Launchpad. يجمع TagLauncher تطبيقاتك في شبكة واحدة تعتمد على الوسوم وتعمل بسرعة من لوحة المفاتيح.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="أربع طرق عرض في شاشة واحدة">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="حاوية ملونة" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="حاوية بلا لون" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="شبكة ملونة" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="شبكة بلا لون" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">أربع طرق عرض في شاشة واحدة</h2>
- <p class="views__lead">لا مزيد من فتح المجلدات واحداً تلو الآخر أو تقليب الصفحات. العثور على التطبيق يجب أن يكون مباشراً.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 طرق عرض</p>
- <ul class="views__modes">
- <li>حاوية ملونة</li>
- <li>حاوية بلا لون</li>
- <li>شبكة ملونة</li>
- <li>شبكة بلا لون</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">اختصار سريع</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="تطبيق واحد، وسوم متعددة">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">تطبيق واحد، وسوم متعددة</h2>
- <ul class="tags__points">
- <li>لا تحصر أدواتك في مجلد واحد. يمكن للتطبيق أن ينتمي إلى القراءة أو التصميم أو الذكاء الاصطناعي أو أي وسم تختاره.</li>
- <li><strong>حاوية ملونة</strong> · شبكة بلا لون</li>
- <li>اسحب لإعادة الترتيب · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="تطبيق واحد، وسوم متعددة" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="ابحث في ملاحظات التطبيقات أيضاً">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="ابحث في ملاحظات التطبيقات أيضاً" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">ابحث في ملاحظات التطبيقات أيضاً</h2>
- <p class="memo__lead">اكتب ملاحظات الاستخدام، اعرضها عند المرور، وابحث عنها عبر Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="ابحث في التطبيقات والوسوم والملاحظات">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">ابحث في التطبيقات والوسوم والملاحظات</h2>
- <p class="search__lead">حتى لو تذكرت الوسم أو الغرض فقط، يساعدك Quick Search في الوصول إلى التطبيق الصحيح.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">اختصار سريع</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="ابحث في التطبيقات والوسوم والملاحظات" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="نسخ احتياطي واستعادة">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="نسخ احتياطي واستعادة" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">نسخ احتياطي واستعادة</h2>
- <p class="backup__lead">صدّر التصنيفات والترتيب والتخطيط كملف JSON واستعدها عند الانتقال إلى Mac آخر.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="دون اتصال ودون إعلانات">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">دون اتصال ودون إعلانات</h2>
- <p class="privacy__lead">تبقى البيانات على جهاز Mac. لا حسابات، ولا مزامنة سحابية، ولا تحليلات أو إعلانات أو تتبع.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>تهيئة ذكية للوسوم</h3>
- <p class="privacy__feature-text">خطط وسوم أولية لأكثر من 5000 تطبيق Mac شائع تقلل عناء البدء من الصفر.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="تهيئة ذكية للوسوم">
- <div class="layout">
- <h2 class="features__headline">تهيئة ذكية للوسوم</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>لا مزيد من فتح المجلدات واحداً تلو الآخر أو تقليب الصفحات. العثور على التطبيق يجب أن يكون مباشراً.</div>
- <div class="feature"><strong>Quick Search</strong>حتى لو تذكرت الوسم أو الغرض فقط، يساعدك Quick Search في الوصول إلى التطبيق الصحيح.</div>
- <div class="feature"><strong>الوسوم</strong>لا تحصر أدواتك في مجلد واحد. يمكن للتطبيق أن ينتمي إلى القراءة أو التصميم أو الذكاء الاصطناعي أو أي وسم تختاره.</div>
- <div class="feature"><strong>نسخ احتياطي واستعادة</strong>صدّر التصنيفات والترتيب والتخطيط كملف JSON واستعدها عند الانتقال إلى Mac آخر.</div>
- <div class="feature"><strong>الخصوصية</strong>تبقى البيانات على جهاز Mac. لا حسابات، ولا مزامنة سحابية، ولا تحليلات أو إعلانات أو تتبع.</div>
- <div class="feature"><strong>تهيئة ذكية للوسوم</strong>خطط وسوم أولية لأكثر من 5000 تطبيق Mac شائع تقلل عناء البدء من الصفر.</div>
- </div>
- <div class="features__cta">
- <p>قريباً على Mac App Store · macOS 14.0+ · 29 لغة للواجهة</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-ar.html">الدعم</a>
- <a class="btn btn-secondary" href="privacy.html">الخصوصية</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ar.html">الدعم</a>
- · <a href="privacy.html">الخصوصية</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-cs.html b/docs/index-cs.html
deleted file mode 100644
index ae0bbae..0000000
--- a/docs/index-cs.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="cs" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Spouštěč aplikací podle štítků</title>
- <meta name="description" content="Launchpad vám chybět nemusí. TagLauncher dá aplikace do jedné přehledné mřížky se štítky a klávesovými zkratkami.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-cs">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-cs.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Jazyk">
- <a href="index-cs.html" aria-current="page">Domů</a>
- <a href="support-cs.html">Podpora</a>
- <a href="privacy.html">Soukromí</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Nápověda PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Jazyk</label>
- <select id="language-index" class="language-select" aria-label="Jazyk" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html" selected>Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Spouštěč aplikací pro Mac podle štítků</span>
- </h1>
- <p class="hero__lead">Launchpad vám chybět nemusí. TagLauncher dá aplikace do jedné přehledné mřížky se štítky a klávesovými zkratkami.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Čtyři zobrazení na jedné obrazovce">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Barevný kontejner" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Bezbarvý kontejner" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Barevná mřížka" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Bezbarvá mřížka" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Čtyři zobrazení na jedné obrazovce</h2>
- <p class="views__lead">Bez otevírání složek a listování stránkami. Najít aplikaci má být rychlé a přímé.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 režimy zobrazení</p>
- <ul class="views__modes">
- <li>Barevný kontejner</li>
- <li>Bezbarvý kontejner</li>
- <li>Barevná mřížka</li>
- <li>Bezbarvá mřížka</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Rychlé spuštění</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Jedna aplikace, více štítků">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Jedna aplikace, více štítků</h2>
- <ul class="tags__points">
- <li>Nenuťte nástroje do jedné složky. Aplikace může patřit do práce, designu, AI i vlastních štítků.</li>
- <li><strong>Barevný kontejner</strong> · Bezbarvá mřížka</li>
- <li>Přetažením změňte pořadí · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Jedna aplikace, více štítků" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Hledejte i poznámky aplikací">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Hledejte i poznámky aplikací" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Hledejte i poznámky aplikací</h2>
- <p class="memo__lead">Doplňte účel aplikace, zobrazte jej při najetí a najděte jej přes Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Hledejte aplikace, štítky a poznámky">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Hledejte aplikace, štítky a poznámky</h2>
- <p class="search__lead">Stačí si pamatovat štítek nebo účel. Quick Search vás dovede ke správné aplikaci.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Rychlé spuštění</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Hledejte aplikace, štítky a poznámky" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Záloha a obnovení">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Záloha a obnovení" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Záloha a obnovení</h2>
- <p class="backup__lead">Kategorie, pořadí a rozložení exportujete jako JSON a obnovíte na jiném Macu.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100 % offline, bez reklam">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100 % offline, bez reklam</h2>
- <p class="privacy__lead">Data zůstávají na Macu. Bez účtu, cloudu, analytiky, reklam i sledování.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Chytrá inicializace štítků</h3>
- <p class="privacy__feature-text">Počáteční štítky pro 5000+ oblíbených Mac aplikací zkracují nastavování od nuly.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Chytrá inicializace štítků">
- <div class="layout">
- <h2 class="features__headline">Chytrá inicializace štítků</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Bez otevírání složek a listování stránkami. Najít aplikaci má být rychlé a přímé.</div>
- <div class="feature"><strong>Quick Search</strong>Stačí si pamatovat štítek nebo účel. Quick Search vás dovede ke správné aplikaci.</div>
- <div class="feature"><strong>Štítky</strong>Nenuťte nástroje do jedné složky. Aplikace může patřit do práce, designu, AI i vlastních štítků.</div>
- <div class="feature"><strong>Záloha a obnovení</strong>Kategorie, pořadí a rozložení exportujete jako JSON a obnovíte na jiném Macu.</div>
- <div class="feature"><strong>Soukromí</strong>Data zůstávají na Macu. Bez účtu, cloudu, analytiky, reklam i sledování.</div>
- <div class="feature"><strong>Chytrá inicializace štítků</strong>Počáteční štítky pro 5000+ oblíbených Mac aplikací zkracují nastavování od nuly.</div>
- </div>
- <div class="features__cta">
- <p>Brzy v Mac App Store · macOS 14.0+ · 29 jazyků rozhraní</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-cs.html">Podpora</a>
- <a class="btn btn-secondary" href="privacy.html">Soukromí</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-cs.html">Podpora</a>
- · <a href="privacy.html">Soukromí</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-da.html b/docs/index-da.html
deleted file mode 100644
index 78d8d47..0000000
--- a/docs/index-da.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="da" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Tagbaseret appstarter</title>
- <meta name="description" content="Du behøver ikke savne Launchpad. TagLauncher samler dine apps i ét tag-baseret grid med tastaturgenveje.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-da">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-da.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Sprog">
- <a href="index-da.html" aria-current="page">Hjem</a>
- <a href="support-da.html">Support</a>
- <a href="privacy.html">Privatliv</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjælp PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Sprog</label>
- <select id="language-index" class="language-select" aria-label="Sprog" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html" selected>Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>En tag-baseret appstarter til Mac</span>
- </h1>
- <p class="hero__lead">Du behøver ikke savne Launchpad. TagLauncher samler dine apps i ét tag-baseret grid med tastaturgenveje.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Fire visninger på én skærm">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Farvet beholder" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Farveløs beholder" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Farvet gitter" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Farveløst gitter" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Fire visninger på én skærm</h2>
- <p class="views__lead">Ingen mapper, der skal åbnes enkeltvis, og ingen sider at bladre igennem. Det skal være direkte at finde en app.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 visningstyper</p>
- <ul class="views__modes">
- <li>Farvet beholder</li>
- <li>Farveløs beholder</li>
- <li>Farvet gitter</li>
- <li>Farveløst gitter</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Hurtig start</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Én app, flere tags">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Én app, flere tags</h2>
- <ul class="tags__points">
- <li>Lad ikke værktøjer være låst til én mappe. En app kan høre til læsning, design, AI eller dine egne tags.</li>
- <li><strong>Farvet beholder</strong> · Farveløst gitter</li>
- <li>Træk for at ændre rækkefølge · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Én app, flere tags" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Søg også i appnoter">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Søg også i appnoter" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Søg også i appnoter</h2>
- <p class="memo__lead">Skriv formålet med hver app, se det ved hover, og find det med Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Søg i apps, tags og noter">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Søg i apps, tags og noter</h2>
- <p class="search__lead">Selv når du kun husker et tag eller et formål, finder Quick Search den rigtige app.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Hurtig start</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Søg i apps, tags og noter" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Backup og gendannelse">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Backup og gendannelse" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Backup og gendannelse</h2>
- <p class="backup__lead">Eksportér kategorier, rækkefølge og layout som JSON, og gendan på en ny Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100 % offline, 100 % reklamefri">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100 % offline, 100 % reklamefri</h2>
- <p class="privacy__lead">Data bliver på din Mac. Ingen konto, cloudsync, analyse-SDK, reklamer eller sporing.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Smart tag-initialisering</h3>
- <p class="privacy__feature-text">Starttags til 5000+ populære Mac-apps gør det lettere at begynde fra nul.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Smart tag-initialisering">
- <div class="layout">
- <h2 class="features__headline">Smart tag-initialisering</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Ingen mapper, der skal åbnes enkeltvis, og ingen sider at bladre igennem. Det skal være direkte at finde en app.</div>
- <div class="feature"><strong>Quick Search</strong>Selv når du kun husker et tag eller et formål, finder Quick Search den rigtige app.</div>
- <div class="feature"><strong>Tags</strong>Lad ikke værktøjer være låst til én mappe. En app kan høre til læsning, design, AI eller dine egne tags.</div>
- <div class="feature"><strong>Sikkerhedskopi og gendannelse</strong>Eksportér kategorier, rækkefølge og layout som JSON, og gendan på en ny Mac.</div>
- <div class="feature"><strong>Privatliv</strong>Data bliver på din Mac. Ingen konto, cloudsync, analyse-SDK, reklamer eller sporing.</div>
- <div class="feature"><strong>Smart tag-initialisering</strong>Starttags til 5000+ populære Mac-apps gør det lettere at begynde fra nul.</div>
- </div>
- <div class="features__cta">
- <p>Kommer snart i Mac App Store · macOS 14.0+ · 29 UI-sprog</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-da.html">Support</a>
- <a class="btn btn-secondary" href="privacy.html">Privatliv</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-da.html">Support</a>
- · <a href="privacy.html">Privatliv</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-de.html b/docs/index-de.html
deleted file mode 100644
index 506c50d..0000000
--- a/docs/index-de.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="de" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Tag-basierter App-Launcher</title>
- <meta name="description" content="Launchpad musst du nicht vermissen. TagLauncher bringt deine Apps in ein tag-basiertes, tastaturfreundliches Raster.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-de">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-de.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Sprache">
- <a href="index-de.html" aria-current="page">Start</a>
- <a href="support-de.html">Support</a>
- <a href="privacy.html">Datenschutz</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hilfe-PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Sprache</label>
- <select id="language-index" class="language-select" aria-label="Sprache" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html" selected>Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Ein tag-basierter App-Launcher für den Mac</span>
- </h1>
- <p class="hero__lead">Launchpad musst du nicht vermissen. TagLauncher bringt deine Apps in ein tag-basiertes, tastaturfreundliches Raster.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Vier Ansichten auf einem Bildschirm">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Farbiger Container" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Farbloser Container" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Farbiges Raster" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Farbloses Raster" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Vier Ansichten auf einem Bildschirm</h2>
- <p class="views__lead">Keine Ordner einzeln öffnen, keine Seiten durchblättern. Eine App zu finden sollte direkt sein.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 Ansichtsmodi</p>
- <ul class="views__modes">
- <li>Farbiger Container</li>
- <li>Farbloser Container</li>
- <li>Farbiges Raster</li>
- <li>Farbloses Raster</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Schnellstart</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Eine App, mehrere Tags">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Eine App, mehrere Tags</h2>
- <ul class="tags__points">
- <li>Werkzeuge müssen nicht in genau einen Ordner. Eine App kann zu Lesen, Design, KI oder eigenen Tags gehören.</li>
- <li><strong>Farbiger Container</strong> · Farbloses Raster</li>
- <li>Zum Sortieren ziehen · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Eine App, mehrere Tags" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Auch App-Notizen durchsuchen">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Auch App-Notizen durchsuchen" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Auch App-Notizen durchsuchen</h2>
- <p class="memo__lead">Notiere den Zweck einer App, zeige ihn per Hover und finde ihn über Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Apps, Tags und Notizen suchen">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Apps, Tags und Notizen suchen</h2>
- <p class="search__lead">Wenn du nur Tag oder Zweck kennst, führt Quick Search dich trotzdem zur richtigen App.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Schnellstart</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Apps, Tags und Notizen suchen" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Sichern & Wiederherstellen">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Sichern & Wiederherstellen" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Sichern & Wiederherstellen</h2>
- <p class="backup__lead">Kategorien, Reihenfolge und Layout als JSON exportieren und auf einem anderen Mac wiederherstellen.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100 % offline, 100 % werbefrei">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100 % offline, 100 % werbefrei</h2>
- <p class="privacy__lead">Daten bleiben auf deinem Mac. Kein Konto, keine Cloud-Sync, keine Analyse, keine Werbung, kein Tracking.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Intelligente Tag-Initialisierung</h3>
- <p class="privacy__feature-text">Startpläne für 5000+ beliebte Mac-Apps reduzieren den Aufwand beim Einrichten.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Intelligente Tag-Initialisierung">
- <div class="layout">
- <h2 class="features__headline">Intelligente Tag-Initialisierung</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Keine Ordner einzeln öffnen, keine Seiten durchblättern. Eine App zu finden sollte direkt sein.</div>
- <div class="feature"><strong>Quick Search</strong>Wenn du nur Tag oder Zweck kennst, führt Quick Search dich trotzdem zur richtigen App.</div>
- <div class="feature"><strong>Tags</strong>Werkzeuge müssen nicht in genau einen Ordner. Eine App kann zu Lesen, Design, KI oder eigenen Tags gehören.</div>
- <div class="feature"><strong>Sichern & Wiederherstellen</strong>Kategorien, Reihenfolge und Layout als JSON exportieren und auf einem anderen Mac wiederherstellen.</div>
- <div class="feature"><strong>Datenschutz</strong>Daten bleiben auf deinem Mac. Kein Konto, keine Cloud-Sync, keine Analyse, keine Werbung, kein Tracking.</div>
- <div class="feature"><strong>Intelligente Tag-Initialisierung</strong>Startpläne für 5000+ beliebte Mac-Apps reduzieren den Aufwand beim Einrichten.</div>
- </div>
- <div class="features__cta">
- <p>Bald im Mac App Store · macOS 14.0+ · 29 UI-Sprachen</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-de.html">Support</a>
- <a class="btn btn-secondary" href="privacy.html">Datenschutz</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-de.html">Support</a>
- · <a href="privacy.html">Datenschutz</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-en.html b/docs/index-en.html
deleted file mode 100644
index 3821bf3..0000000
--- a/docs/index-en.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-US" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Tag-based app launcher</title>
- <meta name="description" content="Do not mourn Launchpad. TagLauncher puts your apps into one tag-based, keyboard-friendly grid.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-en">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-en.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Language">
- <a href="index-en.html" aria-current="page">Home</a>
- <a href="support-en.html">Support</a>
- <a href="privacy.html">Privacy</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Help PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Language</label>
- <select id="language-index" class="language-select" aria-label="Language" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html" selected>English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Possibly the best Mac app launcher in the world</span>
- </h1>
- <p class="hero__lead">Do not mourn Launchpad. TagLauncher puts your apps into one tag-based, keyboard-friendly grid.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Four views, all on one screen">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Colored Container" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Colorless Container" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Colored Grid" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Colorless Grid" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Four views, all on one screen</h2>
- <p class="views__lead">No more opening folders one by one or flipping through pages. Finding an app should be direct.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 view modes</p>
- <ul class="views__modes">
- <li>Colored Container</li>
- <li>Colorless Container</li>
- <li>Colored Grid</li>
- <li>Colorless Grid</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Quick launch</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="One app. Many tags.">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">One app. Many tags.</h2>
- <ul class="tags__points">
- <li>Stop forcing tools into one folder. An app can belong to Reading, Design, AI, or any custom tag.</li>
- <li><strong>Colored Container</strong> · Colorless Grid</li>
- <li>Drag to reorder · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="One app. Many tags." width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Search app notes too">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Search app notes too" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Search app notes too</h2>
- <p class="memo__lead">Write usage notes, reveal them on hover, and find them through Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Search apps, tags, and notes">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Search apps, tags, and notes</h2>
- <p class="search__lead">Even if you remember only a tag or purpose, Quick Search helps you reach the right app.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Quick launch</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Search apps, tags, and notes" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Backup & Restore">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Backup & Restore" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Backup & Restore</h2>
- <p class="backup__lead">Export categories, order, and layout as JSON. Restore them after reinstalling or moving Macs.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% offline, 100% ad-free">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% offline, 100% ad-free</h2>
- <p class="privacy__lead">Data stays on your Mac. This build has no account, cloud sync, analytics SDK, ads, or tracking.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Smart tag initialization</h3>
- <p class="privacy__feature-text">Initial tag plans for 5000+ popular Mac apps reduce the pain of starting from zero.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Smart tag initialization">
- <div class="layout">
- <h2 class="features__headline">Smart tag initialization</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>No more opening folders one by one or flipping through pages. Finding an app should be direct.</div>
- <div class="feature"><strong>Quick Search</strong>Even if you remember only a tag or purpose, Quick Search helps you reach the right app.</div>
- <div class="feature"><strong>Tags</strong>Stop forcing tools into one folder. An app can belong to Reading, Design, AI, or any custom tag.</div>
- <div class="feature"><strong>Backup & Restore</strong>Export categories, order, and layout as JSON. Restore them after reinstalling or moving Macs.</div>
- <div class="feature"><strong>Privacy</strong>Data stays on your Mac. This build has no account, cloud sync, analytics SDK, ads, or tracking.</div>
- <div class="feature"><strong>Smart tag initialization</strong>Initial tag plans for 5000+ popular Mac apps reduce the pain of starting from zero.</div>
- </div>
- <div class="features__cta">
- <p>Mac App Store coming soon · macOS 14.0+ · 29 UI languages</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-en.html">Support</a>
- <a class="btn btn-secondary" href="privacy.html">Privacy</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-en.html">Support</a>
- · <a href="privacy.html">Privacy</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-es.html b/docs/index-es.html
deleted file mode 100644
index 02e1d94..0000000
--- a/docs/index-es.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="es-ES" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Lanzador de apps basado en etiquetas</title>
- <meta name="description" content="No hace falta echar de menos Launchpad. TagLauncher organiza tus apps en una cuadrícula con etiquetas y atajos.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-es">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-es.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Idioma">
- <a href="index-es.html" aria-current="page">Inicio</a>
- <a href="support-es.html">Soporte</a>
- <a href="privacy.html">Privacidad</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ayuda PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Idioma</label>
- <select id="language-index" class="language-select" aria-label="Idioma" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html" selected>Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Un lanzador de apps para Mac basado en etiquetas</span>
- </h1>
- <p class="hero__lead">No hace falta echar de menos Launchpad. TagLauncher organiza tus apps en una cuadrícula con etiquetas y atajos.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Cuatro vistas en una sola pantalla">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Contenedor coloreado" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Contenedor sin color" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Cuadrícula coloreada" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Cuadrícula sin color" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Cuatro vistas en una sola pantalla</h2>
- <p class="views__lead">Sin abrir carpetas una por una ni pasar páginas. Encontrar una app debería ser directo.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 modos de vista</p>
- <ul class="views__modes">
- <li>Contenedor coloreado</li>
- <li>Contenedor sin color</li>
- <li>Cuadrícula coloreada</li>
- <li>Cuadrícula sin color</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Inicio rápido</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Una app, varias etiquetas">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Una app, varias etiquetas</h2>
- <ul class="tags__points">
- <li>No encierres tus herramientas en una carpeta. Una app puede pertenecer a lectura, diseño, IA o cualquier etiqueta.</li>
- <li><strong>Contenedor coloreado</strong> · Cuadrícula sin color</li>
- <li>Arrastra para reordenar · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Una app, varias etiquetas" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Busca también notas de apps">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Busca también notas de apps" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Busca también notas de apps</h2>
- <p class="memo__lead">Escribe para qué sirve cada app, míralo al pasar el cursor y encuéntralo con Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Busca apps, etiquetas y notas">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Busca apps, etiquetas y notas</h2>
- <p class="search__lead">Aunque solo recuerdes una etiqueta o una finalidad, Quick Search te lleva a la app correcta.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Inicio rápido</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Busca apps, etiquetas y notas" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Copia y restauración">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Copia y restauración" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Copia y restauración</h2>
- <p class="backup__lead">Exporta categorías, orden y diseño como JSON y restáuralos al cambiar de Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100 % sin conexión, 100 % sin anuncios">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100 % sin conexión, 100 % sin anuncios</h2>
- <p class="privacy__lead">Los datos se quedan en tu Mac. Sin cuenta, nube, analítica, anuncios ni rastreo.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Inicialización inteligente de etiquetas</h3>
- <p class="privacy__feature-text">Planes iniciales para más de 5000 apps populares de Mac reducen el trabajo desde cero.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Inicialización inteligente de etiquetas">
- <div class="layout">
- <h2 class="features__headline">Inicialización inteligente de etiquetas</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Sin abrir carpetas una por una ni pasar páginas. Encontrar una app debería ser directo.</div>
- <div class="feature"><strong>Quick Search</strong>Aunque solo recuerdes una etiqueta o una finalidad, Quick Search te lleva a la app correcta.</div>
- <div class="feature"><strong>Etiquetas</strong>No encierres tus herramientas en una carpeta. Una app puede pertenecer a lectura, diseño, IA o cualquier etiqueta.</div>
- <div class="feature"><strong>Copia de seguridad</strong>Exporta categorías, orden y diseño como JSON y restáuralos al cambiar de Mac.</div>
- <div class="feature"><strong>Privacidad</strong>Los datos se quedan en tu Mac. Sin cuenta, nube, analítica, anuncios ni rastreo.</div>
- <div class="feature"><strong>Inicialización inteligente de etiquetas</strong>Planes iniciales para más de 5000 apps populares de Mac reducen el trabajo desde cero.</div>
- </div>
- <div class="features__cta">
- <p>Próximamente en Mac App Store · macOS 14.0+ · 29 idiomas de interfaz</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-es.html">Soporte</a>
- <a class="btn btn-secondary" href="privacy.html">Privacidad</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-es.html">Soporte</a>
- · <a href="privacy.html">Privacidad</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-fr.html b/docs/index-fr.html
deleted file mode 100644
index 22c19b8..0000000
--- a/docs/index-fr.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="fr-FR" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Lanceur d'applications par étiquettes</title>
- <meta name="description" content="Inutile de regretter Launchpad. TagLauncher rassemble vos apps dans une grille à étiquettes, pensée pour le clavier.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-fr">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-fr.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Langue">
- <a href="index-fr.html" aria-current="page">Accueil</a>
- <a href="support-fr.html">Assistance</a>
- <a href="privacy.html">Confidentialité</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Aide PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Langue</label>
- <select id="language-index" class="language-select" aria-label="Langue" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html" selected>Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Un lanceur d’apps Mac basé sur les étiquettes</span>
- </h1>
- <p class="hero__lead">Inutile de regretter Launchpad. TagLauncher rassemble vos apps dans une grille à étiquettes, pensée pour le clavier.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Quatre vues sur un seul écran">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Conteneur coloré" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Conteneur sans couleur" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Grille colorée" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Grille sans couleur" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Quatre vues sur un seul écran</h2>
- <p class="views__lead">Plus besoin d’ouvrir les dossiers un par un ni de tourner des pages. Trouver une app doit être direct.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 modes d’affichage</p>
- <ul class="views__modes">
- <li>Conteneur coloré</li>
- <li>Conteneur sans couleur</li>
- <li>Grille colorée</li>
- <li>Grille sans couleur</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Lancement rapide</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Une app, plusieurs étiquettes">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Une app, plusieurs étiquettes</h2>
- <ul class="tags__points">
- <li>Ne forcez plus vos outils dans un seul dossier. Une app peut appartenir à lecture, design, IA ou vos propres étiquettes.</li>
- <li><strong>Conteneur coloré</strong> · Grille sans couleur</li>
- <li>Faites glisser pour réorganiser · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Une app, plusieurs étiquettes" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Recherchez aussi les notes">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Recherchez aussi les notes" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Recherchez aussi les notes</h2>
- <p class="memo__lead">Ajoutez une note d’usage, affichez-la au survol et retrouvez-la avec Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Recherchez apps, étiquettes et notes">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Recherchez apps, étiquettes et notes</h2>
- <p class="search__lead">Même si vous ne retenez qu’une étiquette ou un usage, Quick Search trouve la bonne app.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Lancement rapide</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Recherchez apps, étiquettes et notes" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Sauvegarde et restauration">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Sauvegarde et restauration" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Sauvegarde et restauration</h2>
- <p class="backup__lead">Exportez catégories, ordre et disposition en JSON, puis restaurez-les sur un autre Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100 % hors ligne, 100 % sans pub">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100 % hors ligne, 100 % sans pub</h2>
- <p class="privacy__lead">Les données restent sur votre Mac. Aucun compte, cloud, SDK d’analyse, publicité ni suivi.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Initialisation intelligente des étiquettes</h3>
- <p class="privacy__feature-text">Des plans d’étiquettes pour 5000+ apps Mac populaires réduisent la configuration initiale.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Initialisation intelligente des étiquettes">
- <div class="layout">
- <h2 class="features__headline">Initialisation intelligente des étiquettes</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Plus besoin d’ouvrir les dossiers un par un ni de tourner des pages. Trouver une app doit être direct.</div>
- <div class="feature"><strong>Quick Search</strong>Même si vous ne retenez qu’une étiquette ou un usage, Quick Search trouve la bonne app.</div>
- <div class="feature"><strong>Étiquettes</strong>Ne forcez plus vos outils dans un seul dossier. Une app peut appartenir à lecture, design, IA ou vos propres étiquettes.</div>
- <div class="feature"><strong>Sauvegarde et restauration</strong>Exportez catégories, ordre et disposition en JSON, puis restaurez-les sur un autre Mac.</div>
- <div class="feature"><strong>Confidentialité</strong>Les données restent sur votre Mac. Aucun compte, cloud, SDK d’analyse, publicité ni suivi.</div>
- <div class="feature"><strong>Initialisation intelligente des étiquettes</strong>Des plans d’étiquettes pour 5000+ apps Mac populaires réduisent la configuration initiale.</div>
- </div>
- <div class="features__cta">
- <p>Bientôt sur le Mac App Store · macOS 14.0+ · 29 langues d’interface</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-fr.html">Assistance</a>
- <a class="btn btn-secondary" href="privacy.html">Confidentialité</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-fr.html">Assistance</a>
- · <a href="privacy.html">Confidentialité</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-id.html b/docs/index-id.html
deleted file mode 100644
index b58bbb9..0000000
--- a/docs/index-id.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="id" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Peluncur app berbasis tag</title>
- <meta name="description" content="Tidak perlu merindukan Launchpad. TagLauncher menaruh app Anda dalam grid bertag yang nyaman dengan keyboard.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-id">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-id.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Bahasa">
- <a href="index-id.html" aria-current="page">Beranda</a>
- <a href="support-id.html">Dukungan</a>
- <a href="privacy.html">Privasi</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF Bantuan</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Bahasa</label>
- <select id="language-index" class="language-select" aria-label="Bahasa" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html" selected>Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Peluncur app Mac berbasis tag</span>
- </h1>
- <p class="hero__lead">Tidak perlu merindukan Launchpad. TagLauncher menaruh app Anda dalam grid bertag yang nyaman dengan keyboard.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Empat tampilan dalam satu layar">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Kontainer berwarna" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Kontainer tanpa warna" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Grid berwarna" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Grid tanpa warna" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Empat tampilan dalam satu layar</h2>
- <p class="views__lead">Tidak perlu membuka folder satu per satu atau membalik halaman. Mencari app seharusnya langsung.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 mode tampilan</p>
- <ul class="views__modes">
- <li>Kontainer berwarna</li>
- <li>Kontainer tanpa warna</li>
- <li>Grid berwarna</li>
- <li>Grid tanpa warna</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Buka cepat</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Satu app, banyak tag">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Satu app, banyak tag</h2>
- <ul class="tags__points">
- <li>Jangan paksa alat masuk ke satu folder. Satu app bisa masuk kerja, desain, AI, atau tag buatan Anda.</li>
- <li><strong>Kontainer berwarna</strong> · Grid tanpa warna</li>
- <li>Seret untuk mengurutkan · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Satu app, banyak tag" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Cari catatan app juga">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Cari catatan app juga" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Cari catatan app juga</h2>
- <p class="memo__lead">Tulis kegunaan app, tampilkan saat hover, dan temukan lewat Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Cari app, tag, dan catatan">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Cari app, tag, dan catatan</h2>
- <p class="search__lead">Meski hanya ingat tag atau kegunaan, Quick Search membantu menemukan app yang tepat.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Buka cepat</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Cari app, tag, dan catatan" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Cadangkan & Pulihkan">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Cadangkan & Pulihkan" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Cadangkan & Pulihkan</h2>
- <p class="backup__lead">Ekspor kategori, urutan, dan tata letak sebagai JSON, lalu pulihkan di Mac lain.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% offline, 100% tanpa iklan">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% offline, 100% tanpa iklan</h2>
- <p class="privacy__lead">Data tetap di Mac Anda. Tanpa akun, sinkron cloud, analitik, iklan, atau pelacakan.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Inisialisasi tag pintar</h3>
- <p class="privacy__feature-text">Rencana tag awal untuk 5000+ app Mac populer mengurangi kerja dari nol.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Inisialisasi tag pintar">
- <div class="layout">
- <h2 class="features__headline">Inisialisasi tag pintar</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Tidak perlu membuka folder satu per satu atau membalik halaman. Mencari app seharusnya langsung.</div>
- <div class="feature"><strong>Quick Search</strong>Meski hanya ingat tag atau kegunaan, Quick Search membantu menemukan app yang tepat.</div>
- <div class="feature"><strong>Tag</strong>Jangan paksa alat masuk ke satu folder. Satu app bisa masuk kerja, desain, AI, atau tag buatan Anda.</div>
- <div class="feature"><strong>Cadangkan & pulihkan</strong>Ekspor kategori, urutan, dan tata letak sebagai JSON, lalu pulihkan di Mac lain.</div>
- <div class="feature"><strong>Privasi</strong>Data tetap di Mac Anda. Tanpa akun, sinkron cloud, analitik, iklan, atau pelacakan.</div>
- <div class="feature"><strong>Inisialisasi tag pintar</strong>Rencana tag awal untuk 5000+ app Mac populer mengurangi kerja dari nol.</div>
- </div>
- <div class="features__cta">
- <p>Segera hadir di Mac App Store · macOS 14.0+ · 29 bahasa UI</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-id.html">Dukungan</a>
- <a class="btn btn-secondary" href="privacy.html">Privasi</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-id.html">Dukungan</a>
- · <a href="privacy.html">Privasi</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-it.html b/docs/index-it.html
deleted file mode 100644
index f82c735..0000000
--- a/docs/index-it.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="it" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Launcher di app basato su tag</title>
- <meta name="description" content="Non serve rimpiangere Launchpad. TagLauncher organizza le app in una griglia con tag e scorciatoie.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-it">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-it.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Lingua">
- <a href="index-it.html" aria-current="page">Home</a>
- <a href="support-it.html">Supporto</a>
- <a href="privacy.html">Privacy</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Guida PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Lingua</label>
- <select id="language-index" class="language-select" aria-label="Lingua" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html" selected>Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Un launcher per app Mac basato sui tag</span>
- </h1>
- <p class="hero__lead">Non serve rimpiangere Launchpad. TagLauncher organizza le app in una griglia con tag e scorciatoie.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Quattro viste in un’unica schermata">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Contenitore colorato" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Contenitore senza colore" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Griglia colorata" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Griglia senza colore" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Quattro viste in un’unica schermata</h2>
- <p class="views__lead">Niente cartelle da aprire una a una, niente pagine da sfogliare. Trovare un’app deve essere diretto.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 modalità di vista</p>
- <ul class="views__modes">
- <li>Contenitore colorato</li>
- <li>Contenitore senza colore</li>
- <li>Griglia colorata</li>
- <li>Griglia senza colore</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Avvio rapido</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Un’app, molti tag">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Un’app, molti tag</h2>
- <ul class="tags__points">
- <li>Non bloccare gli strumenti in una sola cartella. Un’app può appartenere a lettura, design, IA o tag personalizzati.</li>
- <li><strong>Contenitore colorato</strong> · Griglia senza colore</li>
- <li>Trascina per riordinare · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Un’app, molti tag" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Cerca anche nelle note">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Cerca anche nelle note" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Cerca anche nelle note</h2>
- <p class="memo__lead">Scrivi a cosa serve ogni app, visualizzalo al passaggio e cercalo con Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Cerca app, tag e note">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Cerca app, tag e note</h2>
- <p class="search__lead">Anche se ricordi solo un tag o uno scopo, Quick Search ti porta all’app giusta.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Avvio rapido</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Cerca app, tag e note" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Backup e ripristino">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Backup e ripristino" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Backup e ripristino</h2>
- <p class="backup__lead">Esporta categorie, ordine e layout in JSON e ripristinali su un altro Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% offline, 100% senza pubblicità">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% offline, 100% senza pubblicità</h2>
- <p class="privacy__lead">I dati restano sul Mac. Nessun account, cloud, analisi, pubblicità o tracciamento.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Inizializzazione intelligente dei tag</h3>
- <p class="privacy__feature-text">Piani iniziali per oltre 5000 app Mac popolari riducono il lavoro da zero.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Inizializzazione intelligente dei tag">
- <div class="layout">
- <h2 class="features__headline">Inizializzazione intelligente dei tag</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Niente cartelle da aprire una a una, niente pagine da sfogliare. Trovare un’app deve essere diretto.</div>
- <div class="feature"><strong>Quick Search</strong>Anche se ricordi solo un tag o uno scopo, Quick Search ti porta all’app giusta.</div>
- <div class="feature"><strong>Tag</strong>Non bloccare gli strumenti in una sola cartella. Un’app può appartenere a lettura, design, IA o tag personalizzati.</div>
- <div class="feature"><strong>Backup e ripristino</strong>Esporta categorie, ordine e layout in JSON e ripristinali su un altro Mac.</div>
- <div class="feature"><strong>Privacy</strong>I dati restano sul Mac. Nessun account, cloud, analisi, pubblicità o tracciamento.</div>
- <div class="feature"><strong>Inizializzazione intelligente dei tag</strong>Piani iniziali per oltre 5000 app Mac popolari riducono il lavoro da zero.</div>
- </div>
- <div class="features__cta">
- <p>Presto su Mac App Store · macOS 14.0+ · 29 lingue UI</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-it.html">Supporto</a>
- <a class="btn btn-secondary" href="privacy.html">Privacy</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-it.html">Supporto</a>
- · <a href="privacy.html">Privacy</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-ja.html b/docs/index-ja.html
deleted file mode 100644
index 744f05c..0000000
--- a/docs/index-ja.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="ja" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — タグベースのアプリランチャー</title>
- <meta name="description" content="Launchpad に頼る必要はありません。TagLauncher はアプリをタグ付きの一覧にまとめ、キーボードですばやく呼び出せます。">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-ja">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ja.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="言語">
- <a href="index-ja.html" aria-current="page">ホーム</a>
- <a href="support-ja.html">サポート</a>
- <a href="privacy.html">プライバシー</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">ヘルプPDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">言語</label>
- <select id="language-index" class="language-select" aria-label="言語" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html" selected>日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>タグで整理する Mac アプリランチャー</span>
- </h1>
- <p class="hero__lead">Launchpad に頼る必要はありません。TagLauncher はアプリをタグ付きの一覧にまとめ、キーボードですばやく呼び出せます。</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="4つの表示を1画面に">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="カラーコンテナ" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="無色コンテナ" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="カラーグリッド" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="無色グリッド" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">4つの表示を1画面に</h2>
- <p class="views__lead">フォルダを1つずつ開いたり、ページをめくったりする必要はありません。アプリ探しはもっと直接的であるべきです。</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4つの表示モード</p>
- <ul class="views__modes">
- <li>カラーコンテナ</li>
- <li>無色コンテナ</li>
- <li>カラーグリッド</li>
- <li>無色グリッド</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">クイック起動</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="1つのアプリに複数のタグ">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">1つのアプリに複数のタグ</h2>
- <ul class="tags__points">
- <li>ツールを1つのフォルダに閉じ込めないでください。読書、デザイン、AI など自由なタグに分類できます。</li>
- <li><strong>カラーコンテナ</strong> · 無色グリッド</li>
- <li>ドラッグで並べ替え · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="1つのアプリに複数のタグ" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="アプリのメモも検索">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="アプリのメモも検索" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">アプリのメモも検索</h2>
- <p class="memo__lead">用途メモを書き、ホバーで確認し、Quick Search から探せます。</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="アプリ、タグ、メモを検索">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">アプリ、タグ、メモを検索</h2>
- <p class="search__lead">タグや用途だけ覚えていても、Quick Search が目的のアプリへ導きます。</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">クイック起動</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="アプリ、タグ、メモを検索" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="バックアップと復元">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="バックアップと復元" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">バックアップと復元</h2>
- <p class="backup__lead">カテゴリ、順序、レイアウトを JSON として書き出し、別の Mac で復元できます。</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="完全オフライン、広告なし">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">完全オフライン、広告なし</h2>
- <p class="privacy__lead">データは Mac 内に保存されます。アカウント、クラウド同期、分析、広告、トラッキングはありません。</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>スマートタグ初期化</h3>
- <p class="privacy__feature-text">5000以上の人気 Mac アプリ向け初期タグで、ゼロからの分類を減らします。</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="スマートタグ初期化">
- <div class="layout">
- <h2 class="features__headline">スマートタグ初期化</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>フォルダを1つずつ開いたり、ページをめくったりする必要はありません。アプリ探しはもっと直接的であるべきです。</div>
- <div class="feature"><strong>Quick Search</strong>タグや用途だけ覚えていても、Quick Search が目的のアプリへ導きます。</div>
- <div class="feature"><strong>タグ</strong>ツールを1つのフォルダに閉じ込めないでください。読書、デザイン、AI など自由なタグに分類できます。</div>
- <div class="feature"><strong>バックアップと復元</strong>カテゴリ、順序、レイアウトを JSON として書き出し、別の Mac で復元できます。</div>
- <div class="feature"><strong>プライバシー</strong>データは Mac 内に保存されます。アカウント、クラウド同期、分析、広告、トラッキングはありません。</div>
- <div class="feature"><strong>スマートタグ初期化</strong>5000以上の人気 Mac アプリ向け初期タグで、ゼロからの分類を減らします。</div>
- </div>
- <div class="features__cta">
- <p>Mac App Store に近日登場 · macOS 14.0+ · 29 UI 言語</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-ja.html">サポート</a>
- <a class="btn btn-secondary" href="privacy.html">プライバシー</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ja.html">サポート</a>
- · <a href="privacy.html">プライバシー</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-ko.html b/docs/index-ko.html
deleted file mode 100644
index 88f865d..0000000
--- a/docs/index-ko.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — 태그 기반 앱 런처</title>
- <meta name="description" content="Launchpad를 그리워할 필요가 없습니다. TagLauncher는 앱을 태그 기반 그리드에 정리하고 키보드로 빠르게 엽니다.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-ko">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ko.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="언어">
- <a href="index-ko.html" aria-current="page">홈</a>
- <a href="support-ko.html">지원</a>
- <a href="privacy.html">개인정보</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">도움말 PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">언어</label>
- <select id="language-index" class="language-select" aria-label="언어" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html" selected>한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>태그 기반 Mac 앱 런처</span>
- </h1>
- <p class="hero__lead">Launchpad를 그리워할 필요가 없습니다. TagLauncher는 앱을 태그 기반 그리드에 정리하고 키보드로 빠르게 엽니다.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="네 가지 보기를 한 화면에">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="색상 컨테이너" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="무색 컨테이너" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="색상 그리드" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="무색 그리드" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">네 가지 보기를 한 화면에</h2>
- <p class="views__lead">폴더를 하나씩 열거나 페이지를 넘길 필요가 없습니다. 앱 찾기는 더 직접적이어야 합니다.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4가지 보기 모드</p>
- <ul class="views__modes">
- <li>색상 컨테이너</li>
- <li>무색 컨테이너</li>
- <li>색상 그리드</li>
- <li>무색 그리드</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">빠른 실행</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="하나의 앱, 여러 태그">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">하나의 앱, 여러 태그</h2>
- <ul class="tags__points">
- <li>도구를 하나의 폴더에 가두지 마세요. 앱은 읽기, 디자인, AI 또는 사용자 태그에 동시에 속할 수 있습니다.</li>
- <li><strong>색상 컨테이너</strong> · 무색 그리드</li>
- <li>드래그하여 순서 변경 · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="하나의 앱, 여러 태그" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="앱 메모도 검색">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="앱 메모도 검색" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">앱 메모도 검색</h2>
- <p class="memo__lead">앱 용도를 적고, 호버로 확인하고, Quick Search에서 찾을 수 있습니다.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="앱, 태그, 메모 검색">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">앱, 태그, 메모 검색</h2>
- <p class="search__lead">태그나 용도만 기억해도 Quick Search가 올바른 앱을 찾아줍니다.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">빠른 실행</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="앱, 태그, 메모 검색" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="백업 및 복원">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="백업 및 복원" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">백업 및 복원</h2>
- <p class="backup__lead">카테고리, 순서, 레이아웃을 JSON으로 내보내고 다른 Mac에서 복원하세요.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% 오프라인, 광고 없음">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% 오프라인, 광고 없음</h2>
- <p class="privacy__lead">데이터는 Mac에 남습니다. 계정, 클라우드 동기화, 분석, 광고, 추적이 없습니다.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>스마트 태그 초기화</h3>
- <p class="privacy__feature-text">인기 Mac 앱 5000개 이상의 초기 태그 구성이 처음 분류하는 수고를 줄입니다.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="스마트 태그 초기화">
- <div class="layout">
- <h2 class="features__headline">스마트 태그 초기화</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>폴더를 하나씩 열거나 페이지를 넘길 필요가 없습니다. 앱 찾기는 더 직접적이어야 합니다.</div>
- <div class="feature"><strong>Quick Search</strong>태그나 용도만 기억해도 Quick Search가 올바른 앱을 찾아줍니다.</div>
- <div class="feature"><strong>태그</strong>도구를 하나의 폴더에 가두지 마세요. 앱은 읽기, 디자인, AI 또는 사용자 태그에 동시에 속할 수 있습니다.</div>
- <div class="feature"><strong>백업 및 복원</strong>카테고리, 순서, 레이아웃을 JSON으로 내보내고 다른 Mac에서 복원하세요.</div>
- <div class="feature"><strong>개인정보</strong>데이터는 Mac에 남습니다. 계정, 클라우드 동기화, 분석, 광고, 추적이 없습니다.</div>
- <div class="feature"><strong>스마트 태그 초기화</strong>인기 Mac 앱 5000개 이상의 초기 태그 구성이 처음 분류하는 수고를 줄입니다.</div>
- </div>
- <div class="features__cta">
- <p>Mac App Store 출시 예정 · macOS 14.0+ · 29개 UI 언어</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-ko.html">지원</a>
- <a class="btn btn-secondary" href="privacy.html">개인정보</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ko.html">지원</a>
- · <a href="privacy.html">개인정보</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-ms.html b/docs/index-ms.html
deleted file mode 100644
index a739bf1..0000000
--- a/docs/index-ms.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="ms" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Peluncur app berbasis tag</title>
- <meta name="description" content="Tidak perlu merindui Launchpad. TagLauncher menyusun aplikasi dalam grid bertag yang mesra papan kekunci.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-ms">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ms.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Bahasa">
- <a href="index-ms.html" aria-current="page">Utama</a>
- <a href="support-ms.html">Sokongan</a>
- <a href="privacy.html">Privasi</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF Bantuan</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Bahasa</label>
- <select id="language-index" class="language-select" aria-label="Bahasa" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html" selected>Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Pelancar aplikasi Mac berasaskan tag</span>
- </h1>
- <p class="hero__lead">Tidak perlu merindui Launchpad. TagLauncher menyusun aplikasi dalam grid bertag yang mesra papan kekunci.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Empat paparan pada satu skrin">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Kontainer berwarna" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Kontainer tanpa warna" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Grid berwarna" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Grid tanpa warna" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Empat paparan pada satu skrin</h2>
- <p class="views__lead">Tiada lagi membuka folder satu demi satu atau menyelak halaman. Mencari aplikasi patut terus.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 mod paparan</p>
- <ul class="views__modes">
- <li>Kontainer berwarna</li>
- <li>Kontainer tanpa warna</li>
- <li>Grid berwarna</li>
- <li>Grid tanpa warna</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Lancar pantas</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Satu aplikasi, banyak tag">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Satu aplikasi, banyak tag</h2>
- <ul class="tags__points">
- <li>Jangan paksa alat ke satu folder. Aplikasi boleh berada dalam bacaan, reka bentuk, AI atau tag sendiri.</li>
- <li><strong>Kontainer berwarna</strong> · Grid tanpa warna</li>
- <li>Seret untuk mengurutkan · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Satu aplikasi, banyak tag" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Cari nota aplikasi juga">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Cari nota aplikasi juga" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Cari nota aplikasi juga</h2>
- <p class="memo__lead">Tulis kegunaan aplikasi, lihat semasa hover, dan cari melalui Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Cari aplikasi, tag dan nota">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Cari aplikasi, tag dan nota</h2>
- <p class="search__lead">Walaupun hanya ingat tag atau tujuan, Quick Search membantu mencari aplikasi yang betul.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Lancar pantas</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Cari aplikasi, tag dan nota" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Sandaran & Pulih">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Sandaran & Pulih" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Sandaran & Pulih</h2>
- <p class="backup__lead">Eksport kategori, susunan dan susun atur sebagai JSON, kemudian pulihkan pada Mac lain.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% luar talian, 100% tanpa iklan">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% luar talian, 100% tanpa iklan</h2>
- <p class="privacy__lead">Data kekal pada Mac anda. Tiada akaun, awan, analitik, iklan atau penjejakan.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Permulaan tag pintar</h3>
- <p class="privacy__feature-text">Pelan tag awal untuk 5000+ aplikasi Mac popular mengurangkan kerja dari kosong.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Permulaan tag pintar">
- <div class="layout">
- <h2 class="features__headline">Permulaan tag pintar</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Tiada lagi membuka folder satu demi satu atau menyelak halaman. Mencari aplikasi patut terus.</div>
- <div class="feature"><strong>Quick Search</strong>Walaupun hanya ingat tag atau tujuan, Quick Search membantu mencari aplikasi yang betul.</div>
- <div class="feature"><strong>Tag</strong>Jangan paksa alat ke satu folder. Aplikasi boleh berada dalam bacaan, reka bentuk, AI atau tag sendiri.</div>
- <div class="feature"><strong>Sandaran & pulih</strong>Eksport kategori, susunan dan susun atur sebagai JSON, kemudian pulihkan pada Mac lain.</div>
- <div class="feature"><strong>Privasi</strong>Data kekal pada Mac anda. Tiada akaun, awan, analitik, iklan atau penjejakan.</div>
- <div class="feature"><strong>Permulaan tag pintar</strong>Pelan tag awal untuk 5000+ aplikasi Mac popular mengurangkan kerja dari kosong.</div>
- </div>
- <div class="features__cta">
- <p>Akan hadir di Mac App Store · macOS 14.0+ · 29 bahasa UI</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-ms.html">Sokongan</a>
- <a class="btn btn-secondary" href="privacy.html">Privasi</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ms.html">Sokongan</a>
- · <a href="privacy.html">Privasi</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-nl.html b/docs/index-nl.html
deleted file mode 100644
index 522d1b4..0000000
--- a/docs/index-nl.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="nl" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Taggebaseerde appstarter</title>
- <meta name="description" content="Je hoeft Launchpad niet te missen. TagLauncher zet je apps in één tagraster dat prettig werkt met het toetsenbord.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-nl">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-nl.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Taal">
- <a href="index-nl.html" aria-current="page">Home</a>
- <a href="support-nl.html">Support</a>
- <a href="privacy.html">Privacy</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Help-pdf</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Taal</label>
- <select id="language-index" class="language-select" aria-label="Taal" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html" selected>Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Een tag-gebaseerde appstarter voor Mac</span>
- </h1>
- <p class="hero__lead">Je hoeft Launchpad niet te missen. TagLauncher zet je apps in één tagraster dat prettig werkt met het toetsenbord.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Vier weergaven op één scherm">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Gekleurde container" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Kleurloze container" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Gekleurd raster" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Kleurloos raster" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Vier weergaven op één scherm</h2>
- <p class="views__lead">Geen mappen één voor één openen en geen pagina’s doorbladeren. Een app vinden moet direct zijn.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 weergavemodi</p>
- <ul class="views__modes">
- <li>Gekleurde container</li>
- <li>Kleurloze container</li>
- <li>Gekleurd raster</li>
- <li>Kleurloos raster</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Snel starten</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Eén app, meerdere tags">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Eén app, meerdere tags</h2>
- <ul class="tags__points">
- <li>Dwing tools niet in één map. Een app kan horen bij lezen, ontwerp, AI of je eigen tags.</li>
- <li><strong>Gekleurde container</strong> · Kleurloos raster</li>
- <li>Sleep om te sorteren · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Eén app, meerdere tags" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Zoek ook appnotities">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Zoek ook appnotities" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Zoek ook appnotities</h2>
- <p class="memo__lead">Schrijf waar een app voor dient, toon het bij hover en vind het via Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Zoek apps, tags en notities">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Zoek apps, tags en notities</h2>
- <p class="search__lead">Ook als je alleen een tag of doel weet, brengt Quick Search je naar de juiste app.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Snel starten</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Zoek apps, tags en notities" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Back-up en herstel">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Back-up en herstel" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Back-up en herstel</h2>
- <p class="backup__lead">Exporteer categorieën, volgorde en lay-out als JSON en herstel ze op een andere Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% offline, 100% advertentievrij">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% offline, 100% advertentievrij</h2>
- <p class="privacy__lead">Data blijft op je Mac. Geen account, cloudsync, analytics, advertenties of tracking.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Slimme tag-initialisatie</h3>
- <p class="privacy__feature-text">Startplannen voor 5000+ populaire Mac-apps maken beginnen vanaf nul eenvoudiger.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Slimme tag-initialisatie">
- <div class="layout">
- <h2 class="features__headline">Slimme tag-initialisatie</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Geen mappen één voor één openen en geen pagina’s doorbladeren. Een app vinden moet direct zijn.</div>
- <div class="feature"><strong>Quick Search</strong>Ook als je alleen een tag of doel weet, brengt Quick Search je naar de juiste app.</div>
- <div class="feature"><strong>Tags</strong>Dwing tools niet in één map. Een app kan horen bij lezen, ontwerp, AI of je eigen tags.</div>
- <div class="feature"><strong>Back-up en herstel</strong>Exporteer categorieën, volgorde en lay-out als JSON en herstel ze op een andere Mac.</div>
- <div class="feature"><strong>Privacy</strong>Data blijft op je Mac. Geen account, cloudsync, analytics, advertenties of tracking.</div>
- <div class="feature"><strong>Slimme tag-initialisatie</strong>Startplannen voor 5000+ populaire Mac-apps maken beginnen vanaf nul eenvoudiger.</div>
- </div>
- <div class="features__cta">
- <p>Binnenkort in de Mac App Store · macOS 14.0+ · 29 UI-talen</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-nl.html">Support</a>
- <a class="btn btn-secondary" href="privacy.html">Privacy</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-nl.html">Support</a>
- · <a href="privacy.html">Privacy</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-no.html b/docs/index-no.html
deleted file mode 100644
index ccd7dab..0000000
--- a/docs/index-no.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="no" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Etikettbasert appstarter</title>
- <meta name="description" content="Du trenger ikke savne Launchpad. TagLauncher samler appene dine i ett taggbasert rutenett med tastatursnarveier.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-no">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-no.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Språk">
- <a href="index-no.html" aria-current="page">Hjem</a>
- <a href="support-no.html">Støtte</a>
- <a href="privacy.html">Personvern</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjelp PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Språk</label>
- <select id="language-index" class="language-select" aria-label="Språk" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html" selected>Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>En taggbasert appstarter for Mac</span>
- </h1>
- <p class="hero__lead">Du trenger ikke savne Launchpad. TagLauncher samler appene dine i ett taggbasert rutenett med tastatursnarveier.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Fire visninger på én skjerm">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Farget beholder" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Fargeløs beholder" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Farget rutenett" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Fargeløst rutenett" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Fire visninger på én skjerm</h2>
- <p class="views__lead">Ingen mapper som må åpnes én og én, og ingen sider å bla i. Å finne en app bør være direkte.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 visningsmoduser</p>
- <ul class="views__modes">
- <li>Farget beholder</li>
- <li>Fargeløs beholder</li>
- <li>Farget rutenett</li>
- <li>Fargeløst rutenett</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Hurtigstart</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Én app, flere tagger">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Én app, flere tagger</h2>
- <ul class="tags__points">
- <li>Ikke lås verktøy til én mappe. En app kan høre til lesing, design, AI eller dine egne tagger.</li>
- <li><strong>Farget beholder</strong> · Fargeløst rutenett</li>
- <li>Dra for å endre rekkefølge · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Én app, flere tagger" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Søk også i appnotater">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Søk også i appnotater" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Søk også i appnotater</h2>
- <p class="memo__lead">Skriv hva appen brukes til, vis det ved hover, og finn det med Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Søk i apper, tagger og notater">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Søk i apper, tagger og notater</h2>
- <p class="search__lead">Selv om du bare husker en tagg eller et formål, finner Quick Search riktig app.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Hurtigstart</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Søk i apper, tagger og notater" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Sikkerhetskopi og gjenoppretting">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Sikkerhetskopi og gjenoppretting" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Sikkerhetskopi og gjenoppretting</h2>
- <p class="backup__lead">Eksporter kategorier, rekkefølge og oppsett som JSON, og gjenopprett på en annen Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100 % offline, 100 % uten reklame">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100 % offline, 100 % uten reklame</h2>
- <p class="privacy__lead">Data blir på Macen din. Ingen konto, skysynk, analyse, annonser eller sporing.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Smart tagginitialisering</h3>
- <p class="privacy__feature-text">Starttagger for 5000+ populære Mac-apper gjør det enklere å starte fra null.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Smart tagginitialisering">
- <div class="layout">
- <h2 class="features__headline">Smart tagginitialisering</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Ingen mapper som må åpnes én og én, og ingen sider å bla i. Å finne en app bør være direkte.</div>
- <div class="feature"><strong>Quick Search</strong>Selv om du bare husker en tagg eller et formål, finner Quick Search riktig app.</div>
- <div class="feature"><strong>Etiketter</strong>Ikke lås verktøy til én mappe. En app kan høre til lesing, design, AI eller dine egne tagger.</div>
- <div class="feature"><strong>Sikkerhetskopi og gjenoppretting</strong>Eksporter kategorier, rekkefølge og oppsett som JSON, og gjenopprett på en annen Mac.</div>
- <div class="feature"><strong>Personvern</strong>Data blir på Macen din. Ingen konto, skysynk, analyse, annonser eller sporing.</div>
- <div class="feature"><strong>Smart tagginitialisering</strong>Starttagger for 5000+ populære Mac-apper gjør det enklere å starte fra null.</div>
- </div>
- <div class="features__cta">
- <p>Kommer snart i Mac App Store · macOS 14.0+ · 29 UI-språk</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-no.html">Støtte</a>
- <a class="btn btn-secondary" href="privacy.html">Personvern</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-no.html">Støtte</a>
- · <a href="privacy.html">Personvern</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-pl.html b/docs/index-pl.html
deleted file mode 100644
index c204aa6..0000000
--- a/docs/index-pl.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="pl" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Launcher aplikacji oparty na tagach</title>
- <meta name="description" content="Nie musisz tęsknić za Launchpadem. TagLauncher układa aplikacje w jedną siatkę z tagami i skrótami.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-pl">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-pl.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Język">
- <a href="index-pl.html" aria-current="page">Start</a>
- <a href="support-pl.html">Wsparcie</a>
- <a href="privacy.html">Prywatność</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Pomoc PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Język</label>
- <select id="language-index" class="language-select" aria-label="Język" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html" selected>Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Launcher aplikacji Mac oparty na tagach</span>
- </h1>
- <p class="hero__lead">Nie musisz tęsknić za Launchpadem. TagLauncher układa aplikacje w jedną siatkę z tagami i skrótami.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Cztery widoki na jednym ekranie">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Kolorowy kontener" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Bezbarwny kontener" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Kolorowa siatka" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Bezbarwna siatka" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Cztery widoki na jednym ekranie</h2>
- <p class="views__lead">Bez otwierania folderów po kolei i przewijania stron. Znalezienie aplikacji powinno być proste.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 tryby widoku</p>
- <ul class="views__modes">
- <li>Kolorowy kontener</li>
- <li>Bezbarwny kontener</li>
- <li>Kolorowa siatka</li>
- <li>Bezbarwna siatka</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Szybkie uruchamianie</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Jedna aplikacja, wiele tagów">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Jedna aplikacja, wiele tagów</h2>
- <ul class="tags__points">
- <li>Nie zamykaj narzędzi w jednym folderze. Aplikacja może należeć do czytania, designu, AI lub własnych tagów.</li>
- <li><strong>Kolorowy kontener</strong> · Bezbarwna siatka</li>
- <li>Przeciągnij, aby zmienić kolejność · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Jedna aplikacja, wiele tagów" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Szukaj także notatek aplikacji">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Szukaj także notatek aplikacji" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Szukaj także notatek aplikacji</h2>
- <p class="memo__lead">Zapisz przeznaczenie aplikacji, pokaż je po najechaniu i znajdź przez Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Szukaj aplikacji, tagów i notatek">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Szukaj aplikacji, tagów i notatek</h2>
- <p class="search__lead">Wystarczy pamiętać tag lub cel. Quick Search doprowadzi do właściwej aplikacji.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Szybkie uruchamianie</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Szukaj aplikacji, tagów i notatek" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Kopia i przywracanie">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Kopia i przywracanie" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Kopia i przywracanie</h2>
- <p class="backup__lead">Eksportuj kategorie, kolejność i układ jako JSON, a potem przywróć na innym Macu.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% offline, 100% bez reklam">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% offline, 100% bez reklam</h2>
- <p class="privacy__lead">Dane zostają na Macu. Bez konta, chmury, analityki, reklam i śledzenia.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Inteligentna inicjalizacja tagów</h3>
- <p class="privacy__feature-text">Początkowe tagi dla 5000+ popularnych aplikacji Mac skracają konfigurację od zera.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Inteligentna inicjalizacja tagów">
- <div class="layout">
- <h2 class="features__headline">Inteligentna inicjalizacja tagów</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Bez otwierania folderów po kolei i przewijania stron. Znalezienie aplikacji powinno być proste.</div>
- <div class="feature"><strong>Quick Search</strong>Wystarczy pamiętać tag lub cel. Quick Search doprowadzi do właściwej aplikacji.</div>
- <div class="feature"><strong>Tagi</strong>Nie zamykaj narzędzi w jednym folderze. Aplikacja może należeć do czytania, designu, AI lub własnych tagów.</div>
- <div class="feature"><strong>Kopia zapasowa i przywracanie</strong>Eksportuj kategorie, kolejność i układ jako JSON, a potem przywróć na innym Macu.</div>
- <div class="feature"><strong>Prywatność</strong>Dane zostają na Macu. Bez konta, chmury, analityki, reklam i śledzenia.</div>
- <div class="feature"><strong>Inteligentna inicjalizacja tagów</strong>Początkowe tagi dla 5000+ popularnych aplikacji Mac skracają konfigurację od zera.</div>
- </div>
- <div class="features__cta">
- <p>Wkrótce w Mac App Store · macOS 14.0+ · 29 języków interfejsu</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-pl.html">Wsparcie</a>
- <a class="btn btn-secondary" href="privacy.html">Prywatność</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-pl.html">Wsparcie</a>
- · <a href="privacy.html">Prywatność</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-pt-BR.html b/docs/index-pt-BR.html
deleted file mode 100644
index 5006e91..0000000
--- a/docs/index-pt-BR.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="pt-BR" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Inicializador de apps baseado em etiquetas</title>
- <meta name="description" content="Você não precisa sentir falta do Launchpad. O TagLauncher organiza seus apps em uma grade com tags e atalhos.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-pt-BR">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-pt-BR.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Idioma">
- <a href="index-pt-BR.html" aria-current="page">Início</a>
- <a href="support-pt-BR.html">Suporte</a>
- <a href="privacy.html">Privacidade</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ajuda PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Idioma</label>
- <select id="language-index" class="language-select" aria-label="Idioma" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html" selected>Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Um lançador de apps Mac baseado em tags</span>
- </h1>
- <p class="hero__lead">Você não precisa sentir falta do Launchpad. O TagLauncher organiza seus apps em uma grade com tags e atalhos.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Quatro visualizações em uma tela">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Contêiner colorido" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Contêiner sem cor" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Grade colorida" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Grade sem cor" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Quatro visualizações em uma tela</h2>
- <p class="views__lead">Sem abrir pastas uma por uma ou virar páginas. Encontrar um app deve ser direto.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 modos de visualização</p>
- <ul class="views__modes">
- <li>Contêiner colorido</li>
- <li>Contêiner sem cor</li>
- <li>Grade colorida</li>
- <li>Grade sem cor</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Início rápido</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Um app, várias tags">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Um app, várias tags</h2>
- <ul class="tags__points">
- <li>Não prenda suas ferramentas a uma pasta. Um app pode pertencer a leitura, design, IA ou tags próprias.</li>
- <li><strong>Contêiner colorido</strong> · Grade sem cor</li>
- <li>Arraste para reordenar · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Um app, várias tags" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Pesquise também notas de apps">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Pesquise também notas de apps" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Pesquise também notas de apps</h2>
- <p class="memo__lead">Escreva para que cada app serve, veja ao passar o cursor e encontre pelo Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Pesquise apps, tags e notas">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Pesquise apps, tags e notas</h2>
- <p class="search__lead">Mesmo lembrando só uma tag ou finalidade, o Quick Search leva você ao app certo.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Início rápido</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Pesquise apps, tags e notas" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Backup e restauração">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Backup e restauração" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Backup e restauração</h2>
- <p class="backup__lead">Exporte categorias, ordem e layout como JSON e restaure em outro Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% offline, 100% sem anúncios">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% offline, 100% sem anúncios</h2>
- <p class="privacy__lead">Os dados ficam no seu Mac. Sem conta, nuvem, analytics, anúncios ou rastreamento.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Inicialização inteligente de tags</h3>
- <p class="privacy__feature-text">Planos iniciais para mais de 5000 apps populares de Mac reduzem o trabalho do zero.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Inicialização inteligente de tags">
- <div class="layout">
- <h2 class="features__headline">Inicialização inteligente de tags</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Sem abrir pastas uma por uma ou virar páginas. Encontrar um app deve ser direto.</div>
- <div class="feature"><strong>Quick Search</strong>Mesmo lembrando só uma tag ou finalidade, o Quick Search leva você ao app certo.</div>
- <div class="feature"><strong>Etiquetas</strong>Não prenda suas ferramentas a uma pasta. Um app pode pertencer a leitura, design, IA ou tags próprias.</div>
- <div class="feature"><strong>Backup e restauração</strong>Exporte categorias, ordem e layout como JSON e restaure em outro Mac.</div>
- <div class="feature"><strong>Privacidade</strong>Os dados ficam no seu Mac. Sem conta, nuvem, analytics, anúncios ou rastreamento.</div>
- <div class="feature"><strong>Inicialização inteligente de tags</strong>Planos iniciais para mais de 5000 apps populares de Mac reduzem o trabalho do zero.</div>
- </div>
- <div class="features__cta">
- <p>Em breve na Mac App Store · macOS 14.0+ · 29 idiomas de interface</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-pt-BR.html">Suporte</a>
- <a class="btn btn-secondary" href="privacy.html">Privacidade</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-pt-BR.html">Suporte</a>
- · <a href="privacy.html">Privacidade</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-ro.html b/docs/index-ro.html
deleted file mode 100644
index fcfcca6..0000000
--- a/docs/index-ro.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="ro" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Lansator de aplicații bazat pe etichete</title>
- <meta name="description" content="Nu trebuie să regreți Launchpad. TagLauncher pune aplicațiile într-o grilă cu etichete și scurtături.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-ro">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ro.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Limbă">
- <a href="index-ro.html" aria-current="page">Acasă</a>
- <a href="support-ro.html">Suport</a>
- <a href="privacy.html">Confidențialitate</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ajutor PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Limbă</label>
- <select id="language-index" class="language-select" aria-label="Limbă" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html" selected>Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Lansator de aplicații Mac bazat pe etichete</span>
- </h1>
- <p class="hero__lead">Nu trebuie să regreți Launchpad. TagLauncher pune aplicațiile într-o grilă cu etichete și scurtături.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Patru vizualizări pe un singur ecran">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Container colorat" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Container fără culoare" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Grilă colorată" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Grilă fără culoare" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Patru vizualizări pe un singur ecran</h2>
- <p class="views__lead">Fără foldere deschise pe rând și fără pagini de răsfoit. Găsirea unei aplicații trebuie să fie directă.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 moduri de vizualizare</p>
- <ul class="views__modes">
- <li>Container colorat</li>
- <li>Container fără culoare</li>
- <li>Grilă colorată</li>
- <li>Grilă fără culoare</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Lansare rapidă</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="O aplicație, mai multe etichete">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">O aplicație, mai multe etichete</h2>
- <ul class="tags__points">
- <li>Nu bloca instrumentele într-un singur folder. O aplicație poate aparține lecturii, designului, AI sau etichetelor tale.</li>
- <li><strong>Container colorat</strong> · Grilă fără culoare</li>
- <li>Trage pentru reordonare · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="O aplicație, mai multe etichete" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Caută și notele aplicațiilor">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Caută și notele aplicațiilor" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Caută și notele aplicațiilor</h2>
- <p class="memo__lead">Scrie scopul aplicației, afișează-l la hover și găsește-l cu Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Caută aplicații, etichete și note">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Caută aplicații, etichete și note</h2>
- <p class="search__lead">Chiar dacă îți amintești doar o etichetă sau un scop, Quick Search găsește aplicația corectă.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Lansare rapidă</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Caută aplicații, etichete și note" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Backup și restaurare">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Backup și restaurare" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Backup și restaurare</h2>
- <p class="backup__lead">Exportă categoriile, ordinea și aspectul ca JSON, apoi restaurează-le pe alt Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% offline, 100% fără reclame">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% offline, 100% fără reclame</h2>
- <p class="privacy__lead">Datele rămân pe Mac. Fără cont, cloud, analiză, reclame sau urmărire.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Inițializare inteligentă a etichetelor</h3>
- <p class="privacy__feature-text">Planuri inițiale pentru 5000+ aplicații Mac populare reduc munca de la zero.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Inițializare inteligentă a etichetelor">
- <div class="layout">
- <h2 class="features__headline">Inițializare inteligentă a etichetelor</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Fără foldere deschise pe rând și fără pagini de răsfoit. Găsirea unei aplicații trebuie să fie directă.</div>
- <div class="feature"><strong>Quick Search</strong>Chiar dacă îți amintești doar o etichetă sau un scop, Quick Search găsește aplicația corectă.</div>
- <div class="feature"><strong>Etichete</strong>Nu bloca instrumentele într-un singur folder. O aplicație poate aparține lecturii, designului, AI sau etichetelor tale.</div>
- <div class="feature"><strong>Backup și restaurare</strong>Exportă categoriile, ordinea și aspectul ca JSON, apoi restaurează-le pe alt Mac.</div>
- <div class="feature"><strong>Confidențialitate</strong>Datele rămân pe Mac. Fără cont, cloud, analiză, reclame sau urmărire.</div>
- <div class="feature"><strong>Inițializare inteligentă a etichetelor</strong>Planuri inițiale pentru 5000+ aplicații Mac populare reduc munca de la zero.</div>
- </div>
- <div class="features__cta">
- <p>În curând pe Mac App Store · macOS 14.0+ · 29 de limbi UI</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-ro.html">Suport</a>
- <a class="btn btn-secondary" href="privacy.html">Confidențialitate</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ro.html">Suport</a>
- · <a href="privacy.html">Confidențialitate</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-ru.html b/docs/index-ru.html
deleted file mode 100644
index c1ef10b..0000000
--- a/docs/index-ru.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="ru" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Лаунчер приложений на основе тегов</title>
- <meta name="description" content="Launchpad больше не нужен. TagLauncher собирает приложения в одну сетку с тегами и быстрыми клавишами.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-ru">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ru.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Язык">
- <a href="index-ru.html" aria-current="page">Главная</a>
- <a href="support-ru.html">Поддержка</a>
- <a href="privacy.html">Конфиденциальность</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF-справка</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Язык</label>
- <select id="language-index" class="language-select" aria-label="Язык" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html" selected>Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Лаунчер приложений Mac на основе тегов</span>
- </h1>
- <p class="hero__lead">Launchpad больше не нужен. TagLauncher собирает приложения в одну сетку с тегами и быстрыми клавишами.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Четыре вида на одном экране">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Цветной контейнер" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Бесцветный контейнер" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Цветная сетка" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Бесцветная сетка" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Четыре вида на одном экране</h2>
- <p class="views__lead">Не нужно открывать папки по одной и листать страницы. Поиск приложения должен быть прямым.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 режима просмотра</p>
- <ul class="views__modes">
- <li>Цветной контейнер</li>
- <li>Бесцветный контейнер</li>
- <li>Цветная сетка</li>
- <li>Бесцветная сетка</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Быстрый запуск</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Одно приложение, много тегов">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Одно приложение, много тегов</h2>
- <ul class="tags__points">
- <li>Не загоняйте инструменты в одну папку. Приложение может относиться к чтению, дизайну, AI или вашим тегам.</li>
- <li><strong>Цветной контейнер</strong> · Бесцветная сетка</li>
- <li>Перетащите для сортировки · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Одно приложение, много тегов" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Ищите и заметки приложений">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Ищите и заметки приложений" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Ищите и заметки приложений</h2>
- <p class="memo__lead">Записывайте назначение приложения, смотрите при наведении и находите через Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Поиск приложений, тегов и заметок">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Поиск приложений, тегов и заметок</h2>
- <p class="search__lead">Даже если вы помните только тег или задачу, Quick Search найдет нужное приложение.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Быстрый запуск</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Поиск приложений, тегов и заметок" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Резервная копия и восстановление">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Резервная копия и восстановление" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Резервная копия и восстановление</h2>
- <p class="backup__lead">Экспортируйте категории, порядок и раскладку в JSON и восстановите на другом Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% офлайн, 100% без рекламы">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% офлайн, 100% без рекламы</h2>
- <p class="privacy__lead">Данные остаются на Mac. Без аккаунта, облака, аналитики, рекламы и отслеживания.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Умная инициализация тегов</h3>
- <p class="privacy__feature-text">Стартовые теги для 5000+ популярных Mac-приложений упрощают настройку с нуля.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Умная инициализация тегов">
- <div class="layout">
- <h2 class="features__headline">Умная инициализация тегов</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Не нужно открывать папки по одной и листать страницы. Поиск приложения должен быть прямым.</div>
- <div class="feature"><strong>Quick Search</strong>Даже если вы помните только тег или задачу, Quick Search найдет нужное приложение.</div>
- <div class="feature"><strong>Теги</strong>Не загоняйте инструменты в одну папку. Приложение может относиться к чтению, дизайну, AI или вашим тегам.</div>
- <div class="feature"><strong>Резервное копирование</strong>Экспортируйте категории, порядок и раскладку в JSON и восстановите на другом Mac.</div>
- <div class="feature"><strong>Конфиденциальность</strong>Данные остаются на Mac. Без аккаунта, облака, аналитики, рекламы и отслеживания.</div>
- <div class="feature"><strong>Умная инициализация тегов</strong>Стартовые теги для 5000+ популярных Mac-приложений упрощают настройку с нуля.</div>
- </div>
- <div class="features__cta">
- <p>Скоро в Mac App Store · macOS 14.0+ · 29 языков интерфейса</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-ru.html">Поддержка</a>
- <a class="btn btn-secondary" href="privacy.html">Конфиденциальность</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ru.html">Поддержка</a>
- · <a href="privacy.html">Конфиденциальность</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-sv.html b/docs/index-sv.html
deleted file mode 100644
index 36fa74f..0000000
--- a/docs/index-sv.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="sv" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Taggbaserad appstartare</title>
- <meta name="description" content="Du behöver inte sakna Launchpad. TagLauncher samlar apparna i ett taggbaserat rutnät med kortkommandon.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-sv">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-sv.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Språk">
- <a href="index-sv.html" aria-current="page">Hem</a>
- <a href="support-sv.html">Support</a>
- <a href="privacy.html">Integritet</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjälp-PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Språk</label>
- <select id="language-index" class="language-select" aria-label="Språk" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html" selected>Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>En taggbaserad appstartare för Mac</span>
- </h1>
- <p class="hero__lead">Du behöver inte sakna Launchpad. TagLauncher samlar apparna i ett taggbaserat rutnät med kortkommandon.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Fyra vyer på en skärm">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Färgad behållare" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Färglös behållare" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Färgat rutnät" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Färglöst rutnät" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Fyra vyer på en skärm</h2>
- <p class="views__lead">Inga mappar att öppna en i taget och inga sidor att bläddra igenom. Att hitta en app ska vara direkt.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 visningslägen</p>
- <ul class="views__modes">
- <li>Färgad behållare</li>
- <li>Färglös behållare</li>
- <li>Färgat rutnät</li>
- <li>Färglöst rutnät</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Snabbstart</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="En app, flera taggar">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">En app, flera taggar</h2>
- <ul class="tags__points">
- <li>Lås inte verktyg i en enda mapp. En app kan höra till läsning, design, AI eller egna taggar.</li>
- <li><strong>Färgad behållare</strong> · Färglöst rutnät</li>
- <li>Dra för att ändra ordning · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="En app, flera taggar" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Sök även appanteckningar">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Sök även appanteckningar" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Sök även appanteckningar</h2>
- <p class="memo__lead">Skriv vad appen används till, visa det vid hovring och hitta det via Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Sök appar, taggar och anteckningar">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Sök appar, taggar och anteckningar</h2>
- <p class="search__lead">Även om du bara minns en tagg eller ett syfte hjälper Quick Search dig till rätt app.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Snabbstart</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Sök appar, taggar och anteckningar" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Backup och återställning">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Backup och återställning" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Backup och återställning</h2>
- <p class="backup__lead">Exportera kategorier, ordning och layout som JSON och återställ på en annan Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% offline, 100% utan annonser">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% offline, 100% utan annonser</h2>
- <p class="privacy__lead">Data stannar på din Mac. Inget konto, moln, analys, annonser eller spårning.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Smart taggstart</h3>
- <p class="privacy__feature-text">Starttaggar för 5000+ populära Mac-appar minskar arbetet från noll.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Smart taggstart">
- <div class="layout">
- <h2 class="features__headline">Smart taggstart</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Inga mappar att öppna en i taget och inga sidor att bläddra igenom. Att hitta en app ska vara direkt.</div>
- <div class="feature"><strong>Quick Search</strong>Även om du bara minns en tagg eller ett syfte hjälper Quick Search dig till rätt app.</div>
- <div class="feature"><strong>Taggar</strong>Lås inte verktyg i en enda mapp. En app kan höra till läsning, design, AI eller egna taggar.</div>
- <div class="feature"><strong>Säkerhetskopiera och återställ</strong>Exportera kategorier, ordning och layout som JSON och återställ på en annan Mac.</div>
- <div class="feature"><strong>Integritet</strong>Data stannar på din Mac. Inget konto, moln, analys, annonser eller spårning.</div>
- <div class="feature"><strong>Smart taggstart</strong>Starttaggar för 5000+ populära Mac-appar minskar arbetet från noll.</div>
- </div>
- <div class="features__cta">
- <p>Kommer snart i Mac App Store · macOS 14.0+ · 29 UI-språk</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-sv.html">Support</a>
- <a class="btn btn-secondary" href="privacy.html">Integritet</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-sv.html">Support</a>
- · <a href="privacy.html">Integritet</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-th.html b/docs/index-th.html
deleted file mode 100644
index ac6bc37..0000000
--- a/docs/index-th.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="th" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — ตัวเปิดแอปตามแท็ก</title>
- <meta name="description" content="ไม่ต้องคิดถึง Launchpad อีกต่อไป TagLauncher จัดแอปไว้ในกริดเดียวที่ใช้แท็กและคีย์ลัดได้สะดวก">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-th">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-th.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="ภาษา">
- <a href="index-th.html" aria-current="page">หน้าแรก</a>
- <a href="support-th.html">สนับสนุน</a>
- <a href="privacy.html">ความเป็นส่วนตัว</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF วิธีใช้</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">ภาษา</label>
- <select id="language-index" class="language-select" aria-label="ภาษา" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html" selected>ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>ตัวเปิดแอป Mac แบบใช้แท็ก</span>
- </h1>
- <p class="hero__lead">ไม่ต้องคิดถึง Launchpad อีกต่อไป TagLauncher จัดแอปไว้ในกริดเดียวที่ใช้แท็กและคีย์ลัดได้สะดวก</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="สี่มุมมองในหน้าจอเดียว">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="คอนเทนเนอร์มีสี" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="คอนเทนเนอร์ไม่มีสี" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="กริดมีสี" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="กริดไม่มีสี" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">สี่มุมมองในหน้าจอเดียว</h2>
- <p class="views__lead">ไม่ต้องเปิดโฟลเดอร์ทีละอันหรือพลิกหน้าไปมา การหาแอปควรง่ายและตรงไปตรงมา</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 โหมดมุมมอง</p>
- <ul class="views__modes">
- <li>คอนเทนเนอร์มีสี</li>
- <li>คอนเทนเนอร์ไม่มีสี</li>
- <li>กริดมีสี</li>
- <li>กริดไม่มีสี</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">เปิดด่วน</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="หนึ่งแอป หลายแท็ก">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">หนึ่งแอป หลายแท็ก</h2>
- <ul class="tags__points">
- <li>ไม่ต้องบังคับเครื่องมือให้อยู่ในโฟลเดอร์เดียว แอปหนึ่งอาจอยู่ในอ่าน ออกแบบ AI หรือแท็กของคุณเอง</li>
- <li><strong>คอนเทนเนอร์มีสี</strong> · กริดไม่มีสี</li>
- <li>ลากเพื่อจัดเรียง · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="หนึ่งแอป หลายแท็ก" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="ค้นหาโน้ตของแอปได้ด้วย">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="ค้นหาโน้ตของแอปได้ด้วย" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">ค้นหาโน้ตของแอปได้ด้วย</h2>
- <p class="memo__lead">เขียนว่าแอปใช้ทำอะไร ดูเมื่อวางเมาส์ และค้นหาได้จาก Quick Search</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="ค้นหาแอป แท็ก และโน้ต">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">ค้นหาแอป แท็ก และโน้ต</h2>
- <p class="search__lead">แม้จำได้แค่แท็กหรือวัตถุประสงค์ Quick Search ก็ช่วยพาคุณไปยังแอปที่ถูกต้อง</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">เปิดด่วน</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="ค้นหาแอป แท็ก และโน้ต" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="สำรองและกู้คืน">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="สำรองและกู้คืน" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">สำรองและกู้คืน</h2>
- <p class="backup__lead">ส่งออกหมวดหมู่ ลำดับ และเลย์เอาต์เป็น JSON แล้วกู้คืนบน Mac เครื่องอื่น</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="ออฟไลน์ 100% ไม่มีโฆษณา">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">ออฟไลน์ 100% ไม่มีโฆษณา</h2>
- <p class="privacy__lead">ข้อมูลอยู่บน Mac ของคุณ ไม่มีบัญชี คลาวด์ วิเคราะห์ โฆษณา หรือการติดตาม</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>เริ่มต้นแท็กอัจฉริยะ</h3>
- <p class="privacy__feature-text">แผนแท็กเริ่มต้นสำหรับแอป Mac ยอดนิยมกว่า 5000 แอปช่วยลดการเริ่มจากศูนย์</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="เริ่มต้นแท็กอัจฉริยะ">
- <div class="layout">
- <h2 class="features__headline">เริ่มต้นแท็กอัจฉริยะ</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>ไม่ต้องเปิดโฟลเดอร์ทีละอันหรือพลิกหน้าไปมา การหาแอปควรง่ายและตรงไปตรงมา</div>
- <div class="feature"><strong>Quick Search</strong>แม้จำได้แค่แท็กหรือวัตถุประสงค์ Quick Search ก็ช่วยพาคุณไปยังแอปที่ถูกต้อง</div>
- <div class="feature"><strong>แท็ก</strong>ไม่ต้องบังคับเครื่องมือให้อยู่ในโฟลเดอร์เดียว แอปหนึ่งอาจอยู่ในอ่าน ออกแบบ AI หรือแท็กของคุณเอง</div>
- <div class="feature"><strong>สำรองและกู้คืน</strong>ส่งออกหมวดหมู่ ลำดับ และเลย์เอาต์เป็น JSON แล้วกู้คืนบน Mac เครื่องอื่น</div>
- <div class="feature"><strong>ความเป็นส่วนตัว</strong>ข้อมูลอยู่บน Mac ของคุณ ไม่มีบัญชี คลาวด์ วิเคราะห์ โฆษณา หรือการติดตาม</div>
- <div class="feature"><strong>เริ่มต้นแท็กอัจฉริยะ</strong>แผนแท็กเริ่มต้นสำหรับแอป Mac ยอดนิยมกว่า 5000 แอปช่วยลดการเริ่มจากศูนย์</div>
- </div>
- <div class="features__cta">
- <p>เร็ว ๆ นี้บน Mac App Store · macOS 14.0+ · 29 ภาษา UI</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-th.html">สนับสนุน</a>
- <a class="btn btn-secondary" href="privacy.html">ความเป็นส่วนตัว</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-th.html">สนับสนุน</a>
- · <a href="privacy.html">ความเป็นส่วนตัว</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-tr.html b/docs/index-tr.html
deleted file mode 100644
index 11e6f2a..0000000
--- a/docs/index-tr.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="tr" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Etiket tabanlı uygulama başlatıcı</title>
- <meta name="description" content="Launchpad’i özlemek zorunda değilsiniz. TagLauncher uygulamaları etiketli, klavye dostu tek bir ızgarada toplar.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-tr">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-tr.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Dil">
- <a href="index-tr.html" aria-current="page">Ana sayfa</a>
- <a href="support-tr.html">Destek</a>
- <a href="privacy.html">Gizlilik</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Yardım PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Dil</label>
- <select id="language-index" class="language-select" aria-label="Dil" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html" selected>Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Etiket tabanlı Mac uygulama başlatıcı</span>
- </h1>
- <p class="hero__lead">Launchpad’i özlemek zorunda değilsiniz. TagLauncher uygulamaları etiketli, klavye dostu tek bir ızgarada toplar.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Dört görünüm, tek ekran">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Renkli Kapsayıcı" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Renksiz Kapsayıcı" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Renkli Izgara" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Renksiz Izgara" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Dört görünüm, tek ekran</h2>
- <p class="views__lead">Klasörleri tek tek açmak veya sayfa çevirmek yok. Bir uygulamayı bulmak doğrudan olmalı.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 görünüm modu</p>
- <ul class="views__modes">
- <li>Renkli Kapsayıcı</li>
- <li>Renksiz Kapsayıcı</li>
- <li>Renkli Izgara</li>
- <li>Renksiz Izgara</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Hızlı başlat</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Bir uygulama, birçok etiket">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Bir uygulama, birçok etiket</h2>
- <ul class="tags__points">
- <li>Araçları tek klasöre sıkıştırmayın. Bir uygulama okuma, tasarım, AI veya kendi etiketlerinize ait olabilir.</li>
- <li><strong>Renkli Kapsayıcı</strong> · Renksiz Izgara</li>
- <li>Sıralamak için sürükle · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Bir uygulama, birçok etiket" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Uygulama notlarında da ara">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Uygulama notlarında da ara" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Uygulama notlarında da ara</h2>
- <p class="memo__lead">Kullanım notu yazın, üzerine gelince görün ve Quick Search ile bulun.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Uygulama, etiket ve not ara">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Uygulama, etiket ve not ara</h2>
- <p class="search__lead">Yalnızca etiketi veya amacı hatırlasanız bile Quick Search doğru uygulamayı bulur.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Hızlı başlat</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Uygulama, etiket ve not ara" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Yedekleme ve geri yükleme">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Yedekleme ve geri yükleme" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Yedekleme ve geri yükleme</h2>
- <p class="backup__lead">Kategorileri, sırayı ve düzeni JSON olarak dışa aktarın, başka Mac’te geri yükleyin.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% çevrimdışı, 100% reklamsız">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% çevrimdışı, 100% reklamsız</h2>
- <p class="privacy__lead">Veriler Mac’inizde kalır. Hesap, bulut, analiz, reklam veya izleme yok.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Akıllı etiket başlatma</h3>
- <p class="privacy__feature-text">5000+ popüler Mac uygulaması için başlangıç etiketleri sıfırdan kurulumu azaltır.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Akıllı etiket başlatma">
- <div class="layout">
- <h2 class="features__headline">Akıllı etiket başlatma</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Klasörleri tek tek açmak veya sayfa çevirmek yok. Bir uygulamayı bulmak doğrudan olmalı.</div>
- <div class="feature"><strong>Quick Search</strong>Yalnızca etiketi veya amacı hatırlasanız bile Quick Search doğru uygulamayı bulur.</div>
- <div class="feature"><strong>Etiketler</strong>Araçları tek klasöre sıkıştırmayın. Bir uygulama okuma, tasarım, AI veya kendi etiketlerinize ait olabilir.</div>
- <div class="feature"><strong>Yedekle ve geri yükle</strong>Kategorileri, sırayı ve düzeni JSON olarak dışa aktarın, başka Mac’te geri yükleyin.</div>
- <div class="feature"><strong>Gizlilik</strong>Veriler Mac’inizde kalır. Hesap, bulut, analiz, reklam veya izleme yok.</div>
- <div class="feature"><strong>Akıllı etiket başlatma</strong>5000+ popüler Mac uygulaması için başlangıç etiketleri sıfırdan kurulumu azaltır.</div>
- </div>
- <div class="features__cta">
- <p>Yakında Mac App Store’da · macOS 14.0+ · 29 arayüz dili</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-tr.html">Destek</a>
- <a class="btn btn-secondary" href="privacy.html">Gizlilik</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-tr.html">Destek</a>
- · <a href="privacy.html">Gizlilik</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-uk.html b/docs/index-uk.html
deleted file mode 100644
index c661b49..0000000
--- a/docs/index-uk.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="uk" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Запускач застосунків на основі тегів</title>
- <meta name="description" content="Launchpad більше не потрібен. TagLauncher збирає програми в одну сітку з тегами та швидкими клавішами.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-uk">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-uk.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Мова">
- <a href="index-uk.html" aria-current="page">Головна</a>
- <a href="support-uk.html">Підтримка</a>
- <a href="privacy.html">Приватність</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF-довідка</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Мова</label>
- <select id="language-index" class="language-select" aria-label="Мова" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html" selected>Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Запускач програм Mac на основі тегів</span>
- </h1>
- <p class="hero__lead">Launchpad більше не потрібен. TagLauncher збирає програми в одну сітку з тегами та швидкими клавішами.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Чотири вигляди на одному екрані">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Кольоровий контейнер" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Безбарвний контейнер" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Кольорова сітка" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Безбарвна сітка" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Чотири вигляди на одному екрані</h2>
- <p class="views__lead">Без відкривання папок по черзі та гортання сторінок. Пошук програми має бути прямим.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 режими вигляду</p>
- <ul class="views__modes">
- <li>Кольоровий контейнер</li>
- <li>Безбарвний контейнер</li>
- <li>Кольорова сітка</li>
- <li>Безбарвна сітка</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Швидкий запуск</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Одна програма, багато тегів">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Одна програма, багато тегів</h2>
- <ul class="tags__points">
- <li>Не замикайте інструменти в одній папці. Програма може належати до читання, дизайну, AI або ваших тегів.</li>
- <li><strong>Кольоровий контейнер</strong> · Безбарвна сітка</li>
- <li>Перетягніть для сортування · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Одна програма, багато тегів" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Шукайте і нотатки програм">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Шукайте і нотатки програм" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Шукайте і нотатки програм</h2>
- <p class="memo__lead">Запишіть призначення програми, переглядайте при наведенні та знаходьте через Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Пошук програм, тегів і нотаток">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Пошук програм, тегів і нотаток</h2>
- <p class="search__lead">Навіть якщо пам’ятаєте лише тег чи призначення, Quick Search знайде правильну програму.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Швидкий запуск</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Пошук програм, тегів і нотаток" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Резервна копія та відновлення">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Резервна копія та відновлення" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Резервна копія та відновлення</h2>
- <p class="backup__lead">Експортуйте категорії, порядок і макет у JSON та відновлюйте на іншому Mac.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% офлайн, 100% без реклами">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% офлайн, 100% без реклами</h2>
- <p class="privacy__lead">Дані залишаються на Mac. Без акаунта, хмари, аналітики, реклами чи стеження.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Розумна ініціалізація тегів</h3>
- <p class="privacy__feature-text">Початкові теги для 5000+ популярних Mac-програм спрощують налаштування з нуля.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Розумна ініціалізація тегів">
- <div class="layout">
- <h2 class="features__headline">Розумна ініціалізація тегів</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Без відкривання папок по черзі та гортання сторінок. Пошук програми має бути прямим.</div>
- <div class="feature"><strong>Quick Search</strong>Навіть якщо пам’ятаєте лише тег чи призначення, Quick Search знайде правильну програму.</div>
- <div class="feature"><strong>Теги</strong>Не замикайте інструменти в одній папці. Програма може належати до читання, дизайну, AI або ваших тегів.</div>
- <div class="feature"><strong>Резервне копіювання</strong>Експортуйте категорії, порядок і макет у JSON та відновлюйте на іншому Mac.</div>
- <div class="feature"><strong>Приватність</strong>Дані залишаються на Mac. Без акаунта, хмари, аналітики, реклами чи стеження.</div>
- <div class="feature"><strong>Розумна ініціалізація тегів</strong>Початкові теги для 5000+ популярних Mac-програм спрощують налаштування з нуля.</div>
- </div>
- <div class="features__cta">
- <p>Незабаром у Mac App Store · macOS 14.0+ · 29 мов інтерфейсу</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-uk.html">Підтримка</a>
- <a class="btn btn-secondary" href="privacy.html">Приватність</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-uk.html">Підтримка</a>
- · <a href="privacy.html">Приватність</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-vi.html b/docs/index-vi.html
deleted file mode 100644
index 8d2720b..0000000
--- a/docs/index-vi.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="vi" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — Trình khởi chạy ứng dụng theo thẻ</title>
- <meta name="description" content="Không cần tiếc Launchpad. TagLauncher đưa ứng dụng vào một lưới có thẻ, dễ dùng với bàn phím.">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-vi">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-vi.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Ngôn ngữ">
- <a href="index-vi.html" aria-current="page">Trang chủ</a>
- <a href="support-vi.html">Hỗ trợ</a>
- <a href="privacy.html">Quyền riêng tư</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF trợ giúp</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">Ngôn ngữ</label>
- <select id="language-index" class="language-select" aria-label="Ngôn ngữ" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html" selected>Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>Trình khởi chạy ứng dụng Mac bằng thẻ</span>
- </h1>
- <p class="hero__lead">Không cần tiếc Launchpad. TagLauncher đưa ứng dụng vào một lưới có thẻ, dễ dùng với bàn phím.</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="Bốn chế độ xem trên một màn hình">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="Vùng chứa có màu" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="Vùng chứa không màu" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="Lưới có màu" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="Lưới không màu" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">Bốn chế độ xem trên một màn hình</h2>
- <p class="views__lead">Không cần mở từng thư mục hay lật từng trang. Tìm ứng dụng nên trực tiếp hơn.</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 chế độ xem</p>
- <ul class="views__modes">
- <li>Vùng chứa có màu</li>
- <li>Vùng chứa không màu</li>
- <li>Lưới có màu</li>
- <li>Lưới không màu</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">Mở nhanh</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="Một ứng dụng, nhiều thẻ">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">Một ứng dụng, nhiều thẻ</h2>
- <ul class="tags__points">
- <li>Đừng ép công cụ vào một thư mục. Một ứng dụng có thể thuộc đọc, thiết kế, AI hoặc thẻ tùy chỉnh.</li>
- <li><strong>Vùng chứa có màu</strong> · Lưới không màu</li>
- <li>Kéo để sắp xếp · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="Một ứng dụng, nhiều thẻ" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="Tìm cả ghi chú ứng dụng">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="Tìm cả ghi chú ứng dụng" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">Tìm cả ghi chú ứng dụng</h2>
- <p class="memo__lead">Ghi mục đích của ứng dụng, xem khi rê chuột và tìm bằng Quick Search.</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="Tìm ứng dụng, thẻ và ghi chú">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">Tìm ứng dụng, thẻ và ghi chú</h2>
- <p class="search__lead">Dù chỉ nhớ thẻ hoặc mục đích, Quick Search vẫn giúp bạn đến đúng ứng dụng.</p>
- <p class="search__tagline">Search apps, tags, and notes</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">Mở nhanh</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="Tìm ứng dụng, thẻ và ghi chú" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="Sao lưu & khôi phục">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="Sao lưu & khôi phục" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">Sao lưu & khôi phục</h2>
- <p class="backup__lead">Xuất danh mục, thứ tự và bố cục thành JSON rồi khôi phục trên Mac khác.</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% ngoại tuyến, 100% không quảng cáo">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% ngoại tuyến, 100% không quảng cáo</h2>
- <p class="privacy__lead">Dữ liệu ở lại trên Mac. Không tài khoản, đám mây, phân tích, quảng cáo hay theo dõi.</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>Khởi tạo thẻ thông minh</h3>
- <p class="privacy__feature-text">Kế hoạch thẻ ban đầu cho hơn 5000 ứng dụng Mac phổ biến giúp giảm công sức từ đầu.</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="Khởi tạo thẻ thông minh">
- <div class="layout">
- <h2 class="features__headline">Khởi tạo thẻ thông minh</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>Không cần mở từng thư mục hay lật từng trang. Tìm ứng dụng nên trực tiếp hơn.</div>
- <div class="feature"><strong>Quick Search</strong>Dù chỉ nhớ thẻ hoặc mục đích, Quick Search vẫn giúp bạn đến đúng ứng dụng.</div>
- <div class="feature"><strong>Thẻ</strong>Đừng ép công cụ vào một thư mục. Một ứng dụng có thể thuộc đọc, thiết kế, AI hoặc thẻ tùy chỉnh.</div>
- <div class="feature"><strong>Sao lưu & khôi phục</strong>Xuất danh mục, thứ tự và bố cục thành JSON rồi khôi phục trên Mac khác.</div>
- <div class="feature"><strong>Quyền riêng tư</strong>Dữ liệu ở lại trên Mac. Không tài khoản, đám mây, phân tích, quảng cáo hay theo dõi.</div>
- <div class="feature"><strong>Khởi tạo thẻ thông minh</strong>Kế hoạch thẻ ban đầu cho hơn 5000 ứng dụng Mac phổ biến giúp giảm công sức từ đầu.</div>
- </div>
- <div class="features__cta">
- <p>Sắp có trên Mac App Store · macOS 14.0+ · 29 ngôn ngữ UI</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-vi.html">Hỗ trợ</a>
- <a class="btn btn-secondary" href="privacy.html">Quyền riêng tư</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-vi.html">Hỗ trợ</a>
- · <a href="privacy.html">Quyền riêng tư</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index-zh-Hant.html b/docs/index-zh-Hant.html
deleted file mode 100644
index 7d0a828..0000000
--- a/docs/index-zh-Hant.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-Hant" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — 基於標籤的應用程式啟動器</title>
- <meta name="description" content="不用再懷念 Launchpad。TagLauncher 用標籤、快捷鍵與搜尋,把所有應用整理在一個畫面。">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-zh-Hant">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-zh-Hant.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="語言">
- <a href="index-zh-Hant.html" aria-current="page">首頁</a>
- <a href="support-zh-Hant.html">支援</a>
- <a href="privacy.html">隱私權政策</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-zh.pdf" rel="noopener" type="application/pdf">說明 PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">語言</label>
- <select id="language-index" class="language-select" aria-label="語言" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html">简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html" selected>繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>以標籤整理的 Mac 應用啟動器</span>
- </h1>
- <p class="hero__lead">不用再懷念 Launchpad。TagLauncher 用標籤、快捷鍵與搜尋,把所有應用整理在一個畫面。</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="4 種檢視,全部一屏到底">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="彩色容器" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="無色容器" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="彩色網格" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="無色網格" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">4 種檢視,全部一屏到底</h2>
- <p class="views__lead">不需要一個個打開資料夾,也不再需要翻頁。只是找一個應用,應該更直接。</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 種檢視模式</p>
- <ul class="views__modes">
- <li>彩色容器</li>
- <li>無色容器</li>
- <li>彩色網格</li>
- <li>無色網格</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">快捷鍵</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="一個應用,多個標籤">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">一個應用,多個標籤</h2>
- <ul class="tags__points">
- <li>別再把工具塞進唯一資料夾。一個應用可以同時屬於閱讀、設計、AI 或任何自訂標籤。</li>
- <li><strong>彩色容器</strong> · 無色網格</li>
- <li>拖曳排序 · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="一個應用,多個標籤" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="應用備註也能搜尋">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="應用備註也能搜尋" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">應用備註也能搜尋</h2>
- <p class="memo__lead">為應用寫用途說明,滑過就能看到,Quick Search 也能搜尋備註。</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="搜尋應用、標籤與備註">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">搜尋應用、標籤與備註</h2>
- <p class="search__lead">只記得標籤或用途也沒關係,Quick Search 會幫你找到正確應用。</p>
- <p class="search__tagline">搜尋 App、標籤和備註</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">快捷鍵</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="搜尋應用、標籤與備註" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="備份與還原">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="備份與還原" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">備份與還原</h2>
- <p class="backup__lead">分類、排序與版面可以匯出為 JSON,換機或重裝後可以還原。</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% 離線,100% 無廣告">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% 離線,100% 無廣告</h2>
- <p class="privacy__lead">資料留在你的 Mac。本版本沒有帳號、雲端同步、分析 SDK、廣告或追蹤。</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>智慧標籤初始化</h3>
- <p class="privacy__feature-text">針對 5000+ 常見 Mac 應用初始化標籤方案,減少從零分類的成本。</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="智慧標籤初始化">
- <div class="layout">
- <h2 class="features__headline">智慧標籤初始化</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>不需要一個個打開資料夾,也不再需要翻頁。只是找一個應用,應該更直接。</div>
- <div class="feature"><strong>Quick Search</strong>只記得標籤或用途也沒關係,Quick Search 會幫你找到正確應用。</div>
- <div class="feature"><strong>標籤</strong>別再把工具塞進唯一資料夾。一個應用可以同時屬於閱讀、設計、AI 或任何自訂標籤。</div>
- <div class="feature"><strong>備份與還原</strong>分類、排序與版面可以匯出為 JSON,換機或重裝後可以還原。</div>
- <div class="feature"><strong>隱私權政策</strong>資料留在你的 Mac。本版本沒有帳號、雲端同步、分析 SDK、廣告或追蹤。</div>
- <div class="feature"><strong>智慧標籤初始化</strong>針對 5000+ 常見 Mac 應用初始化標籤方案,減少從零分類的成本。</div>
- </div>
- <div class="features__cta">
- <p>Mac App Store 即將上架 · macOS 14.0+ · 29 種介面語言</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support-zh-Hant.html">支援</a>
- <a class="btn btn-secondary" href="privacy.html">隱私權政策</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-zh-Hant.html">支援</a>
- · <a href="privacy.html">隱私權政策</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index c080d12..0000000
--- a/docs/index.html
+++ /dev/null
@@ -1,213 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-Hans" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — 基于标签的应用启动器</title>
- <meta name="description" content="不用怀念 Launchpad。TagLauncher 用标签、快捷键和搜索把所有应用整理到一屏里。">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="index.html">
- <link rel="alternate" hreflang="en-US" href="index-en.html">
- <link rel="alternate" hreflang="ar" href="index-ar.html">
- <link rel="alternate" hreflang="cs" href="index-cs.html">
- <link rel="alternate" hreflang="da" href="index-da.html">
- <link rel="alternate" hreflang="de" href="index-de.html">
- <link rel="alternate" hreflang="es-ES" href="index-es.html">
- <link rel="alternate" hreflang="fr-FR" href="index-fr.html">
- <link rel="alternate" hreflang="id" href="index-id.html">
- <link rel="alternate" hreflang="it" href="index-it.html">
- <link rel="alternate" hreflang="ja" href="index-ja.html">
- <link rel="alternate" hreflang="ko" href="index-ko.html">
- <link rel="alternate" hreflang="ms" href="index-ms.html">
- <link rel="alternate" hreflang="no" href="index-no.html">
- <link rel="alternate" hreflang="nl" href="index-nl.html">
- <link rel="alternate" hreflang="pl" href="index-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="index-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="index-ro.html">
- <link rel="alternate" hreflang="ru" href="index-ru.html">
- <link rel="alternate" hreflang="sv" href="index-sv.html">
- <link rel="alternate" hreflang="th" href="index-th.html">
- <link rel="alternate" hreflang="tr" href="index-tr.html">
- <link rel="alternate" hreflang="uk" href="index-uk.html">
- <link rel="alternate" hreflang="vi" href="index-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="index-zh-Hant.html">
-</head>
-<body class="page-home page-locale-zh-Hans">
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="语言">
- <a href="index.html" aria-current="page">首页</a>
- <a href="support.html">支持</a>
- <a href="privacy-zh.html">隐私政策</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-zh.pdf" rel="noopener" type="application/pdf">帮助 PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-index">语言</label>
- <select id="language-index" class="language-select" aria-label="语言" onchange="if (this.value) window.location.href=this.value">
- <option value="index.html" selected>简体中文</option><option value="index-en.html">English</option><option value="index-ar.html">العربية</option><option value="index-cs.html">Čeština</option><option value="index-da.html">Dansk</option><option value="index-de.html">Deutsch</option><option value="index-es.html">Español</option><option value="index-fr.html">Français</option><option value="index-id.html">Indonesia</option><option value="index-it.html">Italiano</option><option value="index-ja.html">日本語</option><option value="index-ko.html">한국어</option><option value="index-ms.html">Melayu</option><option value="index-no.html">Norsk</option><option value="index-nl.html">Nederlands</option><option value="index-pl.html">Polski</option><option value="index-pt-BR.html">Português (BR)</option><option value="index-ro.html">Română</option><option value="index-ru.html">Русский</option><option value="index-sv.html">Svenska</option><option value="index-th.html">ไทย</option><option value="index-tr.html">Türkçe</option><option value="index-uk.html">Українська</option><option value="index-vi.html">Tiếng Việt</option><option value="index-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- <span>在全球,这可能是 Mac 最好用的应用启动台</span>
- </h1>
- <p class="hero__lead">不用怀念 Launchpad。TagLauncher 用标签、快捷键和搜索把所有应用整理到一屏里。</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="4 种视图,全部一屏到底">
- <div class="layout views__split">
- <div class="views__gallery">
- <figure class="views__shot"><img src="assets/views/view-01.jpg" alt="彩色容器" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-02.jpg" alt="无色容器" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-03.jpg" alt="彩色网格" width="720" height="468" loading="lazy" decoding="async"></figure>
- <figure class="views__shot"><img src="assets/views/view-04.jpg" alt="无色网格" width="720" height="468" loading="lazy" decoding="async"></figure>
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">4 种视图,全部一屏到底</h2>
- <p class="views__lead">不需要一个个打开文件夹,也不再需要翻页。只是找一个应用而已,应该更直接。</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">4 种视图模式</p>
- <ul class="views__modes">
- <li>彩色容器</li>
- <li>无色容器</li>
- <li>彩色网格</li>
- <li>无色网格</li>
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">快捷键</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="一个应用,多个标签">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">一个应用,多个标签</h2>
- <ul class="tags__points">
- <li>别再把工具塞进唯一文件夹。一个应用可以同时属于阅读、设计、AI 或任何你自定义的标签。</li>
- <li><strong>彩色容器</strong> · 无色网格</li>
- <li>拖拽排序 · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="一个应用,多个标签" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="应用备注也能搜索">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="应用备注也能搜索" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">应用备注也能搜索</h2>
- <p class="memo__lead">给应用写用途说明,悬停就能看见,Quick Search 也能搜备注。</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="搜索应用、标签和备注">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">搜索应用、标签和备注</h2>
- <p class="search__lead">只记得标签或用途也没关系,Quick Search 会帮你找到正确应用。</p>
- <p class="search__tagline">搜索 App、标签和备注</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">快捷键</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="搜索应用、标签和备注" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="备份与恢复">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="备份与恢复" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">备份与恢复</h2>
- <p class="backup__lead">分类、排序和布局可以导出为 JSON,换机或重装后可以恢复。</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="100% 离线,100% 无广告">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">100% 离线,100% 无广告</h2>
- <p class="privacy__lead">数据留在你的 Mac。本版本没有账号、云同步、分析 SDK、广告或追踪。</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>智能标签初始化</h3>
- <p class="privacy__feature-text">针对 5000+ 常见 Mac 应用初始化标签方案,减少从零分类的成本。</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="智能标签初始化">
- <div class="layout">
- <h2 class="features__headline">智能标签初始化</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>不需要一个个打开文件夹,也不再需要翻页。只是找一个应用而已,应该更直接。</div>
- <div class="feature"><strong>Quick Search</strong>只记得标签或用途也没关系,Quick Search 会帮你找到正确应用。</div>
- <div class="feature"><strong>标签</strong>别再把工具塞进唯一文件夹。一个应用可以同时属于阅读、设计、AI 或任何你自定义的标签。</div>
- <div class="feature"><strong>备份与恢复</strong>分类、排序和布局可以导出为 JSON,换机或重装后可以恢复。</div>
- <div class="feature"><strong>隐私政策</strong>数据留在你的 Mac。本版本没有账号、云同步、分析 SDK、广告或追踪。</div>
- <div class="feature"><strong>智能标签初始化</strong>针对 5000+ 常见 Mac 应用初始化标签方案,减少从零分类的成本。</div>
- </div>
- <div class="features__cta">
- <p>Mac App Store 即将上架 · macOS 14.0+ · 29 种界面语言</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="support.html">支持</a>
- <a class="btn btn-secondary" href="privacy-zh.html">隐私政策</a>
- </div>
- </div>
- </div>
- </section>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support.html">支持</a>
- · <a href="privacy-zh.html">隐私政策</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/privacy-zh.html b/docs/privacy-zh.html
deleted file mode 100644
index a42016d..0000000
--- a/docs/privacy-zh.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-Hans">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>隐私政策 — TagLauncher</title>
- <meta name="description" content="TagLauncher 隐私政策:本地存储,不收集个人数据。">
- <link rel="stylesheet" href="styles.css">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="导航">
- <a href="index.html">首页</a>
- <a href="support.html">支持</a>
- <a href="privacy-zh.html" aria-current="page">隐私政策</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-zh.pdf" rel="noopener" type="application/pdf">帮助 PDF</a>
- </nav>
- <div class="lang-switch" role="navigation" aria-label="语言">
- <a href="privacy-zh.html" class="is-active" hreflang="zh-Hans">中文</a>
- <a href="privacy.html" hreflang="en">EN</a>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>隐私政策</h1>
- <p><strong>生效日期:</strong>2026 年 6 月 5 日</p>
- <p><strong>应用名称:</strong>TagLauncher(macOS)</p>
- <p><strong>开发者:</strong>海南万幸科技有限公司(Hainan Wanxing Technology Co., Ltd.)</p>
-
- <h2>概要</h2>
- <p>
- TagLauncher 是一款在 Mac 上整理与启动应用的工具。
- 当前版本(7.8.x)在<strong>您的设备本地</strong>运行,
- <strong>不会收集个人数据</strong>,也不会将您的启动器分类数据上传至我们的服务器。
- </p>
-
- <h2>保存在您 Mac 上的数据</h2>
- <p>应用可能在本地保存:</p>
- <ul>
- <li>启动器布局、标签、分类与应用备忘;</li>
- <li>界面偏好与快捷键设置;</li>
- <li>为构建应用网格而扫描的已安装应用列表(仅用于本地索引)。</li>
- </ul>
- <p>上述数据保留在您的 Mac 上,由您自行备份或删除。</p>
-
- <h2>我们不收集的内容</h2>
- <ul>
- <li>不要求注册账号;</li>
- <li>不收集姓名、邮箱、电话等身份信息(除非您主动发邮件联系我们);</li>
- <li>当前版本不包含第三方分析、广告或追踪 SDK;</li>
- <li>不将您的分类数据出售给第三方。</li>
- </ul>
-
- <h2>网络访问</h2>
- <p>
- 正常使用不依赖我们的后端服务器。
- 若您从 GitHub Releases 下载帮助 PDF,或与 Apple App Store 交互,则由相应服务处理网络请求。
- </p>
-
- <h2>联系</h2>
- <p>
- 隐私相关问题请发邮件至
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>。
- </p>
- <p>我们可能不时更新本政策;更新后的版本将发布于此页面。</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>© 2026 TagLauncher · 海南万幸科技有限公司</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/privacy.html b/docs/privacy.html
deleted file mode 100644
index 95f1b7d..0000000
--- a/docs/privacy.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Privacy Policy — TagLauncher</title>
- <meta name="description" content="TagLauncher privacy policy: local-only data, no personal data collection.">
- <link rel="stylesheet" href="styles.css">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-en.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Main">
- <a href="index-en.html">Home</a>
- <a href="support-en.html">Support</a>
- <a href="privacy.html" aria-current="page">Privacy</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Help PDF</a>
- </nav>
- <div class="lang-switch" role="navigation" aria-label="Language">
- <a href="privacy-zh.html" hreflang="zh-Hans">中文</a>
- <a href="privacy.html" class="is-active" hreflang="en">EN</a>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Privacy Policy</h1>
- <p><strong>Effective date:</strong> June 5, 2026</p>
- <p><strong>App:</strong> TagLauncher (macOS)</p>
- <p><strong>Developer:</strong> Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
-
- <h2>Summary</h2>
- <p>
- TagLauncher is a utility for organizing and launching applications on your Mac.
- The current version (7.8.x) works <strong>locally on your device</strong> and
- <strong>does not collect personal data</strong> or send your launcher data to our servers.
- </p>
-
- <h2>What data stays on your Mac</h2>
- <ul>
- <li>Your preferences (hotkeys, appearance, language, Dock settings, and similar options).</li>
- <li>Your tag names, colors, order, and associations between apps and tags.</li>
- <li>Per-app notes you choose to write in TagLauncher.</li>
- <li>Exported backup files you create manually (JSON) and store where you decide.</li>
- </ul>
-
- <h2>What TagLauncher does locally</h2>
- <ul>
- <li>Scans standard application folders on your Mac to build a searchable app index.</li>
- <li>Opens applications you select using macOS APIs.</li>
- <li>May download localized help PDFs from our public GitHub Releases when you tap “Help” (network request to GitHub only for that file).</li>
- </ul>
-
- <h2>What we do not do in the current build</h2>
- <ul>
- <li>No user accounts or sign-in.</li>
- <li>No analytics, advertising, or tracking SDKs.</li>
- <li>No crash reporting or third-party telemetry SDKs bundled in the app.</li>
- <li>No sale of personal data.</li>
- </ul>
-
- <h2>Children</h2>
- <p>TagLauncher is not directed at children under 13, and we do not knowingly collect personal information from children.</p>
-
- <h2>Changes</h2>
- <p>We may update this policy when the app or legal requirements change. The effective date at the top will be revised accordingly.</p>
-
- <h2>Contact</h2>
- <p>Questions about privacy: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Support: <a href="support-en.html">support-en.html</a></p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/scripts/build-hero-stack.py b/docs/scripts/build-hero-stack.py
deleted file mode 100644
index c04e2e7..0000000
--- a/docs/scripts/build-hero-stack.py
+++ /dev/null
@@ -1,225 +0,0 @@
-#!/usr/bin/env python3
-"""Compose a 3D stacked-window hero from the real TagLauncher screenshot."""
-
-from __future__ import annotations
-
-import math
-from pathlib import Path
-
-import numpy as np
-from PIL import Image, ImageDraw, ImageEnhance, ImageFilter, ImageOps
-
-ROOT = Path(__file__).resolve().parents[1]
-ASSETS = ROOT / "assets"
-_jpg = ASSETS / "hero-source-grid.jpg"
-_png = ASSETS / "hero-source-grid.png"
-SRC = _jpg if _jpg.exists() else _png
-OUT = ASSETS / "hero-visual-stack.jpg"
-
-CANVAS_W, CANVAS_H = 1180, 640
-BG = (255, 255, 255, 255)
-
-
-def find_coeffs(src: list[tuple[float, float]], dst: list[tuple[float, float]]) -> list[float]:
- matrix = []
- for (x, y), (u, v) in zip(src, dst):
- matrix.append([x, y, 1, 0, 0, 0, -u * x, -u * y])
- matrix.append([0, 0, 0, x, y, 1, -v * x, -v * y])
- a = np.matrix(matrix, dtype=float)
- b = np.array(dst).reshape(8)
- res = np.dot(np.linalg.inv(a.T * a) * a.T, b)
- return np.array(res).reshape(8).tolist()
-
-
-def warp_quad(img: Image.Image, quad: list[tuple[float, float]], out_size: tuple[int, int]) -> Image.Image:
- w, h = img.size
- src = [(0, 0), (w, 0), (w, h), (0, h)]
- coeffs = find_coeffs(src, quad)
- return img.transform(out_size, Image.PERSPECTIVE, coeffs, Image.BICUBIC)
-
-
-def rounded_mask(size: tuple[int, int], radius: int) -> Image.Image:
- mask = Image.new("L", size, 0)
- draw = ImageDraw.Draw(mask)
- draw.rounded_rectangle((0, 0, size[0] - 1, size[1] - 1), radius=radius, fill=255)
- return mask
-
-
-def crop_app_content(src: Image.Image) -> Image.Image:
- w, h = src.size
- if w > 2000:
- top = int(h * 0.055)
- left = int(w * 0.018)
- right = int(w * 0.982)
- bottom = int(h * 0.93)
- else:
- top = int(h * 0.04)
- left = int(w * 0.02)
- right = int(w * 0.98)
- bottom = int(h * 0.96)
- return src.crop((left, top, right, bottom))
-
-
-def make_window(content: Image.Image, title_h: int = 34, radius: int = 14) -> Image.Image:
- content = content.convert("RGBA")
- cw, ch = content.size
- frame = Image.new("RGBA", (cw, ch + title_h), (0, 0, 0, 0))
- body = Image.new("RGBA", (cw, ch + title_h), (245, 245, 247, 255))
- mask = rounded_mask((cw, ch + title_h), radius)
- body.putalpha(mask)
- frame.alpha_composite(body)
-
- draw = ImageDraw.Draw(frame)
- bar_h = title_h
- draw.rounded_rectangle((0, 0, cw - 1, bar_h + 6), radius=radius, fill=(236, 236, 238, 255))
- lights = [(18, bar_h // 2), (38, bar_h // 2), (58, bar_h // 2)]
- colors = [(255, 95, 86, 255), (255, 189, 46, 255), (39, 201, 63, 255)]
- for (x, y), color in zip(lights, colors):
- r = 7
- draw.ellipse((x - r, y - r, x + r, y + r), fill=color)
-
- shadow = Image.new("RGBA", (cw, ch + title_h), (0, 0, 0, 0))
- shadow_draw = ImageDraw.Draw(shadow)
- shadow_draw.rounded_rectangle((8, 10, cw - 2, ch + title_h - 2), radius=radius, fill=(0, 0, 0, 42))
- shadow = shadow.filter(ImageFilter.GaussianBlur(10))
- out = Image.new("RGBA", (cw + 16, ch + title_h + 16), (0, 0, 0, 0))
- out.alpha_composite(shadow, (0, 0))
- out.alpha_composite(frame, (8, 4))
- out.alpha_composite(content, (8, 4 + title_h))
- return out
-
-
-def tint_layer(img: Image.Image, brightness: float, alpha: float) -> Image.Image:
- layer = ImageEnhance.Brightness(img).enhance(brightness)
- layer = ImageEnhance.Color(layer).enhance(0.75)
- r, g, b, a = layer.split()
- a = a.point(lambda v: int(v * alpha))
- layer.putalpha(a)
- return layer
-
-
-def draw_tag_sidebar(size: tuple[int, int]) -> Image.Image:
- w, h = size
- side = Image.new("RGBA", size, (0, 0, 0, 0))
- draw = ImageDraw.Draw(side)
- draw.rounded_rectangle((0, 0, w - 1, h - 1), radius=12, fill=(34, 34, 38, 235))
- colors = [
- (76, 175, 80),
- (156, 39, 176),
- (33, 150, 243),
- (244, 67, 54),
- (255, 152, 0),
- (0, 188, 212),
- (233, 30, 99),
- ]
- gap = 8
- bar_w = w - 18
- bar_h = max(18, (h - gap * (len(colors) + 1)) // len(colors))
- y = 10
- for color in colors:
- draw.rounded_rectangle((9, y, 9 + bar_w, y + bar_h), radius=6, fill=(*color, 255))
- y += bar_h + gap
- return side
-
-
-def place_layer(
- canvas: Image.Image,
- layer: Image.Image,
- quad: list[tuple[float, float]],
- shadow_blur: int = 18,
- shadow_alpha: int = 55,
-) -> None:
- xs = [p[0] for p in quad]
- ys = [p[1] for p in quad]
- pad = 30
- min_x, max_x = int(min(xs)) - pad, int(max(xs)) + pad
- min_y, max_y = int(min(ys)) - pad, int(max(ys)) + pad
- box_w = max(1, max_x - min_x)
- box_h = max(1, max_y - min_y)
- local_quad = [(x - min_x, y - min_y) for x, y in quad]
- warped = warp_quad(layer, local_quad, (box_w, box_h))
-
- shadow = Image.new("RGBA", (box_w, box_h), (0, 0, 0, 0))
- alpha = warped.split()[3]
- shadow.putalpha(alpha.point(lambda v: min(v, shadow_alpha)))
- shadow = shadow.filter(ImageFilter.GaussianBlur(shadow_blur))
- canvas.alpha_composite(shadow, (min_x + 10, min_y + 16))
- canvas.alpha_composite(warped, (min_x, min_y))
-
-
-def add_reflection(canvas: Image.Image, subject_box: tuple[int, int, int, int], strength: float = 0.22) -> None:
- x0, y0, x1, y1 = subject_box
- subject = canvas.crop((x0, y0, x1, y1)).convert("RGBA")
- refl_h = int((y1 - y0) * 0.14)
- if refl_h < 8:
- return
- strip = subject.crop((0, subject.height - refl_h, subject.width, subject.height))
- reflected = ImageOps.flip(strip)
- grad = Image.linear_gradient("L").resize((reflected.width, reflected.height))
- reflected.putalpha(grad.point(lambda v: int(v * strength)))
- canvas.alpha_composite(reflected, (x0, y1 + 2))
-
-
-def build() -> Image.Image:
- src = Image.open(SRC).convert("RGBA")
- content = crop_app_content(src)
- target_w = 820 if content.width < 2000 else 760
- scale = target_w / content.width
- target_h = int(content.height * scale)
- content = content.resize((target_w, target_h), Image.LANCZOS)
-
- front = make_window(content, title_h=30, radius=12)
- back_content = content.resize((int(target_w * 0.92), int(target_h * 0.92)), Image.LANCZOS)
- back = tint_layer(make_window(back_content, title_h=26, radius=10), brightness=0.42, alpha=0.92)
- deep = tint_layer(make_window(back_content.resize((int(target_w * 0.84), int(target_h * 0.84)), Image.LANCZOS), title_h=22, radius=10), brightness=0.28, alpha=0.88)
- sidebar = draw_tag_sidebar((74, int(target_h * 0.78)))
-
- canvas = Image.new("RGBA", (CANVAS_W, CANVAS_H), BG)
- fw, fh = front.size
-
- ox, oy = 210, 36
- front_quad = [
- (ox, oy + fh * 0.1),
- (ox + fw * 0.97, oy + fh * 0.02),
- (ox + fw * 0.99, oy + fh * 0.96),
- (ox + fw * 0.05, oy + fh),
- ]
- back_quad = [
- (ox + 88, oy - 24),
- (ox + fw + 62, oy - 56),
- (ox + fw + 78, oy + fh - 42),
- (ox + 104, oy + fh - 12),
- ]
- deep_quad = [
- (ox + 138, oy - 64),
- (ox + fw + 104, oy - 98),
- (ox + fw + 120, oy + fh - 78),
- (ox + 154, oy + fh - 40),
- ]
- side_quad = [
- (ox + fw + 22, oy + 24),
- (ox + fw + 98, oy + 8),
- (ox + fw + 104, oy + fh - 52),
- (ox + fw + 30, oy + fh - 18),
- ]
-
- place_layer(canvas, deep, deep_quad, shadow_blur=24, shadow_alpha=40)
- place_layer(canvas, back, back_quad, shadow_blur=20, shadow_alpha=48)
- place_layer(canvas, sidebar, side_quad, shadow_blur=12, shadow_alpha=70)
- place_layer(canvas, front, front_quad, shadow_blur=22, shadow_alpha=62)
-
- all_x = [p[0] for quad in (deep_quad, back_quad, side_quad, front_quad) for p in quad]
- all_y = [p[1] for quad in (deep_quad, back_quad, side_quad, front_quad) for p in quad]
- add_reflection(canvas, (int(min(all_x)), int(min(all_y)), int(max(all_x) + fw * 0.2), int(max(all_y) + fh * 0.05)))
-
- return canvas.convert("RGB")
-
-
-def main() -> None:
- img = build()
- img.save(OUT, quality=93, optimize=True, progressive=True)
- print(f"wrote {OUT} ({img.size[0]}x{img.size[1]})")
-
-
-if __name__ == "__main__":
- main()
\ No newline at end of file
diff --git a/docs/scripts/generate-localized-site.mjs b/docs/scripts/generate-localized-site.mjs
deleted file mode 100644
index 2e5ffd5..0000000
--- a/docs/scripts/generate-localized-site.mjs
+++ /dev/null
@@ -1,380 +0,0 @@
-import fs from "node:fs";
-import path from "node:path";
-import { fileURLToPath } from "node:url";
-import {
- LOCALES,
- ascDescription,
- getCopy,
- helpUrl,
- loadAppStrings,
- modeLabels,
- pageFile,
- privacyFile,
- whatsNew
-} from "./localized-content.mjs";
-
-const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url));
-const ROOT = path.resolve(SCRIPT_DIR, "../..");
-const DOCS = path.join(ROOT, "docs");
-const OP_DIR = path.join(ROOT, "Docs/X-Op资料/AppStoreConnect");
-
-function esc(value) {
- return String(value ?? "")
- .replaceAll("&", "&")
- .replaceAll("<", "<")
- .replaceAll(">", ">")
- .replaceAll('"', """);
-}
-
-function lines(value) {
- return esc(value).split(/\s*\|\s*/).map((line) => `<span>${line}</span>`).join("\n ");
-}
-
-function altLinks(kind) {
- return LOCALES.map((locale) => ` <link rel="alternate" hreflang="${esc(locale.htmlLang)}" href="${esc(pageFile(kind, locale))}">`).join("\n");
-}
-
-function langSelect(kind, current) {
- const options = LOCALES.map((locale) => {
- const selected = locale.code === current.code ? " selected" : "";
- return `<option value="${esc(pageFile(kind, locale))}"${selected}>${esc(locale.nativeName)}</option>`;
- }).join("");
- return `
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-${kind}">${esc(getCopy(current.code).language)}</label>
- <select id="language-${kind}" class="language-select" aria-label="${esc(getCopy(current.code).language)}" onchange="if (this.value) window.location.href=this.value">
- ${options}
- </select>
- </div>`;
-}
-
-function header(kind, locale, copy) {
- const index = pageFile("index", locale);
- const support = pageFile("support", locale);
- const privacy = privacyFile(locale);
- const help = helpUrl(locale);
- return ` <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="${esc(index)}">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="${esc(copy.language)}">
- <a href="${esc(index)}"${kind === "index" ? ' aria-current="page"' : ""}>${esc(copy.home)}</a>
- <a href="${esc(support)}"${kind === "support" ? ' aria-current="page"' : ""}>${esc(copy.support)}</a>
- <a href="${esc(privacy)}">${esc(copy.privacy)}</a>
- <a href="${esc(help)}" rel="noopener" type="application/pdf">${esc(copy.help)}</a>
- </nav>${langSelect(kind, locale)}
- </div>
- </header>`;
-}
-
-function footer(locale, copy) {
- return ` <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="${esc(pageFile("support", locale))}">${esc(copy.support)}</a>
- · <a href="${esc(privacyFile(locale))}">${esc(copy.privacy)}</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>`;
-}
-
-function homePage(locale) {
- const copy = getCopy(locale.code);
- const app = loadAppStrings(ROOT, locale);
- const modes = modeLabels(app);
- const support = pageFile("support", locale);
- const privacy = privacyFile(locale);
- return `<!DOCTYPE html>
-<html lang="${esc(locale.htmlLang)}" dir="${esc(locale.dir)}">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>TagLauncher — ${esc(app["app.description"] || "Tag-based Mac app launcher")}</title>
- <meta name="description" content="${esc(copy.heroLead)}">
- <meta property="og:image" content="https://shanghai3168.github.io/taglauncher/assets/hero-visual.jpg">
- <link rel="stylesheet" href="styles.css">
-${altLinks("index")}
-</head>
-<body class="page-home page-locale-${esc(locale.code)}">
-${header("index", locale, copy)}
-
- <section class="hero" aria-label="TagLauncher">
- <div class="layout hero__split">
- <div class="hero__copy">
- <h1 class="hero__headline">
- ${lines(copy.heroTitle)}
- </h1>
- <p class="hero__lead">${esc(copy.heroLead)}</p>
- </div>
-
- <figure class="hero__art">
- <img src="assets/hero-visual.jpg" alt="TagLauncher App Grid" width="1024" height="908" fetchpriority="high" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="views" aria-label="${esc(copy.viewsTitle)}">
- <div class="layout views__split">
- <div class="views__gallery">
- ${[1, 2, 3, 4].map((num, idx) => `<figure class="views__shot"><img src="assets/views/view-0${num}.jpg" alt="${esc(modes[idx])}" width="720" height="468" loading="lazy" decoding="async"></figure>`).join("\n ")}
- </div>
-
- <div class="views__copy">
- <h2 class="views__headline">${esc(copy.viewsTitle)}</h2>
- <p class="views__lead">${esc(copy.viewsLead)}</p>
- <hr class="views__rule" aria-hidden="true">
- <div class="views__details">
- <div class="views__modes-block">
- <p class="views__label">${esc(copy.modesTitle)}</p>
- <ul class="views__modes">
- ${modes.map((mode) => `<li>${esc(mode)}</li>`).join("\n ")}
- </ul>
- </div>
- <div class="views__shortcut">
- <span class="views__shortcut-label">${esc(copy.shortcut)}</span>
- <span class="views__shortcut-keys"><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
- </div>
- </div>
- </section>
-
- <section class="tags" aria-label="${esc(copy.tagsTitle)}">
- <div class="layout tags__split">
- <div class="tags__copy">
- <h2 class="tags__headline">${esc(copy.tagsTitle)}</h2>
- <ul class="tags__points">
- <li>${esc(copy.tagsLead)}</li>
- <li><strong>${esc(app["settings.coloredContainer"] || "Colored Container")}</strong> · ${esc(app["settings.gridContainer"] || "Colorless Grid")}</li>
- <li>${esc(app["edit.dragHint"] || "Drag to reorder")} · JSON</li>
- </ul>
- </div>
-
- <figure class="tags__art">
- <img src="assets/tags-management.jpg" alt="${esc(copy.tagsTitle)}" width="880" height="572" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="memo" aria-label="${esc(copy.notesTitle)}">
- <div class="layout memo__split">
- <figure class="memo__art">
- <img src="assets/app-memo.png" alt="${esc(copy.notesTitle)}" width="1600" height="1040" loading="lazy" decoding="async">
- </figure>
-
- <div class="memo__copy">
- <h2 class="memo__headline">${esc(copy.notesTitle)}</h2>
- <p class="memo__lead">${esc(copy.notesLead)}</p>
- </div>
- </div>
- </section>
-
- <section class="search" aria-label="${esc(copy.searchTitle)}">
- <div class="layout search__split">
- <div class="search__copy">
- <h2 class="search__headline">${esc(copy.searchTitle)}</h2>
- <p class="search__lead">${esc(copy.searchLead)}</p>
- <p class="search__tagline">${esc(app["quickSearch.placeholder"] || "Search apps, tags, and notes")}</p>
- <div class="search__shortcut">
- <span class="search__shortcut-label">${esc(copy.shortcut)}</span>
- <span class="search__shortcut-keys"><kbd>fn</kbd> + <kbd>Space</kbd></span>
- </div>
- </div>
-
- <figure class="search__art">
- <img src="assets/quick-search.png" alt="${esc(copy.searchTitle)}" width="1809" height="1357" loading="lazy" decoding="async">
- </figure>
- </div>
- </section>
-
- <section class="backup" aria-label="${esc(copy.backupTitle)}">
- <div class="layout backup__split">
- <figure class="backup__art">
- <img src="assets/backup-restore.jpg" alt="${esc(copy.backupTitle)}" width="1024" height="558" loading="lazy" decoding="async">
- </figure>
- <div class="backup__copy">
- <h2 class="backup__headline">${esc(copy.backupTitle)}</h2>
- <p class="backup__lead">${esc(copy.backupLead)}</p>
- </div>
- </div>
- </section>
-
- <section class="privacy" aria-label="${esc(copy.privacyTitle)}">
- <div class="layout privacy__split">
- <div class="privacy__copy">
- <h2 class="privacy__headline">${esc(copy.privacyTitle)}</h2>
- <p class="privacy__lead">${esc(copy.privacyLead)}</p>
- <div class="privacy__feature">
- <h3 class="privacy__feature-title"><span class="privacy__feature-icon" aria-hidden="true"></span>${esc(copy.smartTitle)}</h3>
- <p class="privacy__feature-text">${esc(copy.smartLead)}</p>
- </div>
- </div>
- <figure class="privacy__art">
- <img src="assets/shield-check.png" alt="" width="379" height="437" loading="lazy" decoding="async" role="presentation">
- </figure>
- </div>
- </section>
-
- <section class="features" aria-label="${esc(copy.smartTitle)}">
- <div class="layout">
- <h2 class="features__headline">${esc(copy.smartTitle)}</h2>
- <div class="feature-grid">
- <div class="feature"><strong>App Grid</strong>${esc(copy.viewsLead)}</div>
- <div class="feature"><strong>Quick Search</strong>${esc(copy.searchLead)}</div>
- <div class="feature"><strong>${esc(app["settings.tags"] || "Tags")}</strong>${esc(copy.tagsLead)}</div>
- <div class="feature"><strong>${esc(app["settings.backup"] || "Backup & Restore")}</strong>${esc(copy.backupLead)}</div>
- <div class="feature"><strong>${esc(copy.privacy)}</strong>${esc(copy.privacyLead)}</div>
- <div class="feature"><strong>${esc(copy.smartTitle)}</strong>${esc(copy.smartLead)}</div>
- </div>
- <div class="features__cta">
- <p>${esc(copy.cta)}</p>
- <div class="cta-row">
- <a class="btn btn-primary" href="${esc(support)}">${esc(copy.support)}</a>
- <a class="btn btn-secondary" href="${esc(privacy)}">${esc(copy.privacy)}</a>
- </div>
- </div>
- </div>
- </section>
-
-${footer(locale, copy)}
-</body>
-</html>
-`;
-}
-
-function supportPage(locale) {
- const copy = getCopy(locale.code);
- const help = helpUrl(locale);
- return `<!DOCTYPE html>
-<html lang="${esc(locale.htmlLang)}" dir="${esc(locale.dir)}">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>${esc(copy.supportTitle || copy.support)} — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
-${altLinks("support")}
-</head>
-<body>
-${header("support", locale, copy)}
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>${esc(copy.supportTitle || copy.support)}</h1>
- <p>
- <strong>${esc(copy.version)}:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>${esc(copy.requirement)}:</strong> macOS 14.0+
- </p>
-
- <h2>${esc(copy.contact)}</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>${esc(copy.supportIntro)}</p>
-
- <h2>${esc(copy.shortcuts)}</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>${esc(copy.help)}</h2>
- <p>${esc(copy.helpIntro)}</p>
- <p><a href="${esc(help)}" rel="noopener" type="application/pdf">${esc(copy.help)}</a></p>
-
- <h2>${esc(copy.faq)}</h2>
- <h3>${esc(copy.faqLoading)}</h3>
- <p>${esc(copy.faqLoadingAnswer)}</p>
- <h3>${esc(copy.faqBackup)}</h3>
- <p>${esc(copy.faqBackupAnswer)}</p>
- <h3>${esc(copy.faqMulti)}</h3>
- <p>${esc(copy.faqMultiAnswer)}</p>
- <h3>${esc(copy.faqCloud)}</h3>
- <p>${esc(copy.faqCloudAnswer)}</p>
- </article>
- </div>
- </main>
-
-${footer(locale, copy)}
-</body>
-</html>
-`;
-}
-
-function metadata() {
- const result = {};
- for (const locale of LOCALES) {
- const copy = getCopy(locale.code);
- const app = loadAppStrings(ROOT, locale);
- result[locale.code] = {
- ascLocale: locale.ascLocale,
- ascName: locale.ascName,
- appName: "TagLauncher",
- subtitle: app["app.description"] || "Tag-based app launcher",
- promotionalText: copy.heroLead,
- description: ascDescription(copy, app),
- whatsNew: whatsNew(copy),
- keywords: [
- "TagLauncher",
- "Launchpad",
- app["settings.tags"] || "tags",
- app["quickSearch.title"] || "Quick Search",
- app["settings.backup"] || "backup",
- "Mac"
- ].join(","),
- marketingUrl: `https://shanghai3168.github.io/taglauncher/${pageFile("index", locale)}`,
- supportUrl: `https://shanghai3168.github.io/taglauncher/${pageFile("support", locale)}`,
- screenshotsDir: `/Users/ar/Projects/Taglauncher/Docs/X-Op资料/Screenshots/AppStore-Marketing/${locale.code}`
- };
- }
- return result;
-}
-
-function main() {
- for (const locale of LOCALES) {
- fs.writeFileSync(path.join(DOCS, pageFile("index", locale)), homePage(locale), "utf8");
- fs.writeFileSync(path.join(DOCS, pageFile("support", locale)), supportPage(locale), "utf8");
- }
-
- fs.mkdirSync(OP_DIR, { recursive: true });
- fs.writeFileSync(path.join(OP_DIR, "localized-metadata.json"), `${JSON.stringify(metadata(), null, 2)}\n`, "utf8");
-
- const markdown = [
- "# App Store Connect Localized Metadata",
- "",
- "Generated from `docs/scripts/localized-content.mjs`.",
- "",
- ...Object.entries(metadata()).flatMap(([code, item]) => [
- `## ${code} — ${item.ascName}`,
- "",
- `- ASC locale: \`${item.ascLocale}\``,
- `- Marketing URL: ${item.marketingUrl}`,
- `- Support URL: ${item.supportUrl}`,
- `- Screenshots: \`${item.screenshotsDir}\``,
- `- Subtitle: ${item.subtitle}`,
- "",
- "### Promotional Text",
- "",
- item.promotionalText,
- "",
- "### What's New",
- "",
- item.whatsNew,
- "",
- "### Description",
- "",
- item.description,
- ""
- ])
- ].join("\n");
- fs.writeFileSync(path.join(OP_DIR, "ASC_LOCALIZED_METADATA.md"), markdown, "utf8");
- console.log(`Generated ${LOCALES.length * 2} localized site pages and ASC metadata draft.`);
-}
-
-main();
diff --git a/docs/scripts/localized-content.mjs b/docs/scripts/localized-content.mjs
deleted file mode 100644
index 8cb0647..0000000
--- a/docs/scripts/localized-content.mjs
+++ /dev/null
@@ -1,717 +0,0 @@
-import fs from "node:fs";
-import path from "node:path";
-
-export const LOCALES = [
- { code: "zh-Hans", appCode: "zh-Hans", htmlLang: "zh-Hans", ascLocale: "zh-Hans", ascName: "简体中文", nativeName: "简体中文", suffix: "", dir: "ltr" },
- { code: "en", appCode: "en", htmlLang: "en-US", ascLocale: "en-US", ascName: "英语(美国)", nativeName: "English", suffix: "en", dir: "ltr" },
- { code: "ar", appCode: "ar", htmlLang: "ar", ascLocale: "ar", ascName: "阿拉伯语", nativeName: "العربية", suffix: "ar", dir: "rtl" },
- { code: "cs", appCode: "cs", htmlLang: "cs", ascLocale: "cs", ascName: "捷克语", nativeName: "Čeština", suffix: "cs", dir: "ltr" },
- { code: "da", appCode: "da", htmlLang: "da", ascLocale: "da", ascName: "丹麦语", nativeName: "Dansk", suffix: "da", dir: "ltr" },
- { code: "de", appCode: "de", htmlLang: "de", ascLocale: "de", ascName: "德语", nativeName: "Deutsch", suffix: "de", dir: "ltr" },
- { code: "es", appCode: "es", htmlLang: "es-ES", ascLocale: "es-ES", ascName: "西班牙语(西班牙)", nativeName: "Español", suffix: "es", dir: "ltr" },
- { code: "fr", appCode: "fr", htmlLang: "fr-FR", ascLocale: "fr-FR", ascName: "法语", nativeName: "Français", suffix: "fr", dir: "ltr" },
- { code: "id", appCode: "id", htmlLang: "id", ascLocale: "id", ascName: "印度尼西亚语", nativeName: "Indonesia", suffix: "id", dir: "ltr" },
- { code: "it", appCode: "it", htmlLang: "it", ascLocale: "it", ascName: "意大利语", nativeName: "Italiano", suffix: "it", dir: "ltr" },
- { code: "ja", appCode: "ja", htmlLang: "ja", ascLocale: "ja", ascName: "日语", nativeName: "日本語", suffix: "ja", dir: "ltr" },
- { code: "ko", appCode: "ko", htmlLang: "ko", ascLocale: "ko", ascName: "韩语", nativeName: "한국어", suffix: "ko", dir: "ltr" },
- { code: "ms", appCode: "ms", htmlLang: "ms", ascLocale: "ms", ascName: "马来语", nativeName: "Melayu", suffix: "ms", dir: "ltr" },
- { code: "no", appCode: "no", htmlLang: "no", ascLocale: "no", ascName: "挪威语", nativeName: "Norsk", suffix: "no", dir: "ltr" },
- { code: "nl", appCode: "nl", htmlLang: "nl", ascLocale: "nl", ascName: "荷兰语", nativeName: "Nederlands", suffix: "nl", dir: "ltr" },
- { code: "pl", appCode: "pl", htmlLang: "pl", ascLocale: "pl", ascName: "波兰语", nativeName: "Polski", suffix: "pl", dir: "ltr" },
- { code: "pt-BR", appCode: "pt-BR", htmlLang: "pt-BR", ascLocale: "pt-BR", ascName: "葡萄牙语(巴西)", nativeName: "Português (BR)", suffix: "pt-BR", dir: "ltr" },
- { code: "ro", appCode: "ro", htmlLang: "ro", ascLocale: "ro", ascName: "罗马尼亚语", nativeName: "Română", suffix: "ro", dir: "ltr" },
- { code: "ru", appCode: "ru", htmlLang: "ru", ascLocale: "ru", ascName: "俄语", nativeName: "Русский", suffix: "ru", dir: "ltr" },
- { code: "sv", appCode: "sv", htmlLang: "sv", ascLocale: "sv", ascName: "瑞典语", nativeName: "Svenska", suffix: "sv", dir: "ltr" },
- { code: "th", appCode: "th", htmlLang: "th", ascLocale: "th", ascName: "泰语", nativeName: "ไทย", suffix: "th", dir: "ltr" },
- { code: "tr", appCode: "tr", htmlLang: "tr", ascLocale: "tr", ascName: "土耳其语", nativeName: "Türkçe", suffix: "tr", dir: "ltr" },
- { code: "uk", appCode: "uk", htmlLang: "uk", ascLocale: "uk", ascName: "乌克兰语", nativeName: "Українська", suffix: "uk", dir: "ltr" },
- { code: "vi", appCode: "vi", htmlLang: "vi", ascLocale: "vi", ascName: "越南语", nativeName: "Tiếng Việt", suffix: "vi", dir: "ltr" },
- { code: "zh-Hant", appCode: "zh-Hant", htmlLang: "zh-Hant", ascLocale: "zh-Hant", ascName: "繁体中文", nativeName: "繁體中文", suffix: "zh-Hant", dir: "ltr" }
-];
-
-const COPY = {
- "zh-Hans": {
- home: "首页", support: "支持", privacy: "隐私政策", help: "帮助 PDF", language: "语言",
- heroTitle: "在全球,这可能是 Mac 最好用的应用启动台",
- heroLead: "不用怀念 Launchpad。TagLauncher 用标签、快捷键和搜索把所有应用整理到一屏里。",
- viewsTitle: "4 种视图,全部一屏到底",
- viewsLead: "不需要一个个打开文件夹,也不再需要翻页。只是找一个应用而已,应该更直接。",
- modesTitle: "4 种视图模式", shortcut: "快捷键",
- tagsTitle: "一个应用,多个标签",
- tagsLead: "别再把工具塞进唯一文件夹。一个应用可以同时属于阅读、设计、AI 或任何你自定义的标签。",
- notesTitle: "应用备注也能搜索",
- notesLead: "给应用写用途说明,悬停就能看见,Quick Search 也能搜备注。",
- searchTitle: "搜索应用、标签和备注",
- searchLead: "只记得标签或用途也没关系,Quick Search 会帮你找到正确应用。",
- backupTitle: "备份与恢复",
- backupLead: "分类、排序和布局可以导出为 JSON,换机或重装后可以恢复。",
- privacyTitle: "100% 离线,100% 无广告",
- privacyLead: "数据留在你的 Mac。本版本没有账号、云同步、分析 SDK、广告或追踪。",
- smartTitle: "智能标签初始化",
- smartLead: "针对 5000+ 常见 Mac 应用初始化标签方案,减少从零分类的成本。",
- cta: "Mac App Store 即将上架 · macOS 14.0+ · 29 种界面语言",
- supportTitle: "支持", contact: "联系", version: "当前版本", requirement: "系统要求",
- supportIntro: "发邮件时请说明 macOS 版本与 TagLauncher 版本号。我们通常会在几个工作日内回复。",
- shortcuts: "默认快捷键", helpIntro: "应用内关于面板会打开与当前界面语言匹配的帮助 PDF。也可以直接下载帮助文档:",
- faq: "常见问题", faqLoading: "应用网格一直转圈?", faqLoadingAnswer: "请更新到 7.9.1 或更高版本。若仍出现,完全退出 TagLauncher 后重新打开,并检查数据页的布局备份。",
- faqBackup: "如何备份分类与布局?", faqBackupAnswer: "打开设置 > 数据 > 导出分类与布局,保存 JSON 文件。换机或重装后用导入恢复。",
- faqMulti: "一个应用能属于多个标签吗?", faqMultiAnswer: "可以。这正是 TagLauncher 和 Launchpad 文件夹模型的主要区别。",
- faqCloud: "数据会上传到云端吗?", faqCloudAnswer: "不会。分类、标签、排序和备注都保存在本机。"
- },
- en: {
- home: "Home", support: "Support", privacy: "Privacy", help: "Help PDF", language: "Language",
- heroTitle: "Possibly the best Mac app launcher in the world",
- heroLead: "Do not mourn Launchpad. TagLauncher puts your apps into one tag-based, keyboard-friendly grid.",
- viewsTitle: "Four views, all on one screen",
- viewsLead: "No more opening folders one by one or flipping through pages. Finding an app should be direct.",
- modesTitle: "4 view modes", shortcut: "Quick launch",
- tagsTitle: "One app. Many tags.",
- tagsLead: "Stop forcing tools into one folder. An app can belong to Reading, Design, AI, or any custom tag.",
- notesTitle: "Search app notes too",
- notesLead: "Write usage notes, reveal them on hover, and find them through Quick Search.",
- searchTitle: "Search apps, tags, and notes",
- searchLead: "Even if you remember only a tag or purpose, Quick Search helps you reach the right app.",
- backupTitle: "Backup & Restore",
- backupLead: "Export categories, order, and layout as JSON. Restore them after reinstalling or moving Macs.",
- privacyTitle: "100% offline, 100% ad-free",
- privacyLead: "Data stays on your Mac. This build has no account, cloud sync, analytics SDK, ads, or tracking.",
- smartTitle: "Smart tag initialization",
- smartLead: "Initial tag plans for 5000+ popular Mac apps reduce the pain of starting from zero.",
- cta: "Mac App Store coming soon · macOS 14.0+ · 29 UI languages",
- supportTitle: "Support", contact: "Contact", version: "Current version", requirement: "System requirement",
- supportIntro: "Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.",
- shortcuts: "Default shortcuts", helpIntro: "The About panel opens the help PDF for the current interface language. You can also download it directly:",
- faq: "FAQ", faqLoading: "App Grid stays on a loading spinner?", faqLoadingAnswer: "Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.",
- faqBackup: "How do I back up categories and layouts?", faqBackupAnswer: "Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.",
- faqMulti: "Can one app belong to multiple tags?", faqMultiAnswer: "Yes. This is a main difference between TagLauncher and Launchpad folders.",
- faqCloud: "Does TagLauncher upload data to the cloud?", faqCloudAnswer: "No. Categories, tags, order, and notes stay on your Mac."
- },
- ar: {
- home: "الرئيسية", support: "الدعم", privacy: "الخصوصية", help: "ملف المساعدة PDF", language: "اللغة",
- heroTitle: "مشغّل تطبيقات Mac قائم على الوسوم",
- heroLead: "لا تحتاج إلى Launchpad. يجمع TagLauncher تطبيقاتك في شبكة واحدة تعتمد على الوسوم وتعمل بسرعة من لوحة المفاتيح.",
- viewsTitle: "أربع طرق عرض في شاشة واحدة",
- viewsLead: "لا مزيد من فتح المجلدات واحداً تلو الآخر أو تقليب الصفحات. العثور على التطبيق يجب أن يكون مباشراً.",
- modesTitle: "4 طرق عرض", shortcut: "اختصار سريع",
- tagsTitle: "تطبيق واحد، وسوم متعددة",
- tagsLead: "لا تحصر أدواتك في مجلد واحد. يمكن للتطبيق أن ينتمي إلى القراءة أو التصميم أو الذكاء الاصطناعي أو أي وسم تختاره.",
- notesTitle: "ابحث في ملاحظات التطبيقات أيضاً",
- notesLead: "اكتب ملاحظات الاستخدام، اعرضها عند المرور، وابحث عنها عبر Quick Search.",
- searchTitle: "ابحث في التطبيقات والوسوم والملاحظات",
- searchLead: "حتى لو تذكرت الوسم أو الغرض فقط، يساعدك Quick Search في الوصول إلى التطبيق الصحيح.",
- backupTitle: "نسخ احتياطي واستعادة",
- backupLead: "صدّر التصنيفات والترتيب والتخطيط كملف JSON واستعدها عند الانتقال إلى Mac آخر.",
- privacyTitle: "دون اتصال ودون إعلانات",
- privacyLead: "تبقى البيانات على جهاز Mac. لا حسابات، ولا مزامنة سحابية، ولا تحليلات أو إعلانات أو تتبع.",
- smartTitle: "تهيئة ذكية للوسوم",
- smartLead: "خطط وسوم أولية لأكثر من 5000 تطبيق Mac شائع تقلل عناء البدء من الصفر.",
- cta: "قريباً على Mac App Store · macOS 14.0+ · 29 لغة للواجهة"
- },
- cs: {
- home: "Domů", support: "Podpora", privacy: "Soukromí", help: "Nápověda PDF", language: "Jazyk",
- heroTitle: "Spouštěč aplikací pro Mac podle štítků",
- heroLead: "Launchpad vám chybět nemusí. TagLauncher dá aplikace do jedné přehledné mřížky se štítky a klávesovými zkratkami.",
- viewsTitle: "Čtyři zobrazení na jedné obrazovce",
- viewsLead: "Bez otevírání složek a listování stránkami. Najít aplikaci má být rychlé a přímé.",
- modesTitle: "4 režimy zobrazení", shortcut: "Rychlé spuštění",
- tagsTitle: "Jedna aplikace, více štítků",
- tagsLead: "Nenuťte nástroje do jedné složky. Aplikace může patřit do práce, designu, AI i vlastních štítků.",
- notesTitle: "Hledejte i poznámky aplikací",
- notesLead: "Doplňte účel aplikace, zobrazte jej při najetí a najděte jej přes Quick Search.",
- searchTitle: "Hledejte aplikace, štítky a poznámky",
- searchLead: "Stačí si pamatovat štítek nebo účel. Quick Search vás dovede ke správné aplikaci.",
- backupTitle: "Záloha a obnovení",
- backupLead: "Kategorie, pořadí a rozložení exportujete jako JSON a obnovíte na jiném Macu.",
- privacyTitle: "100 % offline, bez reklam",
- privacyLead: "Data zůstávají na Macu. Bez účtu, cloudu, analytiky, reklam i sledování.",
- smartTitle: "Chytrá inicializace štítků",
- smartLead: "Počáteční štítky pro 5000+ oblíbených Mac aplikací zkracují nastavování od nuly.",
- cta: "Brzy v Mac App Store · macOS 14.0+ · 29 jazyků rozhraní"
- },
- da: {
- home: "Hjem", support: "Support", privacy: "Privatliv", help: "Hjælp PDF", language: "Sprog",
- heroTitle: "En tag-baseret appstarter til Mac",
- heroLead: "Du behøver ikke savne Launchpad. TagLauncher samler dine apps i ét tag-baseret grid med tastaturgenveje.",
- viewsTitle: "Fire visninger på én skærm",
- viewsLead: "Ingen mapper, der skal åbnes enkeltvis, og ingen sider at bladre igennem. Det skal være direkte at finde en app.",
- modesTitle: "4 visningstyper", shortcut: "Hurtig start",
- tagsTitle: "Én app, flere tags",
- tagsLead: "Lad ikke værktøjer være låst til én mappe. En app kan høre til læsning, design, AI eller dine egne tags.",
- notesTitle: "Søg også i appnoter",
- notesLead: "Skriv formålet med hver app, se det ved hover, og find det med Quick Search.",
- searchTitle: "Søg i apps, tags og noter",
- searchLead: "Selv når du kun husker et tag eller et formål, finder Quick Search den rigtige app.",
- backupTitle: "Backup og gendannelse",
- backupLead: "Eksportér kategorier, rækkefølge og layout som JSON, og gendan på en ny Mac.",
- privacyTitle: "100 % offline, 100 % reklamefri",
- privacyLead: "Data bliver på din Mac. Ingen konto, cloudsync, analyse-SDK, reklamer eller sporing.",
- smartTitle: "Smart tag-initialisering",
- smartLead: "Starttags til 5000+ populære Mac-apps gør det lettere at begynde fra nul.",
- cta: "Kommer snart i Mac App Store · macOS 14.0+ · 29 UI-sprog"
- },
- de: {
- home: "Start", support: "Support", privacy: "Datenschutz", help: "Hilfe-PDF", language: "Sprache",
- heroTitle: "Ein tag-basierter App-Launcher für den Mac",
- heroLead: "Launchpad musst du nicht vermissen. TagLauncher bringt deine Apps in ein tag-basiertes, tastaturfreundliches Raster.",
- viewsTitle: "Vier Ansichten auf einem Bildschirm",
- viewsLead: "Keine Ordner einzeln öffnen, keine Seiten durchblättern. Eine App zu finden sollte direkt sein.",
- modesTitle: "4 Ansichtsmodi", shortcut: "Schnellstart",
- tagsTitle: "Eine App, mehrere Tags",
- tagsLead: "Werkzeuge müssen nicht in genau einen Ordner. Eine App kann zu Lesen, Design, KI oder eigenen Tags gehören.",
- notesTitle: "Auch App-Notizen durchsuchen",
- notesLead: "Notiere den Zweck einer App, zeige ihn per Hover und finde ihn über Quick Search.",
- searchTitle: "Apps, Tags und Notizen suchen",
- searchLead: "Wenn du nur Tag oder Zweck kennst, führt Quick Search dich trotzdem zur richtigen App.",
- backupTitle: "Sichern & Wiederherstellen",
- backupLead: "Kategorien, Reihenfolge und Layout als JSON exportieren und auf einem anderen Mac wiederherstellen.",
- privacyTitle: "100 % offline, 100 % werbefrei",
- privacyLead: "Daten bleiben auf deinem Mac. Kein Konto, keine Cloud-Sync, keine Analyse, keine Werbung, kein Tracking.",
- smartTitle: "Intelligente Tag-Initialisierung",
- smartLead: "Startpläne für 5000+ beliebte Mac-Apps reduzieren den Aufwand beim Einrichten.",
- cta: "Bald im Mac App Store · macOS 14.0+ · 29 UI-Sprachen"
- },
- es: {
- home: "Inicio", support: "Soporte", privacy: "Privacidad", help: "Ayuda PDF", language: "Idioma",
- heroTitle: "Un lanzador de apps para Mac basado en etiquetas",
- heroLead: "No hace falta echar de menos Launchpad. TagLauncher organiza tus apps en una cuadrícula con etiquetas y atajos.",
- viewsTitle: "Cuatro vistas en una sola pantalla",
- viewsLead: "Sin abrir carpetas una por una ni pasar páginas. Encontrar una app debería ser directo.",
- modesTitle: "4 modos de vista", shortcut: "Inicio rápido",
- tagsTitle: "Una app, varias etiquetas",
- tagsLead: "No encierres tus herramientas en una carpeta. Una app puede pertenecer a lectura, diseño, IA o cualquier etiqueta.",
- notesTitle: "Busca también notas de apps",
- notesLead: "Escribe para qué sirve cada app, míralo al pasar el cursor y encuéntralo con Quick Search.",
- searchTitle: "Busca apps, etiquetas y notas",
- searchLead: "Aunque solo recuerdes una etiqueta o una finalidad, Quick Search te lleva a la app correcta.",
- backupTitle: "Copia y restauración",
- backupLead: "Exporta categorías, orden y diseño como JSON y restáuralos al cambiar de Mac.",
- privacyTitle: "100 % sin conexión, 100 % sin anuncios",
- privacyLead: "Los datos se quedan en tu Mac. Sin cuenta, nube, analítica, anuncios ni rastreo.",
- smartTitle: "Inicialización inteligente de etiquetas",
- smartLead: "Planes iniciales para más de 5000 apps populares de Mac reducen el trabajo desde cero.",
- cta: "Próximamente en Mac App Store · macOS 14.0+ · 29 idiomas de interfaz"
- },
- fr: {
- home: "Accueil", support: "Assistance", privacy: "Confidentialité", help: "Aide PDF", language: "Langue",
- heroTitle: "Un lanceur d’apps Mac basé sur les étiquettes",
- heroLead: "Inutile de regretter Launchpad. TagLauncher rassemble vos apps dans une grille à étiquettes, pensée pour le clavier.",
- viewsTitle: "Quatre vues sur un seul écran",
- viewsLead: "Plus besoin d’ouvrir les dossiers un par un ni de tourner des pages. Trouver une app doit être direct.",
- modesTitle: "4 modes d’affichage", shortcut: "Lancement rapide",
- tagsTitle: "Une app, plusieurs étiquettes",
- tagsLead: "Ne forcez plus vos outils dans un seul dossier. Une app peut appartenir à lecture, design, IA ou vos propres étiquettes.",
- notesTitle: "Recherchez aussi les notes",
- notesLead: "Ajoutez une note d’usage, affichez-la au survol et retrouvez-la avec Quick Search.",
- searchTitle: "Recherchez apps, étiquettes et notes",
- searchLead: "Même si vous ne retenez qu’une étiquette ou un usage, Quick Search trouve la bonne app.",
- backupTitle: "Sauvegarde et restauration",
- backupLead: "Exportez catégories, ordre et disposition en JSON, puis restaurez-les sur un autre Mac.",
- privacyTitle: "100 % hors ligne, 100 % sans pub",
- privacyLead: "Les données restent sur votre Mac. Aucun compte, cloud, SDK d’analyse, publicité ni suivi.",
- smartTitle: "Initialisation intelligente des étiquettes",
- smartLead: "Des plans d’étiquettes pour 5000+ apps Mac populaires réduisent la configuration initiale.",
- cta: "Bientôt sur le Mac App Store · macOS 14.0+ · 29 langues d’interface"
- },
- id: {
- home: "Beranda", support: "Dukungan", privacy: "Privasi", help: "PDF Bantuan", language: "Bahasa",
- heroTitle: "Peluncur app Mac berbasis tag",
- heroLead: "Tidak perlu merindukan Launchpad. TagLauncher menaruh app Anda dalam grid bertag yang nyaman dengan keyboard.",
- viewsTitle: "Empat tampilan dalam satu layar",
- viewsLead: "Tidak perlu membuka folder satu per satu atau membalik halaman. Mencari app seharusnya langsung.",
- modesTitle: "4 mode tampilan", shortcut: "Buka cepat",
- tagsTitle: "Satu app, banyak tag",
- tagsLead: "Jangan paksa alat masuk ke satu folder. Satu app bisa masuk kerja, desain, AI, atau tag buatan Anda.",
- notesTitle: "Cari catatan app juga",
- notesLead: "Tulis kegunaan app, tampilkan saat hover, dan temukan lewat Quick Search.",
- searchTitle: "Cari app, tag, dan catatan",
- searchLead: "Meski hanya ingat tag atau kegunaan, Quick Search membantu menemukan app yang tepat.",
- backupTitle: "Cadangkan & Pulihkan",
- backupLead: "Ekspor kategori, urutan, dan tata letak sebagai JSON, lalu pulihkan di Mac lain.",
- privacyTitle: "100% offline, 100% tanpa iklan",
- privacyLead: "Data tetap di Mac Anda. Tanpa akun, sinkron cloud, analitik, iklan, atau pelacakan.",
- smartTitle: "Inisialisasi tag pintar",
- smartLead: "Rencana tag awal untuk 5000+ app Mac populer mengurangi kerja dari nol.",
- cta: "Segera hadir di Mac App Store · macOS 14.0+ · 29 bahasa UI"
- },
- it: {
- home: "Home", support: "Supporto", privacy: "Privacy", help: "Guida PDF", language: "Lingua",
- heroTitle: "Un launcher per app Mac basato sui tag",
- heroLead: "Non serve rimpiangere Launchpad. TagLauncher organizza le app in una griglia con tag e scorciatoie.",
- viewsTitle: "Quattro viste in un’unica schermata",
- viewsLead: "Niente cartelle da aprire una a una, niente pagine da sfogliare. Trovare un’app deve essere diretto.",
- modesTitle: "4 modalità di vista", shortcut: "Avvio rapido",
- tagsTitle: "Un’app, molti tag",
- tagsLead: "Non bloccare gli strumenti in una sola cartella. Un’app può appartenere a lettura, design, IA o tag personalizzati.",
- notesTitle: "Cerca anche nelle note",
- notesLead: "Scrivi a cosa serve ogni app, visualizzalo al passaggio e cercalo con Quick Search.",
- searchTitle: "Cerca app, tag e note",
- searchLead: "Anche se ricordi solo un tag o uno scopo, Quick Search ti porta all’app giusta.",
- backupTitle: "Backup e ripristino",
- backupLead: "Esporta categorie, ordine e layout in JSON e ripristinali su un altro Mac.",
- privacyTitle: "100% offline, 100% senza pubblicità",
- privacyLead: "I dati restano sul Mac. Nessun account, cloud, analisi, pubblicità o tracciamento.",
- smartTitle: "Inizializzazione intelligente dei tag",
- smartLead: "Piani iniziali per oltre 5000 app Mac popolari riducono il lavoro da zero.",
- cta: "Presto su Mac App Store · macOS 14.0+ · 29 lingue UI"
- },
- ja: {
- home: "ホーム", support: "サポート", privacy: "プライバシー", help: "ヘルプPDF", language: "言語",
- heroTitle: "タグで整理する Mac アプリランチャー",
- heroLead: "Launchpad に頼る必要はありません。TagLauncher はアプリをタグ付きの一覧にまとめ、キーボードですばやく呼び出せます。",
- viewsTitle: "4つの表示を1画面に",
- viewsLead: "フォルダを1つずつ開いたり、ページをめくったりする必要はありません。アプリ探しはもっと直接的であるべきです。",
- modesTitle: "4つの表示モード", shortcut: "クイック起動",
- tagsTitle: "1つのアプリに複数のタグ",
- tagsLead: "ツールを1つのフォルダに閉じ込めないでください。読書、デザイン、AI など自由なタグに分類できます。",
- notesTitle: "アプリのメモも検索",
- notesLead: "用途メモを書き、ホバーで確認し、Quick Search から探せます。",
- searchTitle: "アプリ、タグ、メモを検索",
- searchLead: "タグや用途だけ覚えていても、Quick Search が目的のアプリへ導きます。",
- backupTitle: "バックアップと復元",
- backupLead: "カテゴリ、順序、レイアウトを JSON として書き出し、別の Mac で復元できます。",
- privacyTitle: "完全オフライン、広告なし",
- privacyLead: "データは Mac 内に保存されます。アカウント、クラウド同期、分析、広告、トラッキングはありません。",
- smartTitle: "スマートタグ初期化",
- smartLead: "5000以上の人気 Mac アプリ向け初期タグで、ゼロからの分類を減らします。",
- cta: "Mac App Store に近日登場 · macOS 14.0+ · 29 UI 言語"
- },
- ko: {
- home: "홈", support: "지원", privacy: "개인정보", help: "도움말 PDF", language: "언어",
- heroTitle: "태그 기반 Mac 앱 런처",
- heroLead: "Launchpad를 그리워할 필요가 없습니다. TagLauncher는 앱을 태그 기반 그리드에 정리하고 키보드로 빠르게 엽니다.",
- viewsTitle: "네 가지 보기를 한 화면에",
- viewsLead: "폴더를 하나씩 열거나 페이지를 넘길 필요가 없습니다. 앱 찾기는 더 직접적이어야 합니다.",
- modesTitle: "4가지 보기 모드", shortcut: "빠른 실행",
- tagsTitle: "하나의 앱, 여러 태그",
- tagsLead: "도구를 하나의 폴더에 가두지 마세요. 앱은 읽기, 디자인, AI 또는 사용자 태그에 동시에 속할 수 있습니다.",
- notesTitle: "앱 메모도 검색",
- notesLead: "앱 용도를 적고, 호버로 확인하고, Quick Search에서 찾을 수 있습니다.",
- searchTitle: "앱, 태그, 메모 검색",
- searchLead: "태그나 용도만 기억해도 Quick Search가 올바른 앱을 찾아줍니다.",
- backupTitle: "백업 및 복원",
- backupLead: "카테고리, 순서, 레이아웃을 JSON으로 내보내고 다른 Mac에서 복원하세요.",
- privacyTitle: "100% 오프라인, 광고 없음",
- privacyLead: "데이터는 Mac에 남습니다. 계정, 클라우드 동기화, 분석, 광고, 추적이 없습니다.",
- smartTitle: "스마트 태그 초기화",
- smartLead: "인기 Mac 앱 5000개 이상의 초기 태그 구성이 처음 분류하는 수고를 줄입니다.",
- cta: "Mac App Store 출시 예정 · macOS 14.0+ · 29개 UI 언어"
- },
- ms: {
- home: "Utama", support: "Sokongan", privacy: "Privasi", help: "PDF Bantuan", language: "Bahasa",
- heroTitle: "Pelancar aplikasi Mac berasaskan tag",
- heroLead: "Tidak perlu merindui Launchpad. TagLauncher menyusun aplikasi dalam grid bertag yang mesra papan kekunci.",
- viewsTitle: "Empat paparan pada satu skrin",
- viewsLead: "Tiada lagi membuka folder satu demi satu atau menyelak halaman. Mencari aplikasi patut terus.",
- modesTitle: "4 mod paparan", shortcut: "Lancar pantas",
- tagsTitle: "Satu aplikasi, banyak tag",
- tagsLead: "Jangan paksa alat ke satu folder. Aplikasi boleh berada dalam bacaan, reka bentuk, AI atau tag sendiri.",
- notesTitle: "Cari nota aplikasi juga",
- notesLead: "Tulis kegunaan aplikasi, lihat semasa hover, dan cari melalui Quick Search.",
- searchTitle: "Cari aplikasi, tag dan nota",
- searchLead: "Walaupun hanya ingat tag atau tujuan, Quick Search membantu mencari aplikasi yang betul.",
- backupTitle: "Sandaran & Pulih",
- backupLead: "Eksport kategori, susunan dan susun atur sebagai JSON, kemudian pulihkan pada Mac lain.",
- privacyTitle: "100% luar talian, 100% tanpa iklan",
- privacyLead: "Data kekal pada Mac anda. Tiada akaun, awan, analitik, iklan atau penjejakan.",
- smartTitle: "Permulaan tag pintar",
- smartLead: "Pelan tag awal untuk 5000+ aplikasi Mac popular mengurangkan kerja dari kosong.",
- cta: "Akan hadir di Mac App Store · macOS 14.0+ · 29 bahasa UI"
- },
- no: {
- home: "Hjem", support: "Støtte", privacy: "Personvern", help: "Hjelp PDF", language: "Språk",
- heroTitle: "En taggbasert appstarter for Mac",
- heroLead: "Du trenger ikke savne Launchpad. TagLauncher samler appene dine i ett taggbasert rutenett med tastatursnarveier.",
- viewsTitle: "Fire visninger på én skjerm",
- viewsLead: "Ingen mapper som må åpnes én og én, og ingen sider å bla i. Å finne en app bør være direkte.",
- modesTitle: "4 visningsmoduser", shortcut: "Hurtigstart",
- tagsTitle: "Én app, flere tagger",
- tagsLead: "Ikke lås verktøy til én mappe. En app kan høre til lesing, design, AI eller dine egne tagger.",
- notesTitle: "Søk også i appnotater",
- notesLead: "Skriv hva appen brukes til, vis det ved hover, og finn det med Quick Search.",
- searchTitle: "Søk i apper, tagger og notater",
- searchLead: "Selv om du bare husker en tagg eller et formål, finner Quick Search riktig app.",
- backupTitle: "Sikkerhetskopi og gjenoppretting",
- backupLead: "Eksporter kategorier, rekkefølge og oppsett som JSON, og gjenopprett på en annen Mac.",
- privacyTitle: "100 % offline, 100 % uten reklame",
- privacyLead: "Data blir på Macen din. Ingen konto, skysynk, analyse, annonser eller sporing.",
- smartTitle: "Smart tagginitialisering",
- smartLead: "Starttagger for 5000+ populære Mac-apper gjør det enklere å starte fra null.",
- cta: "Kommer snart i Mac App Store · macOS 14.0+ · 29 UI-språk"
- },
- nl: {
- home: "Home", support: "Support", privacy: "Privacy", help: "Help-pdf", language: "Taal",
- heroTitle: "Een tag-gebaseerde appstarter voor Mac",
- heroLead: "Je hoeft Launchpad niet te missen. TagLauncher zet je apps in één tagraster dat prettig werkt met het toetsenbord.",
- viewsTitle: "Vier weergaven op één scherm",
- viewsLead: "Geen mappen één voor één openen en geen pagina’s doorbladeren. Een app vinden moet direct zijn.",
- modesTitle: "4 weergavemodi", shortcut: "Snel starten",
- tagsTitle: "Eén app, meerdere tags",
- tagsLead: "Dwing tools niet in één map. Een app kan horen bij lezen, ontwerp, AI of je eigen tags.",
- notesTitle: "Zoek ook appnotities",
- notesLead: "Schrijf waar een app voor dient, toon het bij hover en vind het via Quick Search.",
- searchTitle: "Zoek apps, tags en notities",
- searchLead: "Ook als je alleen een tag of doel weet, brengt Quick Search je naar de juiste app.",
- backupTitle: "Back-up en herstel",
- backupLead: "Exporteer categorieën, volgorde en lay-out als JSON en herstel ze op een andere Mac.",
- privacyTitle: "100% offline, 100% advertentievrij",
- privacyLead: "Data blijft op je Mac. Geen account, cloudsync, analytics, advertenties of tracking.",
- smartTitle: "Slimme tag-initialisatie",
- smartLead: "Startplannen voor 5000+ populaire Mac-apps maken beginnen vanaf nul eenvoudiger.",
- cta: "Binnenkort in de Mac App Store · macOS 14.0+ · 29 UI-talen"
- },
- pl: {
- home: "Start", support: "Wsparcie", privacy: "Prywatność", help: "Pomoc PDF", language: "Język",
- heroTitle: "Launcher aplikacji Mac oparty na tagach",
- heroLead: "Nie musisz tęsknić za Launchpadem. TagLauncher układa aplikacje w jedną siatkę z tagami i skrótami.",
- viewsTitle: "Cztery widoki na jednym ekranie",
- viewsLead: "Bez otwierania folderów po kolei i przewijania stron. Znalezienie aplikacji powinno być proste.",
- modesTitle: "4 tryby widoku", shortcut: "Szybkie uruchamianie",
- tagsTitle: "Jedna aplikacja, wiele tagów",
- tagsLead: "Nie zamykaj narzędzi w jednym folderze. Aplikacja może należeć do czytania, designu, AI lub własnych tagów.",
- notesTitle: "Szukaj także notatek aplikacji",
- notesLead: "Zapisz przeznaczenie aplikacji, pokaż je po najechaniu i znajdź przez Quick Search.",
- searchTitle: "Szukaj aplikacji, tagów i notatek",
- searchLead: "Wystarczy pamiętać tag lub cel. Quick Search doprowadzi do właściwej aplikacji.",
- backupTitle: "Kopia i przywracanie",
- backupLead: "Eksportuj kategorie, kolejność i układ jako JSON, a potem przywróć na innym Macu.",
- privacyTitle: "100% offline, 100% bez reklam",
- privacyLead: "Dane zostają na Macu. Bez konta, chmury, analityki, reklam i śledzenia.",
- smartTitle: "Inteligentna inicjalizacja tagów",
- smartLead: "Początkowe tagi dla 5000+ popularnych aplikacji Mac skracają konfigurację od zera.",
- cta: "Wkrótce w Mac App Store · macOS 14.0+ · 29 języków interfejsu"
- },
- "pt-BR": {
- home: "Início", support: "Suporte", privacy: "Privacidade", help: "Ajuda PDF", language: "Idioma",
- heroTitle: "Um lançador de apps Mac baseado em tags",
- heroLead: "Você não precisa sentir falta do Launchpad. O TagLauncher organiza seus apps em uma grade com tags e atalhos.",
- viewsTitle: "Quatro visualizações em uma tela",
- viewsLead: "Sem abrir pastas uma por uma ou virar páginas. Encontrar um app deve ser direto.",
- modesTitle: "4 modos de visualização", shortcut: "Início rápido",
- tagsTitle: "Um app, várias tags",
- tagsLead: "Não prenda suas ferramentas a uma pasta. Um app pode pertencer a leitura, design, IA ou tags próprias.",
- notesTitle: "Pesquise também notas de apps",
- notesLead: "Escreva para que cada app serve, veja ao passar o cursor e encontre pelo Quick Search.",
- searchTitle: "Pesquise apps, tags e notas",
- searchLead: "Mesmo lembrando só uma tag ou finalidade, o Quick Search leva você ao app certo.",
- backupTitle: "Backup e restauração",
- backupLead: "Exporte categorias, ordem e layout como JSON e restaure em outro Mac.",
- privacyTitle: "100% offline, 100% sem anúncios",
- privacyLead: "Os dados ficam no seu Mac. Sem conta, nuvem, analytics, anúncios ou rastreamento.",
- smartTitle: "Inicialização inteligente de tags",
- smartLead: "Planos iniciais para mais de 5000 apps populares de Mac reduzem o trabalho do zero.",
- cta: "Em breve na Mac App Store · macOS 14.0+ · 29 idiomas de interface"
- },
- ro: {
- home: "Acasă", support: "Suport", privacy: "Confidențialitate", help: "Ajutor PDF", language: "Limbă",
- heroTitle: "Lansator de aplicații Mac bazat pe etichete",
- heroLead: "Nu trebuie să regreți Launchpad. TagLauncher pune aplicațiile într-o grilă cu etichete și scurtături.",
- viewsTitle: "Patru vizualizări pe un singur ecran",
- viewsLead: "Fără foldere deschise pe rând și fără pagini de răsfoit. Găsirea unei aplicații trebuie să fie directă.",
- modesTitle: "4 moduri de vizualizare", shortcut: "Lansare rapidă",
- tagsTitle: "O aplicație, mai multe etichete",
- tagsLead: "Nu bloca instrumentele într-un singur folder. O aplicație poate aparține lecturii, designului, AI sau etichetelor tale.",
- notesTitle: "Caută și notele aplicațiilor",
- notesLead: "Scrie scopul aplicației, afișează-l la hover și găsește-l cu Quick Search.",
- searchTitle: "Caută aplicații, etichete și note",
- searchLead: "Chiar dacă îți amintești doar o etichetă sau un scop, Quick Search găsește aplicația corectă.",
- backupTitle: "Backup și restaurare",
- backupLead: "Exportă categoriile, ordinea și aspectul ca JSON, apoi restaurează-le pe alt Mac.",
- privacyTitle: "100% offline, 100% fără reclame",
- privacyLead: "Datele rămân pe Mac. Fără cont, cloud, analiză, reclame sau urmărire.",
- smartTitle: "Inițializare inteligentă a etichetelor",
- smartLead: "Planuri inițiale pentru 5000+ aplicații Mac populare reduc munca de la zero.",
- cta: "În curând pe Mac App Store · macOS 14.0+ · 29 de limbi UI"
- },
- ru: {
- home: "Главная", support: "Поддержка", privacy: "Конфиденциальность", help: "PDF-справка", language: "Язык",
- heroTitle: "Лаунчер приложений Mac на основе тегов",
- heroLead: "Launchpad больше не нужен. TagLauncher собирает приложения в одну сетку с тегами и быстрыми клавишами.",
- viewsTitle: "Четыре вида на одном экране",
- viewsLead: "Не нужно открывать папки по одной и листать страницы. Поиск приложения должен быть прямым.",
- modesTitle: "4 режима просмотра", shortcut: "Быстрый запуск",
- tagsTitle: "Одно приложение, много тегов",
- tagsLead: "Не загоняйте инструменты в одну папку. Приложение может относиться к чтению, дизайну, AI или вашим тегам.",
- notesTitle: "Ищите и заметки приложений",
- notesLead: "Записывайте назначение приложения, смотрите при наведении и находите через Quick Search.",
- searchTitle: "Поиск приложений, тегов и заметок",
- searchLead: "Даже если вы помните только тег или задачу, Quick Search найдет нужное приложение.",
- backupTitle: "Резервная копия и восстановление",
- backupLead: "Экспортируйте категории, порядок и раскладку в JSON и восстановите на другом Mac.",
- privacyTitle: "100% офлайн, 100% без рекламы",
- privacyLead: "Данные остаются на Mac. Без аккаунта, облака, аналитики, рекламы и отслеживания.",
- smartTitle: "Умная инициализация тегов",
- smartLead: "Стартовые теги для 5000+ популярных Mac-приложений упрощают настройку с нуля.",
- cta: "Скоро в Mac App Store · macOS 14.0+ · 29 языков интерфейса"
- },
- sv: {
- home: "Hem", support: "Support", privacy: "Integritet", help: "Hjälp-PDF", language: "Språk",
- heroTitle: "En taggbaserad appstartare för Mac",
- heroLead: "Du behöver inte sakna Launchpad. TagLauncher samlar apparna i ett taggbaserat rutnät med kortkommandon.",
- viewsTitle: "Fyra vyer på en skärm",
- viewsLead: "Inga mappar att öppna en i taget och inga sidor att bläddra igenom. Att hitta en app ska vara direkt.",
- modesTitle: "4 visningslägen", shortcut: "Snabbstart",
- tagsTitle: "En app, flera taggar",
- tagsLead: "Lås inte verktyg i en enda mapp. En app kan höra till läsning, design, AI eller egna taggar.",
- notesTitle: "Sök även appanteckningar",
- notesLead: "Skriv vad appen används till, visa det vid hovring och hitta det via Quick Search.",
- searchTitle: "Sök appar, taggar och anteckningar",
- searchLead: "Även om du bara minns en tagg eller ett syfte hjälper Quick Search dig till rätt app.",
- backupTitle: "Backup och återställning",
- backupLead: "Exportera kategorier, ordning och layout som JSON och återställ på en annan Mac.",
- privacyTitle: "100% offline, 100% utan annonser",
- privacyLead: "Data stannar på din Mac. Inget konto, moln, analys, annonser eller spårning.",
- smartTitle: "Smart taggstart",
- smartLead: "Starttaggar för 5000+ populära Mac-appar minskar arbetet från noll.",
- cta: "Kommer snart i Mac App Store · macOS 14.0+ · 29 UI-språk"
- },
- th: {
- home: "หน้าแรก", support: "สนับสนุน", privacy: "ความเป็นส่วนตัว", help: "PDF วิธีใช้", language: "ภาษา",
- heroTitle: "ตัวเปิดแอป Mac แบบใช้แท็ก",
- heroLead: "ไม่ต้องคิดถึง Launchpad อีกต่อไป TagLauncher จัดแอปไว้ในกริดเดียวที่ใช้แท็กและคีย์ลัดได้สะดวก",
- viewsTitle: "สี่มุมมองในหน้าจอเดียว",
- viewsLead: "ไม่ต้องเปิดโฟลเดอร์ทีละอันหรือพลิกหน้าไปมา การหาแอปควรง่ายและตรงไปตรงมา",
- modesTitle: "4 โหมดมุมมอง", shortcut: "เปิดด่วน",
- tagsTitle: "หนึ่งแอป หลายแท็ก",
- tagsLead: "ไม่ต้องบังคับเครื่องมือให้อยู่ในโฟลเดอร์เดียว แอปหนึ่งอาจอยู่ในอ่าน ออกแบบ AI หรือแท็กของคุณเอง",
- notesTitle: "ค้นหาโน้ตของแอปได้ด้วย",
- notesLead: "เขียนว่าแอปใช้ทำอะไร ดูเมื่อวางเมาส์ และค้นหาได้จาก Quick Search",
- searchTitle: "ค้นหาแอป แท็ก และโน้ต",
- searchLead: "แม้จำได้แค่แท็กหรือวัตถุประสงค์ Quick Search ก็ช่วยพาคุณไปยังแอปที่ถูกต้อง",
- backupTitle: "สำรองและกู้คืน",
- backupLead: "ส่งออกหมวดหมู่ ลำดับ และเลย์เอาต์เป็น JSON แล้วกู้คืนบน Mac เครื่องอื่น",
- privacyTitle: "ออฟไลน์ 100% ไม่มีโฆษณา",
- privacyLead: "ข้อมูลอยู่บน Mac ของคุณ ไม่มีบัญชี คลาวด์ วิเคราะห์ โฆษณา หรือการติดตาม",
- smartTitle: "เริ่มต้นแท็กอัจฉริยะ",
- smartLead: "แผนแท็กเริ่มต้นสำหรับแอป Mac ยอดนิยมกว่า 5000 แอปช่วยลดการเริ่มจากศูนย์",
- cta: "เร็ว ๆ นี้บน Mac App Store · macOS 14.0+ · 29 ภาษา UI"
- },
- tr: {
- home: "Ana sayfa", support: "Destek", privacy: "Gizlilik", help: "Yardım PDF", language: "Dil",
- heroTitle: "Etiket tabanlı Mac uygulama başlatıcı",
- heroLead: "Launchpad’i özlemek zorunda değilsiniz. TagLauncher uygulamaları etiketli, klavye dostu tek bir ızgarada toplar.",
- viewsTitle: "Dört görünüm, tek ekran",
- viewsLead: "Klasörleri tek tek açmak veya sayfa çevirmek yok. Bir uygulamayı bulmak doğrudan olmalı.",
- modesTitle: "4 görünüm modu", shortcut: "Hızlı başlat",
- tagsTitle: "Bir uygulama, birçok etiket",
- tagsLead: "Araçları tek klasöre sıkıştırmayın. Bir uygulama okuma, tasarım, AI veya kendi etiketlerinize ait olabilir.",
- notesTitle: "Uygulama notlarında da ara",
- notesLead: "Kullanım notu yazın, üzerine gelince görün ve Quick Search ile bulun.",
- searchTitle: "Uygulama, etiket ve not ara",
- searchLead: "Yalnızca etiketi veya amacı hatırlasanız bile Quick Search doğru uygulamayı bulur.",
- backupTitle: "Yedekleme ve geri yükleme",
- backupLead: "Kategorileri, sırayı ve düzeni JSON olarak dışa aktarın, başka Mac’te geri yükleyin.",
- privacyTitle: "100% çevrimdışı, 100% reklamsız",
- privacyLead: "Veriler Mac’inizde kalır. Hesap, bulut, analiz, reklam veya izleme yok.",
- smartTitle: "Akıllı etiket başlatma",
- smartLead: "5000+ popüler Mac uygulaması için başlangıç etiketleri sıfırdan kurulumu azaltır.",
- cta: "Yakında Mac App Store’da · macOS 14.0+ · 29 arayüz dili"
- },
- uk: {
- home: "Головна", support: "Підтримка", privacy: "Приватність", help: "PDF-довідка", language: "Мова",
- heroTitle: "Запускач програм Mac на основі тегів",
- heroLead: "Launchpad більше не потрібен. TagLauncher збирає програми в одну сітку з тегами та швидкими клавішами.",
- viewsTitle: "Чотири вигляди на одному екрані",
- viewsLead: "Без відкривання папок по черзі та гортання сторінок. Пошук програми має бути прямим.",
- modesTitle: "4 режими вигляду", shortcut: "Швидкий запуск",
- tagsTitle: "Одна програма, багато тегів",
- tagsLead: "Не замикайте інструменти в одній папці. Програма може належати до читання, дизайну, AI або ваших тегів.",
- notesTitle: "Шукайте і нотатки програм",
- notesLead: "Запишіть призначення програми, переглядайте при наведенні та знаходьте через Quick Search.",
- searchTitle: "Пошук програм, тегів і нотаток",
- searchLead: "Навіть якщо пам’ятаєте лише тег чи призначення, Quick Search знайде правильну програму.",
- backupTitle: "Резервна копія та відновлення",
- backupLead: "Експортуйте категорії, порядок і макет у JSON та відновлюйте на іншому Mac.",
- privacyTitle: "100% офлайн, 100% без реклами",
- privacyLead: "Дані залишаються на Mac. Без акаунта, хмари, аналітики, реклами чи стеження.",
- smartTitle: "Розумна ініціалізація тегів",
- smartLead: "Початкові теги для 5000+ популярних Mac-програм спрощують налаштування з нуля.",
- cta: "Незабаром у Mac App Store · macOS 14.0+ · 29 мов інтерфейсу"
- },
- vi: {
- home: "Trang chủ", support: "Hỗ trợ", privacy: "Quyền riêng tư", help: "PDF trợ giúp", language: "Ngôn ngữ",
- heroTitle: "Trình khởi chạy ứng dụng Mac bằng thẻ",
- heroLead: "Không cần tiếc Launchpad. TagLauncher đưa ứng dụng vào một lưới có thẻ, dễ dùng với bàn phím.",
- viewsTitle: "Bốn chế độ xem trên một màn hình",
- viewsLead: "Không cần mở từng thư mục hay lật từng trang. Tìm ứng dụng nên trực tiếp hơn.",
- modesTitle: "4 chế độ xem", shortcut: "Mở nhanh",
- tagsTitle: "Một ứng dụng, nhiều thẻ",
- tagsLead: "Đừng ép công cụ vào một thư mục. Một ứng dụng có thể thuộc đọc, thiết kế, AI hoặc thẻ tùy chỉnh.",
- notesTitle: "Tìm cả ghi chú ứng dụng",
- notesLead: "Ghi mục đích của ứng dụng, xem khi rê chuột và tìm bằng Quick Search.",
- searchTitle: "Tìm ứng dụng, thẻ và ghi chú",
- searchLead: "Dù chỉ nhớ thẻ hoặc mục đích, Quick Search vẫn giúp bạn đến đúng ứng dụng.",
- backupTitle: "Sao lưu & khôi phục",
- backupLead: "Xuất danh mục, thứ tự và bố cục thành JSON rồi khôi phục trên Mac khác.",
- privacyTitle: "100% ngoại tuyến, 100% không quảng cáo",
- privacyLead: "Dữ liệu ở lại trên Mac. Không tài khoản, đám mây, phân tích, quảng cáo hay theo dõi.",
- smartTitle: "Khởi tạo thẻ thông minh",
- smartLead: "Kế hoạch thẻ ban đầu cho hơn 5000 ứng dụng Mac phổ biến giúp giảm công sức từ đầu.",
- cta: "Sắp có trên Mac App Store · macOS 14.0+ · 29 ngôn ngữ UI"
- },
- "zh-Hant": {
- home: "首頁", support: "支援", privacy: "隱私權政策", help: "說明 PDF", language: "語言",
- heroTitle: "以標籤整理的 Mac 應用啟動器",
- heroLead: "不用再懷念 Launchpad。TagLauncher 用標籤、快捷鍵與搜尋,把所有應用整理在一個畫面。",
- viewsTitle: "4 種檢視,全部一屏到底",
- viewsLead: "不需要一個個打開資料夾,也不再需要翻頁。只是找一個應用,應該更直接。",
- modesTitle: "4 種檢視模式", shortcut: "快捷鍵",
- tagsTitle: "一個應用,多個標籤",
- tagsLead: "別再把工具塞進唯一資料夾。一個應用可以同時屬於閱讀、設計、AI 或任何自訂標籤。",
- notesTitle: "應用備註也能搜尋",
- notesLead: "為應用寫用途說明,滑過就能看到,Quick Search 也能搜尋備註。",
- searchTitle: "搜尋應用、標籤與備註",
- searchLead: "只記得標籤或用途也沒關係,Quick Search 會幫你找到正確應用。",
- backupTitle: "備份與還原",
- backupLead: "分類、排序與版面可以匯出為 JSON,換機或重裝後可以還原。",
- privacyTitle: "100% 離線,100% 無廣告",
- privacyLead: "資料留在你的 Mac。本版本沒有帳號、雲端同步、分析 SDK、廣告或追蹤。",
- smartTitle: "智慧標籤初始化",
- smartLead: "針對 5000+ 常見 Mac 應用初始化標籤方案,減少從零分類的成本。",
- cta: "Mac App Store 即將上架 · macOS 14.0+ · 29 種介面語言"
- }
-};
-
-const FALLBACK_SUPPORT = {
- supportTitle: "Support",
- contact: "Contact",
- version: "Current version",
- requirement: "System requirement",
- supportIntro: "Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.",
- shortcuts: "Default shortcuts",
- helpIntro: "The About panel opens the help PDF for the current interface language. You can also download it directly:",
- faq: "FAQ",
- faqLoading: "App Grid stays on a loading spinner?",
- faqLoadingAnswer: "Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.",
- faqBackup: "How do I back up categories and layouts?",
- faqBackupAnswer: "Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.",
- faqMulti: "Can one app belong to multiple tags?",
- faqMultiAnswer: "Yes. This is a main difference between TagLauncher and Launchpad folders.",
- faqCloud: "Does TagLauncher upload data to the cloud?",
- faqCloudAnswer: "No. Categories, tags, order, and notes stay on your Mac."
-};
-
-export function getCopy(code) {
- return { ...COPY.en, ...FALLBACK_SUPPORT, ...(COPY[code] || {}) };
-}
-
-export function pageFile(kind, locale) {
- const suffix = locale.suffix ? `-${locale.suffix}` : "";
- return `${kind}${suffix}.html`;
-}
-
-export function privacyFile(locale) {
- return locale.code === "zh-Hans" ? "privacy-zh.html" : "privacy.html";
-}
-
-export function helpUrl(locale) {
- const pdf = locale.code === "zh-Hans" || locale.code === "zh-Hant" ? "Taglauncher-help-zh.pdf" : "Taglauncher-help-en.pdf";
- return `https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/${pdf}`;
-}
-
-const APP_STRING_FALLBACK = {
- "app.description": "tag-based app launcher",
- "settings.coloredContainer": "Colored Container",
- "settings.container": "Colorless Container",
- "settings.coloredGridContainer": "Colored Grid",
- "settings.gridContainer": "Colorless Grid",
- "settings.tags": "Tags",
- "settings.backup": "Backup & Restore",
- "edit.dragHint": "Drag to reorder",
- "quickSearch.placeholder": "Search apps, tags, and notes",
- "quickSearch.title": "Quick Search"
-};
-
-const APP_STRING_FALLBACK_BY_CODE = {
- "zh-Hans": { "app.description": "基于标签的应用启动器", "settings.coloredContainer": "彩色容器", "settings.container": "无色容器", "settings.coloredGridContainer": "彩色网格", "settings.gridContainer": "无色网格" },
- en: { "app.description": "Tag-based app launcher", "settings.coloredContainer": "Colored Container", "settings.container": "Colorless Container", "settings.coloredGridContainer": "Colored Grid", "settings.gridContainer": "Colorless Grid" },
- ar: { "app.description": "مشغل تطبيقات قائم على الوسوم", "settings.coloredContainer": "حاوية ملونة", "settings.container": "حاوية بلا لون", "settings.coloredGridContainer": "شبكة ملونة", "settings.gridContainer": "شبكة بلا لون" },
- cs: { "app.description": "Spouštěč aplikací podle štítků", "settings.coloredContainer": "Barevný kontejner", "settings.container": "Bezbarvý kontejner", "settings.coloredGridContainer": "Barevná mřížka", "settings.gridContainer": "Bezbarvá mřížka" },
- da: { "app.description": "Tagbaseret appstarter", "settings.coloredContainer": "Farvet beholder", "settings.container": "Farveløs beholder", "settings.coloredGridContainer": "Farvet gitter", "settings.gridContainer": "Farveløst gitter" },
- de: { "app.description": "Tag-basierter App-Launcher", "settings.coloredContainer": "Farbiger Container", "settings.container": "Farbloser Container", "settings.coloredGridContainer": "Farbiges Raster", "settings.gridContainer": "Farbloses Raster" },
- es: { "app.description": "Lanzador de apps basado en etiquetas", "settings.coloredContainer": "Contenedor coloreado", "settings.container": "Contenedor sin color", "settings.coloredGridContainer": "Cuadrícula coloreada", "settings.gridContainer": "Cuadrícula sin color" },
- fr: { "app.description": "Lanceur d'applications par étiquettes", "settings.coloredContainer": "Conteneur coloré", "settings.container": "Conteneur sans couleur", "settings.coloredGridContainer": "Grille colorée", "settings.gridContainer": "Grille sans couleur" },
- id: { "app.description": "Peluncur app berbasis tag", "settings.coloredContainer": "Kontainer berwarna", "settings.container": "Kontainer tanpa warna", "settings.coloredGridContainer": "Grid berwarna", "settings.gridContainer": "Grid tanpa warna" },
- it: { "app.description": "Launcher di app basato su tag", "settings.coloredContainer": "Contenitore colorato", "settings.container": "Contenitore senza colore", "settings.coloredGridContainer": "Griglia colorata", "settings.gridContainer": "Griglia senza colore" },
- ja: { "app.description": "タグベースのアプリランチャー", "settings.coloredContainer": "カラーコンテナ", "settings.container": "無色コンテナ", "settings.coloredGridContainer": "カラーグリッド", "settings.gridContainer": "無色グリッド" },
- ko: { "app.description": "태그 기반 앱 런처", "settings.coloredContainer": "색상 컨테이너", "settings.container": "무색 컨테이너", "settings.coloredGridContainer": "색상 그리드", "settings.gridContainer": "무색 그리드" },
- ms: { "app.description": "Peluncur app berbasis tag", "settings.coloredContainer": "Kontainer berwarna", "settings.container": "Kontainer tanpa warna", "settings.coloredGridContainer": "Grid berwarna", "settings.gridContainer": "Grid tanpa warna" },
- no: { "app.description": "Etikettbasert appstarter", "settings.coloredContainer": "Farget beholder", "settings.container": "Fargeløs beholder", "settings.coloredGridContainer": "Farget rutenett", "settings.gridContainer": "Fargeløst rutenett" },
- nl: { "app.description": "Taggebaseerde appstarter", "settings.coloredContainer": "Gekleurde container", "settings.container": "Kleurloze container", "settings.coloredGridContainer": "Gekleurd raster", "settings.gridContainer": "Kleurloos raster" },
- pl: { "app.description": "Launcher aplikacji oparty na tagach", "settings.coloredContainer": "Kolorowy kontener", "settings.container": "Bezbarwny kontener", "settings.coloredGridContainer": "Kolorowa siatka", "settings.gridContainer": "Bezbarwna siatka" },
- "pt-BR": { "app.description": "Inicializador de apps baseado em etiquetas", "settings.coloredContainer": "Contêiner colorido", "settings.container": "Contêiner sem cor", "settings.coloredGridContainer": "Grade colorida", "settings.gridContainer": "Grade sem cor" },
- ro: { "app.description": "Lansator de aplicații bazat pe etichete", "settings.coloredContainer": "Container colorat", "settings.container": "Container fără culoare", "settings.coloredGridContainer": "Grilă colorată", "settings.gridContainer": "Grilă fără culoare" },
- ru: { "app.description": "Лаунчер приложений на основе тегов", "settings.coloredContainer": "Цветной контейнер", "settings.container": "Бесцветный контейнер", "settings.coloredGridContainer": "Цветная сетка", "settings.gridContainer": "Бесцветная сетка" },
- sv: { "app.description": "Taggbaserad appstartare", "settings.coloredContainer": "Färgad behållare", "settings.container": "Färglös behållare", "settings.coloredGridContainer": "Färgat rutnät", "settings.gridContainer": "Färglöst rutnät" },
- th: { "app.description": "ตัวเปิดแอปตามแท็ก", "settings.coloredContainer": "คอนเทนเนอร์มีสี", "settings.container": "คอนเทนเนอร์ไม่มีสี", "settings.coloredGridContainer": "กริดมีสี", "settings.gridContainer": "กริดไม่มีสี" },
- tr: { "app.description": "Etiket tabanlı uygulama başlatıcı", "settings.coloredContainer": "Renkli Kapsayıcı", "settings.container": "Renksiz Kapsayıcı", "settings.coloredGridContainer": "Renkli Izgara", "settings.gridContainer": "Renksiz Izgara" },
- uk: { "app.description": "Запускач застосунків на основі тегів", "settings.coloredContainer": "Кольоровий контейнер", "settings.container": "Безбарвний контейнер", "settings.coloredGridContainer": "Кольорова сітка", "settings.gridContainer": "Безбарвна сітка" },
- vi: { "app.description": "Trình khởi chạy ứng dụng theo thẻ", "settings.coloredContainer": "Vùng chứa có màu", "settings.container": "Vùng chứa không màu", "settings.coloredGridContainer": "Lưới có màu", "settings.gridContainer": "Lưới không màu" },
- "zh-Hant": { "app.description": "基於標籤的應用程式啟動器", "settings.coloredContainer": "彩色容器", "settings.container": "無色容器", "settings.coloredGridContainer": "彩色網格", "settings.gridContainer": "無色網格" }
-};
-
-const APP_EXTRA_STRING_FALLBACK_BY_CODE = {
- "zh-Hans": { "settings.tags": "标签", "settings.backup": "备份与恢复", "edit.dragHint": "拖拽排序", "quickSearch.placeholder": "搜索 App、标签和备注", "quickSearch.title": "快捷搜索" },
- ar: { "settings.tags": "الوسوم", "settings.backup": "نسخ احتياطي واستعادة", "edit.dragHint": "اسحب لإعادة الترتيب" },
- cs: { "settings.tags": "Štítky", "settings.backup": "Záloha a obnovení", "edit.dragHint": "Přetažením změňte pořadí" },
- da: { "settings.tags": "Tags", "settings.backup": "Sikkerhedskopi og gendannelse", "edit.dragHint": "Træk for at ændre rækkefølge" },
- de: { "settings.tags": "Tags", "settings.backup": "Sichern & Wiederherstellen", "edit.dragHint": "Zum Sortieren ziehen" },
- es: { "settings.tags": "Etiquetas", "settings.backup": "Copia de seguridad", "edit.dragHint": "Arrastra para reordenar" },
- fr: { "settings.tags": "Étiquettes", "settings.backup": "Sauvegarde et restauration", "edit.dragHint": "Faites glisser pour réorganiser" },
- id: { "settings.tags": "Tag", "settings.backup": "Cadangkan & pulihkan", "edit.dragHint": "Seret untuk mengurutkan" },
- it: { "settings.tags": "Tag", "settings.backup": "Backup e ripristino", "edit.dragHint": "Trascina per riordinare" },
- ja: { "settings.tags": "タグ", "settings.backup": "バックアップと復元", "edit.dragHint": "ドラッグで並べ替え" },
- ko: { "settings.tags": "태그", "settings.backup": "백업 및 복원", "edit.dragHint": "드래그하여 순서 변경" },
- ms: { "settings.tags": "Tag", "settings.backup": "Sandaran & pulih", "edit.dragHint": "Seret untuk mengurutkan" },
- no: { "settings.tags": "Etiketter", "settings.backup": "Sikkerhetskopi og gjenoppretting", "edit.dragHint": "Dra for å endre rekkefølge" },
- nl: { "settings.tags": "Tags", "settings.backup": "Back-up en herstel", "edit.dragHint": "Sleep om te sorteren" },
- pl: { "settings.tags": "Tagi", "settings.backup": "Kopia zapasowa i przywracanie", "edit.dragHint": "Przeciągnij, aby zmienić kolejność" },
- "pt-BR": { "settings.tags": "Etiquetas", "settings.backup": "Backup e restauração", "edit.dragHint": "Arraste para reordenar" },
- ro: { "settings.tags": "Etichete", "settings.backup": "Backup și restaurare", "edit.dragHint": "Trage pentru reordonare" },
- ru: { "settings.tags": "Теги", "settings.backup": "Резервное копирование", "edit.dragHint": "Перетащите для сортировки" },
- sv: { "settings.tags": "Taggar", "settings.backup": "Säkerhetskopiera och återställ", "edit.dragHint": "Dra för att ändra ordning" },
- th: { "settings.tags": "แท็ก", "settings.backup": "สำรองและกู้คืน", "edit.dragHint": "ลากเพื่อจัดเรียง" },
- tr: { "settings.tags": "Etiketler", "settings.backup": "Yedekle ve geri yükle", "edit.dragHint": "Sıralamak için sürükle" },
- uk: { "settings.tags": "Теги", "settings.backup": "Резервне копіювання", "edit.dragHint": "Перетягніть для сортування" },
- vi: { "settings.tags": "Thẻ", "settings.backup": "Sao lưu & khôi phục", "edit.dragHint": "Kéo để sắp xếp" },
- "zh-Hant": { "settings.tags": "標籤", "settings.backup": "備份與還原", "edit.dragHint": "拖曳排序", "quickSearch.placeholder": "搜尋 App、標籤和備註", "quickSearch.title": "快捷搜尋" }
-};
-
-export function loadAppStrings(rootDir, locale) {
- const localizationDir = path.join(rootDir, "src/Apptag/Localization");
- const fallbackPath = path.join(localizationDir, "en.json");
- const embeddedFallback = { ...APP_STRING_FALLBACK, ...(APP_STRING_FALLBACK_BY_CODE[locale.code] || {}), ...(APP_EXTRA_STRING_FALLBACK_BY_CODE[locale.code] || {}) };
- const fallback = fs.existsSync(fallbackPath)
- ? { ...embeddedFallback, ...JSON.parse(fs.readFileSync(fallbackPath, "utf8")) }
- : embeddedFallback;
- const targetPath = path.join(localizationDir, `${locale.appCode}.json`);
- if (!fs.existsSync(targetPath)) return fallback;
- return { ...fallback, ...JSON.parse(fs.readFileSync(targetPath, "utf8")) };
-}
-
-export function modeLabels(app) {
- return [
- app["settings.coloredContainer"] || "Colored Container",
- app["settings.container"] || "Colorless Container",
- app["settings.coloredGridContainer"] || "Colored Grid",
- app["settings.gridContainer"] || "Colorless Grid"
- ];
-}
-
-export function ascDescription(copy, app) {
- return [
- `TagLauncher — ${app["app.description"] || "tag-based app launcher"}.`,
- copy.heroLead,
- copy.tagsLead,
- copy.searchLead,
- copy.backupLead,
- copy.privacyLead
- ].join("\n\n");
-}
-
-export function whatsNew(copy) {
- return [
- "Version 7.9.1 improves App Grid reliability and first-use guidance.",
- copy.viewsLead,
- "Empty tag groups now stay visible, blank-space tag removal is more reliable on macOS 14, and usage tips can be hidden in Settings."
- ].join("\n\n");
-}
diff --git a/docs/styles.css b/docs/styles.css
deleted file mode 100644
index 32614ee..0000000
--- a/docs/styles.css
+++ /dev/null
@@ -1,1001 +0,0 @@
-:root {
- --layout-max: 1080px;
- --layout-pad: 28px;
- --header-h: 64px;
- --bg: #f4f6fb;
- --bg-elevated: #ffffff;
- --text: #1d1d1f;
- --muted: #5c5c66;
- --accent: #0071e3;
- --accent-hover: #0077ed;
- --border: rgba(0, 0, 0, 0.08);
- --radius: 16px;
- --shadow: 0 20px 50px rgba(30, 45, 90, 0.12);
- --font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "PingFang SC", "Segoe UI", sans-serif;
- --hero-bg: #ffffff;
- --section-blue: linear-gradient(180deg, #ffffff 0%, #f6f9ff 100%);
- --section-lilac: linear-gradient(135deg, #fbfcff 0%, #ffffff 44%, #f8f5ff 100%);
- --section-mint: linear-gradient(135deg, #ffffff 0%, #f7fbff 52%, #f3fbf7 100%);
-}
-
-* {
- box-sizing: border-box;
-}
-
-html {
- scroll-behavior: smooth;
-}
-
-body {
- margin: 0;
- font-family: var(--font);
- color: var(--text);
- line-height: 1.55;
- -webkit-font-smoothing: antialiased;
- background: linear-gradient(180deg, #fbfcff 0%, #f4f7ff 38%, #f5fbf8 72%, #fbfcff 100%);
- min-height: 100vh;
-}
-
-.page-home {
- background: #ffffff;
-}
-
-a {
- color: var(--accent);
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-/* One width for header, main, footer */
-.layout {
- width: 100%;
- max-width: var(--layout-max);
- margin-left: auto;
- margin-right: auto;
- padding-left: var(--layout-pad);
- padding-right: var(--layout-pad);
-}
-
-/* Header — fixed lang switch slot on the right */
-.site-header {
- position: sticky;
- top: 0;
- z-index: 50;
- height: var(--header-h);
- background: rgba(250, 252, 255, 0.86);
- border-bottom: 1px solid var(--border);
- backdrop-filter: blur(16px) saturate(1.25);
-}
-
-.site-header__bar {
- height: var(--header-h);
- display: grid;
- grid-template-columns: auto 1fr auto;
- align-items: center;
- gap: 20px;
-}
-
-.brand {
- display: flex;
- align-items: center;
- gap: 10px;
- font-weight: 650;
- font-size: 1.02rem;
- color: var(--text);
- text-decoration: none;
- white-space: nowrap;
-}
-
-.brand:hover {
- text-decoration: none;
-}
-
-.brand img {
- width: 34px;
- height: 34px;
- border-radius: 8px;
- box-shadow: 0 4px 14px rgba(0, 113, 227, 0.22);
-}
-
-.site-nav {
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- gap: 6px 20px;
- font-size: 0.92rem;
-}
-
-.site-nav a {
- color: var(--muted);
-}
-
-.site-nav a[aria-current="page"] {
- color: var(--text);
- font-weight: 600;
-}
-
-.lang-switch {
- display: inline-flex;
- align-items: center;
- padding: 4px;
- border-radius: 999px;
- background: rgba(0, 0, 0, 0.05);
- border: 1px solid var(--border);
- flex-shrink: 0;
-}
-
-.lang-switch a {
- display: inline-block;
- padding: 6px 14px;
- border-radius: 999px;
- font-size: 0.82rem;
- font-weight: 600;
- color: var(--muted);
- text-decoration: none;
-}
-
-.lang-switch a:hover {
- text-decoration: none;
- color: var(--text);
-}
-
-.lang-switch a.is-active {
- background: var(--bg-elevated);
- color: var(--text);
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
-}
-
-.sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- padding: 0;
- margin: -1px;
- overflow: hidden;
- clip: rect(0, 0, 0, 0);
- white-space: nowrap;
- border: 0;
-}
-
-.lang-switch--select {
- padding: 0;
- background: rgba(0, 0, 0, 0.045);
-}
-
-.language-select {
- max-width: 150px;
- min-height: 36px;
- padding: 6px 30px 6px 12px;
- border: 0;
- border-radius: 999px;
- color: var(--text);
- background: transparent;
- font: inherit;
- font-size: 0.86rem;
- font-weight: 650;
-}
-
-.language-select:focus-visible {
- outline: 2px solid rgba(0, 113, 227, 0.42);
- outline-offset: 2px;
-}
-
-/* Legacy floating hero icon — must not appear */
-.icon-float,
-.icon-orb {
- display: none !important;
-}
-
-.page-home .site-header {
- background: #ffffff;
-}
-
-/* Hero — copy left, original design visual right (compact, no forced full-screen) */
-.hero {
- width: 100%;
- padding: 40px 0 48px;
- background: var(--hero-bg);
- overflow: hidden;
-}
-
-.hero__split {
- display: grid;
- grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
- gap: 12px 32px;
- align-items: center;
-}
-
-.hero__copy {
- padding: 8px 0;
-}
-
-.hero__headline {
- margin: 0;
- font-size: clamp(2rem, 4.8vw, 3.15rem);
- font-weight: 800;
- letter-spacing: 0;
- line-height: 1.1;
- color: #000;
- overflow-wrap: anywhere;
-}
-
-.hero__headline span {
- display: block;
-}
-
-.hero__lead {
- margin: 28px 0 0;
- font-size: clamp(1rem, 1.7vw, 1.2rem);
- line-height: 1.7;
- color: #1d1d1f;
- max-width: 22em;
-}
-
-/* Right art: user-provided hero visual (black bg removed → white) */
-.hero__art {
- margin: 0;
- line-height: 0;
- display: flex;
- align-items: center;
- justify-content: flex-end;
- background: var(--hero-bg);
-}
-
-.hero__art img {
- display: block;
- width: 100%;
- max-width: 100%;
- height: auto;
- background: var(--hero-bg);
- border: 0;
-}
-
-/* Second screen — 4 view modes */
-.views {
- padding: 56px 0 64px;
- background: var(--section-blue);
-}
-
-.views__split {
- display: grid;
- grid-template-columns: minmax(0, 1.02fr) minmax(0, 0.98fr);
- gap: 28px 48px;
- align-items: start;
-}
-
-.views__gallery {
- display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 12px;
- max-width: 500px;
- justify-self: start;
-}
-
-.views__shot {
- margin: 0;
- aspect-ratio: 720 / 450;
- border-radius: 12px;
- overflow: hidden;
- line-height: 0;
- background: #f5f5f7;
- box-shadow: 0 10px 28px rgba(30, 45, 90, 0.1);
- border: 1px solid rgba(0, 0, 0, 0.06);
-}
-
-.views__shot img {
- display: block;
- width: 100%;
- height: 100%;
- object-fit: cover;
- object-position: center bottom;
-}
-
-.views__headline {
- margin: 0;
- font-size: clamp(1.85rem, 3.8vw, 2.7rem);
- font-weight: 800;
- letter-spacing: 0;
- line-height: 1.12;
- color: #000;
-}
-
-.views__lead {
- margin: 22px 0 0;
- font-size: clamp(0.98rem, 1.55vw, 1.1rem);
- line-height: 1.75;
- color: #6e6e73;
- max-width: 26em;
-}
-
-.views__rule {
- margin: 30px 0 22px;
- border: 0;
- height: 1px;
- background: linear-gradient(90deg, rgba(99, 102, 241, 0.5), rgba(99, 102, 241, 0.06));
-}
-
-.views__label {
- margin: 0 0 16px;
- font-size: 0.94rem;
- color: #86868b;
-}
-
-.views__details {
- display: grid;
- grid-template-columns: minmax(190px, 1fr) max-content;
- gap: 20px 34px;
- align-items: end;
-}
-
-.views__modes {
- list-style: none;
- margin: 0;
- padding: 0;
- display: grid;
- gap: 12px;
-}
-
-.views__modes li {
- position: relative;
- padding-left: 22px;
- font-size: 1.04rem;
- font-weight: 500;
- color: #1d1d1f;
-}
-
-.views__modes li::before {
- content: "";
- position: absolute;
- left: 0;
- top: 0.58em;
- width: 8px;
- height: 8px;
- border-radius: 50%;
- background: var(--accent);
-}
-
-.views__shortcut {
- display: inline-flex;
- flex-direction: column;
- gap: 6px;
- margin-top: 0;
- flex-shrink: 0;
- padding: 12px 18px;
- border-radius: 14px;
- background: #f5f5f7;
- border: 1px solid var(--border);
-}
-
-.views__shortcut-label {
- font-size: 0.8rem;
- color: #86868b;
-}
-
-.views__shortcut-keys {
- font-size: 1.02rem;
- font-weight: 650;
- letter-spacing: 0.01em;
-}
-
-/* Third screen — tag management */
-.tags {
- padding: 56px 0 64px;
- background: var(--section-lilac);
-}
-
-.tags__split {
- display: grid;
- grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
- gap: 28px 48px;
- align-items: center;
-}
-
-.tags__headline {
- margin: 0;
- font-size: clamp(1.85rem, 3.8vw, 2.7rem);
- font-weight: 800;
- letter-spacing: 0;
- line-height: 1.12;
- color: #000;
-}
-
-.tags__points {
- list-style: none;
- margin: 28px 0 0;
- padding: 0;
- display: grid;
- gap: 18px;
- max-width: 28em;
-}
-
-.tags__points li {
- position: relative;
- padding-left: 22px;
- font-size: clamp(0.98rem, 1.55vw, 1.1rem);
- line-height: 1.75;
- color: #1d1d1f;
-}
-
-.tags__points li::before {
- content: "";
- position: absolute;
- left: 0;
- top: 0.72em;
- width: 8px;
- height: 8px;
- border-radius: 50%;
- background: var(--accent);
-}
-
-.tags__points strong {
- font-weight: 700;
- color: #000;
-}
-
-.tags__art {
- margin: 0;
- aspect-ratio: 880 / 552;
- line-height: 0;
- justify-self: end;
- max-width: 540px;
- width: 100%;
- border-radius: 12px;
- overflow: hidden;
- background: #f5f5f7;
- box-shadow: 0 10px 28px rgba(30, 45, 90, 0.1);
- border: 1px solid rgba(0, 0, 0, 0.06);
-}
-
-.tags__art img {
- display: block;
- width: 100%;
- height: 100%;
- object-fit: cover;
- object-position: center bottom;
-}
-
-/* Fourth screen — app memos */
-.memo {
- padding: 56px 0 64px;
- background: var(--section-mint);
-}
-
-.memo__split {
- display: grid;
- grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
- gap: 28px 48px;
- align-items: center;
-}
-
-.memo__art {
- margin: 0;
- aspect-ratio: 880 / 552;
- line-height: 0;
- justify-self: start;
- max-width: 540px;
- width: 100%;
- border-radius: 12px;
- overflow: hidden;
- background: #f5f5f7;
- box-shadow: 0 10px 28px rgba(30, 45, 90, 0.1);
- border: 1px solid rgba(0, 0, 0, 0.06);
-}
-
-.memo__art img {
- display: block;
- width: 100%;
- height: 100%;
- object-fit: cover;
- object-position: center bottom;
-}
-
-.memo__headline {
- margin: 0;
- font-size: clamp(1.85rem, 3.8vw, 2.7rem);
- font-weight: 800;
- letter-spacing: 0;
- line-height: 1.12;
- color: #000;
-}
-
-.memo__lead {
- margin: 22px 0 0;
- font-size: clamp(0.98rem, 1.55vw, 1.1rem);
- line-height: 1.75;
- color: #6e6e73;
- max-width: 22em;
-}
-
-/* Fifth screen — global Quick Search */
-.search {
- padding: 56px 0 64px;
- background: var(--section-lilac);
-}
-
-.search__split {
- display: grid;
- grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
- gap: 28px 48px;
- align-items: center;
-}
-
-.search__headline {
- margin: 0;
- font-size: clamp(1.85rem, 3.8vw, 2.7rem);
- font-weight: 800;
- letter-spacing: 0;
- line-height: 1.12;
- color: #000;
-}
-
-.search__lead {
- margin: 22px 0 0;
- font-size: clamp(0.98rem, 1.55vw, 1.1rem);
- line-height: 1.75;
- color: #6e6e73;
- max-width: 24em;
-}
-
-.search__tagline {
- margin: 16px 0 0;
- font-size: clamp(0.98rem, 1.55vw, 1.1rem);
- line-height: 1.75;
- color: #1d1d1f;
- font-weight: 500;
- max-width: 24em;
-}
-
-.search__shortcut {
- margin-top: 32px;
- display: inline-flex;
- flex-direction: column;
- gap: 6px;
- padding: 14px 20px;
- border-radius: 14px;
- background: #f5f5f7;
- border: 1px solid var(--border);
-}
-
-.search__shortcut-label {
- font-size: 0.8rem;
- color: #86868b;
-}
-
-.search__shortcut-keys {
- font-size: 1.02rem;
- font-weight: 650;
- letter-spacing: 0.01em;
-}
-
-.search__art {
- margin: 0;
- line-height: 0;
- justify-self: end;
- max-width: 500px;
- width: 100%;
- border-radius: 0;
- overflow: visible;
- background: transparent;
- box-shadow: none;
- border: 0;
-}
-
-.search__art img {
- display: block;
- width: 100%;
- height: auto;
- filter: drop-shadow(0 14px 28px rgba(30, 45, 90, 0.12));
-}
-
-/* Sixth screen — backup & restore */
-.backup {
- padding: 56px 0 64px;
- background: var(--section-blue);
-}
-
-.backup__split {
- display: grid;
- grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
- gap: 28px 48px;
- align-items: center;
-}
-
-.backup__art {
- margin: 0;
- line-height: 0;
- justify-self: start;
- max-width: 540px;
- width: 100%;
- border-radius: 12px;
- overflow: hidden;
- background: #f5f5f7;
- box-shadow: 0 10px 28px rgba(30, 45, 90, 0.1);
- border: 1px solid rgba(0, 0, 0, 0.06);
-}
-
-.backup__art img {
- display: block;
- width: 100%;
- height: auto;
-}
-
-.backup__headline {
- margin: 0;
- font-size: clamp(1.85rem, 3.8vw, 2.7rem);
- font-weight: 800;
- letter-spacing: 0;
- line-height: 1.12;
- color: #000;
-}
-
-.backup__lead {
- margin: 22px 0 0;
- font-size: clamp(0.98rem, 1.55vw, 1.1rem);
- line-height: 1.75;
- color: #1d1d1f;
- max-width: 24em;
-}
-
-.backup__lead strong {
- font-weight: 700;
- color: #000;
-}
-
-/* Seventh screen — offline & privacy */
-.privacy {
- padding: 56px 0 64px;
- background: var(--section-mint);
-}
-
-.privacy__split {
- display: grid;
- grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
- gap: 28px 48px;
- align-items: center;
-}
-
-.privacy__headline {
- margin: 0;
- font-size: clamp(2rem, 4.2vw, 3rem);
- font-weight: 800;
- letter-spacing: 0;
- line-height: 1.08;
- color: #000;
-}
-
-.privacy__lead {
- margin: 24px 0 0;
- font-size: clamp(1rem, 1.6vw, 1.15rem);
- line-height: 1.75;
- color: #1d1d1f;
- max-width: 26em;
-}
-
-.privacy__feature {
- margin-top: 28px;
-}
-
-.privacy__feature-title {
- margin: 0;
- font-size: 1.08rem;
- font-weight: 700;
- color: #000;
- display: flex;
- align-items: center;
- gap: 8px;
-}
-
-.privacy__feature-title--accent {
- color: #1d1d1f;
-}
-
-.privacy__feature-icon {
- width: 18px;
- height: 18px;
- border-radius: 50%;
- background: #34c759;
- display: inline-block;
- flex-shrink: 0;
- position: relative;
-}
-
-.privacy__feature-icon::after {
- content: "";
- position: absolute;
- left: 5px;
- top: 4px;
- width: 5px;
- height: 8px;
- border-right: 2px solid #fff;
- border-bottom: 2px solid #fff;
- transform: rotate(40deg);
-}
-
-.privacy__feature-text {
- margin: 8px 0 0;
- font-size: 0.95rem;
- line-height: 1.7;
- color: #6e6e73;
- max-width: 28em;
-}
-
-.privacy__art {
- margin: 0;
- line-height: 0;
- justify-self: end;
- max-width: 340px;
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: center;
-}
-
-.privacy__art img {
- display: block;
- width: min(100%, 320px);
- height: auto;
- filter: drop-shadow(0 18px 36px rgba(60, 80, 140, 0.16));
-}
-
-/* Inner pages (support, privacy) */
-.page-main {
- padding: 56px 0 72px;
-}
-
-.card {
- background: var(--bg-elevated);
- border: 1px solid var(--border);
- border-radius: var(--radius);
- box-shadow: var(--shadow);
- padding: 28px 32px;
- margin-bottom: 22px;
-}
-
-.card h1,
-.card h2 {
- margin: 0 0 14px;
- font-size: 1.3rem;
- letter-spacing: 0;
-}
-
-/* Features + CTA — full-width white band */
-.features {
- padding: 56px 0 72px;
- background: linear-gradient(180deg, #ffffff 0%, #f7f9ff 100%);
-}
-
-.features__headline {
- margin: 0 0 24px;
- font-size: 1.3rem;
- letter-spacing: 0;
-}
-
-.features__cta {
- margin-top: 40px;
- text-align: center;
-}
-
-.features__cta p {
- margin: 0 0 16px;
- color: var(--muted);
-}
-
-.feature-grid {
- display: grid;
- grid-template-columns: repeat(3, minmax(0, 1fr));
- gap: 12px;
-}
-
-.feature {
- padding: 15px 17px;
- border-radius: 8px;
- background: #f8f9fd;
- border: 1px solid var(--border);
-}
-
-.feature strong {
- display: block;
- margin-bottom: 5px;
-}
-
-.cta-row {
- display: flex;
- flex-wrap: wrap;
- gap: 12px;
- justify-content: center;
-}
-
-.btn {
- display: inline-block;
- padding: 11px 22px;
- border-radius: 999px;
- font-weight: 600;
- font-size: 0.94rem;
-}
-
-.btn-primary {
- background: var(--accent);
- color: #fff;
- box-shadow: 0 8px 24px rgba(0, 113, 227, 0.28);
-}
-
-.btn-primary:hover {
- background: var(--accent-hover);
- text-decoration: none;
- color: #fff;
-}
-
-.btn-secondary {
- background: var(--bg-elevated);
- color: var(--text);
- border: 1px solid var(--border);
-}
-
-.btn-secondary:hover {
- text-decoration: none;
-}
-
-.site-footer {
- padding: 28px 0 48px;
- border-top: 1px solid var(--border);
- text-align: center;
- font-size: 0.88rem;
- color: var(--muted);
-}
-
-.site-footer p {
- margin: 0 0 8px;
-}
-
-.prose h1 {
- margin-top: 0;
-}
-
-.prose h2 {
- margin-top: 1.5em;
-}
-
-.prose h3 {
- margin-top: 1.2em;
-}
-
-kbd {
- display: inline-block;
- padding: 2px 7px;
- border-radius: 6px;
- font-size: 0.82em;
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
- background: #f0f2f8;
- border: 1px solid var(--border);
-}
-
-@media (max-width: 860px) {
- .site-header {
- height: auto;
- }
-
- .site-header__bar {
- grid-template-columns: auto auto;
- grid-template-rows: auto auto;
- height: auto;
- min-height: var(--header-h);
- gap: 8px 14px;
- padding-top: 8px;
- padding-bottom: 10px;
- }
-
- .site-nav {
- grid-column: 1 / -1;
- justify-content: flex-start;
- order: 3;
- }
-
- .lang-switch {
- grid-column: 2;
- grid-row: 1;
- justify-self: end;
- }
-
- .hero__split {
- grid-template-columns: 1fr;
- min-height: auto;
- gap: 32px;
- }
-
- .hero__art {
- justify-content: center;
- }
-
- .views__split {
- grid-template-columns: 1fr;
- gap: 36px;
- }
-
- .views__gallery {
- max-width: 100%;
- justify-self: center;
- }
-
- .views__copy {
- max-width: 36em;
- }
-
- .views__details {
- grid-template-columns: 1fr;
- gap: 24px;
- }
-
- .views__shortcut {
- justify-self: start;
- }
-
- .tags__split {
- grid-template-columns: 1fr;
- gap: 36px;
- }
-
- .tags__art {
- justify-self: center;
- max-width: 100%;
- }
-
- .memo__split {
- grid-template-columns: 1fr;
- gap: 36px;
- }
-
- .memo__art {
- justify-self: center;
- max-width: 100%;
- }
-
- .search__split {
- grid-template-columns: 1fr;
- gap: 36px;
- }
-
- .search__art {
- justify-self: center;
- max-width: 100%;
- }
-
- .backup__split {
- grid-template-columns: 1fr;
- gap: 36px;
- }
-
- .backup__art {
- justify-self: center;
- max-width: 100%;
- }
-
- .privacy__split {
- grid-template-columns: 1fr;
- gap: 36px;
- }
-
- .privacy__art {
- justify-self: center;
- }
-
- .feature-grid {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- }
-}
-
-@media (max-width: 560px) {
- :root {
- --layout-pad: 18px;
- }
-
- .hero {
- padding: 32px 0 48px;
- }
-
- .feature-grid {
- grid-template-columns: 1fr;
- }
-}
diff --git a/docs/support-ar.html b/docs/support-ar.html
deleted file mode 100644
index 85a8e11..0000000
--- a/docs/support-ar.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="ar" dir="rtl">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ar.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="اللغة">
- <a href="index-ar.html">الرئيسية</a>
- <a href="support-ar.html" aria-current="page">الدعم</a>
- <a href="privacy.html">الخصوصية</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">ملف المساعدة PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">اللغة</label>
- <select id="language-support" class="language-select" aria-label="اللغة" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html" selected>العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>ملف المساعدة PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">ملف المساعدة PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ar.html">الدعم</a>
- · <a href="privacy.html">الخصوصية</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-cs.html b/docs/support-cs.html
deleted file mode 100644
index 8b6dbdd..0000000
--- a/docs/support-cs.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="cs" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-cs.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Jazyk">
- <a href="index-cs.html">Domů</a>
- <a href="support-cs.html" aria-current="page">Podpora</a>
- <a href="privacy.html">Soukromí</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Nápověda PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Jazyk</label>
- <select id="language-support" class="language-select" aria-label="Jazyk" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html" selected>Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Nápověda PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Nápověda PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-cs.html">Podpora</a>
- · <a href="privacy.html">Soukromí</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-da.html b/docs/support-da.html
deleted file mode 100644
index 6c2870b..0000000
--- a/docs/support-da.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="da" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-da.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Sprog">
- <a href="index-da.html">Hjem</a>
- <a href="support-da.html" aria-current="page">Support</a>
- <a href="privacy.html">Privatliv</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjælp PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Sprog</label>
- <select id="language-support" class="language-select" aria-label="Sprog" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html" selected>Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Hjælp PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjælp PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-da.html">Support</a>
- · <a href="privacy.html">Privatliv</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-de.html b/docs/support-de.html
deleted file mode 100644
index 7c9e8c6..0000000
--- a/docs/support-de.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="de" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-de.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Sprache">
- <a href="index-de.html">Start</a>
- <a href="support-de.html" aria-current="page">Support</a>
- <a href="privacy.html">Datenschutz</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hilfe-PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Sprache</label>
- <select id="language-support" class="language-select" aria-label="Sprache" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html" selected>Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Hilfe-PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hilfe-PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-de.html">Support</a>
- · <a href="privacy.html">Datenschutz</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-en.html b/docs/support-en.html
deleted file mode 100644
index 12477ae..0000000
--- a/docs/support-en.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="en-US" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-en.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Language">
- <a href="index-en.html">Home</a>
- <a href="support-en.html" aria-current="page">Support</a>
- <a href="privacy.html">Privacy</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Help PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Language</label>
- <select id="language-support" class="language-select" aria-label="Language" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html" selected>English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Help PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Help PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-en.html">Support</a>
- · <a href="privacy.html">Privacy</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-es.html b/docs/support-es.html
deleted file mode 100644
index 68cc47b..0000000
--- a/docs/support-es.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="es-ES" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-es.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Idioma">
- <a href="index-es.html">Inicio</a>
- <a href="support-es.html" aria-current="page">Soporte</a>
- <a href="privacy.html">Privacidad</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ayuda PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Idioma</label>
- <select id="language-support" class="language-select" aria-label="Idioma" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html" selected>Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Ayuda PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ayuda PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-es.html">Soporte</a>
- · <a href="privacy.html">Privacidad</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-fr.html b/docs/support-fr.html
deleted file mode 100644
index 366a8fd..0000000
--- a/docs/support-fr.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="fr-FR" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-fr.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Langue">
- <a href="index-fr.html">Accueil</a>
- <a href="support-fr.html" aria-current="page">Assistance</a>
- <a href="privacy.html">Confidentialité</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Aide PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Langue</label>
- <select id="language-support" class="language-select" aria-label="Langue" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html" selected>Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Aide PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Aide PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-fr.html">Assistance</a>
- · <a href="privacy.html">Confidentialité</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-id.html b/docs/support-id.html
deleted file mode 100644
index 72e842b..0000000
--- a/docs/support-id.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="id" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-id.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Bahasa">
- <a href="index-id.html">Beranda</a>
- <a href="support-id.html" aria-current="page">Dukungan</a>
- <a href="privacy.html">Privasi</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF Bantuan</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Bahasa</label>
- <select id="language-support" class="language-select" aria-label="Bahasa" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html" selected>Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>PDF Bantuan</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF Bantuan</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-id.html">Dukungan</a>
- · <a href="privacy.html">Privasi</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-it.html b/docs/support-it.html
deleted file mode 100644
index 01c0cb1..0000000
--- a/docs/support-it.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="it" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-it.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Lingua">
- <a href="index-it.html">Home</a>
- <a href="support-it.html" aria-current="page">Supporto</a>
- <a href="privacy.html">Privacy</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Guida PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Lingua</label>
- <select id="language-support" class="language-select" aria-label="Lingua" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html" selected>Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Guida PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Guida PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-it.html">Supporto</a>
- · <a href="privacy.html">Privacy</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-ja.html b/docs/support-ja.html
deleted file mode 100644
index 2b96cda..0000000
--- a/docs/support-ja.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="ja" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ja.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="言語">
- <a href="index-ja.html">ホーム</a>
- <a href="support-ja.html" aria-current="page">サポート</a>
- <a href="privacy.html">プライバシー</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">ヘルプPDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">言語</label>
- <select id="language-support" class="language-select" aria-label="言語" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html" selected>日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>ヘルプPDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">ヘルプPDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ja.html">サポート</a>
- · <a href="privacy.html">プライバシー</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-ko.html b/docs/support-ko.html
deleted file mode 100644
index 995dfb3..0000000
--- a/docs/support-ko.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="ko" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ko.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="언어">
- <a href="index-ko.html">홈</a>
- <a href="support-ko.html" aria-current="page">지원</a>
- <a href="privacy.html">개인정보</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">도움말 PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">언어</label>
- <select id="language-support" class="language-select" aria-label="언어" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html" selected>한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>도움말 PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">도움말 PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ko.html">지원</a>
- · <a href="privacy.html">개인정보</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-ms.html b/docs/support-ms.html
deleted file mode 100644
index d98b5e4..0000000
--- a/docs/support-ms.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="ms" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ms.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Bahasa">
- <a href="index-ms.html">Utama</a>
- <a href="support-ms.html" aria-current="page">Sokongan</a>
- <a href="privacy.html">Privasi</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF Bantuan</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Bahasa</label>
- <select id="language-support" class="language-select" aria-label="Bahasa" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html" selected>Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>PDF Bantuan</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF Bantuan</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ms.html">Sokongan</a>
- · <a href="privacy.html">Privasi</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-nl.html b/docs/support-nl.html
deleted file mode 100644
index 938d2a2..0000000
--- a/docs/support-nl.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="nl" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-nl.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Taal">
- <a href="index-nl.html">Home</a>
- <a href="support-nl.html" aria-current="page">Support</a>
- <a href="privacy.html">Privacy</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Help-pdf</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Taal</label>
- <select id="language-support" class="language-select" aria-label="Taal" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html" selected>Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Help-pdf</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Help-pdf</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-nl.html">Support</a>
- · <a href="privacy.html">Privacy</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-no.html b/docs/support-no.html
deleted file mode 100644
index 32d56e9..0000000
--- a/docs/support-no.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="no" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-no.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Språk">
- <a href="index-no.html">Hjem</a>
- <a href="support-no.html" aria-current="page">Støtte</a>
- <a href="privacy.html">Personvern</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjelp PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Språk</label>
- <select id="language-support" class="language-select" aria-label="Språk" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html" selected>Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Hjelp PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjelp PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-no.html">Støtte</a>
- · <a href="privacy.html">Personvern</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-pl.html b/docs/support-pl.html
deleted file mode 100644
index 72e59c2..0000000
--- a/docs/support-pl.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="pl" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-pl.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Język">
- <a href="index-pl.html">Start</a>
- <a href="support-pl.html" aria-current="page">Wsparcie</a>
- <a href="privacy.html">Prywatność</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Pomoc PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Język</label>
- <select id="language-support" class="language-select" aria-label="Język" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html" selected>Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Pomoc PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Pomoc PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-pl.html">Wsparcie</a>
- · <a href="privacy.html">Prywatność</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-pt-BR.html b/docs/support-pt-BR.html
deleted file mode 100644
index 7be60d9..0000000
--- a/docs/support-pt-BR.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="pt-BR" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-pt-BR.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Idioma">
- <a href="index-pt-BR.html">Início</a>
- <a href="support-pt-BR.html" aria-current="page">Suporte</a>
- <a href="privacy.html">Privacidade</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ajuda PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Idioma</label>
- <select id="language-support" class="language-select" aria-label="Idioma" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html" selected>Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Ajuda PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ajuda PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-pt-BR.html">Suporte</a>
- · <a href="privacy.html">Privacidade</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-ro.html b/docs/support-ro.html
deleted file mode 100644
index aef3137..0000000
--- a/docs/support-ro.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="ro" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ro.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Limbă">
- <a href="index-ro.html">Acasă</a>
- <a href="support-ro.html" aria-current="page">Suport</a>
- <a href="privacy.html">Confidențialitate</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ajutor PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Limbă</label>
- <select id="language-support" class="language-select" aria-label="Limbă" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html" selected>Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Ajutor PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Ajutor PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ro.html">Suport</a>
- · <a href="privacy.html">Confidențialitate</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-ru.html b/docs/support-ru.html
deleted file mode 100644
index 0c516c4..0000000
--- a/docs/support-ru.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="ru" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-ru.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Язык">
- <a href="index-ru.html">Главная</a>
- <a href="support-ru.html" aria-current="page">Поддержка</a>
- <a href="privacy.html">Конфиденциальность</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF-справка</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Язык</label>
- <select id="language-support" class="language-select" aria-label="Язык" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html" selected>Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>PDF-справка</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF-справка</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-ru.html">Поддержка</a>
- · <a href="privacy.html">Конфиденциальность</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-sv.html b/docs/support-sv.html
deleted file mode 100644
index f7cc301..0000000
--- a/docs/support-sv.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="sv" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-sv.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Språk">
- <a href="index-sv.html">Hem</a>
- <a href="support-sv.html" aria-current="page">Support</a>
- <a href="privacy.html">Integritet</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjälp-PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Språk</label>
- <select id="language-support" class="language-select" aria-label="Språk" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html" selected>Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Hjälp-PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Hjälp-PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-sv.html">Support</a>
- · <a href="privacy.html">Integritet</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-th.html b/docs/support-th.html
deleted file mode 100644
index 0426689..0000000
--- a/docs/support-th.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="th" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-th.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="ภาษา">
- <a href="index-th.html">หน้าแรก</a>
- <a href="support-th.html" aria-current="page">สนับสนุน</a>
- <a href="privacy.html">ความเป็นส่วนตัว</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF วิธีใช้</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">ภาษา</label>
- <select id="language-support" class="language-select" aria-label="ภาษา" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html" selected>ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>PDF วิธีใช้</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF วิธีใช้</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-th.html">สนับสนุน</a>
- · <a href="privacy.html">ความเป็นส่วนตัว</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-tr.html b/docs/support-tr.html
deleted file mode 100644
index 4167f97..0000000
--- a/docs/support-tr.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="tr" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-tr.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Dil">
- <a href="index-tr.html">Ana sayfa</a>
- <a href="support-tr.html" aria-current="page">Destek</a>
- <a href="privacy.html">Gizlilik</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Yardım PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Dil</label>
- <select id="language-support" class="language-select" aria-label="Dil" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html" selected>Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>Yardım PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">Yardım PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-tr.html">Destek</a>
- · <a href="privacy.html">Gizlilik</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-uk.html b/docs/support-uk.html
deleted file mode 100644
index f891ac9..0000000
--- a/docs/support-uk.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="uk" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-uk.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Мова">
- <a href="index-uk.html">Головна</a>
- <a href="support-uk.html" aria-current="page">Підтримка</a>
- <a href="privacy.html">Приватність</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF-довідка</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Мова</label>
- <select id="language-support" class="language-select" aria-label="Мова" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html" selected>Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>PDF-довідка</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF-довідка</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-uk.html">Підтримка</a>
- · <a href="privacy.html">Приватність</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-vi.html b/docs/support-vi.html
deleted file mode 100644
index a8dc35b..0000000
--- a/docs/support-vi.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="vi" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-vi.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="Ngôn ngữ">
- <a href="index-vi.html">Trang chủ</a>
- <a href="support-vi.html" aria-current="page">Hỗ trợ</a>
- <a href="privacy.html">Quyền riêng tư</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF trợ giúp</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">Ngôn ngữ</label>
- <select id="language-support" class="language-select" aria-label="Ngôn ngữ" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html" selected>Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>PDF trợ giúp</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-en.pdf" rel="noopener" type="application/pdf">PDF trợ giúp</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-vi.html">Hỗ trợ</a>
- · <a href="privacy.html">Quyền riêng tư</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support-zh-Hant.html b/docs/support-zh-Hant.html
deleted file mode 100644
index d902f75..0000000
--- a/docs/support-zh-Hant.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-Hant" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>Support — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index-zh-Hant.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="語言">
- <a href="index-zh-Hant.html">首頁</a>
- <a href="support-zh-Hant.html" aria-current="page">支援</a>
- <a href="privacy.html">隱私權政策</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-zh.pdf" rel="noopener" type="application/pdf">說明 PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">語言</label>
- <select id="language-support" class="language-select" aria-label="語言" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html">简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html" selected>繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>Support</h1>
- <p>
- <strong>Current version:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>System requirement:</strong> macOS 14.0+
- </p>
-
- <h2>Contact</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>Please include your macOS version and TagLauncher version when contacting support. We usually reply within a few business days.</p>
-
- <h2>Default shortcuts</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>說明 PDF</h2>
- <p>The About panel opens the help PDF for the current interface language. You can also download it directly:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-zh.pdf" rel="noopener" type="application/pdf">說明 PDF</a></p>
-
- <h2>FAQ</h2>
- <h3>App Grid stays on a loading spinner?</h3>
- <p>Update to TagLauncher 7.9.1 or later. If it still happens, quit TagLauncher completely, reopen it, and check layout backups in Settings > Data.</p>
- <h3>How do I back up categories and layouts?</h3>
- <p>Open Settings > Data > Export Categories & Layout, save the JSON file, then use Import to restore it on another Mac.</p>
- <h3>Can one app belong to multiple tags?</h3>
- <p>Yes. This is a main difference between TagLauncher and Launchpad folders.</p>
- <h3>Does TagLauncher upload data to the cloud?</h3>
- <p>No. Categories, tags, order, and notes stay on your Mac.</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support-zh-Hant.html">支援</a>
- · <a href="privacy.html">隱私權政策</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/docs/support.html b/docs/support.html
deleted file mode 100644
index 5895d66..0000000
--- a/docs/support.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html>
-<html lang="zh-Hans" dir="ltr">
-<head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>支持 — TagLauncher</title>
- <meta name="description" content="TagLauncher support, shortcuts, FAQ, contact email, and help PDF.">
- <link rel="stylesheet" href="styles.css">
- <link rel="alternate" hreflang="zh-Hans" href="support.html">
- <link rel="alternate" hreflang="en-US" href="support-en.html">
- <link rel="alternate" hreflang="ar" href="support-ar.html">
- <link rel="alternate" hreflang="cs" href="support-cs.html">
- <link rel="alternate" hreflang="da" href="support-da.html">
- <link rel="alternate" hreflang="de" href="support-de.html">
- <link rel="alternate" hreflang="es-ES" href="support-es.html">
- <link rel="alternate" hreflang="fr-FR" href="support-fr.html">
- <link rel="alternate" hreflang="id" href="support-id.html">
- <link rel="alternate" hreflang="it" href="support-it.html">
- <link rel="alternate" hreflang="ja" href="support-ja.html">
- <link rel="alternate" hreflang="ko" href="support-ko.html">
- <link rel="alternate" hreflang="ms" href="support-ms.html">
- <link rel="alternate" hreflang="no" href="support-no.html">
- <link rel="alternate" hreflang="nl" href="support-nl.html">
- <link rel="alternate" hreflang="pl" href="support-pl.html">
- <link rel="alternate" hreflang="pt-BR" href="support-pt-BR.html">
- <link rel="alternate" hreflang="ro" href="support-ro.html">
- <link rel="alternate" hreflang="ru" href="support-ru.html">
- <link rel="alternate" hreflang="sv" href="support-sv.html">
- <link rel="alternate" hreflang="th" href="support-th.html">
- <link rel="alternate" hreflang="tr" href="support-tr.html">
- <link rel="alternate" hreflang="uk" href="support-uk.html">
- <link rel="alternate" hreflang="vi" href="support-vi.html">
- <link rel="alternate" hreflang="zh-Hant" href="support-zh-Hant.html">
-</head>
-<body>
- <header class="site-header">
- <div class="layout site-header__bar">
- <a class="brand" href="index.html">
- <img src="assets/app-icon-256.png" width="34" height="34" alt="">
- TagLauncher
- </a>
- <nav class="site-nav" aria-label="语言">
- <a href="index.html">首页</a>
- <a href="support.html" aria-current="page">支持</a>
- <a href="privacy-zh.html">隐私政策</a>
- <a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-zh.pdf" rel="noopener" type="application/pdf">帮助 PDF</a>
- </nav>
- <div class="lang-switch lang-switch--select">
- <label class="sr-only" for="language-support">语言</label>
- <select id="language-support" class="language-select" aria-label="语言" onchange="if (this.value) window.location.href=this.value">
- <option value="support.html" selected>简体中文</option><option value="support-en.html">English</option><option value="support-ar.html">العربية</option><option value="support-cs.html">Čeština</option><option value="support-da.html">Dansk</option><option value="support-de.html">Deutsch</option><option value="support-es.html">Español</option><option value="support-fr.html">Français</option><option value="support-id.html">Indonesia</option><option value="support-it.html">Italiano</option><option value="support-ja.html">日本語</option><option value="support-ko.html">한국어</option><option value="support-ms.html">Melayu</option><option value="support-no.html">Norsk</option><option value="support-nl.html">Nederlands</option><option value="support-pl.html">Polski</option><option value="support-pt-BR.html">Português (BR)</option><option value="support-ro.html">Română</option><option value="support-ru.html">Русский</option><option value="support-sv.html">Svenska</option><option value="support-th.html">ไทย</option><option value="support-tr.html">Türkçe</option><option value="support-uk.html">Українська</option><option value="support-vi.html">Tiếng Việt</option><option value="support-zh-Hant.html">繁體中文</option>
- </select>
- </div>
- </div>
- </header>
-
- <main class="page-main">
- <div class="layout prose">
- <article class="card">
- <h1>支持</h1>
- <p>
- <strong>当前版本:</strong> 7.9.1 (Build 20260613.2020)<br>
- <strong>系统要求:</strong> macOS 14.0+
- </p>
-
- <h2>联系</h2>
- <p>Email: <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a></p>
- <p>发邮件时请说明 macOS 版本与 TagLauncher 版本号。我们通常会在几个工作日内回复。</p>
-
- <h2>默认快捷键</h2>
- <ul>
- <li><kbd>Option</kbd> + <kbd>Shift</kbd> + <kbd>Space</kbd> — App Grid</li>
- <li><kbd>Space</kbd> — Quick Search inside App Grid</li>
- <li><kbd>Fn</kbd> + <kbd>Space</kbd> — Global Quick Search</li>
- <li><kbd>Esc</kbd> — Close Quick Search or App Grid</li>
- <li><kbd>Command</kbd> + <kbd>,</kbd> — Settings</li>
- </ul>
-
- <h2>帮助 PDF</h2>
- <p>应用内关于面板会打开与当前界面语言匹配的帮助 PDF。也可以直接下载帮助文档:</p>
- <p><a href="https://github.com/shanghai3168/taglauncher/releases/download/v7.6.0/Taglauncher-help-zh.pdf" rel="noopener" type="application/pdf">帮助 PDF</a></p>
-
- <h2>常见问题</h2>
- <h3>应用网格一直转圈?</h3>
- <p>请更新到 7.9.1 或更高版本。若仍出现,完全退出 TagLauncher 后重新打开,并检查数据页的布局备份。</p>
- <h3>如何备份分类与布局?</h3>
- <p>打开设置 > 数据 > 导出分类与布局,保存 JSON 文件。换机或重装后用导入恢复。</p>
- <h3>一个应用能属于多个标签吗?</h3>
- <p>可以。这正是 TagLauncher 和 Launchpad 文件夹模型的主要区别。</p>
- <h3>数据会上传到云端吗?</h3>
- <p>不会。分类、标签、排序和备注都保存在本机。</p>
- </article>
- </div>
- </main>
-
- <footer class="site-footer">
- <div class="layout">
- <p>
- <a href="mailto:shanghai3168@gmail.com">shanghai3168@gmail.com</a>
- · <a href="support.html">支持</a>
- · <a href="privacy-zh.html">隐私政策</a>
- </p>
- <p>© 2026 TagLauncher · Hainan Wanxing Technology Co., Ltd. (海南万幸科技有限公司)</p>
- </div>
- </footer>
-</body>
-</html>
diff --git a/readme.md b/readme.md
index bb2ecc7..c919aaa 100644
--- a/readme.md
+++ b/readme.md
@@ -14,6 +14,12 @@
- Do not create sibling source folders such as `/Users/ar/Projects/Taglauncher-*-source`.
+## Project Knowledge
+
+- Non-source documents, website/archive material, canvases, and Codex session history are kept outside this source worktree under `/Users/ar/Projects/Taglauncher-doc/`.
+- Current repo-adjacent documents moved out of the source worktree are under `/Users/ar/Projects/Taglauncher-doc/RepoWorkspace/Docs/`.
+- Codex session history is under `/Users/ar/Projects/Taglauncher-doc/chat-history/codex-sessionhistory/`.
+
## Website
- Home: https://shanghai3168.github.io/taglauncher/
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/01-hero-launcher--2560x1600.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/01-hero-launcher--2560x1600.png
deleted file mode 100644
index d4bb57a..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/01-hero-launcher--2560x1600.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/02-four-views-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/02-four-views-2880x1800.png
deleted file mode 100644
index 8622cb9..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/02-four-views-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/03-multi-tag-system-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/03-multi-tag-system-2880x1800.png
deleted file mode 100644
index abb4564..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/03-multi-tag-system-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/04-quick-search-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/04-quick-search-2880x1800.png
deleted file mode 100644
index 49425c6..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/04-quick-search-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/05-app-notes-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/05-app-notes-2880x1800.png
deleted file mode 100644
index 272e345..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/05-app-notes-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/06-private-offline-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/06-private-offline-2880x1800.png
deleted file mode 100644
index 0d159c1..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/06-private-offline-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/_contact-sheet.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/_contact-sheet.png
deleted file mode 100644
index b9f5abe..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/en/_contact-sheet.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/01-hero-launcher--2560x1600.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/01-hero-launcher--2560x1600.png
deleted file mode 100644
index 42ea756..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/01-hero-launcher--2560x1600.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/02-four-views-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/02-four-views-2880x1800.png
deleted file mode 100644
index 99fb39a..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/02-four-views-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/03-multi-tag-system-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/03-multi-tag-system-2880x1800.png
deleted file mode 100644
index 718c883..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/03-multi-tag-system-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/04-quick-search-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/04-quick-search-2880x1800.png
deleted file mode 100644
index d91fe49..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/04-quick-search-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/05-app-notes-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/05-app-notes-2880x1800.png
deleted file mode 100644
index 428f2b6..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/05-app-notes-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/06-private-offline-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/06-private-offline-2880x1800.png
deleted file mode 100644
index 2d2933c..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/06-private-offline-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/_contact-sheet.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/_contact-sheet.png
deleted file mode 100644
index 9b21fad..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore-Marketing/zh-Hans/_contact-sheet.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep
deleted file mode 100644
index e69de29..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/.gitkeep
+++ /dev/null
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png
deleted file mode 100644
index cce1776..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-01-SCR-20260604-jwdv-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png
deleted file mode 100644
index dfa585d..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-02-SCR-20260604-jwen-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png
deleted file mode 100644
index e7ac50c..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-03-SCR-20260604-jwgb-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png
deleted file mode 100644
index 7eefd03..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-04-SCR-20260604-jwgq-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png
deleted file mode 100644
index 9458988..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-05-SCR-20260604-jwhd-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png
deleted file mode 100644
index 8070a63..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-06-SCR-20260604-jwic-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png
deleted file mode 100644
index d01d4b4..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-07-SCR-20260604-jwji-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png
deleted file mode 100644
index a14b151..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/AppStore/mac-08-SCR-20260604-jwkh-2880x1800.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md
deleted file mode 100644
index 255faa7..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/SCREENSHOT_SHOT_LIST.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Screenshot Shot List
-
-## 上传目录
-
-`Screenshots/AppStore/`
-
-## 文件
-
-1. `mac-01-SCR-20260604-jwdv-2880x1800.png`
-2. `mac-02-SCR-20260604-jwen-2880x1800.png`
-3. `mac-03-SCR-20260604-jwgb-2880x1800.png`
-4. `mac-04-SCR-20260604-jwgq-2880x1800.png`
-5. `mac-05-SCR-20260604-jwhd-2880x1800.png`
-6. `mac-06-SCR-20260604-jwic-2880x1800.png`
-7. `mac-07-SCR-20260604-jwji-2880x1800.png`
-8. `mac-08-SCR-20260604-jwkh-2880x1800.png`
-
-## 规格
-
-- 2880 x 1800
-- PNG
-- Mac 16:10
-
-## 7.8.15 说明
-
-7.8.15 为 App Grid 加载修复,UI 无变化,沿用 7.8.14 截图,无需重新截屏。
\ No newline at end of file
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png
deleted file mode 100644
index 07ea6f0..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwdv.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png
deleted file mode 100644
index 2f538ff..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwen.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png
deleted file mode 100644
index ea15cc2..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgb.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png
deleted file mode 100644
index 4373e26..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwgq.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png
deleted file mode 100644
index 28b2260..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwhd.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png
deleted file mode 100644
index 049de8e..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwic.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png
deleted file mode 100644
index 70b97e3..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwji.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png
deleted file mode 100644
index fd61666..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/raw/SCR-20260604-jwkh.png
+++ /dev/null
Binary files differ
diff --git a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/render_marketing_screenshots.py b/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/render_marketing_screenshots.py
deleted file mode 100644
index eb089b2..0000000
--- a/src/Release/AppStore-7.8.15-20260605.2337/Screenshots/render_marketing_screenshots.py
+++ /dev/null
@@ -1,514 +0,0 @@
-from pathlib import Path
-from collections import deque
-from PIL import Image, ImageChops, ImageDraw, ImageFont, ImageFilter, ImageOps
-
-
-W, H = 2880, 1800
-ROOT = Path("/Users/ar/Projects/Taglauncher")
-ASSETS = ROOT / "docs" / "assets"
-RELEASE = Path("/Users/ar/Projects/Taglauncher-7.8.15-source/Release/AppStore-7.8.15-20260605.2337")
-OUT = RELEASE / "Screenshots" / "AppStore-Marketing" / "en"
-OUT_ZH = RELEASE / "Screenshots" / "AppStore-Marketing" / "zh-Hans"
-
-FONT_REG = "/System/Library/Fonts/SFNS.ttf"
-FONT_BOLD = "/System/Library/Fonts/Supplemental/Arial Bold.ttf"
-FONT_BLACK = "/System/Library/Fonts/Supplemental/Arial Black.ttf"
-FONT_MONO = "/System/Library/Fonts/SFNSMono.ttf"
-FONT_CJK = "/System/Library/Fonts/STHeiti Medium.ttc"
-
-
-def f(size, bold=False, black=False, mono=False, cjk=False):
- path = FONT_CJK if cjk else FONT_MONO if mono else FONT_BLACK if black else FONT_BOLD if bold else FONT_REG
- return ImageFont.truetype(path, size)
-
-
-def rgba(c):
- if len(c) == 4:
- return c
- return (*c, 255)
-
-
-def lerp(a, b, t):
- return int(a + (b - a) * t)
-
-
-def gradient(seed=0):
- palettes = [
- ((248, 251, 255), (243, 248, 246), [(90, 150, 255), (92, 210, 150), (255, 118, 168)]),
- ((250, 252, 255), (247, 246, 255), [(107, 142, 255), (255, 137, 182), (112, 215, 160)]),
- ((250, 252, 249), (245, 250, 255), [(96, 215, 151), (104, 164, 255), (255, 174, 92)]),
- ((251, 252, 255), (246, 250, 248), [(94, 175, 255), (255, 128, 160), (124, 214, 132)]),
- ((252, 251, 255), (247, 251, 252), [(115, 142, 255), (104, 219, 177), (255, 199, 92)]),
- ((250, 252, 255), (246, 249, 246), [(80, 210, 150), (120, 155, 255), (255, 130, 150)]),
- ]
- top, bottom, accents = palettes[seed % len(palettes)]
- small = Image.new("RGBA", (360, 225), top + (255,))
- pix = small.load()
- for y in range(small.height):
- t = y / (small.height - 1)
- for x in range(small.width):
- side = x / (small.width - 1)
- c = tuple(lerp(top[i], bottom[i], t * 0.85 + side * 0.15) for i in range(3))
- pix[x, y] = (*c, 255)
- base = small.resize((W, H), Image.Resampling.BICUBIC)
- spots = [
- (-260, -180, 1050, accents[0], 44),
- (W - 720, 100, 1100, accents[1], 36),
- (W // 2 - 360, H - 560, 980, accents[2], 30),
- ]
- for x, y, size, color, alpha in spots:
- layer = Image.new("RGBA", (W, H), (0, 0, 0, 0))
- d = ImageDraw.Draw(layer)
- d.ellipse((x, y, x + size, y + size), fill=(*color, alpha))
- layer = layer.filter(ImageFilter.GaussianBlur(size // 4))
- base = Image.alpha_composite(base, layer)
- return base
-
-
-def shadow(base, xywh, radius=50, blur=54, offset=(0, 34), alpha=48):
- x, y, w, h = xywh
- layer = Image.new("RGBA", base.size, (0, 0, 0, 0))
- m = Image.new("L", base.size, 0)
- d = ImageDraw.Draw(m)
- ox, oy = offset
- d.rounded_rectangle((x + ox, y + oy, x + w + ox, y + h + oy), radius, fill=alpha)
- m = m.filter(ImageFilter.GaussianBlur(blur))
- layer.paste((28, 38, 58, 255), (0, 0), m)
- return Image.alpha_composite(base, layer)
-
-
-def round_mask(size, radius):
- m = Image.new("L", size, 0)
- d = ImageDraw.Draw(m)
- d.rounded_rectangle((0, 0, size[0], size[1]), radius, fill=255)
- return m
-
-
-def crop_alpha(im):
- im = im.convert("RGBA")
- if im.getbands()[-1] == "A":
- box = im.split()[-1].getbbox()
- if box:
- return im.crop(box)
- return im
-
-
-def fit_image(im, size, mode="contain"):
- im = im.convert("RGBA")
- iw, ih = im.size
- w, h = size
- if mode == "cover":
- scale = max(w / iw, h / ih)
- else:
- scale = min(w / iw, h / ih)
- nw, nh = max(1, int(iw * scale)), max(1, int(ih * scale))
- resized = im.resize((nw, nh), Image.Resampling.LANCZOS)
- if mode == "cover":
- left = max(0, (nw - w) // 2)
- top = max(0, (nh - h) // 2)
- return resized.crop((left, top, left + w, top + h))
- out = Image.new("RGBA", size, (255, 255, 255, 0))
- out.alpha_composite(resized, ((w - nw) // 2, (h - nh) // 2))
- return out
-
-
-def remove_edge_light_background(im, threshold=246):
- im = im.convert("RGBA")
- rgb = im.convert("RGB")
- w, h = rgb.size
- pix = rgb.load()
- seen = bytearray(w * h)
- q = deque()
-
- def eligible(x, y):
- r, g, b = pix[x, y]
- return min(r, g, b) >= threshold and (max(r, g, b) - min(r, g, b)) <= 24
-
- def add(x, y):
- idx = y * w + x
- if not seen[idx] and eligible(x, y):
- seen[idx] = 1
- q.append((x, y))
-
- for x in range(w):
- add(x, 0)
- add(x, h - 1)
- for y in range(h):
- add(0, y)
- add(w - 1, y)
-
- while q:
- x, y = q.popleft()
- if x > 0:
- add(x - 1, y)
- if x + 1 < w:
- add(x + 1, y)
- if y > 0:
- add(x, y - 1)
- if y + 1 < h:
- add(x, y + 1)
-
- alpha = Image.new("L", (w, h), 255)
- ap = alpha.load()
- for y in range(h):
- row = y * w
- for x in range(w):
- if seen[row + x]:
- ap[x, y] = 0
- alpha = alpha.filter(ImageFilter.GaussianBlur(2))
- im.putalpha(alpha)
- box = im.getbbox()
- return im.crop(box) if box else im
-
-
-def paste_floating_visual(base, image, xywh, edge_blur=46, shadow_alpha=52):
- x, y, w, h = xywh
- visual = remove_edge_light_background(image)
- fitted = fit_image(visual, (w, h), mode="contain")
- alpha = fitted.split()[-1]
- shadow_layer = Image.new("RGBA", base.size, (0, 0, 0, 0))
- shadow = Image.new("RGBA", (w, h), (28, 38, 58, shadow_alpha))
- shadow_mask = alpha.filter(ImageFilter.GaussianBlur(edge_blur))
- shadow_layer.alpha_composite(shadow, (x + 18, y + 42))
- shadow_layer.putalpha(Image.new("L", base.size, 0))
- shadow_layer.paste((28, 38, 58, shadow_alpha), (x + 18, y + 42), shadow_mask)
- base = Image.alpha_composite(base, shadow_layer)
- base.alpha_composite(fitted, (x, y))
- return base
-
-
-def crop_light_margin(im, threshold=250, margin=18):
- im = im.convert("RGBA")
- rgb = im.convert("RGB")
- w, h = rgb.size
- pix = rgb.load()
- mask = Image.new("L", (w, h), 0)
- mp = mask.load()
- for y in range(h):
- for x in range(w):
- r, g, b = pix[x, y]
- if min(r, g, b) < threshold:
- mp[x, y] = 255
- box = mask.getbbox()
- if not box:
- return im
- l, t, r, b = box
- l = max(0, l - margin)
- t = max(0, t - margin)
- r = min(w, r + margin)
- b = min(h, b + margin)
- return im.crop((l, t, r, b))
-
-
-def paste_soft_rect_visual(base, image, xywh, edge=90, shadow_alpha=30):
- x, y, w, h = xywh
- visual = crop_light_margin(image)
- fitted = fit_image(visual, (w, h), mode="contain")
- alpha = fitted.split()[-1]
- edge_mask = Image.new("L", (w, h), 0)
- ep = edge_mask.load()
- for yy in range(h):
- dy = min(yy, h - 1 - yy)
- for xx in range(w):
- dx = min(xx, w - 1 - xx)
- a = min(255, int(255 * min(dx, dy, edge) / edge))
- ep[xx, yy] = a
- alpha = ImageChops.multiply(alpha, edge_mask)
- fitted.putalpha(alpha)
- shadow_mask = alpha.filter(ImageFilter.GaussianBlur(52))
- shadow_layer = Image.new("RGBA", base.size, (0, 0, 0, 0))
- shadow_layer.paste((28, 38, 58, shadow_alpha), (x + 10, y + 38), shadow_mask)
- base = Image.alpha_composite(base, shadow_layer)
- base.alpha_composite(fitted, (x, y))
- return base
-
-
-def card(base, image, xywh, radius=46, mode="contain", pad=0, bg=(255, 255, 255, 222), border=(255, 255, 255, 160)):
- x, y, w, h = xywh
- base = shadow(base, xywh, radius=radius)
- panel = Image.new("RGBA", (w, h), bg)
- pd = ImageDraw.Draw(panel)
- pd.rounded_rectangle((0, 0, w - 1, h - 1), radius, fill=bg, outline=border, width=2)
- inner = fit_image(image, (w - pad * 2, h - pad * 2), mode=mode)
- panel.alpha_composite(inner, (pad, pad))
- mask = round_mask((w, h), radius)
- clipped = Image.new("RGBA", (w, h), (0, 0, 0, 0))
- clipped.paste(panel, (0, 0), mask)
- base.alpha_composite(clipped, (x, y))
- return base
-
-
-def text(draw, xy, body, size, fill=(16, 18, 24), bold=False, black=False, spacing=18, mono=False, cjk=False):
- draw.multiline_text(xy, body, font=f(size, bold=bold, black=black, mono=mono, cjk=cjk), fill=fill, spacing=spacing)
-
-
-def zh(draw, xy, body, size, fill=(16, 18, 24), spacing=18):
- text(draw, xy, body, size, fill=fill, spacing=spacing, cjk=True)
-
-
-def small_brand(draw, x, y, dark=False):
- fill = (24, 28, 36) if not dark else (255, 255, 255)
- draw.rounded_rectangle((x, y, x + 270, y + 82), 41, fill=(255, 255, 255, 180), outline=(255, 255, 255, 180), width=2)
- icon = Image.open(ASSETS / "app-icon-256.png").convert("RGBA").resize((52, 52), Image.Resampling.LANCZOS)
- return icon, fill
-
-
-def paste_brand(base, x=132, y=118):
- icon, fill = small_brand(ImageDraw.Draw(base), x, y)
- base.alpha_composite(icon, (x + 20, y + 15))
- ImageDraw.Draw(base).text((x + 88, y + 23), "TagLauncher", font=f(28, bold=True), fill=fill)
-
-
-def save(base, name):
- OUT.mkdir(parents=True, exist_ok=True)
- path = OUT / name
- base.convert("RGB").save(path, quality=96)
- print(path)
-
-
-def save_zh(base, name):
- OUT_ZH.mkdir(parents=True, exist_ok=True)
- path = OUT_ZH / name
- base.convert("RGB").save(path, quality=96)
- print(path)
-
-
-def slide_hero():
- base = gradient(1)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- text(d, (132, 430), "Possibly the best\nMac app launcher\nin the world", 128, black=True, spacing=34)
- text(d, (140, 1145), "One shortcut. Every app.\nOrganized by tags.", 54, fill=(38, 43, 53), spacing=28)
- hero = Image.open(ASSETS / "hero-visual.jpg")
- base = paste_soft_rect_visual(base, hero, (1360, 130, 1330, 1210), edge=96, shadow_alpha=26)
- d = ImageDraw.Draw(base)
- d.rounded_rectangle((140, 1430, 680, 1536), 53, fill=(255, 255, 255, 186), outline=(255, 255, 255, 210), width=2)
- text(d, (190, 1460), "macOS 15.0+ | 29 languages", 34, fill=(70, 76, 88), bold=True)
- save(base, "01-hero-launcher-2880x1800.png")
-
-
-def slide_views():
- base = gradient(0)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- text(d, (1510, 250), "Four views.\nEverything on\none screen.", 112, black=True, spacing=30)
- text(d, (1518, 790), "Flat, plain containers,\ncolored containers, and grid.", 48, fill=(76, 82, 96), spacing=20)
- modes = ["Flat", "Plain containers", "Colored containers", "Plain grid"]
- y = 1080
- for i, m in enumerate(modes):
- d.ellipse((1524, y + i * 95 + 18, 1552, y + i * 95 + 46), fill=(0, 117, 255))
- text(d, (1588, y + i * 95), m, 46, fill=(31, 35, 45), bold=True)
- imgs = [Image.open(ASSETS / "views" / f"view-0{i}.jpg") for i in range(1, 5)]
- positions = [(150, 300), (800, 300), (150, 880), (800, 880)]
- for im, (x, y) in zip(imgs, positions):
- base = card(base, im, (x, y, 590, 384), radius=30, mode="cover", pad=0, bg=(255, 255, 255, 210))
- save(base, "02-four-views-2880x1800.png")
-
-
-def slide_tags():
- base = gradient(2)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- text(d, (132, 285), "One app.\nMany tags.", 128, black=True, spacing=34)
- text(d, (140, 740), "Stop forcing tools into\nsingle folders. Put an app\nwherever it belongs.", 50, fill=(58, 64, 76), spacing=24)
- for i, label in enumerate(["Reading", "Coding", "AI", "Design"]):
- x = 140 + i * 210
- y = 1180 + (i % 2) * 98
- colors = [(88, 197, 99), (177, 101, 207), (83, 160, 238), (255, 99, 93)]
- d.rounded_rectangle((x, y, x + 178, y + 62), 31, fill=colors[i])
- d.text((x + 28, y + 16), label, font=f(24, bold=True), fill=(255, 255, 255))
- shot = Image.open(ASSETS / "tags-management.jpg")
- base = card(base, shot, (1160, 250, 1500, 975), radius=42, mode="cover", pad=0, bg=(255, 255, 255, 210))
- save(base, "03-multi-tag-system-2880x1800.png")
-
-
-def slide_search():
- base = gradient(3)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- text(d, (136, 280), "Search apps.\nSearch tags.\nSearch notes.", 104, black=True, spacing=28)
- text(d, (144, 815), "Quick Search finds the right app\neven when you remember only\na tag or note.", 44, fill=(62, 68, 82), spacing=22)
- d.rounded_rectangle((144, 1235, 680, 1345), 55, fill=(255, 255, 255, 190), outline=(255, 255, 255, 220), width=2)
- text(d, (194, 1262), "Fn + Space", 38, fill=(20, 24, 32), bold=True, mono=True)
- qs = crop_alpha(Image.open(ASSETS / "quick-search.png"))
- base = card(base, qs, (1180, 205, 1440, 1160), radius=70, mode="contain", pad=62, bg=(255, 255, 255, 214))
- save(base, "04-quick-search-2880x1800.png")
-
-
-def slide_notes():
- base = gradient(4)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- text(d, (132, 250), "App notes.\nFind them\nfast.", 104, black=True, spacing=28)
- text(d, (140, 765), "Remember what each tool is for.\nQuick Search can find notes too.", 44, fill=(58, 64, 76), spacing=22)
- memo = Image.open(ASSETS / "app-memo.png")
- base = card(base, memo, (990, 230, 1570, 1170), radius=46, mode="cover", pad=0, bg=(255, 255, 255, 210))
- d = ImageDraw.Draw(base)
- d.rounded_rectangle((150, 1220, 610, 1326), 53, fill=(255, 255, 255, 185), outline=(255, 255, 255, 215), width=2)
- text(d, (195, 1248), "Hover. Read. Launch.", 34, fill=(35, 39, 50), bold=True)
- save(base, "05-app-notes-2880x1800.png")
-
-
-def slide_privacy():
- base = gradient(5)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- text(d, (132, 285), "100% offline.\n100% ad-free.", 126, black=True, spacing=36)
- text(d, (140, 770), "Your tags, notes, and layout\nstay on your Mac. No analytics,\nno ads, no network dependency.", 48, fill=(58, 64, 76), spacing=24)
- shield = Image.open(ASSETS / "shield-check.png").convert("RGBA")
- backup = Image.open(ASSETS / "backup-restore.jpg")
- settings = Image.open(ASSETS / "screenshot-settings.jpg")
- base = card(base, backup, (1120, 255, 1360, 745), radius=46, mode="cover", pad=0, bg=(255, 255, 255, 210))
- base = card(base, settings, (1540, 860, 900, 565), radius=42, mode="cover", pad=0, bg=(255, 255, 255, 210))
- shield = shield.resize((430, 430), Image.Resampling.LANCZOS)
- base.alpha_composite(shield, (2240, 180))
- d = ImageDraw.Draw(base)
- for i, item in enumerate(["Local data", "JSON backup", "No ads"]):
- y = 1190 + i * 88
- d.rounded_rectangle((150, y, 560, y + 64), 32, fill=(255, 255, 255, 185), outline=(255, 255, 255, 215), width=2)
- text(d, (190, y + 15), item, 26, fill=(42, 48, 60), bold=True)
- save(base, "06-private-offline-2880x1800.png")
-
-
-def slide_hero_zh():
- base = gradient(1)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- zh(d, (132, 415), "可能是世界上\n最好用的 Mac\n应用启动器", 116, spacing=36)
- zh(d, (140, 1125), "一个快捷键,所有应用。\n用标签整理得清清楚楚。", 52, fill=(38, 43, 53), spacing=28)
- hero = Image.open(ASSETS / "hero-visual.jpg")
- base = paste_soft_rect_visual(base, hero, (1360, 130, 1330, 1210), edge=96, shadow_alpha=26)
- d = ImageDraw.Draw(base)
- d.rounded_rectangle((140, 1430, 735, 1536), 53, fill=(255, 255, 255, 186), outline=(255, 255, 255, 210), width=2)
- zh(d, (190, 1458), "macOS 15.0+ | 29 种界面语言", 32, fill=(70, 76, 88))
- save_zh(base, "01-hero-launcher-2880x1800.png")
-
-
-def slide_views_zh():
- base = gradient(0)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- zh(d, (1510, 250), "4 种视图\n全部一屏\n到底", 108, spacing=30)
- zh(d, (1518, 790), "平铺、无色容器、彩色容器,\n还有无色网格。", 46, fill=(76, 82, 96), spacing=20)
- modes = ["平铺", "无色容器", "彩色容器", "无色网格"]
- y = 1080
- for i, m in enumerate(modes):
- d.ellipse((1524, y + i * 95 + 18, 1552, y + i * 95 + 46), fill=(0, 117, 255))
- zh(d, (1588, y + i * 95), m, 44, fill=(31, 35, 45))
- imgs = [Image.open(ASSETS / "views" / f"view-0{i}.jpg") for i in range(1, 5)]
- positions = [(150, 300), (800, 300), (150, 880), (800, 880)]
- for im, (x, y) in zip(imgs, positions):
- base = card(base, im, (x, y, 590, 384), radius=30, mode="cover", pad=0, bg=(255, 255, 255, 210))
- save_zh(base, "02-four-views-2880x1800.png")
-
-
-def slide_tags_zh():
- base = gradient(2)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- zh(d, (132, 285), "一个应用\n多个标签", 122, spacing=36)
- zh(d, (140, 740), "别再把工具塞进唯一文件夹。\n它属于哪里,就放在哪里。", 50, fill=(58, 64, 76), spacing=24)
- for i, label in enumerate(["阅读", "编程", "AI", "设计"]):
- x = 140 + i * 210
- y = 1180 + (i % 2) * 98
- colors = [(88, 197, 99), (177, 101, 207), (83, 160, 238), (255, 99, 93)]
- d.rounded_rectangle((x, y, x + 178, y + 62), 31, fill=colors[i])
- zh(d, (x + 42, y + 13), label, 26, fill=(255, 255, 255))
- shot = Image.open(ASSETS / "tags-management.jpg")
- base = card(base, shot, (1160, 250, 1500, 975), radius=42, mode="cover", pad=0, bg=(255, 255, 255, 210))
- save_zh(base, "03-multi-tag-system-2880x1800.png")
-
-
-def slide_search_zh():
- base = gradient(3)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- zh(d, (136, 280), "搜索应用\n搜索标签\n搜索备注", 104, spacing=30)
- zh(d, (144, 815), "Quick Search 能从应用名、标签\n和备注中找到目标。", 44, fill=(62, 68, 82), spacing=22)
- d.rounded_rectangle((144, 1235, 680, 1345), 55, fill=(255, 255, 255, 190), outline=(255, 255, 255, 220), width=2)
- zh(d, (194, 1262), "Fn + 空格", 36, fill=(20, 24, 32))
- qs = crop_alpha(Image.open(ASSETS / "quick-search.png"))
- base = card(base, qs, (1180, 205, 1440, 1160), radius=70, mode="contain", pad=62, bg=(255, 255, 255, 214))
- save_zh(base, "04-quick-search-2880x1800.png")
-
-
-def slide_notes_zh():
- base = gradient(4)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- zh(d, (132, 250), "应用备注\n也能搜索\n更快找到", 100, spacing=30)
- zh(d, (140, 765), "记住每个工具的用途。\nQuick Search 也能搜备注。", 44, fill=(58, 64, 76), spacing=22)
- memo = Image.open(ASSETS / "app-memo.png")
- base = card(base, memo, (990, 230, 1570, 1170), radius=46, mode="cover", pad=0, bg=(255, 255, 255, 210))
- d = ImageDraw.Draw(base)
- d.rounded_rectangle((150, 1220, 685, 1326), 53, fill=(255, 255, 255, 185), outline=(255, 255, 255, 215), width=2)
- zh(d, (195, 1248), "悬停查看,马上启动", 32, fill=(35, 39, 50))
- save_zh(base, "05-app-notes-2880x1800.png")
-
-
-def slide_privacy_zh():
- base = gradient(5)
- paste_brand(base)
- d = ImageDraw.Draw(base)
- zh(d, (132, 285), "100% 离线\n100% 无广告", 118, spacing=38)
- zh(d, (140, 770), "标签、备注与布局都留在本机。\n无分析,无广告,不依赖网络。", 46, fill=(58, 64, 76), spacing=24)
- shield = Image.open(ASSETS / "shield-check.png").convert("RGBA")
- backup = Image.open(ASSETS / "backup-restore.jpg")
- settings = Image.open(ASSETS / "screenshot-settings.jpg")
- base = card(base, backup, (1120, 255, 1360, 745), radius=46, mode="cover", pad=0, bg=(255, 255, 255, 210))
- base = card(base, settings, (1540, 860, 900, 565), radius=42, mode="cover", pad=0, bg=(255, 255, 255, 210))
- shield = shield.resize((430, 430), Image.Resampling.LANCZOS)
- base.alpha_composite(shield, (2240, 180))
- d = ImageDraw.Draw(base)
- for i, item in enumerate(["本地数据", "JSON 备份", "无广告"]):
- y = 1190 + i * 88
- d.rounded_rectangle((150, y, 560, y + 64), 32, fill=(255, 255, 255, 185), outline=(255, 255, 255, 215), width=2)
- zh(d, (190, y + 12), item, 26, fill=(42, 48, 60))
- save_zh(base, "06-private-offline-2880x1800.png")
-
-
-def contact_sheet(out=OUT):
- files = sorted(out.glob("*.png"))
- thumbs = []
- for p in files:
- im = Image.open(p).resize((720, 450), Image.Resampling.LANCZOS)
- thumbs.append((p, im))
- sheet = Image.new("RGB", (1500, 1450), (246, 248, 252))
- d = ImageDraw.Draw(sheet)
- for idx, (p, im) in enumerate(thumbs):
- x = 40 + (idx % 2) * 740
- y = 40 + (idx // 2) * 470
- sheet.paste(im, (x, y))
- d.text((x, y + 455), p.name, font=f(18, bold=True), fill=(48, 54, 68))
- path = out / "_contact-sheet.png"
- sheet.save(path, quality=94)
- print(path)
-
-
-def render_en():
- slide_hero()
- slide_views()
- slide_tags()
- slide_search()
- slide_notes()
- slide_privacy()
- contact_sheet(OUT)
-
-
-def render_zh():
- slide_hero_zh()
- slide_views_zh()
- slide_tags_zh()
- slide_search_zh()
- slide_notes_zh()
- slide_privacy_zh()
- contact_sheet(OUT_ZH)
-
-
-def main():
- render_en()
- render_zh()
-
-
-if __name__ == "__main__":
- main()
--
Gitblit v1.9.3