opencode-navigator 0.18.1 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.18.2] - 2026-10-02
6
+
7
+ - Open the host Settings dialog from the OpenCode 2.x Permissions Quick Action, where the user can change between `prompt` and `auto accept`; keep the direct auto-approve toggle on OpenCode 1.x.
8
+
5
9
  ## [0.18.1] - 2026-10-01
6
10
 
7
11
  - Show calm Todo setup guidance in OpenCode 2.x when Navigator's server plugin is absent, without a request error or Retry control. Actual server failures still offer Retry.
@@ -41,6 +45,7 @@
41
45
 
42
46
  Earlier release notes are available on [GitHub Releases](https://github.com/St1ggy/opencode-navigator/releases).
43
47
 
48
+ [0.18.2]: https://github.com/St1ggy/opencode-navigator/compare/v0.18.1...v0.18.2
44
49
  [0.18.1]: https://github.com/St1ggy/opencode-navigator/compare/v0.18.0...v0.18.1
45
50
  [0.18.0]: https://github.com/St1ggy/opencode-navigator/compare/v0.17.3...v0.18.0
46
51
  [0.17.3]: https://github.com/St1ggy/opencode-navigator/compare/v0.17.2...v0.17.3
package/README.md CHANGED
@@ -15,7 +15,7 @@ See the [changelog](CHANGELOG.md) for release-by-release changes.
15
15
  - Collapsible Todo section with status filters, grouped tasks, progress and priority indicators; OpenCode 2 adds session-owned tasks and optional model-context instructions
16
16
  - Active subagent list with live statuses and click-to-open navigation, including dev-team workers running in separate local processes
17
17
  - Compact, searchable workspace skill list with user-wide favorites, recent skills, source details, and click-to-confirm slash commands
18
- - Configurable host quick actions, including the auto-approve toggle, with user-wide bookmarks and availability reasons
18
+ - Configurable host quick actions, including OpenCode 1.x's auto-approve toggle and OpenCode 2.x's Permissions settings, with user-wide bookmarks and availability reasons
19
19
  - Live LSP connection status with error-first sorting and badges that reveal server names in place
20
20
  - Searchable MCP section with live radio-style connection controls
21
21
  - Click any MCP row to connect or disconnect it
@@ -316,8 +316,10 @@ On the Quick Actions row, click `Actions` or press `A` to choose individual
316
316
  actions and their order. Enter toggles visibility; Left/Right or Shift+Up/Down
317
317
  reorders the selected action. Changes save in the selected Global or Current
318
318
  worktree scope. Escape returns to the Quick Actions row in Sections. Navigator
319
- keeps an explicit allowlist of argument-free host commands, including OpenCode's
320
- global `permission.mode` auto-approve toggle. Bookmarks are user-wide and move
319
+ keeps an explicit allowlist of argument-free host commands. On OpenCode 1.x,
320
+ `permission.mode` toggles auto-approve directly. On OpenCode 2.x, the same
321
+ Quick Action opens the host Settings dialog, where **Session → Permissions**
322
+ switches between `prompt` and `auto accept`. Bookmarks are user-wide and move
321
323
  selected actions to the front in their configured order in both the sidebar and
322
324
  Search Everything. Usage never changes the order. Visibility remains independent,
323
325
  so any action, including a bookmarked one, can be hidden from the sidebar while it
package/dist/tui.js CHANGED
@@ -4142,7 +4142,7 @@ _$setProp(_el$16,"flexGrow",1)
4142
4142
  _$insert(_el$16,()=>icons.icon(props.preferences.selectedQuickActionVisible(action.command)?"checked":"unchecked"),_el$17)
4143
4143
  _$insert(_el$16,()=>index() + 1,_el$18)
4144
4144
  _$insert(_el$16,()=>icons.action(action.command),_el$19)
4145
- _$insert(_el$16,()=>action.label,null)
4145
+ _$insert(_el$16,()=>quickActionLabel(props.api,action),null)
4146
4146
  _$effect((_$p)=>_$setProp(_el$16,"fg",theme().text,_$p))
4147
4147
  return _el$16
4148
4148
  })(),(()=>{var _el$20=_$createElement("text")
@@ -6123,7 +6123,9 @@ return _$createComponent(ListRow,{ref:(node)=>row.ref(node),get id(){return id()
6123
6123
  },get backgroundColor(){return row.backgroundColor()
6124
6124
  },get onMouseOver(){return row.onMouseOver
6125
6125
  },get onMouseOut(){return row.onMouseOut
6126
- },onMouseUp:(event)=>row.activate(event),get leading(){return(()=>{var _el$=_$createElement("text")
6126
+ },onMouseUp:(event)=>{event.stopPropagation()
6127
+ row.activate(event)
6128
+ },get leading(){return(()=>{var _el$=_$createElement("text")
6127
6129
  _$setProp(_el$,"flexShrink",0)
6128
6130
  _$insert(_el$,()=>icons.action(props.action.command))
6129
6131
  _$effect((_$p)=>_$setProp(_el$,"fg",props.disabled?theme().textMuted:row.focused()?row.foregroundColor():theme().accent,_$p))
@@ -7161,6 +7163,8 @@ unsubscribe()
7161
7163
  }}}}
7162
7164
 
7163
7165
 
7166
+ var SETTINGS_COMMAND="opencode.settings"
7167
+ var PERMISSIONS_ACTION="permission.mode"
7164
7168
  function belongsTo2(renderable,ancestor){if(!renderable||!ancestor)
7165
7169
  return false
7166
7170
  for(let current=renderable;current; current=current.parent){if(current===ancestor)
@@ -7215,11 +7219,11 @@ setRevision((value)=>value + 1)
7215
7219
  return()=>{if(!layers.delete(id))
7216
7220
  return
7217
7221
  setRevision((value)=>value + 1)
7218
- }},dispatchCommand(name,options){const command=context.keymap.commands().find((candidate)=>candidate.id===name)
7222
+ }},dispatchCommand(name,options){const command=context.keymap.commands().find((candidate)=>candidate.id===(name===PERMISSIONS_ACTION?SETTINGS_COMMAND:name))
7219
7223
  if(command){if(!enabled(command.enabled))
7220
7224
  return{ok:false,reason:"disabled",command
7221
7225
  }
7222
- context.keymap.dispatch(name,typeof options?.payload==="string"?options.payload:undefined)
7226
+ context.keymap.dispatch(command.id,typeof options?.payload==="string"?options.payload:undefined)
7223
7227
  return{ok:true,command
7224
7228
  }}
7225
7229
  const fallback=legacyCommand(name)
@@ -7228,12 +7232,18 @@ return{ok:false,reason:"not-found"
7228
7232
  }
7229
7233
  run(fallback)
7230
7234
  return{ok:true,command:fallback
7231
- }},getCommands(){return context.keymap.commands().flatMap((command)=>{if(!command.id)
7235
+ }},getCommands(){const commands=context.keymap.commands()
7236
+ const result=commands.flatMap((command)=>{if(!command.id)
7232
7237
  return []
7233
7238
  const name=command.id
7234
7239
  return [{...command,name,run:()=>context.keymap.dispatch(name)
7235
7240
  }]
7236
7241
  })
7242
+ const settings=commands.find((command)=>command.id===SETTINGS_COMMAND)
7243
+ if(settings)
7244
+ result.push({...settings,id:PERMISSIONS_ACTION,name:PERMISSIONS_ACTION,title:"Permissions settings",run:()=>context.keymap.dispatch(SETTINGS_COMMAND)
7245
+ })
7246
+ return result
7237
7247
  },getCommandBindings(input){return new Map(input.commands.map((name)=>[name,[...context.keymap.shortcuts(name)]]))
7238
7248
  },parseKeySequence(value){return value.trim()?value.trim().split(/\s+/u):[]
7239
7249
  }}
@@ -7456,7 +7466,7 @@ api.slots.register({order:100,slots:{app(){return _$createComponent(IconProvider
7456
7466
  },interaction,skills,subagents,mcp
7457
7467
  }),_$createComponent(FirstRunWizardPersistence,{api,preferences
7458
7468
  }),_$createComponent(StartupSessionBinding,{api,controller:startup
7459
- }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.18.1"
7469
+ }),_$createComponent(UpgradeNotesBinding,{api,preferences,version:"0.18.2"
7460
7470
  }),_$createComponent(McpPersistence,{api,controller:mcp
7461
7471
  })]
7462
7472
  }})
@@ -7486,12 +7496,12 @@ throw result.error
7486
7496
  }
7487
7497
  return result.data?.type==="text"?result.data.content:undefined
7488
7498
  })
