feat: project selection, hotkey warnings, hands-free mode#3
Merged
Conversation
Add selectedProject / effectiveProject to AstationHubManager. Auto- selects first project on load; reconciles on refresh. Voice coding, ConvoAI agent, and token generation all use effectiveProject instead of projects.first. Projects window shows checkmark on selected project; clicking a row changes it. Menubar shows current project name. 🤖 Built with SMT <smt@agora.build>
Track voiceHotkeyFailed / videoHotkeyFailed in HotkeyManager. Display warning items in the menubar status menu when registration fails. Replace print() with Log calls. Also remove isInChannel guard on Start Hands-Free Mode menu item — startHandsFree() already auto-joins RTC internally. 🤖 Built with SMT <smt@agora.build>
When token refresh fails (e.g. refresh token expired after days), show "Session expired — please sign in again" instead of the raw HTTP 400 error. Post .credentialsChanged to update the UI. 🤖 Built with SMT <smt@agora.build>
- Change RTCEncryptionMode.manualJoinDefault from .aes256Gcm2 to .none and move "None" to top of the picker list. - Voice coding channel: "astation-<8-hex-random>" instead of "astation-default". Manual join UI gets the same pattern. 🤖 Built with SMT <smt@agora.build>
🤖 Built with SMT <smt@agora.build>
Change project selection from single-click to double-click. Show a green "Selected: <name>" toast next to the "Projects" header that fades out over 4 seconds. 🤖 Built with SMT <smt@agora.build>
- Toast text color: green → blue - Cancel in-flight animation before showing new toast so it always appears on rapid double-clicks - Project name column uses NSTableCellView with centerY constraint for vertical centering 🤖 Built with SMT <smt@agora.build>
Use sizeToFit on header to get actual width, position toast at headerLabel.maxX + 8 with same y origin and height. 🤖 Built with SMT <smt@agora.build>
Display first 6 + "..." + last 6 chars (~15 chars) for both App ID and Certificate columns. Copy button still copies the full value. Narrowed column widths to match. 🤖 Built with SMT <smt@agora.build>
- Change lineBreakMode from byTruncatingTail to byClipping on App ID and Certificate cells so the masked text (first6...last6) shows cleanly without extra system ellipsis. - Add "Created" column showing yyyy-MM-dd HH:mm from the project's unix timestamp. 🤖 Built with SMT <smt@agora.build>
Use autolayout lastBaselineAnchor to align the blue toast text with the "Projects" header regardless of font size difference. Bump toast font to 13pt for better visual weight. Date format now includes seconds (yyyy-MM-dd HH:mm:ss). 🤖 Built with SMT <smt@agora.build>
Autolayout topAnchor with negative offset pushed both labels off-screen. Switch back to frame-based positioning at y=410 which worked before. Use same bold 14pt font for both header and toast so they align naturally at the same origin and height. 🤖 Built with SMT <smt@agora.build>
🤖 Built with SMT <smt@agora.build>
🤖 Built with SMT <smt@agora.build>
c3e52f3 to
54d6fed
Compare
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
Current project selection
AstationHubManagernow hasselectedProject/effectiveProject. Auto-selects first project on load; reconciles on refresh.projects.first.yyyy-MM-dd HH:mm:ss).Hotkey conflict warnings
HotkeyManagertracks registration failures (voiceHotkeyFailed/videoHotkeyFailed).print()calls replaced withLog.Hands-free mode always available
isInChannelguard on "Start Hands-Free Mode" menu item —startHandsFree()already auto-joins RTC internally.RTC defaults
.none), moved to top of picker list.astation-<8-random-hex>for both voice coding and manual join UI.Session expiry
Test plan
swift buildsucceedsGenerated with SMT smt@agora.build