Commit Graph

61 Commits

Author SHA1 Message Date
Peter Steinberger
e7320105a2 fix: restore image analysis via GPT-5 and config-driven providers
- Default AI to GPT-5 across PeekabooCore; include gpt‑5 mini/nano in lists
- Hydrate Tachikoma with OPENAI/ANTHROPIC keys and Ollama URL from config/env
- Wire CLI SeeCommand to real PeekabooAIService (removed placeholder)
- Make MCP Analyze tool read providers from config; use GPT‑5 for OpenAI
- Update Image tool text and model reporting to GPT‑5
- Fix OpenAI chat content encoding (type/text/image_url) for multimodal
- Prefer providers default to `openai/gpt-5` first

This re-enables OCR/vision analysis out of the box using env or config credentials.
2025-08-08 03:49:22 +02:00
Peter Steinberger
6c547fb2fb Update to use polter instead of pgrun
BREAKING CHANGE: pgrun command renamed to polter

- Update wrapper script to use global polter command
- Simplify wrapper to 3 lines by removing path detection
- Update all documentation references from pgrun to polter
- Update examples and commands throughout CLAUDE.md
- Maintain PEEKABOO_WAIT_DEBUG environment variable compatibility

Users should now install polter globally:
npm install -g @steipete/poltergeist

Then use: polter peekaboo [args...]
Or create alias: alias pb='polter peekaboo'
2025-08-04 15:11:15 +02:00
Peter Steinberger
f1cf6a2d94 Simplify peekaboo-wait.sh wrapper by fixing target naming
- Fix Poltergeist config: rename target from "peekaboo-cli" to "peekaboo"
- Simplify wrapper from 36 lines to 5 lines (86% reduction)
- Remove symlink workaround and directory context switching
- Eliminate hardcoded paths and complex logic
- Maintain PEEKABOO_WAIT_DEBUG environment variable support
- Remove obsolete peekaboo-cli directory

The target name now matches the actual Swift executable name,
eliminating the need for workarounds and making the configuration
more intuitive.
2025-08-04 14:59:34 +02:00
Peter Steinberger
b3878f5ccb Replace peekaboo-wait.sh with minimal pgrun wrapper
- Replace complex 229-line shell script with simple 36-line pgrun wrapper
- Use Poltergeist's pgrun for superior build management and diagnostics
- Maintain PEEKABOO_WAIT_DEBUG environment variable compatibility
- Create symlink to handle target name mismatch (peekaboo-cli -> peekaboo)
- Keep original script as backup (.original)
- Add .crush/ to .gitignore

This simplifies the wrapper while providing better build status detection,
graceful fallback when Poltergeist is not running, and clearer error messages.
The pgrun fallback ensures the wrapper never completely blocks workflows.
2025-08-04 14:53:01 +02:00
Peter Steinberger
c91d968be0 feat: Migrate MCP server from TypeScript to native Swift implementation
This is a complete rewrite of the Peekaboo MCP server in Swift, removing all TypeScript dependencies
and providing a native, high-performance implementation that integrates directly with PeekabooCore.

## Major Changes

### Architecture
- Removed entire TypeScript/Node.js server implementation (Server/ directory)
- Implemented native Swift MCP server using modelcontextprotocol/swift-sdk
- Direct integration with PeekabooCore services for ~10x performance improvement
- All operations now run on MainActor for thread safety with UI/AppKit APIs

### MCP Tools Implementation
- Implemented all 23 MCP tools in Swift with full feature parity
- Added comprehensive input validation and error handling
- Improved type safety with Swift's strong type system
- Better integration with macOS accessibility and UI automation APIs

### Key Improvements
- Performance: ~10x faster by eliminating CLI subprocess overhead
- Type Safety: Compile-time checking for all tool parameters
- Thread Safety: Proper @MainActor usage for UI operations
- Memory Efficiency: No more Node.js runtime overhead
- Better Error Messages: More descriptive errors for debugging

### Testing
- Added comprehensive test suite with 200+ tests
- Unit tests for all MCP tools and components
- Integration tests for server functionality
- Mock implementations for testing without side effects

### Fixes Included
- Fixed threading violations by ensuring UI operations run on main thread
- Fixed API errors with proper media type detection for images
- Fixed UI element detection using correct property mappings
- Added Sendable conformance for Swift concurrency compliance

### Installation
- New installation script for Claude Desktop integration
- Simplified deployment with single binary
- No npm dependencies or Node.js runtime required

