tellme/Package.swift
Felipe M. 7ba5895406
Complete Phase 3: Text injection with permissions management
- Implement text injection with paste method (NSPasteboard + ⌘V)
- Add typing fallback with Unicode support and keyboard layout respect
- Integrate secure input detection using IsSecureEventInputEnabled()
- Add comprehensive permission checking and management
- Create Permissions tab in preferences with status indicators
- Add permission onboarding flow for new users
- Implement automatic fallback between injection methods
- Add deep links to System Settings for permission grants
- Remove duplicate preferences menu item
- Create development build script for easier testing
- Update Phase 3 tasks as completed in TODO.md
2025-09-19 09:04:38 +02:00

133 lines
No EOL
3.3 KiB
Swift

// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "MenuWhisper",
platforms: [
.macOS(.v13)
],
products: [
.executable(
name: "MenuWhisper",
targets: ["App"]
)
],
dependencies: [
.package(url: "https://github.com/exPHAT/SwiftWhisper.git", branch: "master")
],
targets: [
// Main Application Target
.executableTarget(
name: "App",
dependencies: [
"MenuWhisperAudio",
"CoreSTT",
"CoreModels",
"CoreInjection",
"CorePermissions",
"CoreSettings",
"CoreUtils"
],
path: "Sources/App",
resources: [
.copy("Resources")
]
),
// Core Module Targets
.target(
name: "MenuWhisperAudio",
dependencies: ["CoreUtils"],
path: "Sources/CoreAudio"
),
.target(
name: "CoreSTT",
dependencies: [
"CoreUtils",
"CoreModels",
"MenuWhisperAudio",
.product(name: "SwiftWhisper", package: "SwiftWhisper")
],
path: "Sources/CoreSTT"
),
.target(
name: "CoreModels",
dependencies: ["CoreUtils"],
path: "Sources/CoreModels"
),
.target(
name: "CoreInjection",
dependencies: ["CoreUtils", "CorePermissions"],
path: "Sources/CoreInjection"
),
.target(
name: "CorePermissions",
dependencies: ["CoreUtils"],
path: "Sources/CorePermissions"
),
.target(
name: "CoreSettings",
dependencies: ["CoreUtils"],
path: "Sources/CoreSettings"
),
.target(
name: "CoreUtils",
path: "Sources/CoreUtils"
),
// Test Targets
.testTarget(
name: "MenuWhisperAudioTests",
dependencies: ["MenuWhisperAudio"],
path: "Tests/CoreAudioTests"
),
.testTarget(
name: "CoreSTTTests",
dependencies: ["CoreSTT"],
path: "Tests/CoreSTTTests"
),
.testTarget(
name: "CoreModelsTests",
dependencies: ["CoreModels"],
path: "Tests/CoreModelsTests"
),
.testTarget(
name: "CoreInjectionTests",
dependencies: ["CoreInjection"],
path: "Tests/CoreInjectionTests"
),
.testTarget(
name: "CorePermissionsTests",
dependencies: ["CorePermissions"],
path: "Tests/CorePermissionsTests"
),
.testTarget(
name: "CoreSettingsTests",
dependencies: ["CoreSettings"],
path: "Tests/CoreSettingsTests"
),
.testTarget(
name: "CoreUtilsTests",
dependencies: ["CoreUtils"],
path: "Tests/CoreUtilsTests"
),
.testTarget(
name: "IntegrationTests",
dependencies: ["CoreSTT", "CoreModels", "MenuWhisperAudio"],
path: "Tests/IntegrationTests"
)
]
)