Repository navigation
Releases: wyzh0117/workbench
Release list
AI Course Workbench 0.2.7
AI Course Workbench 0.2.7
What's new
- Project saves and recovery choices are bound to the active project and disk revision. Conflicting external edits pause saves and offer reload, automatic merge preview, or an explicit Keep Local action when merging cannot apply.
- Reader viewport now survives a normal quit and cold reopen; legacy millisecond snapshot dates display correctly. Referenced-media rename Undo/Redo keeps the asset, usage, and managed path aligned.
- Media preview reports missing, oversized, and MIME-mismatched items without blocking valid batch neighbors. Board columns support keyboard horizontal scrolling.
- A representative paged lesson was exported and physically checked as Semantic HTML, Static Web, PDF, and PPTX.
Notes
- Overall File I/O / UI acceptance remains PARTIAL. In-flight snapshot capture while editing and an A→B→A late-acknowledgement UI overlap were not observed; real 150%/200% text scaling and reduced-motion behavior were not tested.
- The final paired Deno sample improved no-op saves, but diagnostics-on changed-save p95 was 21.12% above baseline across ten samples. This tail is unexplained and remains a performance limitation. The samples are not release-build or physical-disk measurements.
- WebKit-wide memory, decoded-image retention, and device-level write amplification remain unmeasured. Export verification covers the named S01-01 fixture, not every course layout or document format.
Release verification
- Tag
v0.2.7points to source commitfb050b121c2014ac3226e90d3683b7c6c26391b0. Release workflow run #37508824350 completed successfully on 2026-10-06 UTC; the public Release is not a draft or prerelease. - The 14,670,698-byte Universal DMG was downloaded and its SHA-256
d8758cd674b75e6c26ecc42317d383c2c227adabf046aef9a3deb75b8ed820d6matched the.sha256sidecar and GitHub asset digest. The 96-byte sidecar SHA-256 is06fc9d19b377d23cdf61f4e685ffdaa0e601decb7103c8928ee71e1d83fe676c;hdiutil verifyreported VALID. - The mounted app reports version
0.2.7, bundle IDio.github.wyzh0117.ai-course-workbench, and architecturesx86_64 arm64. Deep strict code-signature verification passed; the signature is ad-hoc with no Team ID. It is not Developer ID signed or notarized, has no stapled ticket, andspctlrejected it. Verification mounted read-only and did not install or launch the app.
System
- macOS 11.0 (Big Sur) 或更高版本
- Architecture: Universal(Apple Silicon arm64 + Intel x86_64,同一个安装包)
Install
- 下载
AI-Course-Workbench-macOS.dmg - 双击打开 DMG
- 将 AI Course Workbench 拖到 Applications
- 从 Applications 打开
- 首次打开需要手动放行一次,方式取决于 macOS 版本:
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
双击后点「完成」→ 打开「系统设置 → 隐私与安全性」→ 在「安全性」区域点「仍要打开」→ 输入密码或 Touch ID 确认。 - macOS 11 (Big Sur) – 14 (Sonoma):在「应用程序」中右键点击(或按住 Control 点击)
AI Course Workbench → 选择「打开」→ 在弹窗中再次点「打开」。 - 放行一次之后,双击即可正常打开。
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
- 不建议关闭 Gatekeeper,也不建议用
xattr移除隔离属性。
Distribution status
- NOT signed with an Apple Developer ID and NOT notarized.
Verify
d8758cd674b75e6c26ecc42317d383c2c227adabf046aef9a3deb75b8ed820d6 AI-Course-Workbench-macOS.dmg
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgLinks
- Latest release page: https://github.com/wyzh0117/workbench/releases/latest
- Direct download: https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg
AI Course Workbench 0.2.6
AI Course Workbench 0.2.6
What's new
- Mapping Preview now keeps selection separate from the stable scan snapshot, and a confirmed mapping can open a grouped picker for direct-child documents.
- Safe, resolvable images in Markdown, DOCX, EPUB, and LaTeX are imported at their semantic position. Recursively discovered media enters the library without automatically adding a body reference.
- Lesson Preview presents body content with image, GIF, and video media. GIFs use a static first-frame thumbnail in Preview and animate in the viewer; inserted video blocks show a poster, stay paused when opened, and play only after the user selects Play. Closing the viewer stops and resets playback.
- Flow displays block summaries, opens the matching block in Body when a row is selected, and changes canonical order through its drag handle. Grid and Page editing live in the top-level Free Layout workspace.
- Page information hierarchy and control styling have been revised across the main routes and shared overlays; the completion report records which route and keyboard checks remain partial.
- Saves now detect when the project file changed elsewhere and pause instead of overwriting newer work. The conflict view offers reload, merge, or an explicit keep-local choice when changes conflict; imports preserve existing edits and skip duplicates unless you choose to import again.
Notes
- Mapping reads direct-child documents only; nested documents are not recursively offered. The execution layer revalidates paths and derives new lesson grouping from the confirmed folder mapping.
- Markdown image syntax supports images and GIFs; add video through a video block in Media. PDF imports its text layer only, without image XObjects or OCR for scanned pages. Plain text has no semantic embedded-image positions.
- LaTeX
\graphicspathand legacy graphics macros are not resolved; unsupported math/macros degrade with warnings. EPUB CSS and DOCX visual theme/layout are not preserved. - Automated gates passed on the final frozen source:
deno task check,deno task test(602/602 with loopback), and 222 Rust tests. The local Universal App/DMG passed architecture, version, and integrity checks; that local bundle is unsigned and unnotarized. Published artifact status is checked separately after the release workflow. - Native GUI smoke could not be completed because the test Mac was locked. The Overview page was measured at four widths; broader route, sidebar, system text-scaling, overlay keyboard, and Free Layout delete/reopen/export review remains partial. See the v0.2.6 UI redesign report, which keeps these limits separate from passed browser behavior.
System
- macOS 11.0 (Big Sur) 或更高版本
- Architecture: Universal(Apple Silicon arm64 + Intel x86_64,同一个安装包)
Install
- 下载
AI-Course-Workbench-macOS.dmg - 双击打开 DMG
- 将 AI Course Workbench 拖到 Applications
- 从 Applications 打开
- 首次打开需要手动放行一次,方式取决于 macOS 版本:
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
双击后点「完成」→ 打开「系统设置 → 隐私与安全性」→ 在「安全性」区域点「仍要打开」→ 输入密码或 Touch ID 确认。 - macOS 11 (Big Sur) – 14 (Sonoma):在「应用程序」中右键点击(或按住 Control 点击)
AI Course Workbench → 选择「打开」→ 在弹窗中再次点「打开」。 - 放行一次之后,双击即可正常打开。
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
- 不建议关闭 Gatekeeper,也不建议用
xattr移除隔离属性。
Distribution status
- NOT signed with an Apple Developer ID and NOT notarized.
Verify
08ecebe9ea20d848244c750598d2cf1e4f921e942532bd9126f395b1487cc27e AI-Course-Workbench-macOS.dmg
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgLinks
- Latest release page: https://github.com/wyzh0117/workbench/releases/latest
- Direct download: https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg
Published artifact verification
- The release workflow completed successfully for annotated tag
v0.2.6at source commit223a5944e50ffdc6f4bdd09509eacf8f09c47b0e. Release-record documentation was subsequently pushed in commit1c4f6381246b0987298a15e03bc752dc6c934c1b. - The public DMG was downloaded anonymously and verified. Its SHA-256 is
08ecebe9ea20d848244c750598d2cf1e4f921e942532bd9126f395b1487cc27e, matching the GitHub asset digest and the.sha256sidecar. The sidecar's own SHA-256 is0577fc8af02e661cea7d3b831409c0d5f805efa56d9b16579e31d3b63123b8eb.hdiutil verifyreported VALID. - The mounted public app reports version/build
0.2.6and universal architecturesx86_64 arm64. The public CI app has a valid ad-hoc signature (codesign --verifypasses;TeamIdentifier=not set); no Developer ID certificate was available, and the Developer ID/notarization path was skipped. Gatekeeper assessment reported the app rejected. These public CI signature facts differ from the separate local smoke candidate, which was unsigned. - The public verification record includes the exact download, hash, mount, signature, and frozen prior-release checks: v0.2.6 public release verification.
v0.2.6is the latest published release. The frozenv0.2.5DMG and sidecar digests remaina84884466b084cd674a4d0d32a52b3284863a9adb9706c11283009fb14b7f9fdandb57141634353c61f4a49d0b0e32d0eacf5e027e7cee2410ca657cc47d8b70ce8, respectively.
AI Course Workbench 0.2.5
AI Course Workbench 0.2.5
What's new
- The start page is a project list. Workbench remembers every course project you have opened, most recent first, and one click resumes the course you were last working in. A row whose folder was moved or deleted says so and offers "relocate" — allowed only when the
project.idmatches — or removing just that row; both only touch the list, never the course files on disk. - Opening a folder no longer misidentifies a project. A usable
project.jsonopens directly; a manifest from an older schema is repaired first with itsproject.idpreserved; a corrupt, too-new or non-course manifest states the actual problem; and a folder without any manifest goes straight to the import scan. A parent folder that holds one project per child is not mistaken for any of them. - Nine text and document formats import as real lesson content.
.txt.text.md.markdown.tex.latex.docx.epub.pdfarrive with their structure — heading levels, paragraphs, bold / italic / strikethrough, blockquotes, lists, code, tables, links and embedded images — instead of collapsing into one plain-text block. - You approve the documents one by one. After the mapping plan is confirmed, a "select documents to import as lesson content" step lists every candidate with select all / select none / per-row checkboxes. Images and videos need no checking — they go to the media library automatically.
- Scrolling a large media library is stable. The flicker, UI thrash and stuck cards that appeared when scrolling back up through many assets are fixed: a finished preview repaints only its own card, live cards are no longer evicted from the thumbnail cache, and a card that fails to load shows a retry button instead of looping. A 120-card automated case pins the behaviour frame by frame.
Notes
- Importing is reference-safe: your source files are never moved, renamed, deleted or overwritten, and an import only appends course content. The project list is a rebuildable index (project id, path, title, last opened) stored outside the project — it never holds course bodies or credentials, and deleting it only loses the recent list.
- Format boundaries are explicit: scanned PDFs have no text layer and are kept as reference files only (no OCR in this round); PDF import reads the text layer only, without embedded images, forms or annotations; LaTeX math is preserved as code blocks with a degradation notice;
.txtdeliberately guesses no headings; EPUB CSS is not parsed; DOCX Word styling is dropped. - The media-scroll fix was verified in the shipped frontend with automation, but real-trackpad scrolling and the in-window pointer walkthrough still need a human pass. So do the two channels inherited from 0.2.4: native window pointer / panel gestures and live provider calls — this environment still cannot script clicks into the macOS window and cannot reach
api.openai.com(outbound requests time out). - The 0.2.5 Universal macOS package is ad-hoc signed, has no
TeamIdentifier, and has not been notarized. On the built package,spctl --assess --type executereturnsrejected; macOS may require approval in Privacy & Security on first launch. - Undoing an import restores the project exactly but leaves the imported files in
assets/— Workbench never deletes files it did not create in a scratch area. Nothing else is destructive: v0.2.4 projects open directly, migration keepsproject.idbyte-identical, and API keys still live only in the macOS Keychain.
Release verification
- Source tag
v0.2.5points to commitd16b622c082720c3c386613df187deec3b7ec469; the release workflow 37100286505 completed withsuccesson the tag push. - The latest release page publishes the Universal DMG (14,293,951 bytes) and SHA-256 sidecar. Both were downloaded anonymously: the DMG hashes to
a84884466b084cd674a4d0d32a52b3284863a9adb9706c11283009fb14b7f9fd, the sidecar contains exactly that digest, and it matches the checksum GitHub reports for the asset.hdiutil verifyreported the DMG checksum VALID. - The mounted app bundle reports version 0.2.5 and carries both x86_64 and arm64 slices. Its signature is ad-hoc with
TeamIdentifiernot set;spctl --assess --type executereturnedrejected, and the package is not notarized. releases/latestnow resolves tov0.2.5, and the fixed direct linkreleases/latest/download/AI-Course-Workbench-macOS.dmgresolves to this release. Thev0.2.4tag, its Release, its DMG and its SHA-256 sidecar were not modified by this release.- Automated gates at the tagged source state:
deno task checkclean, 584 Deno tests passed / 0 failed,cargo fmt --checkclean, 216 Rust tests passed / 0 failed,cargo buildclean. The Universalcargo tauri buildruns in the release workflow and succeeded there. No human native-window pass, no live provider call and no real-trackpad scroll check are asserted by this release — see Notes above for what those channels still need.
System
- macOS 11.0 (Big Sur) 或更高版本
- Architecture: Universal(Apple Silicon arm64 + Intel x86_64,同一个安装包)
Install
- 下载
AI-Course-Workbench-macOS.dmg - 双击打开 DMG
- 将 AI Course Workbench 拖到 Applications
- 从 Applications 打开
- 首次打开需要手动放行一次,方式取决于 macOS 版本:
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
双击后点「完成」→ 打开「系统设置 → 隐私与安全性」→ 在「安全性」区域点「仍要打开」→ 输入密码或 Touch ID 确认。 - macOS 11 (Big Sur) – 14 (Sonoma):在「应用程序」中右键点击(或按住 Control 点击)
AI Course Workbench → 选择「打开」→ 在弹窗中再次点「打开」。 - 放行一次之后,双击即可正常打开。
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
- 不建议关闭 Gatekeeper,也不建议用
xattr移除隔离属性。
Distribution status
- NOT signed with an Apple Developer ID and NOT notarized.
Verify
a84884466b084cd674a4d0d32a52b3284863a9adb9706c11283009fb14b7f9fd AI-Course-Workbench-macOS.dmg
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgLinks
- Latest release page: https://github.com/wyzh0117/workbench/releases/latest
- Direct download: https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg
AI Course Workbench 0.2.4
AI Course Workbench 0.2.4
What's new
- Opening a folder now reads it before answering. A usable
project.jsonopens directly; a manifest that is corrupt, from an older or newer schema, or not a course file states the actual problem instead of reporting "no project.json found". A folder without any project goes straight into the import scan, and re-importing over an unusable manifest keeps the previous file as a backup rather than discarding it. - Importing a folder now also brings in the images and videos that live in its subfolders. Only visual media is collected, documents are not silently swept in, duplicates are detected by checksum while same-name-different-content files stay separate, and your source tree is never modified. The mapping preview still lists one level so the plan stays readable.
- Add Assets accepts a multi-selection or a whole folder drop as one batch. One unreadable file no longer cancels the rest, the result is reported per file (imported / duplicate / failed / skipped), and the batch undoes as a single step.
- Renaming an asset in the media library now renames the managed file on disk and updates every reference to it. The asset id, checksum and usages stay stable, Undo puts the old file name back, Redo re-applies the new one, and the project record always agrees with what is actually on disk.
- The lesson editor is distraction-free. The bold/italic/strike buttons and the "view Markdown source" switch are gone: typing
**bold**,# heading,> quote,- listor`code`compiles into real formatting with the markers removed, the caret stays where you were typing, each conversion costs exactly one Undo, and input-method composition is no longer interrupted. - Block toolbars are hidden by default. Hovering, selecting a block, or moving the keyboard focus inside it reveals the controls as an overlay that never pushes the content down; block properties use the same overlay and the ⋯ menu.
- Grid layout is back on left and right click. Left-click an unplaced block to drop it in the first free cell, left-click a placed block to start a move and click the highlighted cell to commit it, right-click to take it off the grid (undoable), and press Escape or click empty canvas to cancel. Selecting text inside a block is no longer read as a move command.
- The paginated canvas has two clear states: with pagination off there is no output-section editor, and the page tabs and page controls only appear once pagination is on. Leaving pagination editing changes no page, placement, or order data, and a page now renders exactly one visible title.
- Media library cards are rebuilt around the picture: a 4:3 poster area on a neutral background with the name, "type · size · usage" and one action row below. PNG/JPG/WebP now show a real thumbnail (PNG was blank), GIF and video show their first frame, and the enlarged preview closes with Escape as well as × and the backdrop — stopping playback on the way out so nothing keeps running behind a closed window.
- AI connections are configured provider-by-provider: your own provider id, display name, Base URL, one of three protocols (OpenAI Chat Completions, OpenAI Responses, Anthropic Messages), a write-only API key, then fetch that provider's real model list and pick from it — or type a model id when the list is unavailable. No preset provider templates ship any more. A refused save keeps everything you typed and names the field at fault, and a Base URL that is incomplete or carries embedded credentials is rejected before any request is sent.
- The ChatGPT subscription sign-in reports each stage separately: signed in but plan usage not authorised, model list unavailable, no models on the account, token refresh due versus refresh failed, and model selected but inference failed all get their own message instead of one generic "AI setup failed".
Notes
- Live provider calls are still not verified by this release. Automated tests cover request assembly, auth injection and error mapping against local protocol substitutes, and the environment used to close this round could not reach
api.openai.com(outbound requests timed out after 60 seconds). Nothing here claims a real subscription sign-in, a real token refresh, or a real inference was observed — authorise your own connection and treat the first live call as the check. - Native macOS window interaction could not be automated in this environment (no Accessibility grant for scripted clicks, no Screen Recording permission for capture). Every behavioural change above was verified in the shipped frontend — the same JavaScript that is bundled in this package — plus automated tests against real files. The native open-panel multi-selection, folder-versus-project opening in the system dialog, in-window pointer gestures, animated-GIF playback in WKWebView, and real input-method editing still need a human pass; please report anything that behaves differently in the actual window.
- Right after opening an older project the save badge can briefly read "unsaved". That is intentional and honest: loading repairs legacy structure, so memory genuinely differs from disk until the first autosave completes.
- Undoing a batch import restores the project exactly but leaves the imported files in
assets/— Workbench never deletes files it did not create in a scratch area. Orphans stay visible in the files view. - The Deno/service PDF output still omits inline images and emits a
pdf_inline_images_omittedwarning; native PDF output was verified with images. PPTX still simplifies complex Markdown tables and nested lists and warns when it does. Exact 1024-pixel layout, system text scaling and mid-drag pointer cancellation remain unverified. - The 0.2.4 Universal macOS package is ad-hoc signed, has no
TeamIdentifier, and has not been notarized. On the built package,spctl --assess --type executereturnsrejected; macOS may require approval in Privacy & Security on first launch. Apple Developer ID signing and notarization were unavailable for this build.
Release verification
- Source tag
v0.2.4points to commit4db396bf7c1953a62f72d3887d6ae07b03fcaa76; the release workflow 36906333256 completed withsuccesson the tag push. - The latest release page publishes the Universal DMG (12,107,473 bytes) and SHA-256 sidecar. Both were downloaded anonymously: the DMG hashes to
82fdba5957f57d9650f74922197e9593e981be418515e6c7e34519164cef4dab, the sidecar contains exactly that digest, and it matches the checksum GitHub reports for the asset.hdiutil verifyreported the DMG checksum VALID. - The mounted app bundle reports version 0.2.4 and carries both x86_64 and arm64 slices. Its signature is ad-hoc with
TeamIdentifiernot set;spctl --assess --type executereturnedrejected, and the package is not notarized. releases/latestnow resolves tov0.2.4. Thev0.2.3tag, its Release, its DMG and its SHA-256 sidecar were not modified by this release.- Automated gates at the tagged source state:
deno task checkclean, 522 Deno tests passed / 0 failed,cargo fmt --checkclean, 104 Rust tests passed / 0 failed,cargo buildclean. The Universalcargo tauri buildruns in the release workflow and succeeded there. No human native-window pass and no live provider call are asserted by this release — see Notes above for what those two channels still need.
System
- macOS 11.0 (Big Sur) 或更高版本
- Architecture: Universal(Apple Silicon arm64 + Intel x86_64,同一个安装包)
Install
- 下载
AI-Course-Workbench-macOS.dmg - 双击打开 DMG
- 将 AI Course Workbench 拖到 Applications
- 从 Applications 打开
- 首次打开需要手动放行一次,方式取决于 macOS 版本:
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
双击后点「完成」→ 打开「系统设置 → 隐私与安全性」→ 在「安全性」区域点「仍要打开」→ 输入密码或 Touch ID 确认。 - macOS 11 (Big Sur) – 14 (Sonoma):在「应用程序」中右键点击(或按住 Control 点击)
AI Course Workbench → 选择「打开」→ 在弹窗中再次点「打开」。 - 放行一次之后,双击即可正常打开。
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
- 不建议关闭 Gatekeeper,也不建议用
xattr移除隔离属性。
Distribution status
- NOT signed with an Apple Developer ID and NOT notarized.
Verify
82fdba5957f57d9650f74922197e9593e981be418515e6c7e34519164cef4dab AI-Course-Workbench-macOS.dmg
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgLinks
- Latest release page: https://github.com/wyzh0117/workbench/releases/latest
- Direct download: https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg
AI Course Workbench 0.2.3
AI Course Workbench 0.2.3
What's new
- Import Markdown, files, and folders with a visible mapping plan. Review selected Markdown image dependencies before confirming; missing or unsafe references are reported without fetching remote content.
- Append imported lessons to an existing project, place them in a selected stage or lesson, and undo an import as one operation. Source checksums help prevent accidental duplicate imports while preserving edits already made in Workbench.
- Render Markdown semantically in lesson content and previews, and preview supported local files in the workspace explorer without importing them into a course.
- Improve the lesson editor with more compact block controls, clearer pagination behavior, small-screen toolbar wrapping, and text selection recovery after moving blocks.
- Separate AI use from connection settings, clarify connection management, and handle OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages as distinct request protocols.
- Add a native Sign in with ChatGPT subscription flow with account-scoped credentials and session refresh. Browser-only runs continue to use API connections.
- Improve media previews, including static image/GIF posters and controlled video playback with resource cleanup.
Notes
- Preview support depends on the format and the capabilities of the current WebView. Unsupported document formats remain reference files. The Deno/service PDF output currently omits inline images and emits a
pdf_inline_images_omittedwarning; native PDF was verified with inline images. PPTX simplifies complex Markdown tables and nested lists and emits warnings for those conversions. - The static GIF poster is available, but animated GIF zoom playback was not observed in the tested macOS WKWebView: both the modal image and an independent image built from the same verified GIF bytes showed only the first red frame for 2.65 seconds. This remains unresolved for that WebView environment; it does not indicate corrupt source bytes. Exact 1024-pixel layout, system text scaling, and pointer-drag cancellation were not verified.
- Automated tests use local protocol/authentication substitutes; they do not verify live SIWC sign-in, token refresh against a real account, or a real-provider model request. Authorize your own connection before using it.
- The 0.2.3 Universal macOS package is ad-hoc signed, has no
TeamIdentifier, and has not been notarized. On the built package,spctl --assess --type executereturnedrejected; macOS may require approval in Privacy & Security on first launch. Developer ID signing and notarization were unavailable for this build.
System
- macOS 11.0 (Big Sur) 或更高版本
- Architecture: Universal(Apple Silicon arm64 + Intel x86_64,同一个安装包)
Install
- 下载
AI-Course-Workbench-macOS.dmg - 双击打开 DMG
- 将 AI Course Workbench 拖到 Applications
- 从 Applications 打开
- 首次打开需要手动放行一次,方式取决于 macOS 版本:
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
双击后点「完成」→ 打开「系统设置 → 隐私与安全性」→ 在「安全性」区域点「仍要打开」→ 输入密码或 Touch ID 确认。 - macOS 11 (Big Sur) – 14 (Sonoma):在「应用程序」中右键点击(或按住 Control 点击)
AI Course Workbench → 选择「打开」→ 在弹窗中再次点「打开」。 - 放行一次之后,双击即可正常打开。
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
- 不建议关闭 Gatekeeper,也不建议用
xattr移除隔离属性。
Distribution status
- NOT signed with an Apple Developer ID and NOT notarized.
Verify
62f8d6a4c00360c27452244aa0de6d2a1fb3dd9d7a9053522494e07d750a2d73 AI-Course-Workbench-macOS.dmg
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgLinks
- Latest release page: https://github.com/wyzh0117/workbench/releases/latest
- Direct download: https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg
Release verification
- Source tag
v0.2.3points to commit0ce229ac79b925164e3ea43eae4ac8059d5022e4; the release workflow 36805861906 succeeded. - The latest release page publishes the Universal DMG and SHA-256 sidecar. Both were downloaded anonymously; the sidecar matched the DMG SHA-256
62f8d6a4c00360c27452244aa0de6d2a1fb3dd9d7a9053522494e07d750a2d73, andhdiutil verifypassed. - The published app reports version 0.2.3 and contains x86_64 and arm64 slices. Its signature is ad-hoc with no
TeamIdentifier;spctlrejected it and it is not notarized.
AI Course Workbench 0.2.2
AI Course Workbench 0.2.2
What's new
- Protect saved AI API keys when a provider's service domain changes. Workbench asks you to confirm before sending a key to the new domain, and authenticated requests use the saved connection endpoint.
- Improve AI authentication errors. A provider's HTTP 401 response is distinguished from a missing key, with guidance to check the connection URL and authentication settings.
- Preview more media in the library: zoom images and GIFs, view the first page of PDFs, play video and audio, and read Markdown. Other document formats remain available as reference-file cards.
- Load media previews as items come into view. Off-screen items show that they are waiting to load; failed previews show the available error and a retry action.
- Add files to the media library without automatically attaching them to the currently selected lesson. Choose where to use each asset separately.
- Organize the course map by renaming, reordering, or collapsing stages, and edit lesson titles inline.
System
- macOS 11.0 (Big Sur) 或更高版本
- Architecture: Universal(Apple Silicon arm64 + Intel x86_64,同一个安装包)
Install
- 下载
AI-Course-Workbench-macOS.dmg - 双击打开 DMG
- 将 AI Course Workbench 拖到 Applications
- 从 Applications 打开
- 首次打开需要手动放行一次,方式取决于 macOS 版本:
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
双击后点「完成」→ 打开「系统设置 → 隐私与安全性」→ 在「安全性」区域点「仍要打开」→ 输入密码或 Touch ID 确认。 - macOS 11 (Big Sur) – 14 (Sonoma):在「应用程序」中右键点击(或按住 Control 点击)
AI Course Workbench → 选择「打开」→ 在弹窗中再次点「打开」。 - 放行一次之后,双击即可正常打开。
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
- 不建议关闭 Gatekeeper,也不建议用
xattr移除隔离属性。
Distribution status
- NOT signed with an Apple Developer ID and NOT notarized.
Verify
3713375ee4501ffda026a335a5a4bd54bc625ed2ef22efa6d35753d80d29a5bc AI-Course-Workbench-macOS.dmg
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgLinks
- Latest release page: https://github.com/wyzh0117/workbench/releases/latest
- Direct download: https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg
AI Course Workbench 0.2.1
AI Course Workbench 0.2.1
What's new
- Add persistent pages to Grid layouts. Pages have stable IDs, editable order and size, and support moving placed content between pages.
- Export page layouts to paged HTML, PDF, and PowerPoint. PPTX pages map one-to-one to slides, with text and pictures as separate editable objects.
- Preview a common output size for mixed-size course pages. PDF and PPTX require an explicit target size when source pages differ.
- Convert legacy continuous Grid sections into pages while keeping the existing layout data intact until conversion is confirmed.
- Bind export preflight warnings to the exact project snapshot. Blocking layout or asset issues cannot be bypassed by warning acknowledgement.
- Fix the macOS release fallback so builds without an Apple signing certificate use an ad-hoc signing step without attempting to import empty certificate values.
System
- macOS 11.0 (Big Sur) 或更高版本
- Architecture: Universal(Apple Silicon arm64 + Intel x86_64,同一个安装包)
Install
- 下载
AI-Course-Workbench-macOS.dmg - 双击打开 DMG
- 将 AI Course Workbench 拖到 Applications
- 从 Applications 打开
- 首次打开需要手动放行一次,方式取决于 macOS 版本:
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
双击后点「完成」→ 打开「系统设置 → 隐私与安全性」→ 在「安全性」区域点「仍要打开」→ 输入密码或 Touch ID 确认。 - macOS 11 (Big Sur) – 14 (Sonoma):在「应用程序」中右键点击(或按住 Control 点击)
AI Course Workbench → 选择「打开」→ 在弹窗中再次点「打开」。 - 放行一次之后,双击即可正常打开。
- macOS 15 (Sequoia) / 26 及更新版本:Control-click 已无法绕过 Gatekeeper。
- 不建议关闭 Gatekeeper,也不建议用
xattr移除隔离属性。
Distribution status
- NOT signed with an Apple Developer ID and NOT notarized.
Verify
ca151a578065939f6c2e0dfa4f23955faee5f512c6833ccbe4931a68bf66817c AI-Course-Workbench-macOS.dmg
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgLinks
- Latest release page: https://github.com/wyzh0117/workbench/releases/latest
- Direct download: https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg
AI Course Workbench v0.1.2 — macOS (Universal)
AI Course Workbench v0.1.2 — macOS
本地优先的课程创作工作台。项目数据保存在你自己磁盘上的开放 project.json。
下载
| 入口 | 链接 |
|---|---|
| 最新版本页面 | https://github.com/wyzh0117/workbench/releases/latest |
| 直接下载最新 DMG(固定链接) | https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg |
本页资产:AI-Course-Workbench-macOS.dmg 与 AI-Course-Workbench-macOS.dmg.sha256。
该文件名在所有版本中保持固定,因此上面的固定链接会长期指向最新版本。
v0.1.1 已发布并冻结,仍可从历史 Release 下载;本版是新 tag,没有改写 v0.1.1 的字节。
本版变更(相对 v0.1.1)
V1-T03 — Course Authoring
- 打开非项目文件夹时说明原因、缺什么、下一步(不再只有一句「不是可用课程项目」);
- 课程地图可新增 / 重命名 / 调整顺序 / 删除阶段(空阶段两次确认;非空阶段提示先移动课程);
- Block 用指针拖动手柄重排,顶栏工具不再被裁切,Small 完整外框 100px;
- 点击文字或外框都会选中 Block,左侧高亮,输入法与光标不被打断;
+ 媒体插到当前 Block 之后;媒体库「插入到当前位置」走同一条路径;- 点击占位符打开右侧「状态」;左栏增加可点击的「工作台」;
- 素材显示名称可改(不改磁盘文件名);待补位置是真实锚点,不再写「位置:待补」。
V1-T04 — Workspace Explorer & 已有文件夹接管
- 启动页三条独立路径:新建课程 / 打开 Workbench 项目 / 导入已有文件夹;
- 只读扫描与文件浏览器(Markdown / 图片 / 视频 / PDF·DOCX 参考预览);
- 映射预览标为「建议」,可取消、改映射,确认后才写入
project.json; - 原地接管(不移动、不改名、不删除原文件);相同 checksum 复用,同名不同内容不静默覆盖。
系统要求
最低系统版本:macOS 11.0(Big Sur)
架构:Universal —— Apple Silicon(arm64)与 Intel(x86_64)同一个安装包
安装
1. 下载 AI-Course-Workbench-macOS.dmg
2. 双击打开 DMG
3. 把 AI Course Workbench 拖到 Applications
4. 从 Applications 打开
校验下载完整性
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgSHA-256:1740d8f921adff2787550f276749e055bb6ea963fff2ca28543c57f8a284cb8b
字节数:10,616,574
首次打开说明(重要)
本版本尚未使用 Apple Developer ID 签名与公证,所以首次打开时 macOS 会拦截,提示
「无法验证开发者」或「Apple 无法检查其是否包含恶意软件」。这是预期行为,不是安装包损坏。
macOS 15 (Sequoia) / 26 及更新版本
1. 双击 AI Course Workbench,出现拦截时点「完成」
2. 打开「系统设置」→「隐私与安全性」
3. 点「仍要打开」,输入密码或 Touch ID 确认
4. 在再次出现的确认框里再点一次「仍要打开」
macOS 11 (Big Sur) – 14 (Sonoma)
在「应用程序」中右键点击(或按住 Control 点击)AI Course Workbench
→ 选择「打开」
→ 在弹窗中再次点「打开」
分发状态(如实说明)
DISTRIBUTION STATE = PARTIAL
BLOCKER = 缺正式 macOS signing / notarization credentials
本版 DMG 为 ad-hoc 签名:codesign --verify --deep --strict 通过,spctl --assess --type execute 判定 rejected。
不宣称 PUBLIC RELEASE READY,也不宣称「普通用户无安全阻碍安装」。
验证记录
deno task check 通过
deno task test 327 passed / 0 failed
cargo test 68 passed / 0 failed
lipo -archs x86_64 arm64
codesign --verify --deep --strict 通过(adhoc)
spctl --assess --type execute rejected
hdiutil verify VALID
启动 smoke 指定项目目录存活 10s 后 SIGTERM
不存在的 --project-dir 开窗前退出并打印原因
AI Course Workbench v0.1.1 — macOS (Universal)
AI Course Workbench v0.1.1 — macOS
本地优先的课程创作工作台。项目数据保存在你自己磁盘上的开放 project.json。
下载
| 入口 | 链接 |
|---|---|
| 最新版本页面 | https://github.com/wyzh0117/workbench/releases/latest |
| 直接下载最新 DMG(固定链接) | https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg |
本页资产:AI-Course-Workbench-macOS.dmg 与 AI-Course-Workbench-macOS.dmg.sha256。
该文件名在所有版本中保持固定,因此上面的固定链接会长期指向最新版本。
本版变更(相对 v0.1.0)
v0.1.0 的安装包构建自较早的提交,不包含下面这些修复;v0.1.1 是按当前
main 重新构建的最新安装包。
修复真实使用阻断(P0)
- 项目选择:同一项目可以反复打开,换项目走真实文件夹选择,失败给出具体原因而不是静默无反应;
- 输入:输入、保存、状态栏更新与 toast 不再互相打断,中文输入法组字期间不重渲染;
- 弹窗:弹窗内点击 / 展开不再误关,打开即把光标放进该填的输入框;
- API Key:只有真正写入并能读回才显示「已配置密钥」,失败会说明是权限还是写入问题;
- Block:每个区块有拖拽把手,新建区块立刻选中并打开属性面板;
- Flow / Grid:放置、移出、缩放稳定,预览与真实网格一致,并列出还没上画布的正文;
- 课程地图:逐课说明缺什么,seed 只生成草稿,确认后才建正式结构;状态栏永远说明「现在改的是谁」。
Authoring 直觉问题(P1)
- 十项课程地图 / 单课编辑器 / 待补 / 素材的直觉性问题全部落地,均有回归测试保护。
交互重构(P2)
- Provider / Model 配置重构:Base URL → 读取模型 → 选择或手动输入 Model ID → 保存;新增真实模型枚举
(GET {base_url}/models,兼容多种 payload 形状),读取失败时手动填写仍是明确出口;不再依赖任何硬编码模型清单; - Block 自适应高度:短内容 Small → Medium、长内容 Medium → Large,到顶由 Block 外框自己滚动,
打字即时跟随、内容减少自动收缩; - Flow 成为唯一排序入口:Flow 每行 ↑↓ 直接写回 Canonical
order_index,结构视图不再提供排序,
不存在第二份顺序; - Grid 交互重设计:左键点击落位 / 进入移动状态、点击目标格直接移动、右键移出网格,尺寸动作稳定可用,
放不下时明确拒绝;网格只保存位置,不动内容本身。
本轮额外发现并修复
- 桌面壳缺少
course.seed.create/blueprint.build命令映射(点「把材料变成课程地图」直接失败); - 沙箱内写入被拒时显示成「项目被占用」这类误导性提示,改为如实说明写入权限问题;
- 新建 Block 后属性面板要等下一次无关渲染才切换;
- 所有弹窗打开时都不接管输入焦点,第一次输入直接丢失。
系统要求
最低系统版本:macOS 11.0(Big Sur)
架构:Universal —— Apple Silicon(arm64)与 Intel(x86_64)同一个安装包
安装
1. 下载 AI-Course-Workbench-macOS.dmg
2. 双击打开 DMG
3. 把 AI Course Workbench 拖到 Applications
4. 从 Applications 打开
校验下载完整性
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgSHA-256:801fb7ea27610a8799cc5017e5c960462c76894f4ef7274af299ec0384071857
字节数:10,468,230
首次打开说明(重要)
本版本尚未使用 Apple Developer ID 签名与公证,所以首次打开时 macOS 会拦截,提示
「无法验证开发者」或「Apple 无法检查其是否包含恶意软件」。这是预期行为,不是安装包损坏。
放行方式只需要做一次,但取决于你的 macOS 版本:macOS 15 (Sequoia) 及更新版本已经取消了
「右键 → 打开」这条捷径(Apple 官方说明:Control-click 不再能绕过 Gatekeeper,
必须到「系统设置 → 隐私与安全性」里确认)。
macOS 15 (Sequoia) / 26 及更新版本
1. 双击 AI Course Workbench,出现「无法打开,因为 Apple 无法检查其是否包含恶意软件」时点「完成」
2. 打开「系统设置」→「隐私与安全性」
3. 在「安全性」区域找到「已阻止使用 AI Course Workbench,因为来自身份不明的开发者」
4. 点「仍要打开」,输入密码或 Touch ID 确认
5. 在再次出现的确认框里再点一次「仍要打开」
macOS 11 (Big Sur) – 14 (Sonoma)
在「应用程序」中右键点击(或按住 Control 点击)AI Course Workbench
→ 选择「打开」
→ 在弹窗中再次点「打开」
两种方式都只需要做一次;放行之后双击即可正常打开。
本版不指导、也不建议关闭 Gatekeeper,或用 xattr 移除隔离属性。
分发状态(如实说明)
DISTRIBUTION STATE = PARTIAL
BLOCKER = 缺正式 macOS signing / notarization credentials
- 已完成:正式 Release 构建(非 Debug)、Universal(Apple Silicon + Intel)DMG、
固定资产文件名、SHA-256 校验资产、公开仓库、固定 latest 直链。 - 未完成:Developer ID Application 签名与 Apple 公证(notarization / stapling)。
发版机器上没有可用的 Apple Developer Program 分发凭据
(security find-identity -v -p codesigning返回 0 valid identities),
因此当前 DMG 为 ad-hoc 签名(走 Tauri 官方签名路径APPLE_SIGNING_IDENTITY="-"):
codesign --verify --deep --strict通过,但spctl --assess --type execute判定 rejected。 - 因此不宣称
PUBLIC RELEASE READY,也不宣称「普通用户无安全阻碍安装」。 - 拿到 Apple Developer 分发资格后只需补做签名、公证、重新上传 Release 与一次安装 smoke,
不需要重新开发 Workbench 本体。 - 实测:本 Release 的 DMG 经
hdiutil verify判定VALID,从 DMG 中取出的 App 用
spctl --assess --type execute判定rejected(无 Developer ID 与公证),
与上面「首次打开说明」描述的用户真实遭遇一致。 - 一处未实测项:放行之后的首次启动没有在自动化环境里实测过(无法自动投递右键菜单与
「系统设置」交互),只实测了放行之前的拦截状态。
本版包含
- 课程地图、单课编辑器(正文 / 结构 / 排版 / 预览)、Flow / Grid、素材库、待补总览、六维完成度;
- 只审阅式 AI 助手:课程 / 当前课次 / 当前区块三种上下文范围,调用前可预览将发送与不会发送的内容,
修改型请求产生 ChangeDraft 并逐条 Diff 审核后才 Apply;API Key 只写入 macOS 系统钥匙串,不回显、
不进入课程、备份、日志、导出或执行记录; - 发布与导出中心:Markdown(当前课 / 整门课程)、Semantic HTML、Static Web Package、PDF、
微信 / 富文本迁移版、Project JSON、素材包、完整项目包,导出前检查区分 BLOCKING 与 WARNING,导出严格只读; - 原子写入、自动保存与恢复、项目锁、外部修改检测、历史版本恢复、按项目分别保存的阅读位置;
- Universal 二进制,Apple Silicon 与 Intel 共用同一个安装包。
已知限制
- 尚未完成真实在线 AI Provider 调用验收:本版走通完整闭环使用的是离线「本地确定性连接器」,
真实 Provider 的请求组装、鉴权注入与错误码映射有自动化测试覆盖,但没有一次真实在线 smoke; - 未签名未公证(见上方「分发状态」);
- PNG / JPG 位图输出与复杂长图海报系统为明确的非目标;
- Windows / Linux 不在本版支持范围内。
验证记录
deno task check 通过
deno task test 266 passed / 0 failed
cargo test 55 passed / 0 failed
lipo -archs x86_64 arm64
codesign --verify --deep --strict 通过
codesign -dv Identifier=io.github.wyzh0117.ai-course-workbench
Signature=adhoc, TeamIdentifier=not set
Info.plist entries=16, Sealed Resources version=2
spctl --assess --type execute rejected(缺 Developer ID 与公证)
hdiutil verify VALID
启动 smoke 从 DMG 取出 App → 指定项目目录启动 → 存活 10s 无崩溃
→ SIGTERM graceful 退出;--project-dir 指向不存在目录时
按文档在开窗前退出并打印原因
本版未重做 v0.1.0 记录过的完整交互安装走查(拖入 Applications → 三栏工作台 → AI 助手 →
关闭 → 重启);上面记录的是本次实际执行的验证项,没有执行的不写成已通过。
AI Course Workbench v0.1.0 — macOS (Universal)
AI Course Workbench v0.1.0 — macOS
本地优先的课程创作工作台。项目数据保存在你自己磁盘上的开放 project.json。
下载
| 入口 | 链接 |
|---|---|
| 最新版本页面 | https://github.com/wyzh0117/workbench/releases/latest |
| 直接下载最新 DMG(固定链接) | https://github.com/wyzh0117/workbench/releases/latest/download/AI-Course-Workbench-macOS.dmg |
本页资产:AI-Course-Workbench-macOS.dmg 与 AI-Course-Workbench-macOS.dmg.sha256。
该文件名在所有版本中保持固定,因此上面的固定链接会长期指向最新版本。
系统要求
最低系统版本:macOS 11.0(Big Sur)
架构:Universal —— Apple Silicon(arm64)与 Intel(x86_64)同一个安装包
安装
1. 下载 AI-Course-Workbench-macOS.dmg
2. 双击打开 DMG
3. 把 AI Course Workbench 拖到 Applications
4. 从 Applications 打开
校验下载完整性
shasum -a 256 ~/Downloads/AI-Course-Workbench-macOS.dmgSHA-256:59597a342109785e190d9dc8194d841744249dbbc46498ee594572d2d2412573
字节数:10,357,233
首次打开说明(重要)
本版本尚未使用 Apple Developer ID 签名与公证,所以首次打开时 macOS 会拦截,提示
「无法验证开发者」或「Apple 无法检查其是否包含恶意软件」。这是预期行为,不是安装包损坏。
放行方式只需要做一次,但取决于你的 macOS 版本:macOS 15 (Sequoia) 及更新版本已经取消了
「右键 → 打开」这条捷径(Apple 官方说明:Control-click 不再能绕过 Gatekeeper,
必须到「系统设置 → 隐私与安全性」里确认)。
macOS 15 (Sequoia) / 26 及更新版本
1. 双击 AI Course Workbench,出现「无法打开,因为 Apple 无法检查其是否包含恶意软件」时点「完成」
2. 打开「系统设置」→「隐私与安全性」
3. 在「安全性」区域找到「已阻止使用 AI Course Workbench,因为来自身份不明的开发者」
4. 点「仍要打开」,输入密码或 Touch ID 确认
5. 在再次出现的确认框里再点一次「仍要打开」
macOS 11 (Big Sur) – 14 (Sonoma)
在「应用程序」中右键点击(或按住 Control 点击)AI Course Workbench
→ 选择「打开」
→ 在弹窗中再次点「打开」
两种方式都只需要做一次;放行之后双击即可正常打开。
本版不指导、也不建议关闭 Gatekeeper,或用 xattr 移除隔离属性。
分发状态(如实说明)
DISTRIBUTION STATE = PARTIAL
BLOCKER = 缺正式 macOS signing / notarization credentials
- 已完成:正式 Release 构建(非 Debug)、Universal(Apple Silicon + Intel)DMG、
固定资产文件名、SHA-256 校验资产、公开仓库、固定 latest 直链。 - 未完成:Developer ID Application 签名与 Apple 公证(notarization / stapling)。
发版机器上没有可用的 Apple Developer Program 分发凭据
(security find-identity -v -p codesigning返回 0 valid identities),
因此当前 DMG 为 ad-hoc 签名:codesign --verify --deep --strict通过,
但spctl --assess --type execute判定 rejected。 - 因此不宣称
PUBLIC RELEASE READY,也不宣称「普通用户无安全阻碍安装」。 - 拿到 Apple Developer 分发资格后只需补做签名、公证、重新上传 Release 与一次安装 smoke,
不需要重新开发 Workbench 本体。 - 实测:把本 Release 的资产重新匿名下载、按浏览器行为加上隔离属性后,
spctl --assess --type execute判定rejected—— 上面「首次打开说明」写的就是用户真实会遇到的状态。 - 一处未实测项:放行之后的首次启动没有在自动化环境里实测过(无法自动投递右键菜单与
「系统设置」交互),只实测了放行之前的拦截状态。
本版包含
- 课程地图、单课编辑器(正文 / 结构 / 排版 / 预览)、Flow / Grid、素材库、待补总览、六维完成度;
- 只审阅式 AI 助手:课程 / 当前课次 / 当前区块三种上下文范围,调用前可预览将发送与不会发送的内容,
修改型请求产生 ChangeDraft 并逐条 Diff 审核后才 Apply;API Key 只写入 macOS 系统钥匙串,不回显、
不进入课程、备份、日志、导出或执行记录; - 发布与导出中心:Markdown(当前课 / 整门课程)、Semantic HTML、Static Web Package、PDF、
微信 / 富文本迁移版、Project JSON、素材包、完整项目包,导出前检查区分 BLOCKING 与 WARNING,导出严格只读; - 原子写入、自动保存与恢复、项目锁、外部修改检测、历史版本恢复、按项目分别保存的阅读位置;
- Universal 二进制,Apple Silicon 与 Intel 共用同一个安装包。
已知限制
- 尚未完成真实在线 AI Provider 调用验收:本版走通完整闭环使用的是离线「本地确定性连接器」,
真实 Provider 的请求组装、鉴权注入与错误码映射有自动化测试覆盖,但没有一次真实在线 smoke; - 未签名未公证(见上方「分发状态」);
- PNG / JPG 位图输出与复杂长图海报系统为明确的非目标;
- Windows / Linux 不在本版支持范围内。
验证记录
deno task check 通过
deno task test 236 passed / 0 failed
cargo test 49 passed / 0 failed
lipo -archs x86_64 arm64
codesign --verify --deep --strict 通过
spctl --assess --type execute rejected(缺 Developer ID 与公证)
安装 smoke DMG → /Applications → 启动 → 干净默认主页 → 三栏工作台
→ AI 助手与钥匙串说明 → 关闭 → 重启 全部通过