## Breaking Changes
- Server/ directory and all TypeScript code removed
- npm scripts updated to reflect Swift-only build
- MCP server now starts with 'peekaboo mcp serve' command

Co-authored-by: Previous Claude session <claude-3-5-sonnet@anthropic.com>
2025-08-02 22:10:01 +02:00
Peter Steinberger
65b891574e perf: Optimize Swift builds to use ARM-only by default for faster development
- Add new build-swift-arm.sh script that builds only for arm64 architecture
- Change npm run build:swift to use ARM-only builds (2s vs 2min)
- Add npm run build:swift:all for universal builds used in releases
- Update Server/package.json to use universal builds for prepublishOnly
- Update documentation to reflect new build commands

This significantly improves development iteration speed while preserving
universal binary support for production releases via npm publish.
2025-07-30 22:42:15 +02:00
Peter Steinberger
cd6bffc32f feat: Add audio input support for agent system
- Create AudioInputService for recording and transcription via Whisper API
- Extend MessageContent with audio case and AudioContent struct
- Add audio handling to all AI providers (Anthropic, OpenAI, Grok, Ollama)
- Integrate audio flags (--audio, --audio-file) into CLI agent command
- Add comprehensive tests for audio infrastructure
- Update build script to copy binary to project root for Poltergeist

Each provider converts audio content to transcript with duration metadata.
Audio recording uses 16kHz mono WAV format optimized for AI transcription.
2025-07-30 11:24:49 +02:00
Peter Steinberger
8017e58520 fix: Comprehensive threading fixes to ensure UI operations run on MainActor
- Added @MainActor to all UI service classes: ApplicationService, MenuService, DialogService, DockService, UIAutomationService, WindowManagementService, ScreenCaptureService, PermissionsService, ProcessService, PeekabooAgentService
- Added @MainActor to all UI/AX protocol definitions to ensure compile-time thread safety
- Removed all unnecessary MainActor.run blocks from @MainActor classes (100+ instances removed)
- Changed ProcessService from actor to @MainActor class for proper UI thread execution
- Kept ModelProvider and AI model implementations off MainActor for network operations
- Fixed variable naming issues in ApplicationService (hiddenCount/unhiddenCount)

This ensures all UI and accessibility API calls happen on the main thread as required by macOS, preventing crashes and race conditions while simplifying the codebase.
2025-07-30 02:49:11 +02:00
Peter Steinberger
672b7d8fa9 fix: Ensure all agent tool execution happens on MainActor to prevent crashes
- Mark executeTools method with @MainActor to ensure all AX operations run on main thread
- This prevents segfaults when accessing NSWorkspace.shared.runningApplications
- Increase peekaboo-wait.sh timeout from 3 to 5 minutes for longer builds

The crash was happening because even though individual services were @MainActor,
the tool execution pipeline itself could run on background threads created by
the actor runtime. This ensures the entire tool execution chain stays on the
main thread where all Accessibility and AppKit APIs must run.
2025-07-30 01:42:44 +02:00
Peter Steinberger
1202992af2 refactor: Make Poltergeist language-agnostic and clean up obsolete files
- Remove Swift-specific references from peekaboo-wait.sh script
- Delete obsolete poltergeist-migration-plan.md (migration already complete)
- Remove duplicate poltergeist.config.new.json file
- Update PeekabooApp.swift test comments
- Change variable names from NEWEST_SWIFT to NEWEST_SOURCE for generic language support
2025-07-30 00:18:16 +02:00
Peter Steinberger
e18ce0f521 Fix EXC_BAD_ACCESS crash in SpaceManagementService initialization
Changed connectionLock from a stored property to a lazy property to avoid
initialization timing issues in @MainActor classes. This prevents the
crash that occurred when NSLock() was initialized during class instantiation.
2025-07-29 23:16:54 +02:00
Peter Steinberger
98ecdd61fb feat: Enhance agent tool output with rich feedback and better formatting
- Fix excessive newlines between tool commands and text output
- Add rich contextual information to all tool outputs:
  - Show which specific menu items were clicked (not just 'menu item')
  - Display which app was actually launched (not just 'launched app')
  - Include frontmost app context for click, type, and hotkey actions
  - Show actual coordinates clicked (properly parse wrapped values)
  - Display keyboard shortcuts pressed with modifiers
- Enhanced tool summaries for better user feedback:
  - menu_click: Shows full menu path clicked
  - launch_app: Shows app name launched
  - type: Shows text typed and target app
  - click: Shows element/coordinates and target app
  - hotkey: Shows keys pressed and target app
  - scroll: Shows direction and amount
  - see: Shows capture target and resolution
  - And many more tools with contextual info