7489
- const versionStatus=createVersionStatus(api,"0.18.1")
7490
- const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.18.1"))
7499
+ const versionStatus=createVersionStatus(api,"0.18.2")
7500
+ const versionUpdates=createVersionUpdateActions(api,versionStatus,createOpenCodeV1VersionUpdater(api,meta),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.18.2"))
7491
7501
  api.slots.register({order:90,slots:{sidebar_footer(_context,props){return _$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7492
7502
  },get multilineCorners(){return preferences.cornerFont
7493
7503
  },get children(){return _$createComponent(VersionFooter,{api,get sessionID(){return props.session_id
7494
- },navigatorVersion:"0.18.1",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7504
+ },navigatorVersion:"0.18.2",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7495
7505
  },get onNavigatorUpdate(){return versionUpdates.navigator
7496
7506
  }})
7497
7507
  }})
@@ -7505,15 +7515,15 @@ return
7505
7515
  return new TextDecoder().decode(await context.client.file.read({location:context.location,path:".opencode/navigator.json"
7506
7516
  }))
7507
7517
  },todo)
7508
- const versionStatus=createVersionStatus(adapter.api,"0.18.1")
7509
- const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.18.1"))
7518
+ const versionStatus=createVersionStatus(adapter.api,"0.18.2")
7519
+ const versionUpdates=createVersionUpdateActions(adapter.api,versionStatus,createOpenCodeV2VersionUpdater(context),()=>preferences.rememberNavigatorVersionBeforeUpdate("0.18.2"))
7510
7520
  const disposeFooter=context.ui.slot({append:"sidebar.footer",render:()=>_$createComponent(IconProvider,{get style(){return preferences.lspIconStyle
7511
7521
  },get multilineCorners(){return preferences.cornerFont
7512
7522
  },get children(){var _el$=_$createElement("box")
7513
7523
  _$setProp(_el$,"flexDirection","row")
7514
7524
  _$setProp(_el$,"justifyContent","space-between")
7515
7525
  _$insert(_el$,_$createComponent(VersionSummary,{get api(){return adapter.api
7516
- },navigatorVersion:"0.18.1",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7526
+ },navigatorVersion:"0.18.2",status:versionStatus,get onOpenCodeUpdate(){return versionUpdates.openCode
7517
7527
  },get onNavigatorUpdate(){return versionUpdates.navigator
7518
7528
  }}),null)
7519
7529
  _$insert(_el$,_$createComponent(SettingsFooterButton,{get api(){return adapter.api
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "opencode-navigator",
4
- "version": "0.18.1",
4
+ "version": "0.18.2",
5
5
  "description": "Search, navigate, and manage OpenCode sessions from the TUI",
6
6
  "type": "module",
7
7
  "packageManager": "bun@1.4.2",