Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
e0317aa
♻️ 脚本列表与回收站桌面端改为统一列表行
CodFrm Aug 30, 2026
d063a66
♻️ 桌面订阅页改为统一列表行
CodFrm Aug 30, 2026
ab0608f
♻️ 三页移动端改为统一列表行与原生手势
CodFrm Aug 30, 2026
3c639b6
✅ 补齐规格要求的排序默认项与单脚本导出
CodFrm Aug 30, 2026
bbdeae3
🐛 修复左滑位移写死与多选空屏
CodFrm Aug 30, 2026
37b1e2e
🐛 修复运行时暴露的四处渲染问题
CodFrm Aug 30, 2026
0915eac
💄 桌面三页列表行之间加分隔线
CodFrm Aug 30, 2026
e76934b
💄 桌面全选框从列表顶部独立行挪进批量操作条
CodFrm Aug 30, 2026
b2f966e
🐛 修复窄窗口下元信息行徽章竖排溢出行外
CodFrm Aug 30, 2026
8cc217b
💄 900px 以下隐藏站点图标槽,把宽度让给名称
CodFrm Aug 30, 2026
d2a9271
💄 宽窗口摊开全部行操作,1000px 以下才收进更多菜单
CodFrm Aug 30, 2026
3c20fdf
💄 订阅行去掉序号列
CodFrm Aug 30, 2026
dad7804
💄 宽排布操作区按满配宽度定宽,修复更新时间列逐行参差
CodFrm Aug 30, 2026
7a903a9
🌐 修正新手引导「操作」步的过期文案并重命名移动端锚点
CodFrm Aug 30, 2026
82e7217
✅ e2e 跟进列表重构:替换已移除的 view-toggle 锚点与行内删除确认框
CodFrm Aug 31, 2026
1875fbe
🐛 修复评审发现的高中危问题:断点塌陷、回收站入口、手势与无障碍
CodFrm Aug 31, 2026
543c715
💄 筛选行并入头部白带,去掉行间分隔线,并修复被裁掉的分界线
CodFrm Aug 31, 2026
8874b7e
Merge branch 'main' into feat/unified-list-rows
CodFrm Sep 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion e2e/keep-alive.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const HEARTBEAT_VALIDATION_WINDOW_MS = 31_000;
const openRuntimeSettings = async (context: Parameters<typeof openOptionsPage>[0], extensionId: string) => {
const page = await openOptionsPage(context, extensionId);
await page
.getByTestId("view-toggle")
.getByTestId("script-search")
.or(page.getByTestId("mobile-search"))
.first()
.waitFor({ state: "visible", timeout: 30_000 });
Expand Down
2 changes: 1 addition & 1 deletion e2e/options-pages-smoke.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import type { Locator, Page } from "@playwright/test";
// 这能廉价地兜住「页面挂载即抛错」一类缺陷(例如 getDefaultModelId 在全新安装无默认模型
// 时用 doThrow 抛错导致模型服务/会话页卡死的回归)。
const ROUTES: Array<{ path: string; name: string; anchor: (page: Page) => Locator }> = [
{ path: "/", name: "脚本列表", anchor: (page) => page.getByTestId("view-toggle") },
{ path: "/", name: "脚本列表", anchor: (page) => page.getByTestId("script-search") },
{ path: "/subscribe", name: "订阅列表", anchor: (page) => page.getByTestId("subscribe-page") },
{ path: "/logs", name: "日志页", anchor: (page) => page.getByTestId("level-chip-bar") },
{ path: "/tools", name: "工具页", anchor: (page) => page.getByTestId("tools_export") },
Expand Down
12 changes: 7 additions & 5 deletions e2e/script-management.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ import { test, expect } from "./fixtures";
import type { BrowserContext, Page } from "@playwright/test";
import { openEditorPage, openOptionsPage, saveCurrentEditor } from "./utils";

// new-ui 脚本列表(shadcn 表格视图,桌面默认):空状态 data-testid="script-list-empty",
// 每行启用开关为 Radix Switch(role=switch),删除为行内 Trash2 图标 + Popconfirm
// (确认按钮 data-testid="popconfirm-confirm"),搜索框 data-testid="script-search"。
// new-ui 脚本列表(统一列表行,桌面默认):空状态 data-testid="script-list-empty",
// 每行启用开关为 Radix Switch(role=switch),搜索框 data-testid="script-search"。
// 删除为行内 Trash2 图标 + AlertDialog 二次确认(确认按钮 data-slot="alert-dialog-action")。
// 行操作区在视口不窄于 1000px 时才摊开成按钮,窄于此宽度删除会收进「更多」菜单;
// 本套件依赖 Playwright 默认的 1280 宽视口,改视口需同步调整下面的删除用例。

/** 通过编辑器创建一个脚本,再打开脚本列表 */
async function createScriptAndGoToList(context: BrowserContext, extensionId: string): Promise<Page> {
Expand Down Expand Up @@ -37,8 +39,8 @@ test.describe("脚本管理", () => {
await expect(deleteBtn).toBeVisible({ timeout: 10_000 });
await deleteBtn.click();

// Popconfirm 确认
await page.getByTestId("popconfirm-confirm").click();
// AlertDialog 二次确认
await page.locator('[data-slot="alert-dialog-action"]').click();

// 删除后回到空状态
await expect(page.getByTestId("script-list-empty")).toBeVisible({ timeout: 10_000 });
Expand Down
4 changes: 2 additions & 2 deletions e2e/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,9 @@ async function focusMonacoEditor(page: Page): Promise<void> {
async function waitForSavedScriptInList(context: BrowserContext, extensionId: string): Promise<void> {
const listPage = await openOptionsPage(context, extensionId);
try {
// new-ui 列表页加载完成的稳定信号(桌面工具栏 view-toggle / 移动搜索栏)
// new-ui 列表页加载完成的稳定信号(桌面工具栏搜索框 / 移动搜索栏)
await listPage
.getByTestId("view-toggle")
.getByTestId("script-search")
.or(listPage.getByTestId("mobile-search"))
.first()
.waitFor({ state: "visible", timeout: 30_000 });
Expand Down
4 changes: 2 additions & 2 deletions src/app/service/service_worker/trash_event_partition.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ describe("回收站事件二分护栏", () => {
"src/app/service/service_worker/popup.ts", // 清 popup 菜单缓存 + 刷 badge
"src/app/service/service_worker/runtime.ts", // 注销脚本、失效匹配器
"src/app/service/service_worker/synchronize.ts", // 删除云端文件 + 写墓碑
"src/pages/options/routes/ScriptList/TrashCardGrid.tsx", // 多窗口下刷新移动回收站列表
"src/pages/options/routes/ScriptList/TrashListMobile.tsx", // 多窗口下刷新移动回收站列表
"src/pages/options/routes/ScriptList/TrashTable.tsx", // 多窗口下刷新桌面回收站列表
"src/pages/options/routes/ScriptList/hooks.ts", // 从「已安装」列表移除该行
"src/pages/popup/usePopupData.ts", // 从 popup 列表移除该行
Expand All @@ -58,7 +58,7 @@ describe("回收站事件二分护栏", () => {
"src/app/service/service_worker/resource.ts", // 清资源
"src/app/service/service_worker/system.ts", // 清图标
"src/app/service/service_worker/value.ts", // 清 value
"src/pages/options/routes/ScriptList/TrashCardGrid.tsx", // 多窗口下刷新移动回收站列表
"src/pages/options/routes/ScriptList/TrashListMobile.tsx", // 多窗口下刷新移动回收站列表
"src/pages/options/routes/ScriptList/TrashTable.tsx", // 多窗口下刷新桌面回收站列表
// useTrashCount:彻底删除后刷新回收站 tab 的数量角标。它只读不销毁,故不违反二分。
// 不可省:到期自动清理由 chrome.alarms 在 SW 里直接 purge,全程没有 UI 参与,
Expand Down
2 changes: 1 addition & 1 deletion src/locales/de-DE/guide.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"script_list_enable_title": "Skript-Aktivierung",
"script_list_enable_content": "Skripte müssen aktiviert werden, um verwendet zu werden. Seitenskripte sind bei der Installation standardmäßig aktiviert, Hintergrundskripte sind bei der Installation standardmäßig deaktiviert",
"script_list_action_title": "Aktion",
"script_list_action_content": "Die Bedienleiste ermöglicht den Zugriff auf die Skriptbearbeitung, die Steuerung der Skriptausführung und -beendigung (Hintergrundskripte) sowie auf die Einstellungen (siehe <Link href=\"https://docs.scriptcat.org/docs/dev/config/\">UserConfig</Link>). Über die Schaltflächen auf der rechten Seite können Sie auf erweiterte Filterfunktionen zugreifen und zwischen verschiedenen Ansichtsmodi wechseln.",
"script_list_action_content": "Im Aktionsbereich können Sie ein Skript bearbeiten, Hintergrundskripte und geplante Skripte ausführen und stoppen, die <Link href=\"https://docs.scriptcat.org/docs/dev/config/\">UserConfig</Link> festlegen sowie das Skript exportieren und löschen. In einem schmalen Fenster werden diese Aktionen im Menü „Weitere Aktionen“ zusammengefasst.",
"tools_backup_title": "Backup",
"tools_backup_content": "Backups können Skripte speichern und Verluste vermeiden. Sie können Skriptdateien lokal exportieren oder lokale Skriptdateien laden. Sie können auch in die Cloud sichern, was praktischer ist. Informationen zum Wechsel von einem anderen Manager findest du im <Link href=\"https://docs.scriptcat.org/docs/use/from-other/migrate-from-tampermonkey/\">Migrationsleitfaden</Link>.",
"setting_sync_title": "Update und Synchronisation",
Expand Down
11 changes: 10 additions & 1 deletion src/locales/de-DE/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,14 @@
"trash_moved_batch": "{{count}} Skript(e) in den Papierkorb verschoben",
"trash_undo": "Rückgängig",
"trash_undo_success": "Wiederhergestellt",
"trash_undo_failed": "Wiederherstellen fehlgeschlagen"
"trash_undo_failed": "Wiederherstellen fehlgeschlagen",
"sort_by": "Sortieren",
"sort_create_time": "Hinzugefügt am",
"sort_default": "Standard",
"sort_ascending": "Aufsteigend",
"sort_descending": "Absteigend",
"more_actions": "Weitere Aktionen",
"multi_select": "Mehrfachauswahl",
"site_count": "{{count}} Website(s)",
"select_all": "Alle auswählen"
}
2 changes: 1 addition & 1 deletion src/locales/en-US/guide.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"script_list_enable_title": "Enable Scripts",
"script_list_enable_content": "Scripts need to be enabled to be used. Page scripts are enabled by default upon installation, while background scripts are disabled by default.",
"script_list_action_title": "Action",
"script_list_action_content": "The operation bar allows access to script editing, control script execution and termination (background scripts), and settings (see <Link href=\"https://docs.scriptcat.org/en/docs/dev/config/\">UserConfig</Link>). The buttons on the right allow access to advanced filtering and toggling view modes.",
"script_list_action_content": "The action area lets you edit a script, run or stop background and scheduled scripts, set its <Link href=\"https://docs.scriptcat.org/en/docs/dev/config/\">UserConfig</Link>, and export or delete it. In a narrow window these actions collapse into the “More actions” menu.",
"tools_backup_title": "Backup",
"tools_backup_content": "Backup allows you to save scripts to avoid loss. You can export script files to your local machine or load script files from your local machine. You can also back up to the cloud for added convenience. Migrating from another manager? See the <Link href=\"https://docs.scriptcat.org/en/docs/use/from-other/migrate-from-tampermonkey/\">migration guide</Link>.",
"setting_sync_title": "Update and Sync",
Expand Down
11 changes: 10 additions & 1 deletion src/locales/en-US/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,14 @@
"trash_moved_batch": "Moved {{count}} scripts to Trash",
"trash_undo": "Undo",
"trash_undo_success": "Restored",
"trash_undo_failed": "Restore failed"
"trash_undo_failed": "Restore failed",
"sort_by": "Sort",
"sort_create_time": "Added time",
"sort_default": "Default",
"sort_ascending": "Ascending",
"sort_descending": "Descending",
"more_actions": "More actions",
"multi_select": "Select multiple",
"site_count": "{{count}} site(s)",
"select_all": "Select all"
}
2 changes: 1 addition & 1 deletion src/locales/ja-JP/guide.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"script_list_enable_title": "スクリプト有効化",
"script_list_enable_content": "スクリプトは有効にしないと使用できません。ページスクリプトはインストール時にデフォルトで有効、バックグラウンドスクリプトはインストール時にデフォルトで無効です",
"script_list_action_title": "アクション",
"script_list_action_content": "操作バーでは、スクリプトの編集、制御スクリプトの実行と終了(バックグラウンドスクリプト)、および設定(<Link href=\"https://docs.scriptcat.org/docs/dev/config/\">UserConfig</Link> を参照)にアクセスできます。右側のボタンからは、高度なフィルタリングや表示モードの切り替えにアクセスできます。",
"script_list_action_content": "操作エリアでは、スクリプトの編集、バックグラウンドスクリプトとスケジュールスクリプトの実行と中止、<Link href=\"https://docs.scriptcat.org/docs/dev/config/\">UserConfig</Link> の設定、エクスポートと削除ができます。ウィンドウの幅が狭いときは、これらの操作が「その他の操作」メニューにまとめられます。",
"tools_backup_title": "バックアップ",
"tools_backup_content": "バックアップはスクリプトを保存し、紛失を避けることができます。スクリプトファイルをローカルにエクスポートしたり、ローカルのスクリプトファイルを読み込んだりできます。クラウドにバックアップすることもでき、より便利です。他のマネージャーからの移行は<Link href=\"https://docs.scriptcat.org/docs/use/from-other/migrate-from-tampermonkey/\">移行ガイド</Link>を参照してください。",
"setting_sync_title": "更新と同期",
Expand Down
11 changes: 10 additions & 1 deletion src/locales/ja-JP/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,14 @@
"trash_moved_batch": "{{count}} 件のスクリプトをゴミ箱に移動しました",
"trash_undo": "元に戻す",
"trash_undo_success": "復元しました",
"trash_undo_failed": "復元に失敗しました"
"trash_undo_failed": "復元に失敗しました",
"sort_by": "並び替え",
"sort_create_time": "追加日時",
"sort_default": "デフォルト",
"sort_ascending": "昇順",
"sort_descending": "降順",
"more_actions": "その他の操作",
"multi_select": "複数選択",
"site_count": "{{count}} サイト",
"select_all": "すべて選択"
}
2 changes: 1 addition & 1 deletion src/locales/ko-KR/guide.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"script_list_enable_title": "스크립트 활성화",
"script_list_enable_content": "스크립트는 활성화해야 사용할 수 있습니다. 페이지 스크립트는 설치 시 기본적으로 활성화되며, 백그라운드 스크립트는 기본적으로 비활성화됩니다.",
"script_list_action_title": "작업",
"script_list_action_content": "작업 바에서는 스크립트 편집, 실행 제어 및 중지(백그라운드 스크립트), 설정(<Link href=\"https://docs.scriptcat.org/en/docs/dev/config/\">UserConfig</Link> 참고)에 접근할 수 있습니다. 오른쪽 버튼으로는 고급 필터링과 보기 모드 전환을 사용할 수 있습니다.",
"script_list_action_content": "작업 영역에서 스크립트 편집, 백그라운드 스크립트와 예약 스크립트의 실행 및 중지, <Link href=\"https://docs.scriptcat.org/en/docs/dev/config/\">UserConfig</Link> 설정, 내보내기와 삭제를 할 수 있습니다. 창이 좁으면 이러한 작업은 ‘추가 작업’ 메뉴로 모입니다.",
"tools_backup_title": "백업",
"tools_backup_content": "백업을 이용하면 스크립트를 저장해 유실을 막을 수 있습니다. 스크립트 파일을 로컬로 내보내거나 로컬에서 불러올 수 있으며, 클라우드에 백업하면 더욱 편리합니다. 다른 매니저에서 이전하려면 <Link href=\"https://docs.scriptcat.org/en/docs/use/from-other/migrate-from-tampermonkey/\">마이그레이션 가이드</Link>를 참고하세요.",
"setting_sync_title": "업데이트 및 동기화",
Expand Down
11 changes: 10 additions & 1 deletion src/locales/ko-KR/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,14 @@
"trash_moved_batch": "스크립트 {{count}}개를 휴지통으로 이동했습니다",
"trash_undo": "실행 취소",
"trash_undo_success": "복원되었습니다",
"trash_undo_failed": "복원에 실패했습니다"
"trash_undo_failed": "복원에 실패했습니다",
"sort_by": "정렬",
"sort_create_time": "추가 시간",
"sort_default": "기본",
"sort_ascending": "오름차순",
"sort_descending": "내림차순",
"more_actions": "추가 작업",
"multi_select": "다중 선택",
"site_count": "{{count}}개 사이트",
"select_all": "전체 선택"
}
2 changes: 1 addition & 1 deletion src/locales/pt-BR/guide.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"script_list_enable_title": "Ativar scripts",
"script_list_enable_content": "Os scripts precisam ser ativados para serem usados. Os scripts de página são ativados por padrão na instalação, enquanto os scripts em segundo plano são desativados por padrão.",
"script_list_action_title": "Ação",
"script_list_action_content": "A barra de operação permite acesso à edição de scripts, controle de execução e término de scripts (scripts em segundo plano) e configurações (consulte <Link href=\"https://docs.scriptcat.org/en/docs/dev/config/\">UserConfig</Link>). Os botões à direita permitem acesso à filtragem avançada e à alternância de modos de visualização.",
"script_list_action_content": "A área de ações permite editar o script, executar e parar scripts em segundo plano e agendados, definir a <Link href=\"https://docs.scriptcat.org/en/docs/dev/config/\">UserConfig</Link> e exportar ou excluir o script. Em janelas estreitas, essas ações são agrupadas no menu “Mais ações”.",
"tools_backup_title": "Backup",
"tools_backup_content": "O backup permite que você salve scripts para evitar perdas. Você pode exportar arquivos de script para sua máquina local ou carregar arquivos de script de sua máquina local. Você também pode fazer backup na nuvem para maior conveniência. Migrando de outro gerenciador? Consulte o <Link href=\"https://docs.scriptcat.org/en/docs/use/from-other/migrate-from-tampermonkey/\">guia de migração</Link>.",
"setting_sync_title": "Atualização e sincronização",
Expand Down
11 changes: 10 additions & 1 deletion src/locales/pt-BR/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,14 @@
"trash_moved_batch": "Scripts movidos para a lixeira: {{count}}",
"trash_undo": "Desfazer",
"trash_undo_success": "Restaurado",
"trash_undo_failed": "Falha ao restaurar"
"trash_undo_failed": "Falha ao restaurar",
"sort_by": "Ordenar",
"sort_create_time": "Data de adição",
"sort_default": "Padrão",
"sort_ascending": "Crescente",
"sort_descending": "Decrescente",
"more_actions": "Mais ações",
"multi_select": "Selecionar vários",
"site_count": "{{count}} site(s)",
"select_all": "Selecionar tudo"
}
2 changes: 1 addition & 1 deletion src/locales/ru-RU/guide.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"script_list_enable_title": "Включение скрипта",
"script_list_enable_content": "Скрипты нужно включить для использования. Скрипты страниц включены по умолчанию при установке, фоновые скрипты выключены по умолчанию",
"script_list_action_title": "Действие",
"script_list_action_content": "Панель управления позволяет редактировать скрипты, управлять их выполнением и завершением (фоновые скрипты), а также настраивать параметры (см. <Link href=\"https://docs.scriptcat.org/docs/dev/config/\">UserConfig</Link>). Кнопки справа позволяют получить доступ к расширенной фильтрации и переключать режимы просмотра.",
"script_list_action_content": "В области действий можно редактировать скрипт, запускать и останавливать фоновые и запланированные скрипты, задавать <Link href=\"https://docs.scriptcat.org/docs/dev/config/\">UserConfig</Link>, а также экспортировать и удалять скрипт. В узком окне эти действия сворачиваются в меню «Другие действия».",
"tools_backup_title": "Резервное копирование",
"tools_backup_content": "Резервное копирование может сохранять скрипты во избежание потери. Можно экспортировать файлы скриптов локально или загружать локальные файлы скриптов. Также можно создавать резервные копии в облаке для большего удобства. Для переноса из другого менеджера см. <Link href=\"https://docs.scriptcat.org/docs/use/from-other/migrate-from-tampermonkey/\">руководство по миграции</Link>.",
"setting_sync_title": "Обновление и синхронизация",
Expand Down
11 changes: 10 additions & 1 deletion src/locales/ru-RU/script.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,14 @@
"trash_moved_batch": "В корзину перемещено скриптов: {{count}}",
"trash_undo": "Отменить",
"trash_undo_success": "Восстановлено",
"trash_undo_failed": "Не удалось восстановить"
"trash_undo_failed": "Не удалось восстановить",
"sort_by": "Сортировка",
"sort_create_time": "Время добавления",
"sort_default": "По умолчанию",
"sort_ascending": "По возрастанию",
"sort_descending": "По убыванию",
"more_actions": "Другие действия",
"multi_select": "Выбрать несколько",
"site_count": "{{count}} сайт(ов)",
"select_all": "Выбрать все"
}
Loading
Loading