inspect: drop em dashes from config UI text · Entire
inspect: drop em dashes from config UI text
2522f90→main·
dipree·1mo ago·2 files·+20 added/-20 removed
Replace em dashes in the inspect configuration flow with plain ASCII (hyphens, colons, semicolons, or periods) across the focus/output/scope pickers, slot + model labels, profile chooser, the --configure agent catalog, the --set-output help line, and first-run messages. No behavior change; run-time output (TUI/dump) and Go comments are left as is.
Sessions
c104c98fc155View transcript
[?
Checkout the hand off doc that I just added.Pi·Opus 4.8·1 step](/content/gh/entireio/cli/session/019eca64-8c2c-7b00-90c6-3aa49738c497#timeline-c104c98fc155/index.html)
Changes
2
cmd/entire/cli/review
Mcmd.go+7/-7
Mpicker.go+13/-13
114 unmodified lines
115
116
117
118
118
119
120
121
325 unmodified lines
447
448
449
450
450
451
452
452
453
454
455
5 unmodified lines
461
462
463
464
464
465
466
467
34 unmodified lines
502
503
504
505
505
506
507
508
508
509
510
511
250 unmodified lines
762
763
764
765
765
766
767
768
114 unmodified lines
otherwise it opens the wizard (interactive) without starting agents.
--set-agents with --configure: comma-separated inspector agents for the profile
--set-judge with --configure: the consolidating judge as agent[=model]
--set-output with --configure: where the verdict goes — local (default) or trail
--set-output with --configure: where the verdict goes: local (default) or trail
--local with --configure: save to .entire/settings.local.json (just you)
instead of .entire/settings.json (shared). Interactive setup asks.
--set-task with --configure: the profile's canonical task text
325 unmodified lines
cfg := profile.Agents[worker]
status := reviewHooksInstalledStatus
if _, ok := installedSet[reviewAgentName(worker, cfg)]; !ok {
status = "hooks NOT installed — run `entire configure --agent " + reviewAgentName(worker, cfg) + "`"
status = "hooks NOT installed; run `entire configure --agent " + reviewAgentName(worker, cfg) + "`"
}
fmt.Fprintf(out, " %s — %s\n", reviewWorkerLabel(worker, cfg), status)
fmt.Fprintf(out, " %s: %s\n", reviewWorkerLabel(worker, cfg), status)
}
fmt.Fprintln(out)
fmt.Fprintln(out, "See all available agents and profiles with `entire inspect --configure`.")
5 unmodified lines
catalog := availableReviewAgents(installed, deps.ReviewerFor)
fmt.Fprintln(out, "No review profile configured yet. Available review agents:")
for _, e := range catalog {
status := "not installed — run `entire configure --agent " + e.Name + "`"
status := "not installed; run `entire configure --agent " + e.Name + "`"
if e.Installed {
status = reviewHooksInstalledStatus
}
34 unmodified lines
func printReviewConfigCatalog(out io.Writer, profileName string, catalog []reviewAgentCatalogEntry, s *settings.EntireSettings) {
fmt.Fprintln(out, "Available review agents:")
if len(catalog) == 0 {
fmt.Fprintln(out, " (none — install one with `entire configure --agent claude-code`)")
fmt.Fprintln(out, " (none; install one with `entire configure --agent claude-code`)")
}
for _, e := range catalog {
status := "not installed — run `entire configure --agent " + e.Name + "`"
status := "not installed; run `entire configure --agent " + e.Name + "`"
if e.Installed {
status = reviewHooksInstalledStatus
}
250 unmodified lines
return silentErr(defaultErr)
}
profile = defaultProfile
fmt.Fprintf(out, "No review profiles found — using default %q profile with %s.\n", profileForSetup, strings.Join(sortedProfileAgentNames(profile), ", "))
fmt.Fprintf(out, "No review profiles found; using default %q profile with %s.\n", profileForSetup, strings.Join(sortedProfileAgentNames(profile), ", "))
fmt.Fprintln(out, "Configure later with `entire inspect --configure`.\n")
}
Mcmd/entire/cli/review/cmd.go+7/-7
50 unmodified lines
51
52
53
54
54
55
56
57
129 unmodified lines
187
188
189
190
191
192
190
191
192
193
194
195
4 unmodified lines
200
201
202
203
203
204
205
206
57 unmodified lines
264
265
266
267
267
268
269
270
224 unmodified lines
495
496
497
498
498
499
500
501
20 unmodified lines
522
523
524
525
525
526
527
528
3 unmodified lines
532
533
534
535
535
536
537
538
139 unmodified lines
678
679
680
681
682
681
682
683
684
685
16 unmodified lines
702
703
704
705
706
705
706
707
708
709
50 unmodified lines
// setup phase explicit, and the trailing "running review now" line in the
// caller closes the loop on what comes next.
func ConfirmFirstRunSetup(ctx context.Context, out io.Writer) bool {
fmt.Fprintln(out, "No review profiles found — let's set one up first.")
fmt.Fprintln(out, "No review profiles found. Let's set one up first.")
fmt.Fprintln(out)
fmt.Fprintln(out, "You'll choose a review focus and inspector agents. They're saved to")
fmt.Fprintln(out, "local review preferences; configure later with `entire inspect --configure`.\n")
}
129 unmodified lines
current = strings.TrimSpace(current)
picked := DefaultProfileName
presets := []struct{ label, value string }{
{"General — correctness, regressions, tests", DefaultProfileName},
{"Security — auth, injection, secrets", "security"},
{"Accessibility — keyboard, screen readers, contrast", "accessibility"},
{"General - correctness, regressions, tests", DefaultProfileName},
{"Security - auth, injection, secrets", "security"},
{"Accessibility - keyboard, screen readers, contrast", "accessibility"},
}
options := make([]huh.Option[string], 0, len(presets)+1)
for _, p := range presets {
4 unmodified lines
}
options = append(options, huh.NewOption(label, p.value))
}
CustomLabel := "Custom… — describe your own task"
CustomLabel := "Custom… - describe your own task"
if current == customProfileName {
CustomLabel += " (current)"
picked = reviewFocusCustomSentinel
57 unmodified lines
label += " (default)"
}
if len(workers) > 0 {
label += " — " + strings.Join(workers, ", ")
label += " - " + strings.Join(workers, ", ")
}
options = append(options, huh.NewOption(label, name))
}
}
224 unmodified lines
}
}
}
title := "Add a slot — which agent?"
title := "Add a slot: which agent?"
if editing {
title = "Change agent"
}
20 unmodified lines
for _, m := range models {
label := m.ID
if m.Note != "" {
label = m.ID + " — " + m.Note
label = m.ID + " - " + m.Note
}
options = append(options, huh.NewOption(label, m.ID))
if m.ID == seedModel {
3 unmodified lines
// Preserve a previously-set custom model so editing a slot doesn't silently
// drop it: surface it as a selectable option.
if seedModel != "" && !seedAdvertised {
options = append(options, huh.NewOption(seedModel+" — current", seedModel))
options = append(options, huh.NewOption(seedModel+" - current", seedModel))
}
options = append(options, huh.NewOption("Custom… (type any value)", reviewModelCustomSentinel))
139 unmodified lines
Title("Where should the verdict go?").
Description("Local keeps it on this machine; Trail also posts it to this branch's trail.").
Options(
huh.NewOption("Local — printed and saved to local findings", ReviewOutputLocal),
huh.NewOption("Trail — also posted to this branch's trail as a finding", ReviewOutputTrail),
huh.NewOption("Local - printed and saved to local findings", ReviewOutputLocal),
huh.NewOption("Trail - also posted to this branch's trail as a finding", ReviewOutputTrail),
).
Value(&picked),
))
16 unmodified lines
Title("Where should this profile be saved?").
Description("Project is shared with the team and committed; Local is just for you.").
Options(
huh.NewOption(settings.EntireSettingsFile+" — shared with the team (committed)", reviewScopeProject),
huh.NewOption(settings.EntireSettingsLocalFile+" — just you (git-ignored)", reviewScopeLocal),
huh.NewOption(settings.EntireSettingsFile+" - shared with the team (committed)", reviewScopeProject),
huh.NewOption(settings.EntireSettingsLocalFile+" - just you (git-ignored)", reviewScopeLocal),
).
Value(&picked),
))