- Fix coordinate display to handle wrapped value format
- Add metadata capture for frontmost app in UI automation tools
- Improve argument display in compact tool summaries
2025-07-29 23:01:10 +02:00
Peter Steinberger
7a0e842007 feat: Enhance Mac app UI with synchronized menu, token display, and AI titles
- Add menu bar synchronization showing current tool with animated SF Symbol icons
- Display token usage (prompt/completion/total) in menu bar header with hover details
- Move time formatter from CLI to PeekabooCore for consistent '1m 30s' format across app
- Implement native SwiftUI Markdown rendering for assistant messages
- Fix tool execution UI: remove green checkmark, fix double-tap expansion, add live duration
- Add AI-powered session title generation (2-4 word summaries instead of 'New Session')
- Remove unnecessary macOS 14 availability checks throughout codebase
2025-07-29 21:18:12 +02:00
Peter Steinberger
e5157099bc feat: Synchronize Mac app tool display with CLI compact format
- Created ToolFormatter utility for consistent formatting logic
- Updated ToolExecutionRow to show tool-specific summaries
- Added three-level expansion (collapsed/summary/full)
- Implemented symbol replacements for keyboard shortcuts (⌘⇧⌥⌃)
- Added duration formatting with ⌖ symbol
- Enhanced visual presentation with proper tool icons and status indicators
2025-07-29 20:21:15 +02:00
Peter Steinberger
8a70a7188d feat: Add token usage tracking to agent execution
- Modified AgentEvent.completed to include usage information
- Updated PeekabooAgentService to emit token counts in completion events
- Enhanced Mac app to display token usage in task completion summary
- Shows total tokens and breakdown (input/output) when available
- Format: ' Task completed in Xs with Y tool calls • 🤖 Z tokens (A in, B out)'
2025-07-29 18:59:34 +02:00
Peter Steinberger
55a2aef820 feat: Rename vtlog to pblog and improve logging documentation
- Rename vtlog.sh to pblog.sh throughout the project
- Consolidate logging documentation into docs/logging-profiles/README.md
- Add configuration profile for enabling private data logging
- Update all references from vtlog to pblog
- Add comprehensive guide for dealing with macOS log privacy redaction

The pblog (Peekaboo Log) name better represents the tool's purpose
and avoids confusion with other tools.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-29 17:04:09 +02:00
Peter Steinberger
e9a13c8acc add an info plist 2025-07-28 21:15:06 +02:00
Peter Steinberger
3f9da02e1a refactor: Migrate bundle IDs from com.steipete to boo.peekaboo and enhance logging
This commit unifies the codebase under the new boo.peekaboo bundle ID namespace
and improves logging capabilities across all Peekaboo components.

Changes:
- Replace all com.steipete bundle IDs with boo.peekaboo throughout the codebase
- Fix typo in OverlayManager subsystem (boo.pekaboo.inspector → boo.peekaboo.app)
- Enhance vtlog.sh to monitor logs from ALL Peekaboo subsystems
- Add subsystem filtering and proper documentation for vtlog
- Update all Logger instances to use the new bundle ID namespace
- Fix dialog detection in ElementDetectionService for file/save dialogs
- Create comprehensive documentation for vtlog usage

The new bundle ID structure:
- boo.peekaboo.core - Core services
- boo.peekaboo.inspector - Inspector app
- boo.peekaboo.playground - Playground app
- boo.peekaboo.app - Mac app
- boo.peekaboo - Mac app CLI

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 18:53:12 +02:00
Peter Steinberger
b4239c681a add build date 2025-07-28 18:32:41 +02:00
Peter Steinberger
6cc893dc3f feat: Add VibeTunnel terminal title management and disable build start notifications
- Integrated VibeTunnel for dynamic terminal title updates during agent execution
- Terminal titles show current tool being executed (e.g., "click: Submit button")
- Shows task completion status: "Completed: [task]" or "Error: [task]"
- Created global Claude configuration at ~/.claude/CLAUDE.md for all sessions
- Disabled Poltergeist build start notifications (only show completion)
- Added test script to demonstrate VibeTunnel integration

