Skip to content

Conversation

@JackSwitzer
Copy link
Owner

@JackSwitzer JackSwitzer commented Jan 19, 2026

Summary

  • New interactive terminal UI using Python Textual framework
  • Profile selection (Standard/Quick/Gentle/Custom) with presets
  • Wake time configuration (10 min increments)
  • Duration configuration (5 min increments, 10-60 min)
  • End temperature selection (4000K-6500K)
  • Beautiful sunrise animation with auto-return or alarm start
  • Clean box-drawing borders, dark theme
  • Lamp connection status display
  • Runs when sol is called with no arguments

Features

  • Arrow keys: Navigate and adjust values
  • Enter: Play animation then start alarm
  • A: Preview animation (auto-returns to menu)
  • Q: Quit
  • Double-escape: Return from animation

Test plan

  • Run uv run python main.py with no args - should show TUI
  • Test profile cycling with left/right arrows
  • Test wake time adjustment (10 min increments)
  • Test duration adjustment (5 min increments)
  • Test 'A' for animation preview (should auto-return)
  • Test Enter to start alarm (plays animation, then runs sunrise)

🤖 Generated with Claude Code


Note

Introduces an interactive terminal UI for configuring and starting sunrise alarms, and makes it the default experience when running without arguments.

  • New sol_tui.py Textual app with profile selection, wake time, duration, end temperature, sunrise animation, lamp connection status, and keybindings (↑/↓/←/→, Enter, A, Q, Esc×2)
  • Update main.py: if no command is provided, run run_tui() (Textual TUI) instead of printing help
  • Add textual dependency in pyproject.toml and lockfile updates
  • Add sol-ink/ optional Ink/Bun TUI (React/Ink components, launcher script, TypeScript config) as an alternative terminal UI

Written by Cursor Bugbot for commit dda07f6. This will update automatically on new commits. Configure here.

JackSwitzer and others added 6 commits January 19, 2026 13:27
- New sol_tui.py with Textual framework for flicker-free terminal UI
- Dark background, arrow key navigation, animated sunrise preview
- Press 'A' for animation, Enter to start alarm in new Terminal
- Integrates with existing main.py (runs TUI when no command given)
- Added textual>=3.0.0 dependency

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove AppleScript that opened new terminal
- Use os.execvp to replace process with caffeinate + sunrise command
- Properly change to lamp directory before running
- Stays in same terminal window for cleaner UX

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Press Enter now shows sunrise animation first
- Lamp turns off, animation plays
- After animation dismisses, runs actual sunrise command

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add profile selection at top (standard/quick/gentle/custom)
- Wake time now uses 10 min increments
- Duration now uses 5 min increments (10-60 min range)
- Double-escape required to exit animation screen
- Switching profile applies its preset duration/temp
- Manual adjustment auto-switches to custom profile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change "Good Morning, welcome to the game!" to "Welcome to the game."
- Use proper box-drawing characters for clean consistent border
- Darker sky background for better contrast

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 'A' key: plays animation, auto-returns to main menu after 1s
- Enter key: plays animation, waits for dismiss, then starts alarm
- Added auto_return parameter to AnimationScreen

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

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

"wake_time": self._pending_wake_time,
"profile": self._pending_profile,
}
self.exit(self.app_result)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

End Temperature setting in TUI has no effect

Medium Severity

The TUI presents a fully interactive "End Temp" configuration field (4000K-6500K) that users can navigate and adjust, but the selected value is never used. In _on_animation_complete, only wake_time and profile are passed to the result dictionary. The run_tui function then executes main.py up with only these two parameters. Since main.py has no CLI argument for end temperature (it uses hard-coded temperature phases within each profile), the user's End Temp selection has zero effect on the actual alarm.

Additional Locations (1)

Fix in Cursor Fix in Web

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