Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
83 changes: 83 additions & 0 deletions .github/workflows/dia-tabs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Dia Tabs

on:
pull_request:
paths:
- '.github/workflows/dia-tabs.yml'
- 'plugins/dia_tabs/**'
- 'docs/plugins/dia_tabs.md'
- 'docs/specs/2026-11-01-dia-tabs-design.md'
- 'docs/release.md'
- 'README.MD'
- 'AGENTS.md'
push:
branches: [master]
tags: ['v*']
paths:
- '.github/workflows/dia-tabs.yml'
- 'plugins/dia_tabs/**'

permissions:
contents: read

jobs:
test:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '24'
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Check syntax and plist
run: |
bash -n plugins/dia_tabs/build.sh plugins/dia_tabs/install.sh plugins/dia_tabs/workflow/scripts/*.sh
plutil -lint plugins/dia_tabs/workflow/info.plist
for file in plugins/dia_tabs/extension/*.js; do node --input-type=module --check < "$file"; done
python3 - <<'PY'
import ast
from pathlib import Path
for path in Path('plugins/dia_tabs').rglob('*.py'):
ast.parse(path.read_text(), filename=str(path))
PY
- name: Test extension and native bridge
env:
PYTHONDONTWRITEBYTECODE: '1'
run: |
node --test plugins/dia_tabs/tests/*.test.mjs
python3 -m unittest discover -s plugins/dia_tabs/tests -p 'test_*.py' -v
- name: Build and inspect archives
run: |
version=ci
if [[ "$GITHUB_REF" == refs/tags/* ]]; then version="$GITHUB_REF_NAME"; fi
plugins/dia_tabs/build.sh "$RUNNER_TEMP/dia-tabs" "$version"
for file in "$RUNNER_TEMP/dia-tabs/"*; do unzip -t "$file"; done
- uses: actions/upload-artifact@v4
with:
name: dia-tabs
path: ${{ runner.temp }}/dia-tabs/*
if-no-files-found: error

publish:
if: startsWith(github.ref, 'refs/tags/v')
needs: test
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/download-artifact@v4
with:
name: dia-tabs
path: artifacts
- name: Attach Dia Tabs assets to release
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
TAG: ${{ github.ref_name }}
run: |
if ! gh release view "$TAG" >/dev/null 2>&1; then
gh release create "$TAG" --title "$TAG" --generate-notes || gh release view "$TAG" >/dev/null
fi
gh release upload "$TAG" artifacts/* --clobber
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
- `cli/video_subtitle/`:单视频自动生成中文字幕工具,详细说明见 `docs/cli/video_subtitle.md`。
- `emby_plugins/video_subtitle/`:Emby Server 插件,后端调用 `video_subtitle` 生成字幕,详细说明见 `docs/plugins/emby_video_subtitle.md`。
- `plugins/alfred_remote_upload/`:Alfred 5 Workflow,将剪贴板中的图片或 Finder 单文件上传到 SSH 主机,详细说明见 `docs/plugins/alfred_remote_upload.md`。
- `plugins/dia_tabs/`:Dia MV3 扩展、Python Native Messaging 桥接和 Alfred Workflow,独立构建/安装,说明见 `docs/plugins/dia_tabs.md`;修改时运行 Node/Python 测试、shell/plist 校验及 `plugins/dia_tabs/build.sh`,不进入 Go 构建,CI/3 个 tag 资产由 `.github/workflows/dia-tabs.yml` 管理。
- `plugins/unlanzi_d200x/command_executor/`:Ulanzi D200X 命令执行器,源码、测试和构建入口均在该目录,文档索引见 `plugins/unlanzi_d200x/docs/README.md`。
- `gui/interview_timer/`:macOS 面试悬浮计时 GUI 应用,说明见 `docs/gui/interview_timer.md`。
- `docs/cli/`:CLI 工具文档。
Expand Down
1 change: 1 addition & 0 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
| CLI | `video_subtitle` | `cli/video_subtitle/` | `video_subtitle` | 为单个视频生成简体中文字幕 | [docs/cli/video_subtitle.md](docs/cli/video_subtitle.md) |
| Experimental CLI | `codex_inspector` | `cli/codex_inspector/` | `codex_inspector` | 本机只读查看 Codex 会话、token 用量、活跃度和记忆内容 | [docs/cli/codex_inspector.md](docs/cli/codex_inspector.md) |
| Plugin | Alfred Remote Upload | `plugins/alfred_remote_upload/` | `Remote Upload.alfredworkflow` | 将剪贴板图片或 Finder 单文件上传到 SSH 主机,并复制远端路径 | [docs/plugins/alfred_remote_upload.md](docs/plugins/alfred_remote_upload.md) |
| Plugin | Dia Tabs | `plugins/dia_tabs/` | MV3 扩展 + `Dia Tabs.alfredworkflow` | 保存原始网页标题,批量复制链接,通过 Alfred 搜索并精确激活已有标签 | [docs/plugins/dia_tabs.md](docs/plugins/dia_tabs.md) |
| Plugin | Ulanzi D200X Command Executor | `plugins/unlanzi_d200x/command_executor/` | `.ulanziPlugin` | 每个按键独立配置并执行 macOS Shell 命令 | [插件文档](plugins/unlanzi_d200x/docs/README.md) |
| Plugin | Emby 字幕插件 | `emby_plugins/video_subtitle/` | `LifeTools.Emby.VideoSubtitle.Emby.dll` | 在 Emby 后台调用 `video_subtitle` 生成字幕 | [docs/plugins/emby_video_subtitle.md](docs/plugins/emby_video_subtitle.md) |
| GUI | InterviewTimer | `gui/interview_timer/` | `InterviewTimer.app` | macOS 面试悬浮计时器 | [docs/gui/interview_timer.md](docs/gui/interview_timer.md) |
Expand Down
Loading
Loading