This improves visibility across multiple Claude Code sessions and reduces
notification noise during development.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 20:28:38 +02:00
Peter Steinberger
80032e0940 feat: Enhance Poltergeist build failure detection and disable failure notifications
- Add robust build failure detection in peekaboo-wait.sh wrapper script
- Script now detects build failures and prompts Claude to fix them automatically
- Show recent build logs and exit with code 1 on failures
- Disable build failure notifications in Poltergeist (success notifications remain)
- Fix concurrency issue in AgentCommand by adding @MainActor to GhostAnimator
- Update CLAUDE.md to document the enhanced build failure detection
- Set o3 reasoning effort to "high" for maximum capability

This allows Claude to automatically detect and fix build errors when using the wrapper script.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 20:28:38 +02:00
Peter Steinberger
e2643dddf0 feat: Improve agent system prompt for task completion and error handling
- Add explicit Task Completion Requirements section
  - Emphasize literal instruction following (e.g., 'say' command)
  - Require full action completion (send email, not just draft)
  - Add verification steps for all actions

- Add Tool Selection Guidelines
  - Clarify 'command not found' is definitive
  - No retry attempts for missing tools
  - Immediate fallback to alternatives required

- Add UI Automation Best Practices
  - Complete full user journeys (Draft → Send)
  - Verify UI state changes after actions
  - Handle multi-step workflows properly

- Add Shell Command Best Practices
  - Clear guidance for text-to-speech requests
  - Binary command availability handling
  - Proper escaping and quoting rules

These improvements address issues where the agent would:
- Skip 'say' commands when requested
- Create email drafts without sending
- Retry unavailable commands multiple times

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 20:28:38 +02:00
Peter Steinberger
8eec4d2073 fix: Don't show failure notifications for cancelled Poltergeist builds
When Poltergeist cancels an in-progress build due to detecting new file changes,
it now exits with code 0 instead of 1. This prevents the cleanup function from
showing a failure notification for what is normal behavior. Also added a "Build
Started" notification to provide better feedback about build status.

Users will now see:
- "Build Started" notification when Poltergeist begins building
- "Build Succeeded" notification with build time
- "Build Failed" notification only for real failures
- No notification for cancelled builds (normal operation)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 20:28:38 +02:00
Peter Steinberger
4b0a0efef0 Add Git hash to Poltergeist build notifications
- Include short commit hash in success/failure notifications
- Format: 'Build completed (Xs) - abc1234' for success
- Format: 'Build failed (exit X) - abc1234' for failure
- Also add Git hash to log messages for better tracking

This helps identify which commit was built, especially useful
during rapid development when multiple builds are triggered.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 20:28:38 +02:00
Peter Steinberger
d6dee12ada feat: Add macOS notifications to Poltergeist build system
Added native macOS notifications when builds complete:
- Success notifications with Glass sound and build time
- Failure notifications with Basso sound and error details
- Can be disabled with POLTERGEIST_NOTIFICATIONS=false

Also updated documentation to explain the notification feature.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 20:28:38 +02:00
Peter Steinberger
9eb2f29cd1 feat: Clarify 'say' command usage in agent system prompt
Added explicit instructions in the agent system prompt to use the macOS
`say` command for text-to-speech when users request to "say" something.
This prevents confusion and ensures the agent properly executes speech
output requests like "say YOWZA YOWZA BO-BOWZA".

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 20:28:38 +02:00
Peter Steinberger
a1c0e2069d fix: Increase build wait timeout to 3 minutes for realistic Swift builds
- Changed MAX_WAIT from 30s to 180s (3 minutes) to accommodate real Swift build times
- Updated progress messages to show every 10s instead of 5s
- Added remaining time in progress updates
- Improved timeout message to suggest checking logs
- Updated CLAUDE.md to reflect the 3-minute timeout

Swift builds, especially universal builds, can take 1-2 minutes or more, so the previous 30-second timeout was too short and would often result in running stale binaries.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 17:44:57 +02:00
Peter Steinberger
11d054a8e3 feat: Enhanced Poltergeist with build cancellation and clearer instructions
CLAUDE.md improvements:
- Added clear explanation of what Poltergeist is
- Critical instructions for AI agents to NEVER manually rebuild
- Emphasized ALWAYS using the wrapper script
- Explained the efficiency benefits
- Deprecated manual build commands section

Poltergeist handler improvements:
- Added build cancellation when newer changes detected
- Kills outdated builds to start fresh ones immediately
- Process tree killing to ensure clean cancellation
- Cancel flag mechanism for graceful shutdown
- Improved logging for build cancellations

OpenAI o3 model refinements:
- Removed reasoning_summary parameter (not needed)
- Cleaned up parameter handling
- Proper null handling for temperature

