+
+**[@Sakyvo](https://github.com/Sakyvo)** — Added persistent controls for multi-line paste confirmation and tab close-button visibility ([#76](https://github.com/Kuddev/nebula/pull/76), [#77](https://github.com/Kuddev/nebula/pull/77)).
+
+---
+
+**SHA256**
+
+- `NebulaTerminal-v1.5.0-windows-x64.zip`: pending final package build
+- `NebulaTerminal-1.5.0-windows-x64-setup.exe`: pending final installer build
diff --git a/extra/completions/_nebula b/extra/completions/_nebula
index c797acc..3463cfa 100644
--- a/extra/completions/_nebula
+++ b/extra/completions/_nebula
@@ -27,8 +27,7 @@ _nebula() {
'*--option=[Override configuration file options \[example\: '\''cursor.style="Beam"'\''\]]:OPTION:_default' \
'--print-events[Print all events to STDOUT]' \
'(--daemon)--ref-test[Generates ref test]' \
-'(--legacy-shell)--gpui[Launch the GPUI UI shell as the main window]' \
-'--legacy-shell[Launch the legacy winit shell instead of GPUI]' \
+'--gpui[Launch the GPUI UI shell as the main window]' \
'(-v)*-q[Reduces the level of verbosity (the min level is -qq)]' \
'(-q)*-v[Increases the level of verbosity (the max level is -vvv)]' \
'--daemon[Do not spawn an initial window]' \
@@ -940,6 +939,17 @@ _arguments "${_arguments_options[@]}" : \
'*::text -- The task itself. Several words are joined with single spaces, so both `send codex "fix login"` and `send codex fix login` work:_default' \
&& ret=0
;;
+(delegate)
+_arguments "${_arguments_options[@]}" : \
+'--generation=[Refuse the delegation unless the target is still this generation]:GENERATION:_default' \
+'--timeout-ms=[]:TIMEOUT_MS:_default' \
+'--pretty[Pretty-print the JSON response. Output is JSON either way]' \
+'-h[Print help]' \
+'--help[Print help]' \
+':agent -- Agent name or stable id from `nebula agent list`:_default' \
+'*::text -- The delegated task. Several words are joined with single spaces:_default' \
+&& ret=0
+;;
(paste)
_arguments "${_arguments_options[@]}" : \
'--from-file=[Read the paste payload from a UTF-8 file]:FROM_FILE:_files' \
@@ -1005,6 +1015,10 @@ _arguments "${_arguments_options[@]}" : \
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
+(delegate)
+_arguments "${_arguments_options[@]}" : \
+&& ret=0
+;;
(paste)
_arguments "${_arguments_options[@]}" : \
&& ret=0
@@ -1402,6 +1416,10 @@ _arguments "${_arguments_options[@]}" : \
_arguments "${_arguments_options[@]}" : \
&& ret=0
;;
+(delegate)
+_arguments "${_arguments_options[@]}" : \
+&& ret=0
+;;
(paste)
_arguments "${_arguments_options[@]}" : \
&& ret=0
@@ -1494,6 +1512,7 @@ _nebula__agent_commands() {
local commands; commands=(
'list:List the panes running an AI CLI, with session identity and generation' \
'send:Hand one task to an agent and submit it' \
+'delegate:Delegate one task and route the Agent'\''s final answer back to this Agent pane' \
'paste:Paste bounded UTF-8 text into an agent as one bracketed block' \
'read:Read the tail of what an agent printed' \
'wait:Block until an agent'\''s turn ends' \
@@ -1501,11 +1520,17 @@ _nebula__agent_commands() {
)
_describe -t commands 'nebula agent commands' commands "$@"
}
+(( $+functions[_nebula__agent__delegate_commands] )) ||
+_nebula__agent__delegate_commands() {
+ local commands; commands=()
+ _describe -t commands 'nebula agent delegate commands' commands "$@"
+}
(( $+functions[_nebula__agent__help_commands] )) ||
_nebula__agent__help_commands() {
local commands; commands=(
'list:List the panes running an AI CLI, with session identity and generation' \
'send:Hand one task to an agent and submit it' \
+'delegate:Delegate one task and route the Agent'\''s final answer back to this Agent pane' \
'paste:Paste bounded UTF-8 text into an agent as one bracketed block' \
'read:Read the tail of what an agent printed' \
'wait:Block until an agent'\''s turn ends' \
@@ -1513,6 +1538,11 @@ _nebula__agent__help_commands() {
)
_describe -t commands 'nebula agent help commands' commands "$@"
}
+(( $+functions[_nebula__agent__help__delegate_commands] )) ||
+_nebula__agent__help__delegate_commands() {
+ local commands; commands=()
+ _describe -t commands 'nebula agent help delegate commands' commands "$@"
+}
(( $+functions[_nebula__agent__help__help_commands] )) ||
_nebula__agent__help__help_commands() {
local commands; commands=()
@@ -2030,12 +2060,18 @@ _nebula__help__agent_commands() {
local commands; commands=(
'list:List the panes running an AI CLI, with session identity and generation' \
'send:Hand one task to an agent and submit it' \
+'delegate:Delegate one task and route the Agent'\''s final answer back to this Agent pane' \
'paste:Paste bounded UTF-8 text into an agent as one bracketed block' \
'read:Read the tail of what an agent printed' \
'wait:Block until an agent'\''s turn ends' \
)
_describe -t commands 'nebula help agent commands' commands "$@"
}
+(( $+functions[_nebula__help__agent__delegate_commands] )) ||
+_nebula__help__agent__delegate_commands() {
+ local commands; commands=()
+ _describe -t commands 'nebula help agent delegate commands' commands "$@"
+}
(( $+functions[_nebula__help__agent__list_commands] )) ||
_nebula__help__agent__list_commands() {
local commands; commands=()
diff --git a/extra/completions/nebula.bash b/extra/completions/nebula.bash
index 1a6ef6c..c8d4351 100644
--- a/extra/completions/nebula.bash
+++ b/extra/completions/nebula.bash
@@ -52,6 +52,9 @@ _nebula() {
nebula,window)
cmd="nebula__window"
;;
+ nebula__agent,delegate)
+ cmd="nebula__agent__delegate"
+ ;;
nebula__agent,help)
cmd="nebula__agent__help"
;;
@@ -70,6 +73,9 @@ _nebula() {
nebula__agent,wait)
cmd="nebula__agent__wait"
;;
+ nebula__agent__help,delegate)
+ cmd="nebula__agent__help__delegate"
+ ;;
nebula__agent__help,help)
cmd="nebula__agent__help__help"
;;
@@ -334,6 +340,9 @@ _nebula() {
nebula__help,window)
cmd="nebula__help__window"
;;
+ nebula__help__agent,delegate)
+ cmd="nebula__help__agent__delegate"
+ ;;
nebula__help__agent,list)
cmd="nebula__help__agent__list"
;;
@@ -590,7 +599,7 @@ _nebula() {
case "${cmd}" in
nebula)
- opts="-q -v -e -T -o -h -V --print-events --ref-test --embed --gpui --legacy-shell --config-file --daemon --working-directory --hold --command --title --class --option --help --version ctl env window tab pane agent migrate config notify-test setup-ai ssh help"
+ opts="-q -v -e -T -o -h -V --print-events --ref-test --embed --gpui --config-file --daemon --working-directory --hold --command --title --class --option --help --version ctl env window tab pane agent migrate config notify-test setup-ai ssh help"
if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
@@ -666,7 +675,7 @@ _nebula() {
return 0
;;
nebula__agent)
- opts="-h --help list send paste read wait help"
+ opts="-h --help list send delegate paste read wait help"
if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
@@ -679,12 +688,48 @@ _nebula() {
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
;;
- nebula__agent__help)
- opts="list send paste read wait help"
+ nebula__agent__delegate)
+ opts="-h --generation --pretty --timeout-ms --help Vec