Route remaining huh forms through the base16 palette theme · Entire

Route remaining huh forms through the base16 palette theme

b08f4ce→main·

computermode·1w ago·4 files·+13 added/-26 removed

Three huh forms still bypassed the shared uiform.Theme() introduced in PR #1542: the auto-update prompt and OPF pre-push prompt pinned huh.ThemeDracula, and the rewind overwrite confirm used huh's default theme. Switch all three to uiform.New so they pick up the base16 palette and accessibility handling consistently.

Drop the now-derivable accessible param from askOPFPrompt and remove the orphaned isAccessibleMode helper (its only remaining caller was the rewind form).

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

Sessions

01KWZ5RWPZ25G1AQNQFCVH0EF9View transcript

[?
Check for any CLI commands that still need to be ported to use https://github.com/entireio/cli/pull/1542Claude Code·Opus 4.8·2 steps](/content/gh/entireio/cli/session/dc1edbe1-955c-4b41-b983-ddd85cdd4fc9#timeline-01KWZ5RWPZ25G1AQNQFCVH0EF9/index.html)

Changes

4

13 unmodified lines

14
15
16
17
18
19
20
50 unmodified lines

71
72
73
73
74
75
76
77
8 unmodified lines

86
87
88
88
89
90
91
92
89
90
91
92
93
94
95
96
97
98
99
99
100
101
102
103
5 unmodified lines

109
110
111
111
112
113
114
112
113
114
115

13 unmodified lines

"github.com/entireio/cli/cmd/entire/cli/interactive"
    "github.com/entireio/cli/cmd/entire/cli/logging"
    "github.com/entireio/cli/cmd/entire/cli/settings"
    "github.com/entireio/cli/cmd/entire/cli/uiform"

// OPFDecision is the resolved gate for a single pre-push OPF run.
50 unmodified lines

os.Getenv(envOPF),
        promptDefault,
        hasTTY,
        func() (OPFDecision, error) { return askOPFPrompt(ctx, isAccessibleMode()) },
        func() (OPFDecision, error) { return askOPFPrompt(ctx) },
    )
    if err != nil {
        return OPFAbort, err
8 unmodified lines

// OPFAbort. Selecting "Always" persists prompt_default=always to
// .entire/settings.local.json so future pushes don't ask.
//
// Style matches other entire CLI prompts: Dracula theme via
// huh.ThemeDracula (the same theme cli.NewAccessibleForm applies for
// callers in the cli package). Strategy can't import cli (cycle), so
// we apply the theme inline.
func askOPFPrompt(ctx context.Context, accessible bool) (OPFDecision, error) {
// Style matches other entire CLI prompts via uiform.New, which applies the
// shared base16 palette theme and accessibility handling (the same wiring
// cli.NewAccessibleForm uses). uiform is a leaf package, so strategy can
// import it without the cycle that importing cli would create.
func askOPFPrompt(ctx context.Context) (OPFDecision, error) {
    const (
        choiceYes    = "yes"
        choiceNo     = "no"
        choiceAlways = "always"
    )
    choice := choiceYes
    form := huh.NewForm(
    form := uiform.New(
        huh.NewGroup(
            huh.NewSelect[string]().
                Title("Run OpenAI Privacy Filter on these checkpoints?").
5 unmodified lines

).
                Value(&choice),
            ),
        ).WithTheme(huh.ThemeFunc(huh.ThemeDracula))
    if accessible {
        form = form.WithAccessible(true)
    }
    )
    if err := form.RunWithContext(ctx); err != nil {
        if errors.Is(err, huh.ErrUserAborted) {
            return OPFAbort, nil

Mcmd/entire/cli/strategy/manual_commit_opf_prompt.go+9/-11

3 unmodified lines

4
5
6
7
7
8
9
10
11
12
14
15
16
17
18
19
13
14
15

3 unmodified lines

"context"
    "fmt"
    "io"
    "os"

"github.com/entireio/cli/cmd/entire/cli/paths"

"github.com/go-git/go-git/v6/plumbing"

// isAccessibleMode returns true if accessibility mode should be enabled.
// This checks the ACCESSIBLE environment variable.
func isAccessibleMode() bool {
    return os.Getenv("ACCESSIBLE") != ""
}

// Reset deletes the shadow branch and session state for the current HEAD.
// This allows starting fresh without existing checkpoints.
func (s *ManualCommitStrategy) Reset(ctx context.Context, w, errW io.Writer) error {

Mcmd/entire/cli/strategy/manual_commit_reset.go-7

19 unmodified lines

20
21
22
23
24
25
26
1036 unmodified lines

1063
1064
1065
1065
1066
1067
1068
1069
1070
1071
1072
1072
1073
1074
1073
1074
1075

19 unmodified lines

"github.com/entireio/cli/cmd/entire/cli/osroot"
    "github.com/entireio/cli/cmd/entire/cli/paths"
    "github.com/entireio/cli/cmd/entire/cli/trailers"
    "github.com/entireio/cli/cmd/entire/cli/uiform"
    "github.com/entireio/cli/cmd/entire/cli/validation"

"charm.land/huh/v2"
1036 unmodified lines

fmt.Fprintf(errW, "\nOverwriting will lose the newer local entries.\n\n")

var confirmed bool
    form := huh.NewForm(
    form := uiform.New(
        huh.NewGroup(
            huh.NewConfirm().
                Title("Overwrite local session logs with checkpoint versions?").
                Value(&confirmed),
            ),
        )
    if isAccessibleMode() {
        form = form.WithAccessible(true)
    }

if err := form.Run(); err != nil {
        if errors.Is(err, huh.ErrUserAborted) {

Mcmd/entire/cli/strategy/manual_commit_rewind.go+2/-4

12 unmodified lines

13
14
15
16
17
18
19
95 unmodified lines

115
116
117
117
118
119
120
118
119
120
121

12 unmodified lines

"github.com/entireio/cli/cmd/entire/cli/interactive"
    "github.com/entireio/cli/cmd/entire/cli/logging"
    "github.com/entireio/cli/cmd/entire/cli/uiform"

// envKillSwitch disables the interactive update prompt regardless of TTY.
95 unmodified lines

huh.NewOption("Skip until next version", autoUpdateActionSkipUntilNextVersion),
                                        ).Value(&action)
    form := huh.NewForm(huh.NewGroup(sel)).WithTheme(huh.ThemeFunc(huh.ThemeDracula))
    if os.Getenv("ACCESSIBLE") != "" {
        form = form.WithAccessible(true)
    }
    form := uiform.New(huh.NewGroup(sel))
    if err := form.RunWithContext(ctx); err != nil {
        if errors.Is(err, huh.ErrUserAborted) || errors.Is(err, huh.ErrTimeout) {
            return autoUpdateActionSkip, nil