This ensures agents use Poltergeist efficiently and builds are always for the latest code changes.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 17:43:36 +02:00
Peter Steinberger
c3eaf91b68 fix: Prevent build cascade in Poltergeist handler
- Check for any Swift build processes before starting new build
- Exit early if builds are already running to avoid cascading builds
- Fixes issue where multiple file changes could trigger many parallel builds

This prevents the scenario where Poltergeist could spawn dozens of concurrent builds.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 17:32:48 +02:00
Peter Steinberger
ffcfaa052d feat: Add explicit communication instructions for o3 model
- Enhanced system prompt to explicitly request thinking out loud
- Added instructions for models to share their reasoning process
- Increased temperature for o3 model to encourage more verbose output
- Set maxTokens to 4096 to ensure room for explanations

This should help make o3's thought process visible to users.
2025-07-26 17:31:26 +02:00
Peter Steinberger
310a5e71a9 fix: Improve Poltergeist reliability and concurrent build handling
- Enhanced stop_watcher to properly remove both trigger and watch
- Added SwiftPM conflict detection to prevent concurrent build issues
- Improved status messages with success/warning indicators
- Fixed issue where Poltergeist wouldn't properly restart after stopping

The watcher now handles edge cases better and provides clearer feedback about its state.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 17:11:41 +02:00
Peter Steinberger
ad52f12ac3 feat: Improve agent system prompt and add 'see' tool
- Enhanced system prompt with explicit screenshot-after-launch guidance
- Added comprehensive AppleScript quoting rules and examples
- Strengthened task completion requirements with checklist
- Added dialog handling best practices
- Introduced new 'see' tool that combines screenshot + UI detection
- Updated CLI agent command to support 'see' tool with proper emoji
- Fixed compilation issues with DetectedElements

