276d2bb6-619d-4888-ba11-8a6.../Sources/ClipperPlugin.swift
徐翔宇 4e22618364 v0.1.0: initial 划词侠 — AI Text Actions plugin for MioIsland
Quick AI actions on clipboard or selected text. Four actions:
- 翻译 (中/英/日)
- 总结 (3-bullet Chinese)
- 改语气 (正式/口语/友好/严谨)
- 邮件回复

Powered by DeepSeek with Server-Sent Events streaming for
typewriter feedback (~600ms first byte). Two source modes:
clipboard (no permission) and selected-text via NSAccessibility
(graceful fallback to clipboard + permission banner if denied).

Five-state UI machine: idle → input → loading (cancellable) →
result → missing-config. Last 20 actions persisted to UserDefaults.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 20:21:17 +08:00

38 lines
915 B
Swift

//
// ClipperPlugin.swift
// Mio Island plugin:
//
// Principal class. Module = ClipperPlugin, Class = ClipperPlugin
// NSPrincipalClass = "ClipperPlugin.ClipperPlugin".
//
import AppKit
import SwiftUI
final class ClipperPlugin: NSObject, MioPlugin {
var id: String { "clipper" }
var name: String { "划词侠" }
var icon: String { "wand.and.stars" }
var version: String { "0.1.0" }
func activate() {
ClipperDebugLog.write("plugin activate")
Task { @MainActor in
ClipperStore.shared.activate()
}
}
func deactivate() {
ClipperDebugLog.write("plugin deactivate")
Task { @MainActor in
ClipperStore.shared.deactivate()
}
}
func makeView() -> NSView {
let view = NSHostingView(rootView: ExpandedView())
view.autoresizingMask = [.width, .height]
return view
}
}