Open
Conversation
Introduces a modal overlay that wraps the ritual.Runner state machine, presenting each step type (query_summary, query_list, prompt, gate, action, view) in a bordered popup similar to the command palette. - ritualOverlay struct with Open/Close/Update/View lifecycle - Scheduler integration: 60s tick checks for due rituals, triggers first pending, dismisses on close - Palette :ritual command for manual triggering by name - Compositor layering in View() for overlay-on-top rendering - Step-specific input routing: textinput for prompts, j/k/s/x/e for lists, enter/space for generic steps, Esc Esc d defer sequence for gates - Footer keybinding hints per step type Co-Authored-By: Claude Sonnet 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.
Ritual Runner TUI Overlay (RT.2-RT.8)
Overview
Adds the TUI modal overlay that wraps the ritual runner state machine, enabling users to interact with scheduled and manually-triggered rituals through a step-by-step popup interface.
Summary
Imagine you've hired a very polite butler who appears at your desk every morning holding a clipboard. He walks you through your daily checklist one item at a time, only leaves when you've finished or performed a secret three-key handshake to dismiss him, and then quietly checks back every minute to see if there's another clipboard to present. That butler is now living inside your terminal.
Tip
No migration steps required. If you have ritual JSONC files in your store's
rituals/directory, the overlay will start presenting them automatically based on their schedule. Use:ritual <name>in the command palette to trigger one manually.Changes
internal/tui/ritual_overlay.go— New file: modal overlay componentritualOverlaystruct wrappingritual.Runnerwith viewport and textinputOpen()/Close()/IsActive()lifecycle methodsUpdate()routes key input based on current step type:runner.SubmitPrompt()runner.HandleKey()View()renders bordered modal box with title ("Name — Step N/M"), scrollable viewport content, and step-specific footer hintsinternal/tui/app.go— Ritual integration into the main TUI loopritualOverlay,schedulerState,ritualsfields toModelritualTriggerMsg,ritualCheckTickMsgNew(): loads rituals viaritual.LoadRituals(), creates scheduler state, registers:ritualpalette commandInit(): returnsritualCheckTick()that fires immediately then every 60sUpdate(): overlay gets first crack at messages when active (same pattern as palette); handles check tick → pending ritual detection → trigger; dismisses ritual in scheduler state on overlay closeView(): composites ritual overlay on top of frame using lipgloss Compositor