Skip to content

fix: Phase 5 - TMUX features backend selector UX#90

Merged
eyelock merged 4 commits into
mainfrom
phase-5-tmux-ux
Jan 27, 2026
Merged

fix: Phase 5 - TMUX features backend selector UX#90
eyelock merged 4 commits into
mainfrom
phase-5-tmux-ux

Conversation

@eyelock
Copy link
Copy Markdown
Owner

@eyelock eyelock commented Jan 26, 2026

Testing

  • TMUX badge display on cards
  • Backend labeling consistency (radio buttons)
  • Running session detection for both Direct and TMUX

Fixed

  • Removed unused card.isRunning property (dead code never updated)
  • Green running indicator now works using hasActiveSession
  • Backend selector disabled when terminal session is active
  • Clear warning message when backend cannot be changed
  • Works correctly for both Direct and TMUX sessions

UX Improvement

Users can no longer change backend while session is running (would have no effect until restart anyway). Orange warning explains they need to restart to change backends.

All tests passing (558 tests).

David Collie and others added 2 commits January 26, 2026 21:38
Testing:
- CLI tool installation/uninstallation in debug builds
- MCP server installation/uninstallation
- Headless mode tmux session creation

Fixed:
- AppProfile using Production instead of Current in debug builds (Makefile -DTERMQ_DEBUG_BUILD flag)
- CLI/MCP installers now use AppProfile.Current for correct binary names
- UI state refresh after CLI/MCP install/uninstall operations
- Missing catch-all error handlers in 4 MCP tool handlers (could crash MCP server)
- BoardPersistence.save() errors now propagated instead of silently ignored
- Removed all legacy compatibility code (no backwards compat needed for 0.x)
- Changed debug URL scheme from termq-debug:// to termqd://

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Testing:
- TMUX badge display on cards
- Backend labeling consistency
- Running session detection

Fixed:
- Removed unused card.isRunning property (dead code never updated)
- Green running indicator now works using hasActiveSession
- Backend selector disabled when terminal session is active
- Clear warning message when backend cannot be changed
- Works correctly for both Direct and TMUX sessions

UX improvement: Users can no longer change backend while session
is running (would have no effect until restart anyway). Orange
warning explains they need to restart to change backends.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@claude
Copy link
Copy Markdown

claude Bot commented Jan 26, 2026

Code Review

Found 2 localization issues that violate CLAUDE.md requirements:

Issue 1: Hardcoded string in backend selector warning

File: Sources/TermQ/Views/CardEditorView.swift:223

Code:

Text("Backend cannot be changed while session is active. Restart the session to change backends.")

Problem: Hardcoded English string should be localized to support all 40 languages.

Reference: implementation-checks.md requires running localization validation when modifying UI strings.

Fix:

Text(Strings.Editor.backendLockedWarning)

Add to Localizable.strings:

"editor.backend.locked_warning" = "Backend cannot be changed while session is active. Restart the session to change backends.";

Add to Strings.swift:

static var backendLockedWarning: String { localized("editor.backend.locked_warning") }

Issue 2: Hardcoded string in Next Action warning

File: Sources/TermQ/Views/CardEditorView.swift:454

Code:

Text("Next Action requires \"Enable LLM Prompt Auto-injection\" in Settings → Tools")

Problem: Hardcoded English string should be localized.

Fix:

Text(Strings.Editor.nextActionRequiresInjection)

Add to Localizable.strings:

"editor.next_action.requires_injection" = "Next Action requires \"Enable LLM Prompt Auto-injection\" in Settings → Tools";

Add to Strings.swift:

static var nextActionRequiresInjection: String { localized("editor.next_action.requires_injection") }

Context

This PR correctly localized the MCP install button (Strings.Settings.mcpInstall), demonstrating the proper pattern. These two strings should follow the same approach.

All other changes in the PR look good - no bugs or logic issues found.

@eyelock eyelock changed the title fix: Phase 5 - TMUX features and backend selector UX fix: Phase 5 - TMUX features backend selector UX Jan 27, 2026
David Collie and others added 2 commits January 27, 2026 07:34
Address Claude Code review feedback by localizing two hardcoded English strings:

1. Backend locked warning - shown when session is active
2. Next Action injection requirement - shown when global setting is disabled

Changes:
- Add editor.backend.locked.warning to Localizable.strings
- Add editor.next.action.requires.injection to Localizable.strings
- Add corresponding properties to Strings.Editor
- Update CardEditorView to use localized strings

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Translate two new UI strings to all 40 supported languages:
- editor.backend.locked.warning
- editor.next.action.requires.injection

Translations include:
- Arabic, Catalan, Czech, Danish, German, Greek
- English (AU/GB), Spanish (ES/419)
- Finnish, French (FR/CA), Hebrew, Hindi, Croatian, Hungarian
- Indonesian, Italian, Japanese, Korean, Malay
- Dutch, Norwegian, Polish, Portuguese (BR/PT), Romanian, Russian
- Slovak, Slovenian, Swedish, Thai, Turkish, Ukrainian, Vietnamese
- Chinese (Simplified/Traditional/HK)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
@eyelock eyelock merged commit c0bfcf3 into main Jan 27, 2026
8 checks passed
@eyelock eyelock deleted the phase-5-tmux-ux branch January 27, 2026 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant