Add Golf Mode: AI caddie with GPS, scorecard, and club recommendations#16
Open
ivansene2025 wants to merge 35 commits intoIntent-Lab:mainfrom
Open
Add Golf Mode: AI caddie with GPS, scorecard, and club recommendations#16ivansene2025 wants to merge 35 commits intoIntent-Lab:mainfrom
ivansene2025 wants to merge 35 commits intoIntent-Lab:mainfrom
Conversation
…mendations Refactors isMeetingMode bool to SessionMode enum (.normal, .meeting, .golf) across all files. Golf mode uses Gemini + existing execute tool → OpenClaw for course lookup, weather, and scorecard management. GPS coordinates injected every 30s via sendTextContext(). Includes full green-themed UI overlay with score-to-par badge, hole card HUD, and pulsing mode pill. New files: LocationManager.swift, GolfOverlayView.swift Also includes pending capture_and_send improvements (OpenClaw image upload, ToolCallRouter updates). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Switch all modes to AUDIO modality (native audio model rejects TEXT). Meeting mode already suppresses playback; notes come via outputTranscription. - Reset hasReceivedFirstFrame in stopAudioOnlySession() to prevent subsequent audio-only sessions showing a spinner instead of the UI. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ode, WebRTC speed Crash Fixes: - Fix AVAudioEngine crash when audio format has sampleRate=0 after session reconfig - Add format validation + retry with session reactivation before installTap - Guard session start failures in golf/meeting/translation modes to prevent orphaned tasks - Safer stopCapture() — check attachedNodes before detaching playerNode Discord Session Notes: - Add DiscordWebhookService with mode-specific embeds (meeting/golf/translation/normal) - Snapshot session data before clearing state in stopSession() - Show share prompt on session end, with OpenClaw fallback - Add Discord webhook URL to Settings Translation Mode: - Rewrite system prompt: translate OTHER speakers only, ignore wearer's voice - Fix audio routing: remove translation from backgroundMix path so audio plays through glasses - Add TranslationOverlayView with subtitle-style display WebRTC Live Streaming Speed: - Start with STUN-only immediately, fetch TURN credentials in background - Reduce TURN fetch timeout from 60s to 5s - Pre-warm Fly.io signaling server on StreamView appear - Reduce signaling WebSocket timeout from 30s to 10s OpenClaw Connectivity: - Add eager connection check on app appear (before session start) - Fix discoverTunnelURL() — validate JSON response before parsing - Add retry logic to ping() - Show OpenClaw status pill when configured (even without active session) - Add NetworkMonitor for WiFi/cellular detection Other: - Golf course API service for real course data - Device status pill showing glasses connection state - Location manager golf mode support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…aAccess/Settings/SettingsManager.swift,samples/CameraAccess/CameraAccess/WebRTC/SignalingClient.swift,samples/CameraAccess/CameraAccess/WebRTC/WebRTCSessionViewModel.swift (+2906 more) Claude Code auto-commit at 2026-03-08 20:16:15 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…er.swift Claude Code auto-commit at 2026-03-08 20:16:48 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…er.swift Claude Code auto-commit at 2026-03-08 20:16:56 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…swift Claude Code auto-commit at 2026-03-08 20:17:03 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…swift Claude Code auto-commit at 2026-03-08 20:17:15 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…swift Claude Code auto-commit at 2026-03-08 20:17:22 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…swift Claude Code auto-commit at 2026-03-08 20:17:29 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…el.swift Claude Code auto-commit at 2026-03-08 20:17:49 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ewModel.swift Claude Code auto-commit at 2026-03-08 20:18:03 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ewModel.swift Claude Code auto-commit at 2026-03-08 20:18:17 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ewModel.swift Claude Code auto-commit at 2026-03-08 20:18:29 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ewModel.swift Claude Code auto-commit at 2026-03-08 20:18:48 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:18:54 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:19:14 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:19:22 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…verlayView.swift Claude Code auto-commit at 2026-03-08 20:20:19 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ewModel.swift Claude Code auto-commit at 2026-03-08 20:20:27 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:20:53 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:21:00 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:21:08 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:21:15 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…r.swift Claude Code auto-commit at 2026-03-08 20:24:24 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…er.swift Claude Code auto-commit at 2026-03-08 20:24:48 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…swift Claude Code auto-commit at 2026-03-08 20:25:24 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:25:37 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:25:47 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:25:57 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:26:06 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:26:20 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:26:27 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:26:45 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code auto-commit at 2026-03-08 20:27:25 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
isMeetingMode: Bool→SessionModeenum (.normal,.meeting,.golf) across all files for clean multi-mode architectureexecutetool → OpenClaw (no new Gemini tools needed)Changes
LocationManager.swift— CLLocationManager wrapper for GPSGolfOverlayView.swift— Golf UI components (GolfOverlay, GolfModePill, ScoreToParBadge, GolfHoleCard, GolfModeButton)GeminiConfig.swift— SessionMode enum + golf system instruction (AI caddie personality)GeminiLiveService.swift— SessionMode support,sendTextContext()for GPS injectionGeminiSessionViewModel.swift— Golf lifecycle, GolfState, GPS timer, scorecard saveStreamView.swift— Golf overlay branch, GolfModeButton in controls, mode-aware audio-only displayNonStreamView.swift— Green "Golf Mode" button on home screenGeminiOverlayView.swift— MeetingModeButton updated for SessionModeInfo.plist— NSLocationWhenInUseUsageDescriptionproject.pbxproj— New files registeredcapture_and_sendimprovements (OpenClaw image upload, ToolCallRouter updates)Test plan
🤖 Generated with Claude Code