Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions .claude/settings.json

This file was deleted.

18 changes: 17 additions & 1 deletion internal/ui/form.go
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,14 @@ func NewFormModel(database *db.DB, width, height int, workingDir string, availab
autocompleteEnabled = false
}

// Load show_advanced preference (default: true)
showAdvanced := true
if database != nil {
if setting, _ := database.GetSetting("show_advanced"); setting == "false" {
showAdvanced = false
}
}

// Create form model first (executors will be set after project is determined)
m := &FormModel{
db: database,
Expand All @@ -303,7 +311,7 @@ func NewFormModel(database *db.DB, width, height int, workingDir string, availab
autocompleteEnabled: autocompleteEnabled,
taskRefAutocomplete: NewTaskRefAutocompleteModel(database, width-24),
attachmentCursor: -1,
showAdvanced: false, // Progressive disclosure: start with simple view
showAdvanced: showAdvanced, // Load from user preference
}

// Load task types from database
Expand Down Expand Up @@ -580,6 +588,14 @@ func (m *FormModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case "ctrl+e":
// Toggle advanced fields (progressive disclosure)
m.showAdvanced = !m.showAdvanced
// Save preference
if m.db != nil {
if m.showAdvanced {
m.db.SetSetting("show_advanced", "true")
} else {
m.db.SetSetting("show_advanced", "false")
}
}
// If collapsing and currently on a hidden field, move to Title
if !m.showAdvanced && !m.isFieldVisible(m.focused) {
m.blurAll()
Expand Down
26 changes: 15 additions & 11 deletions internal/ui/form_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -875,11 +875,11 @@ func TestFormDefaultsToFirstAvailableExecutor(t *testing.T) {
}

func TestFormProgressiveDisclosure(t *testing.T) {
t.Run("new form starts in simple mode focused on title", func(t *testing.T) {
t.Run("new form starts in advanced mode focused on title", func(t *testing.T) {
m := NewFormModel(nil, 100, 50, "", []string{"claude"})

if m.showAdvanced {
t.Error("expected new form to start with showAdvanced=false")
if !m.showAdvanced {
t.Error("expected new form to start with showAdvanced=true")
}
if m.focused != FieldTitle {
t.Errorf("expected focus on FieldTitle, got %d", m.focused)
Expand All @@ -900,6 +900,7 @@ func TestFormProgressiveDisclosure(t *testing.T) {

t.Run("simple mode hides advanced fields", func(t *testing.T) {
m := NewFormModel(nil, 100, 50, "", []string{"claude"})
m.showAdvanced = false // Switch to simple mode for this test

if m.isFieldVisible(FieldProject) {
t.Error("FieldProject should be hidden in simple mode")
Expand All @@ -924,25 +925,26 @@ func TestFormProgressiveDisclosure(t *testing.T) {
t.Run("ctrl+e toggles advanced mode", func(t *testing.T) {
m := NewFormModel(nil, 100, 50, "", []string{"claude"})

if m.showAdvanced {
t.Fatal("expected simple mode initially")
if !m.showAdvanced {
t.Fatal("expected advanced mode initially")
}

// Toggle to advanced
// Toggle to simple
m.Update(tea.KeyMsg{Type: tea.KeyCtrlE})
if !m.showAdvanced {
t.Error("expected advanced mode after ctrl+e")
if m.showAdvanced {
t.Error("expected simple mode after ctrl+e")
}

// Toggle back to simple
// Toggle back to advanced
m.Update(tea.KeyMsg{Type: tea.KeyCtrlE})
if m.showAdvanced {
t.Error("expected simple mode after second ctrl+e")
if !m.showAdvanced {
t.Error("expected advanced mode after second ctrl+e")
}
})

t.Run("focusNext skips hidden fields in simple mode", func(t *testing.T) {
m := NewFormModel(nil, 100, 50, "", []string{"claude"})
m.showAdvanced = false // Switch to simple mode for this test

// Start on Title
if m.focused != FieldTitle {
Expand All @@ -964,6 +966,7 @@ func TestFormProgressiveDisclosure(t *testing.T) {

t.Run("simple mode view shows defaults summary", func(t *testing.T) {
m := NewFormModel(nil, 100, 50, "", []string{"claude"})
m.showAdvanced = false // Switch to simple mode for this test

view := m.View()

Expand Down Expand Up @@ -1014,6 +1017,7 @@ func TestFormProgressiveDisclosure(t *testing.T) {

func TestFormHeaderShowsProjectInSimpleMode(t *testing.T) {
m := NewFormModel(nil, 100, 50, "", []string{"claude"})
m.showAdvanced = false // Switch to simple mode for this test
m.project = "myproject"

view := m.View()
Expand Down