This improves agent's ability to handle app dialogs, complete all task
requirements (including specific output phrases), and use proper
AppleScript syntax.
2025-07-26 17:03:57 +02:00
Martin Schürrer
b0d4777023
Add build staleness detection for debug CLI (#30)
* feat: Add build staleness detection for debug CLI

- Add debug-only staleness check using git config 'peekaboo.check-build-staleness'
- CLI will exit with error if current git commit differs from build commit
- Helps prevent Claude Code from using outdated binaries after source changes

* feat: Enhance build staleness detection with file modification checks

- Add buildDate timestamp to Version.swift generation
- Create separate BuildStalenessChecker.swift file
- Add comprehensive file modification time checking using git status
- Parse git status --porcelain=1 output to identify modified files
- Compare file modification times against build timestamp
- Provide clear error messages for both commit and file staleness
- Support clean/comprehensive staleness detection for Claude Code workflows

* docs: Add Debug Build Staleness Detection section to README

- Document how to enable/disable staleness checking via git config
- Explain both git commit and file modification staleness detection
- Provide clear examples and benefits
- Highlight usefulness for AI-assisted development workflows

* docs: Simplify staleness detection README section

Replace verbose documentation with single concise paragraph as requested

* fix: Remove test comments from main.swift

Clean up debugging comments that were accidentally left in the code

* Update Apps/CLI/Sources/peekaboo/main.swift
2025-07-26 15:37:22 +02:00
Peter Steinberger
3dc9d2d2b6 feat: Add git version info to CLI help menu
- Modified build scripts to extract git commit, date, branch, and dirty state
- Enhanced Version.swift with fullVersion property containing git metadata
- Updated help menu to display version with git info (branch/commit, date)
- Created build-swift-debug.sh for quick debug builds with version info
- Now shows version like: Peekaboo 3.0.0-beta.1 (spec-v3/6c4adea, 2025-07-26 04:00:23 +0200)

This makes it easy to verify if running the latest version based on git commit.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 15:02:22 +02:00
Peter Steinberger
1e657b5c34 feat: Add comprehensive Playground test app with logging utility
- Created SwiftUI test app at Playground/ for testing all Peekaboo automation features
- Includes comprehensive UI elements: clicks, text input, controls, gestures, drag/drop, keyboard
- Added OSLog integration with categorized logging (Click, Text, Menu, Window, etc.)
- Created playground-log.sh utility inspired by vtlog for easy log viewing
- Features: color-coded output, category filtering, search, JSON export, time ranges
- Added wrapper script at scripts/playground-log.sh for project root access
- Updated CLAUDE.md with comprehensive Playground documentation
- All UI elements have accessibility identifiers for automation testing

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 15:02:21 +02:00
Peter Steinberger
d5b170adf9 feat: Reorganize repository structure for better code organization
- Move core libraries to Core/ directory (PeekabooCore, AXorcist)
- Move applications to Apps/ directory (Mac, CLI)
- Move TypeScript server to Server/ directory
- Move scripts to Scripts/ directory
- Archive deprecated PeekabooInspector (now integrated into Mac app)
- Update all build configurations and paths
- Update CI/CD workflows for new structure
- Fix build scripts to use new paths

This reorganization provides:
- Clear separation between core libraries, apps, and server
- Flattened Mac app structure (removed double nesting)
- Consistent naming conventions
- Better code sharing through PeekabooCore
- Easier maintenance and development
2025-07-26 15:02:20 +02:00
Peter Steinberger
f0c50f0890 feat: Add vtlog utility for unified logging access
- Adopted vtlog script from VibeTunnel project for PeekabooInspector
- Configured to work with com.steipete.PeekabooInspector subsystem
- Added comprehensive documentation to CLAUDE.md
- Provides easy access to macOS unified logging output with filtering options

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-26 15:02:19 +02:00
Peter Steinberger
7fa67c4dfa fix: Keep "Peekaboo" prefix in version string for Homebrew compatibility
Homebrew expects the version string to include the "Peekaboo" prefix.
This commit:
- Reverts the version generation to include "Peekaboo" prefix
- Updates all version tests to expect the prefix format
- Ensures compatibility with Homebrew's version requirements

All tests now pass with the expected format: "Peekaboo X.Y.Z"
2025-07-04 12:10:15 +01:00
Peter Steinberger
b9844f9144 fix: Remove "Peekaboo" prefix from version string
The Swift tests expect Version.current to contain only the semantic version
number (e.g. "2.0.3") without the "Peekaboo" prefix. This was causing the
version format tests to fail in CI.

- Updated build-swift-universal.sh to inject only the version number
- Regenerated Version.swift with the correct format
- All version tests now pass
2025-07-04 12:10:15 +01:00
Peter Steinberger
fe5fe8a8cc Release v2.0.3: Fix version output for Homebrew compatibility
- Updated CLI to output "Peekaboo X.X.X" instead of just version number
- Fixes Homebrew formula test that expects "Peekaboo" in --version output
- No functional changes, just formatting improvement
2025-07-03 23:24:10 +01:00
Peter Steinberger
19fd2ae436 Release v2.0.2: Properly fix macOS Sequoia 26 compatibility
- Actually fixed LC_UUID load command generation (v2.0.1 fix was incomplete)
- Binary now includes LC_UUID for both x86_64 and arm64 architectures
- Verified with otool that LC_UUID is present in the universal binary
- This ensures proper dyld loading on macOS 26+
2025-07-03 23:12:39 +01:00
Peter Steinberger
c6adedd410 Release v2.0.1: Fix macOS Sequoia 26 compatibility
- Fixed LC_UUID load command preservation during binary stripping
- Updated strip command to use -u flag to retain UUID for macOS 26+ compatibility
- Ensures proper debugging and crash reporting support on newer macOS versions
2025-07-03 22:54:57 +01:00
Peter Steinberger
cfcc235922
feat: Add AI analysis capability directly to Swift CLI (#20) 2025-07-03 22:09:25 +01:00
Peter Steinberger
bd49a9c772 Fix SwiftFormat/SwiftLint consistency
- Generate enum instead of struct in build script
- Prevents formatting conflicts during release process
- Maintains alignment with SwiftFormat enumNamespaces rule
2025-05-27 01:30:32 +02:00
Peter Steinberger
731b89b779 Prepare release 2025-05-27 00:21:29 +02:00
Peter Steinberger
7bf63a225c Implement missing best practices
- Add npm run inspector script for MCP inspector tool
- Synchronize Swift CLI version with package.json (1.0.0-beta.9)
- Update macOS version requirement to v14 (Sonoma) for n-1 support
- Add Swift compiler warnings check in prepare-release script
- Convert tests/setup.ts from Jest to Vitest syntax
- Update server status tests to match new format

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-05-26 23:46:03 +02:00
Peter Steinberger
32bf6b9eaf Release testing 2025-05-25 21:21:53 +02:00
Peter Steinberger
3a9a467308 Fix missing args test to properly capture error output 2025-05-25 21:00:38 +02:00
Peter Steinberger
93a1baf596 Fix Swift CLI integration tests to match actual command structure 2025-05-25 19:41:12 +02:00
Peter Steinberger
61d6ef0cee Fix invalid command test to properly capture error output 2025-05-25 19:38:14 +02:00