fpasoterm 1.6.0

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.

Potentially problematic release.


This version of fpasoterm might be problematic. Click here for more details.

Files changed (101) hide show
  1. package/CHANGELOG.md +230 -0
  2. package/CONTRIBUTING.md +67 -0
  3. package/INSTALL.ja.md +204 -0
  4. package/INSTALL.md +229 -0
  5. package/LICENSE +21 -0
  6. package/README.ja.md +389 -0
  7. package/README.md +607 -0
  8. package/bin/fpasoterm +2882 -0
  9. package/completions/_fpasoterm +81 -0
  10. package/completions/fpasoterm.bash +55 -0
  11. package/completions/fpasoterm.fish +64 -0
  12. package/completions/fpasoterm.ps1 +47 -0
  13. package/docs/capability-diagnostics.en.md +77 -0
  14. package/docs/capability-diagnostics.ja.md +63 -0
  15. package/docs/completion.en.md +141 -0
  16. package/docs/completion.ja.md +113 -0
  17. package/docs/config.en.md +554 -0
  18. package/docs/config.ja.md +544 -0
  19. package/docs/debugging.en.md +72 -0
  20. package/docs/debugging.ja.md +66 -0
  21. package/docs/diagnostics.en.md +69 -0
  22. package/docs/diagnostics.ja.md +64 -0
  23. package/docs/font-diagnostics.en.md +116 -0
  24. package/docs/font-diagnostics.ja.md +105 -0
  25. package/docs/fpasoterm-plugin.d.ts +51 -0
  26. package/docs/known-issues.en.md +23 -0
  27. package/docs/known-issues.ja.md +23 -0
  28. package/docs/plugins.en.md +266 -0
  29. package/docs/plugins.ja.md +176 -0
  30. package/docs/pr-review.en.md +177 -0
  31. package/docs/pr-review.ja.md +170 -0
  32. package/docs/release-checklist.en.md +72 -0
  33. package/docs/release-checklist.ja.md +71 -0
  34. package/docs/security.en.md +36 -0
  35. package/docs/security.ja.md +31 -0
  36. package/docs/spec.en.md +106 -0
  37. package/docs/spec.ja.md +99 -0
  38. package/docs/sshfs.en.md +28 -0
  39. package/docs/sshfs.ja.md +28 -0
  40. package/docs/sync.en.md +280 -0
  41. package/docs/sync.ja.md +280 -0
  42. package/examples/apply-default-appearance.bat +8 -0
  43. package/examples/apply-default-appearance.ps1 +7 -0
  44. package/examples/apply-default-appearance.sh +7 -0
  45. package/examples/apply-runtime-appearance.bat +8 -0
  46. package/examples/apply-runtime-appearance.ps1 +7 -0
  47. package/examples/apply-runtime-appearance.sh +7 -0
  48. package/examples/config/default-appearance.toml +36 -0
  49. package/examples/config/minimal.toml +30 -0
  50. package/examples/config/profiles.toml +20 -0
  51. package/examples/config/runtime-appearance.toml +24 -0
  52. package/examples/config/sync-folder.toml +17 -0
  53. package/examples/config/tui-compatibility.toml +7 -0
  54. package/examples/config/with-plugins.toml +33 -0
  55. package/examples/plugins/hello.ts +17 -0
  56. package/examples/plugins/status-banner.ts +14 -0
  57. package/examples/plugins/theme.ts +32 -0
  58. package/examples/plugins/welcome-banner.ts +16 -0
  59. package/extra/linux/icons/hicolor/128x128/apps/fpasoterm.png +0 -0
  60. package/extra/linux/icons/hicolor/16x16/apps/fpasoterm.png +0 -0
  61. package/extra/linux/icons/hicolor/192x192/apps/fpasoterm.png +0 -0
  62. package/extra/linux/icons/hicolor/256x256/apps/fpasoterm.png +0 -0
  63. package/extra/linux/icons/hicolor/32x32/apps/fpasoterm.png +0 -0
  64. package/extra/linux/icons/hicolor/48x48/apps/fpasoterm.png +0 -0
  65. package/extra/linux/icons/hicolor/512x512/apps/fpasoterm.png +0 -0
  66. package/extra/linux/icons/hicolor/64x64/apps/fpasoterm.png +0 -0
  67. package/extra/linux/io.github.oyoguhito.fpasoterm.desktop +10 -0
  68. package/extra/logo/fpasoterm.png +0 -0
  69. package/extra/macos/fpasoterm.icns +0 -0
  70. package/extra/windows/fpasoterm.cmd +40 -0
  71. package/extra/windows/fpasoterm.ico +0 -0
  72. package/package.json +81 -0
  73. package/scripts/build-artifacts.js +183 -0
  74. package/scripts/generate-icon.js +251 -0
  75. package/scripts/init-jj-empty-main +41 -0
  76. package/scripts/install-linux-desktop.js +238 -0
  77. package/scripts/run +16 -0
  78. package/scripts/security/scan-secrets.js +89 -0
  79. package/scripts/tests/smoke.js +2476 -0
  80. package/scripts/uninstall-desktop.js +20 -0
  81. package/scripts/uninstall-linux-desktop.js +96 -0
  82. package/scripts/uninstall-windows-path.js +94 -0
  83. package/src/config.js +855 -0
  84. package/src/renderer/confirm.html +71 -0
  85. package/src/renderer/index.html +223 -0
  86. package/src/renderer/renderer.js +4166 -0
  87. package/src/renderer/styles.css +969 -0
  88. package/src/renderer/vendor/addon-fit/addon-fit.js +2 -0
  89. package/src/renderer/vendor/addon-image/LICENSE +19 -0
  90. package/src/renderer/vendor/addon-image/addon-image.js +3 -0
  91. package/src/renderer/vendor/addon-web-links/LICENSE +19 -0
  92. package/src/renderer/vendor/addon-web-links/addon-web-links.js +2 -0
  93. package/src/renderer/vendor/xterm/xterm.css +292 -0
  94. package/src/renderer/vendor/xterm/xterm.js +2 -0
  95. package/src-tauri/Cargo.lock +5253 -0
  96. package/src-tauri/Cargo.toml +29 -0
  97. package/src-tauri/build.rs +140 -0
  98. package/src-tauri/capabilities/default.json +13 -0
  99. package/src-tauri/default-config.toml +128 -0
  100. package/src-tauri/src/main.rs +9347 -0
  101. package/src-tauri/tauri.conf.json +60 -0
@@ -0,0 +1,81 @@
1
+ #compdef fpasoterm
2
+
3
+ _fpasoterm_profile_names() {
4
+ local -a profiles
5
+ profiles=("${(@f)$(command fpasoterm --profile-list 2>/dev/null | sed -n 's/^ //p')}")
6
+ _describe -t profiles profile profiles
7
+ }
8
+
9
+ _fpasoterm_plugin_names() {
10
+ local -a plugins
11
+ plugins=("${(@f)$(command fpasoterm --plugin-list 2>/dev/null | sed -n 's/^ plugins\/\([^ ]*\).*/\1/p')}")
12
+ _describe -t plugins plugin plugins
13
+ }
14
+
15
+ _fpasoterm() {
16
+ _arguments -s -S \
17
+ '(-h --help)'{-h,--help}'[show help]' \
18
+ '(-v --version)'{-v,--version}'[show version and build commit]' \
19
+ '--update-check[compare the installed version with npm latest]' \
20
+ '--doctor[check updates, npm audit, and config health]' \
21
+ '--completion=[print a completion script]:shell:(bash zsh fish powershell)' \
22
+ '--completion-install=[install persistent completion]:shell:(bash zsh fish powershell)' \
23
+ '--completion-uninstall=[remove persistent completion]:shell:(bash zsh fish powershell)' \
24
+ '(-l --list)'{-l,--list}'[list running windows]' \
25
+ '(-q --close)'{-q,--close}'[close a PID, exact title, or all]:target:(all)' \
26
+ '--broadcast=[send text plus Enter to local windows]:text:' \
27
+ '--broadcast-target=[limit Broadcast targets]:PID or title:' \
28
+ '--broadcast-sync[also send Broadcast through the sync channel]' \
29
+ '(-d --dev)'{-d,--dev}'[rebuild the local debug binary]' \
30
+ '(-F --foreground)'{-F,--foreground}'[keep the launcher attached]' \
31
+ '(-C --console-diagnostics)'{-C,--console-diagnostics}'[print diagnostics to stderr]' \
32
+ '(-c --config)'{-c,--config}'[use a config.toml file]:config file:_files -g "*.toml"' \
33
+ '(-p --profile)'{-p,--profile}'[apply a named profile]:profile:_fpasoterm_profile_names' \
34
+ '--profile-list[list available profiles]' \
35
+ '--show-config[print resolved config]' \
36
+ '--config-check[validate config]' \
37
+ '--config-path[print config path]' \
38
+ '--config-example[print config example]' \
39
+ '--diagnostics[print diagnostics report]' \
40
+ '--open-log-dir[open terminal log directory]' \
41
+ '--copy-diagnostics[copy diagnostics report]' \
42
+ '--plugin-list[list local User/plugins files]' \
43
+ '--plugin-path[print plugin directory]' \
44
+ '--plugin-info=[show plugin information]:plugin:_fpasoterm_plugin_names' \
45
+ '--plugin-uninstall=[remove local plugin files]:plugin:_fpasoterm_plugin_names' \
46
+ '--plugin-search=[search official public plugin ports]:query:' \
47
+ '--plugin-install=[download an official public port]:port:(terminal/hello terminal/welcome-banner terminal/status-banner terminal/theme appearance/amber appearance/teal appearance/high-contrast productivity/git-status productivity/session-marker)' \
48
+ '--plugin-ports-dir=[install --plugin-install from this local fpasoterm-plugins checkout]:directory:_files -/' \
49
+ '--plugin-install-file=[copy a trusted local JavaScript or TypeScript plugin]:plugin:_files -g "*.(js|ts)"' \
50
+ '--force[replace an existing file during plugin install]' \
51
+ '--enable[enable a plugin installed by one install command]' \
52
+ '--enable-plugin=[enable plugins]:plugin:_fpasoterm_plugin_names' \
53
+ '--disable-plugin=[disable plugins]:plugin:_fpasoterm_plugin_names' \
54
+ '--plugin-enable=[alias for enable-plugin]:plugin:_fpasoterm_plugin_names' \
55
+ '--plugin-disable=[alias for disable-plugin]:plugin:_fpasoterm_plugin_names' \
56
+ '--plugin-enable-all[enable all discovered plugins]' \
57
+ '--plugin-disable-all[disable all plugins]' \
58
+ '--update-config[add missing config defaults]' \
59
+ '--prune-config[remove unsupported config settings]' \
60
+ '--setup-sync[configure a sync folder]' \
61
+ '--sync-status[show sync health]' \
62
+ '--sync-clean[remove expired sync commands]' \
63
+ '--sync-diagnostics[print sync diagnostics]' \
64
+ '--self-update[update an npm installation]' \
65
+ '--self-update-checkout[update a git checkout]' \
66
+ '--update-desktop[refresh desktop integration]' \
67
+ '(-s --shell)'{-s,--shell}'[override shell]:command:_command_names' \
68
+ '(-o --cwd)'{-o,--cwd}'[start terminal in this directory]:directory:_files -/' \
69
+ '(-e --command)'{-e,--command}'[run command after launch]:command:' \
70
+ '(-t --title)'{-t,--title}'[override titlebar title]:title:' \
71
+ '(-b --titlebar-color)'{-b,--titlebar-color}'[override titlebar color]:color:' \
72
+ '(-r --reset-window-state)'{-r,--reset-window-state}'[delete saved window size]' \
73
+ '(-R --reset-config)'{-R,--reset-config}'[back up config and restore defaults]' \
74
+ '(-W --width)'{-W,--width}'[override window width]:pixels:' \
75
+ '(-H --height)'{-H,--height}'[override window height]:pixels:' \
76
+ '(-z --size)'{-z,--size}'[override window size]:width x height:' \
77
+ '(-k --debug-keys)'{-k,--debug-keys}'[enable key diagnostics]' \
78
+ '--disable-dmabuf[disable the Linux DMA-BUF renderer]'
79
+ }
80
+
81
+ _fpasoterm "$@"
@@ -0,0 +1,55 @@
1
+ # Bash completion for fpasoterm. Install with: source <(fpasoterm --completion bash)
2
+
3
+ _fpasoterm_profile_names() {
4
+ command fpasoterm --profile-list 2>/dev/null | sed -n 's/^ //p'
5
+ }
6
+
7
+ _fpasoterm_plugin_names() {
8
+ command fpasoterm --plugin-list 2>/dev/null | sed -n 's/^ plugins\/\([^ ]*\).*/\1/p'
9
+ }
10
+
11
+ _fpasoterm() {
12
+ local cur prev options
13
+ cur="${COMP_WORDS[COMP_CWORD]}"
14
+ prev="${COMP_WORDS[COMP_CWORD - 1]}"
15
+ options='-h --help -v --version --update-check --doctor -l --list -q --close --broadcast --broadcast-target --broadcast-sync -d --dev -F --foreground -C --console-diagnostics -c --config -p --profile --profile-list --show-config --config-check --config-path --config-example --diagnostics --open-log-dir --copy-diagnostics --plugin-list --plugin-path --plugin-info --plugin-uninstall --plugin-search --plugin-install --plugin-ports-dir --plugin-install-file --force --enable --update-config --prune-config --setup-sync --sync-status --sync-clean --sync-diagnostics --self-update --self-update-checkout --update-desktop -s --shell -o --cwd -e --command -t --title -b --titlebar-color -r --reset-window-state -R --reset-config --enable-plugin --disable-plugin --plugin-enable-all --plugin-disable-all --plugin-enable --plugin-disable -W --width -H --height -z --size -k --debug-keys --disable-dmabuf --completion --completion-install --completion-uninstall'
16
+
17
+ case "$prev" in
18
+ --completion|--completion-install|--completion-uninstall)
19
+ COMPREPLY=( $(compgen -W 'bash zsh fish powershell' -- "$cur") )
20
+ return
21
+ ;;
22
+ --profile|-p)
23
+ COMPREPLY=( $(compgen -W "$(_fpasoterm_profile_names)" -- "$cur") )
24
+ return
25
+ ;;
26
+ --enable-plugin|--disable-plugin|--plugin-enable|--plugin-disable|--plugin-info|--plugin-uninstall)
27
+ COMPREPLY=( $(compgen -W "$(_fpasoterm_plugin_names)" -- "$cur") )
28
+ return
29
+ ;;
30
+ --plugin-install)
31
+ COMPREPLY=( $(compgen -W 'terminal/hello terminal/welcome-banner terminal/status-banner terminal/theme appearance/amber appearance/teal appearance/high-contrast productivity/git-status productivity/session-marker' -- "$cur") )
32
+ return
33
+ ;;
34
+ --plugin-ports-dir|--plugin-install-file)
35
+ COMPREPLY=( $(compgen -f -- "$cur") )
36
+ return
37
+ ;;
38
+ --config|-c|--cwd|-o)
39
+ COMPREPLY=( $(compgen -f -- "$cur") )
40
+ return
41
+ ;;
42
+ --shell|-s)
43
+ COMPREPLY=( $(compgen -c -- "$cur") )
44
+ return
45
+ ;;
46
+ --close|-q|--broadcast-target)
47
+ COMPREPLY=( $(compgen -W "all $(command fpasoterm --list 2>/dev/null | awk '{print $1}')" -- "$cur") )
48
+ return
49
+ ;;
50
+ esac
51
+
52
+ COMPREPLY=( $(compgen -W "$options" -- "$cur") )
53
+ }
54
+
55
+ complete -F _fpasoterm fpasoterm
@@ -0,0 +1,64 @@
1
+ # Fish completion for fpasoterm. Install with: fpasoterm --completion fish | source
2
+
3
+ complete -c fpasoterm -s h -l help -d 'Show help'
4
+ complete -c fpasoterm -s v -l version -d 'Show version and build commit'
5
+ complete -c fpasoterm -l update-check -d 'Compare installed version with npm latest'
6
+ complete -c fpasoterm -l doctor -d 'Check updates, npm audit, and config health'
7
+ complete -c fpasoterm -s l -l list -d 'List running windows'
8
+ complete -c fpasoterm -s q -l close -r -d 'Close a PID, exact title, or all'
9
+ complete -c fpasoterm -l broadcast -r -d 'Send text to local windows'
10
+ complete -c fpasoterm -l broadcast-target -r -d 'Limit Broadcast targets'
11
+ complete -c fpasoterm -l broadcast-sync -d 'Include the sync channel'
12
+ complete -c fpasoterm -s d -l dev -d 'Rebuild local debug binary'
13
+ complete -c fpasoterm -s F -l foreground -d 'Keep launcher attached'
14
+ complete -c fpasoterm -s C -l console-diagnostics -d 'Print diagnostics to stderr'
15
+ complete -c fpasoterm -s c -l config -r -F -d 'Use a config.toml file'
16
+ complete -c fpasoterm -s p -l profile -r -d 'Apply a named profile'
17
+ complete -c fpasoterm -l profile-list -d 'List named profiles'
18
+ complete -c fpasoterm -l show-config -d 'Print resolved config'
19
+ complete -c fpasoterm -l config-check -d 'Validate config'
20
+ complete -c fpasoterm -l config-path -d 'Print config path'
21
+ complete -c fpasoterm -l config-example -d 'Print config example'
22
+ complete -c fpasoterm -l diagnostics -d 'Print diagnostics report'
23
+ complete -c fpasoterm -l open-log-dir -d 'Open terminal log directory'
24
+ complete -c fpasoterm -l copy-diagnostics -d 'Copy diagnostics report'
25
+ complete -c fpasoterm -l plugin-list -d 'List local User/plugins files'
26
+ complete -c fpasoterm -l plugin-path -d 'Print plugin directory'
27
+ complete -c fpasoterm -l plugin-info -r -d 'Show plugin information'
28
+ complete -c fpasoterm -l plugin-uninstall -r -d 'Remove local plugin files'
29
+ complete -c fpasoterm -l plugin-search -d 'Search official public plugin ports'
30
+ complete -c fpasoterm -l plugin-install -r -a 'terminal/hello terminal/welcome-banner terminal/status-banner terminal/theme appearance/amber appearance/teal appearance/high-contrast productivity/git-status productivity/session-marker' -d 'Download an official public port'
31
+ complete -c fpasoterm -l plugin-ports-dir -r -F -d 'Install --plugin-install from this local checkout'
32
+ complete -c fpasoterm -l plugin-install-file -r -F -d 'Copy a trusted local .js/.ts plugin'
33
+ complete -c fpasoterm -l force -d 'Replace an existing plugin during install'
34
+ complete -c fpasoterm -l enable -d 'Enable a plugin installed by an install command'
35
+ complete -c fpasoterm -l enable-plugin -r -d 'Enable plugins'
36
+ complete -c fpasoterm -l disable-plugin -r -d 'Disable plugins'
37
+ complete -c fpasoterm -l plugin-enable -r -d 'Alias for enable-plugin'
38
+ complete -c fpasoterm -l plugin-disable -r -d 'Alias for disable-plugin'
39
+ complete -c fpasoterm -l plugin-enable-all -d 'Enable all discovered plugins'
40
+ complete -c fpasoterm -l plugin-disable-all -d 'Disable all plugins'
41
+ complete -c fpasoterm -l update-config -d 'Add missing config defaults'
42
+ complete -c fpasoterm -l prune-config -d 'Remove unsupported config settings'
43
+ complete -c fpasoterm -l setup-sync -d 'Configure a sync folder'
44
+ complete -c fpasoterm -l sync-status -d 'Show sync health'
45
+ complete -c fpasoterm -l sync-clean -d 'Remove expired sync commands'
46
+ complete -c fpasoterm -l sync-diagnostics -d 'Print sync diagnostics'
47
+ complete -c fpasoterm -l self-update -d 'Update an npm installation'
48
+ complete -c fpasoterm -l self-update-checkout -d 'Update a git checkout'
49
+ complete -c fpasoterm -l update-desktop -d 'Refresh desktop integration'
50
+ complete -c fpasoterm -s s -l shell -r -d 'Override shell'
51
+ complete -c fpasoterm -s o -l cwd -r -F -d 'Start terminal in this directory'
52
+ complete -c fpasoterm -s e -l command -r -d 'Run command after launch'
53
+ complete -c fpasoterm -s t -l title -r -d 'Override titlebar title'
54
+ complete -c fpasoterm -s b -l titlebar-color -r -d 'Override titlebar color'
55
+ complete -c fpasoterm -s r -l reset-window-state -d 'Delete saved window size'
56
+ complete -c fpasoterm -s R -l reset-config -d 'Restore default config'
57
+ complete -c fpasoterm -s W -l width -r -d 'Override window width'
58
+ complete -c fpasoterm -s H -l height -r -d 'Override window height'
59
+ complete -c fpasoterm -s z -l size -r -d 'Override window size'
60
+ complete -c fpasoterm -s k -l debug-keys -d 'Enable key diagnostics'
61
+ complete -c fpasoterm -l disable-dmabuf -d 'Disable Linux DMA-BUF renderer'
62
+ complete -c fpasoterm -l completion -r -a 'bash zsh fish powershell' -d 'Print completion script'
63
+ complete -c fpasoterm -l completion-install -r -a 'bash zsh fish powershell' -d 'Install persistent completion'
64
+ complete -c fpasoterm -l completion-uninstall -r -a 'bash zsh fish powershell' -d 'Remove persistent completion'
@@ -0,0 +1,47 @@
1
+ # PowerShell completion for fpasoterm. Install with:
2
+ # fpasoterm --completion powershell | Out-String | Invoke-Expression
3
+
4
+ $fpasotermCompletion = {
5
+ param($wordToComplete, $commandAst, $cursorPosition)
6
+
7
+ $shells = @('bash', 'zsh', 'fish', 'powershell')
8
+ $options = @(
9
+ @('--help', 'Show help'), @('-h', 'Show help'), @('--version', 'Show version and build commit'), @('-v', 'Show version and build commit'), @('--update-check', 'Compare installed version with npm latest'), @('--doctor', 'Check updates, npm audit, and config health'),
10
+ @('--list', 'List running windows'), @('-l', 'List running windows'), @('--close', 'Close a PID, exact title, or all'), @('-q', 'Close a PID, exact title, or all'),
11
+ @('--broadcast', 'Send text to local windows'), @('--broadcast-target', 'Limit Broadcast targets'), @('--broadcast-sync', 'Include the sync channel'),
12
+ @('--dev', 'Rebuild local debug binary'), @('-d', 'Rebuild local debug binary'), @('--foreground', 'Keep launcher attached'), @('-F', 'Keep launcher attached'),
13
+ @('--console-diagnostics', 'Print diagnostics to stderr'), @('-C', 'Print diagnostics to stderr'), @('--config', 'Use a config.toml file'), @('-c', 'Use a config.toml file'),
14
+ @('--profile', 'Apply a named profile'), @('-p', 'Apply a named profile'), @('--profile-list', 'List named profiles'), @('--show-config', 'Print resolved config'),
15
+ @('--config-check', 'Validate config'), @('--config-path', 'Print config path'), @('--config-example', 'Print config example'), @('--diagnostics', 'Print diagnostics report'),
16
+ @('--open-log-dir', 'Open terminal log directory'), @('--copy-diagnostics', 'Copy diagnostics report'), @('--plugin-list', 'List local User/plugins files'), @('--plugin-path', 'Print plugin directory'),
17
+ @('--plugin-info', 'Show plugin information'), @('--plugin-uninstall', 'Remove local plugin files'), @('--plugin-search', 'Search official public plugin ports'), @('--plugin-install', 'Install a port from GitHub or --plugin-ports-dir'), @('--plugin-ports-dir', 'Install --plugin-install from a local checkout'), @('--plugin-install-file', 'Copy a trusted local .js/.ts plugin'), @('--force', 'Replace an existing plugin during install'), @('--enable', 'Enable a plugin installed by an install command'), @('--enable-plugin', 'Enable plugins'), @('--disable-plugin', 'Disable plugins'), @('--plugin-enable', 'Alias for enable-plugin'),
18
+ @('--plugin-disable', 'Alias for disable-plugin'), @('--plugin-enable-all', 'Enable all discovered plugins'), @('--plugin-disable-all', 'Disable all plugins'),
19
+ @('--update-config', 'Add missing config defaults'), @('--prune-config', 'Remove unsupported config settings'), @('--setup-sync', 'Configure a sync folder'),
20
+ @('--sync-status', 'Show sync health'), @('--sync-clean', 'Remove expired sync commands'), @('--sync-diagnostics', 'Print sync diagnostics'),
21
+ @('--self-update', 'Update an npm installation'), @('--self-update-checkout', 'Update a git checkout'), @('--update-desktop', 'Refresh desktop integration'),
22
+ @('--shell', 'Override shell'), @('-s', 'Override shell'), @('--cwd', 'Start terminal in this directory'), @('-o', 'Start terminal in this directory'), @('--command', 'Run command after launch'), @('-e', 'Run command after launch'),
23
+ @('--title', 'Override titlebar title'), @('-t', 'Override titlebar title'), @('--titlebar-color', 'Override titlebar color'), @('-b', 'Override titlebar color'),
24
+ @('--reset-window-state', 'Delete saved window size'), @('-r', 'Delete saved window size'), @('--reset-config', 'Restore default config'), @('-R', 'Restore default config'),
25
+ @('--width', 'Override window width'), @('-W', 'Override window width'), @('--height', 'Override window height'), @('-H', 'Override window height'),
26
+ @('--size', 'Override window size'), @('-z', 'Override window size'), @('--debug-keys', 'Enable key diagnostics'), @('-k', 'Enable key diagnostics'),
27
+ @('--disable-dmabuf', 'Disable Linux DMA-BUF renderer'),
28
+ @('--completion', 'Print completion script'), @('--completion-install', 'Install persistent completion'), @('--completion-uninstall', 'Remove persistent completion')
29
+ )
30
+
31
+ $previous = ''
32
+ if ($commandAst.CommandElements.Count -gt 1) {
33
+ $previous = $commandAst.CommandElements[$commandAst.CommandElements.Count - 2].Extent.Text
34
+ }
35
+ if ($previous -in '--completion', '--completion-install', '--completion-uninstall') {
36
+ foreach ($shell in $shells | Where-Object { $_ -like "$wordToComplete*" }) {
37
+ [System.Management.Automation.CompletionResult]::new($shell, $shell, 'ParameterValue', "fpasoterm completion for $shell")
38
+ }
39
+ return
40
+ }
41
+
42
+ foreach ($option in $options | Where-Object { $_[0] -like "$wordToComplete*" }) {
43
+ [System.Management.Automation.CompletionResult]::new($option[0], $option[0], 'ParameterName', $option[1])
44
+ }
45
+ }
46
+
47
+ Register-ArgumentCompleter -Native -CommandName fpasoterm, fpasoterm.cmd, fpasoterm.exe -ScriptBlock $fpasotermCompletion
@@ -0,0 +1,77 @@
1
+ # Terminal Capability Diagnostics
2
+
3
+ Open the window menu, then select **Diagnostics > Capability Test**. This
4
+ opens the existing diagnostics panel and does not change the terminal session,
5
+ shell configuration, or saved settings.
6
+
7
+ The panel reports the environment fpasoterm provides to its PTY:
8
+
9
+ - `TERM`: `xterm-256color`
10
+ - `COLORTERM`: `truecolor`
11
+ - `locale`: the effective `LC_ALL`, `LC_CTYPE`, or `LANG` value
12
+ - `output encoding`: the configured PTY decoder
13
+ - `shell`: the configured or platform-selected shell command
14
+
15
+ ## Output Encoding
16
+
17
+ The panel can save `terminal.encoding` as `utf-8`, `shift-jis`, or `euc-jp`.
18
+ The choice applies when the window is restarted because both the PTY decoder and
19
+ shell locale are selected before the shell starts. UTF-8 is the default. On
20
+ Unix, fpasoterm supplies a UTF-8 locale to an inherited non-UTF-8 environment,
21
+ so normal tools keep UTF-8 filenames intact. It does not auto-detect byte
22
+ encodings because detection is ambiguous and can corrupt otherwise valid text.
23
+
24
+ ## Truecolor
25
+
26
+ The renderer supports 24-bit ANSI colors and advertises that through
27
+ `COLORTERM=truecolor`. Run the command shown in the panel in the terminal. It
28
+ should render distinct red, green, and blue words:
29
+
30
+ ```sh
31
+ printf '\033[38;2;255;80;80mred \033[38;2;80;220;140mgreen \033[38;2;90;150;255mblue\033[0m\n'
32
+ ```
33
+
34
+ ## Control Sequences
35
+
36
+ - **OSC 52 clipboard:** fpasoterm accepts received text clipboard payloads and
37
+ writes them to the operating-system clipboard when `security.osc52` is
38
+ `trusted`. `security.osc52MaxBytes` limits the decoded payload. Set
39
+ `security.osc52 = "disabled"` when terminal output is not trusted.
40
+ - **OSC 7 current directory:** received `file://` reports are retained only as
41
+ diagnostics metadata. Use `Ctrl+Shift+o` or **Window > New CWD** to open a
42
+ separate terminal in an existing local absolute directory reported by OSC 7.
43
+ Remote-host reports and unavailable paths are rejected. fpasoterm does not
44
+ open, inspect, or synchronize the reported path. fpasoterm configures Bash
45
+ to report OSC 7 at each prompt; other shells need their own OSC 7 integration.
46
+ - **OSC 133 shell integration:** prompt and command lifecycle markers are
47
+ retained only as diagnostics metadata. They do not execute a command or
48
+ replace the shell, multiplexer, or TUI workflow.
49
+ - **OSC 8 hyperlinks:** clicking a rendered OSC 8 link or plain `http(s)` URL
50
+ opens an explicit confirmation dialog. Copy remains available. External
51
+ browser opening is disabled by default and additionally requires
52
+ `security.osc8Open = true`; links are never opened automatically. Absolute
53
+ and `~/` paths remain copy-only links.
54
+ - **OSC 9 / OSC 99 notifications:** desktop notifications are disabled by
55
+ default. Set `security.oscNotifications = true` to allow them. The first use
56
+ can request operating-system notification permission, and
57
+ `security.oscNotificationMinIntervalMs` limits notifications to one per
58
+ 1,000--60,000 ms (default 5,000 ms).
59
+ - **Bracketed paste:** xterm.js handles terminal input. A shell or TUI enables
60
+ bracketed paste with DECSET 2004, then receives pasted text as a bracketed
61
+ sequence.
62
+ - **Bell:** BEL is passed to xterm.js. Audible or visual feedback is controlled
63
+ by the operating system and webview, so it may be silent.
64
+
65
+ The panel documents the supported paths rather than sending a clipboard write,
66
+ opening a URL, or ringing a bell automatically. This keeps diagnostics safe for
67
+ the current terminal session.
68
+
69
+ ## Verification
70
+
71
+ 1. Start fpasoterm and open **Diagnostics > Capability Test**.
72
+ 2. Confirm `TERM` is `xterm-256color` and `COLORTERM` is `truecolor`.
73
+ 3. Run the displayed truecolor command and confirm all three colors differ.
74
+ 4. Run `printf 'https://example.com /tmp/fpasoterm-link-test\n'`, click each
75
+ item, and paste into a trusted text field to confirm URL/path copying.
76
+ 5. If a TUI behaves differently, record this panel together with
77
+ `fpasoterm --diagnostics` when filing an issue.
@@ -0,0 +1,63 @@
1
+ # Terminal Capability Diagnostics
2
+
3
+ window menu から **Diagnostics > Capability Test** を選択します。既存の
4
+ diagnostics panelを表示するだけで、terminal session、shell設定、保存済み設定は変更しません。
5
+
6
+ panelにはfpasotermがPTYへ設定する次のenvironmentを表示します。
7
+
8
+ - `TERM`: `xterm-256color`
9
+ - `COLORTERM`: `truecolor`
10
+ - `locale`: 有効な`LC_ALL`、`LC_CTYPE`、または`LANG`
11
+ - `output encoding`: 設定済みPTY decoder
12
+ - `shell`: configまたはOS既定から選択したshell command
13
+
14
+ ## Output Encoding
15
+
16
+ panelから`terminal.encoding`を`utf-8`、`shift-jis`、`euc-jp`として保存できます。
17
+ PTY decoderとshell localeはshell起動前に決まるため、選択後はwindowを再起動してください。
18
+ 既定値はUTF-8です。Unixでは親環境がUTF-8以外のlocaleでも、UTF-8 PTYにはUTF-8 localeを
19
+ 設定するため、通常のtoolが日本語filenameを`?`へ置換することを防ぎます。文字コードの自動判定は
20
+ 曖昧で正しいtextも壊し得るため実装しません。
21
+
22
+ ## Truecolor
23
+
24
+ rendererは24-bit ANSI colorを扱い、`COLORTERM=truecolor`でterminal applicationへ通知します。
25
+ panel内の次のcommandをterminalで実行し、赤・緑・青のwordがそれぞれ異なる色で表示されることを
26
+ 確認してください。
27
+
28
+ ```sh
29
+ printf '\033[38;2;255;80;80mred \033[38;2;80;220;140mgreen \033[38;2;90;150;255mblue\033[0m\n'
30
+ ```
31
+
32
+ ## Control Sequence
33
+
34
+ - **OSC 52 clipboard:** `security.osc52`が`trusted`の場合だけ受信したtext clipboard
35
+ payloadをOS clipboardへ書き込みます。`security.osc52MaxBytes`でdecode後のsizeを制限します。
36
+ terminal outputをtrustedできない場合は`security.osc52 = "disabled"`を設定してください。
37
+ - **OSC 7 current directory:** 受信した`file://` reportはdiagnostics metadataとして保持します。
38
+ `Ctrl+Shift+o`または**Window > New CWD**で、OSC 7が通知したexisting local absolute directoryから別windowを開けます。
39
+ remote hostのreportまたは存在しないpathは拒否します。報告されたpathをopen、参照、syncしません。
40
+ fpasotermはBash promptごとにOSC 7を通知するよう設定します。ほかのshellでは、そのshell側のOSC 7 integrationが必要です。
41
+ - **OSC 133 shell integration:** promptとcommand lifecycle markerはdiagnostics metadataとしてだけ
42
+ 保持します。commandを実行したりshell、multiplexer、TUIのworkflowを置き換えたりしません。
43
+ - **OSC 8 hyperlink:** 表示されたOSC 8 linkまたは通常の`http(s)` URLをclickすると明示的な確認dialogを表示します。
44
+ URLのcopyは常に可能です。外部browserでopenするには`security.osc8Open = true`も必要です。自動openはしません。
45
+ absolute pathと`~/` pathはcopy-onlyです。
46
+ - **OSC 9 / OSC 99通知:** desktop notificationは既定で無効です。`security.oscNotifications = true`で有効化できます。
47
+ 最初の使用時にはOS notification permissionを確認することがあります。`security.oscNotificationMinIntervalMs`は通知間隔を
48
+ 1,000--60,000 msに制限します(既定5,000 ms)。
49
+ - **Bracketed paste:** xterm.jsがterminal inputを処理します。shellまたはTUIがDECSET 2004を有効にすると、
50
+ paste textはbracketed sequenceとして届きます。
51
+ - **Bell:** BELはxterm.jsへ渡します。音またはvisual feedbackはOSとwebviewの設定に依存するため、
52
+ 無音の場合があります。
53
+
54
+ panelはclipboard書込み、URL open、bellを自動実行せず、対応経路を説明します。現在のterminal sessionへ
55
+ 影響を与えないためです。
56
+
57
+ ## 動作確認
58
+
59
+ 1. fpasotermを起動し、**Diagnostics > Capability Test** を開きます。
60
+ 2. `TERM`が`xterm-256color`、`COLORTERM`が`truecolor`であることを確認します。
61
+ 3. 表示されたtruecolor commandを実行し、3色が異なることを確認します。
62
+ 4. `printf 'https://example.com /tmp/fpasoterm-link-test\n'`を実行し、各項目をclickしてtrustedなtext fieldへpasteし、URL/pathがcopyされることを確認します。
63
+ 5. TUIの挙動に問題がある場合は、このpanelの内容と`fpasoterm --diagnostics`を合わせてIssueへ記載します。
@@ -0,0 +1,141 @@
1
+ # Command Completion
2
+
3
+ fpasoterm can print completion scripts for Bash, Zsh, Fish, and PowerShell.
4
+ The scripts complete CLI options and the values for `--completion`; Bash and
5
+ Zsh also query local profile and plugin lists for those options.
6
+
7
+ ```sh
8
+ fpasoterm --completion bash
9
+ fpasoterm --completion zsh
10
+ fpasoterm --completion fish
11
+ fpasoterm --completion powershell
12
+ ```
13
+
14
+ The command only writes a script to standard output. It does not start a
15
+ terminal window or modify configuration. To install or remove fpasoterm's
16
+ user-only persistent completion file, use:
17
+
18
+ ```sh
19
+ fpasoterm --completion-install bash
20
+ fpasoterm --completion-uninstall bash
21
+ ```
22
+
23
+ Replace `bash` with `zsh`, `fish`, or `powershell`. Install and uninstall only
24
+ touch fpasoterm-owned user files; they do not modify system completion files.
25
+
26
+ ## Updating Completion
27
+
28
+ An application update does not require reinstallation for the existing
29
+ completion script to keep working. Persistent completion is a copied user file,
30
+ so rerun the install command only when you want newly added CLI options or
31
+ value candidates to appear in Tab completion:
32
+
33
+ ```sh
34
+ fpasoterm --completion-install bash
35
+ fpasoterm --completion-install zsh
36
+ fpasoterm --completion-install fish
37
+ fpasoterm --completion-install powershell
38
+ ```
39
+
40
+ Restart the shell after updating. In PowerShell, `. $PROFILE` reloads the
41
+ profile without opening a new console. Use `--completion-uninstall <shell>`
42
+ only to remove completion; it is not needed for a normal update.
43
+
44
+ ## Bash
45
+
46
+ Current shell:
47
+
48
+ ```bash
49
+ source <(fpasoterm --completion bash)
50
+ ```
51
+
52
+ Persistent user installation: `fpasoterm --completion-install bash`.
53
+ It installs `~/.local/share/bash-completion/completions/fpasoterm` (or the
54
+ equivalent location under `XDG_DATA_HOME`). Remove it with
55
+ `fpasoterm --completion-uninstall bash`.
56
+
57
+ ## Zsh
58
+
59
+ Current shell:
60
+
61
+ ```zsh
62
+ source <(fpasoterm --completion zsh)
63
+ ```
64
+
65
+ Persistent user installation: `fpasoterm --completion-install zsh`.
66
+ It installs `~/.zfunc/_fpasoterm`; remove it with
67
+ `fpasoterm --completion-uninstall zsh`.
68
+
69
+ Add `fpath=(~/.zfunc $fpath)` before `autoload -Uz compinit && compinit` in
70
+ `.zshrc` when `~/.zfunc` is not already in `fpath`.
71
+
72
+ ## Fish
73
+
74
+ Current shell:
75
+
76
+ ```fish
77
+ fpasoterm --completion fish | source
78
+ ```
79
+
80
+ Persistent user installation: `fpasoterm --completion-install fish`.
81
+ It installs `~/.config/fish/completions/fpasoterm.fish` (or the equivalent
82
+ location under `XDG_CONFIG_HOME`); remove it with
83
+ `fpasoterm --completion-uninstall fish`.
84
+
85
+ Fish automatically loads that file in later shells.
86
+
87
+ ## PowerShell
88
+
89
+ Current PowerShell session:
90
+
91
+ ```powershell
92
+ fpasoterm --completion powershell | Out-String | Invoke-Expression
93
+ ```
94
+
95
+ For a persistent user installation, use:
96
+
97
+ ```powershell
98
+ fpasoterm --completion-install powershell
99
+ ```
100
+
101
+ This writes a fpasoterm-owned script below `User/completions` and adds one
102
+ marked fpasoterm block to every available user PowerShell profile (`pwsh` and
103
+ Windows PowerShell). It handles redirected Documents folders. Remove both the
104
+ script and only those marked blocks with `fpasoterm --completion-uninstall powershell`.
105
+ If a profile contains only that managed block, uninstall removes the otherwise
106
+ empty profile file too; unrelated profile settings are preserved.
107
+
108
+ The fpasoterm window does not reload a PowerShell profile. Close and reopen the
109
+ PowerShell console after installing, or enable it immediately in the current
110
+ console with:
111
+
112
+ ```powershell
113
+ . $PROFILE
114
+ ```
115
+
116
+ Profiles are skipped when PowerShell is launched with `-NoProfile`; in that
117
+ case source the installed completion script manually or start PowerShell
118
+ without `-NoProfile`.
119
+
120
+ If PowerShell reports that scripts cannot run, inspect the effective policy and
121
+ allow locally-created scripts for the current user only. This does not require
122
+ an administrator console:
123
+
124
+ ```powershell
125
+ Get-ExecutionPolicy -List
126
+ Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
127
+ . $PROFILE
128
+ ```
129
+
130
+ An organization policy can override `CurrentUser`; in that case contact the
131
+ device administrator rather than using a machine-wide bypass.
132
+
133
+ When using an installer artifact directly, use the console wrapper so output
134
+ returns to PowerShell:
135
+
136
+ ```powershell
137
+ .\fpasoterm.cmd --completion powershell | Out-String | Invoke-Expression
138
+ ```
139
+
140
+ `cmd.exe` does not provide a comparable programmable argument-completion API.
141
+ Use PowerShell for Windows interactive completion.
@@ -0,0 +1,113 @@
1
+ # コマンド補完
2
+
3
+ fpasoterm は Bash、Zsh、Fish、PowerShell 向けのcompletion scriptを出力できます。
4
+ CLI optionと`--completion`の値を補完し、Bash/Zshでは`--profile`とplugin指定時に
5
+ ローカルのprofile/plugin一覧も候補にします。
6
+
7
+ ```sh
8
+ fpasoterm --completion bash
9
+ fpasoterm --completion zsh
10
+ fpasoterm --completion fish
11
+ fpasoterm --completion powershell
12
+ ```
13
+
14
+ このcommandはscriptを標準出力へ書き出すだけです。terminal windowの起動や設定変更は行いません。fpasoterm専用の永続completion fileを導入・削除する場合は次を使います。
15
+
16
+ ```sh
17
+ fpasoterm --completion-install bash
18
+ fpasoterm --completion-uninstall bash
19
+ ```
20
+
21
+ `bash`は`zsh`、`fish`、`powershell`へ置き換えられます。install/uninstallはfpasotermが管理するuser fileだけを操作し、system completion fileは変更しません。
22
+
23
+ ## 更新時のcompletion
24
+
25
+ アプリを更新しても、既に導入したcompletion scriptが動かなくなるための再導入は不要です。永続completionはuser directoryへcopyしたfileであるため、新しいCLI optionや値をTab補完の候補へ追加したい場合だけ、使用するshellに対して再度installを実行してください。
26
+
27
+ ```sh
28
+ fpasoterm --completion-install bash
29
+ fpasoterm --completion-install zsh
30
+ fpasoterm --completion-install fish
31
+ fpasoterm --completion-install powershell
32
+ ```
33
+
34
+ 更新後はshellを再起動します。PowerShellでは新しいconsoleを開かずに`. $PROFILE`でprofileを再読込できます。`--completion-uninstall <shell>`はcompletionを削除するためだけのcommandであり、通常の更新時には必要ありません。
35
+
36
+ ## Bash
37
+
38
+ 現在のshellだけで有効にする場合:
39
+
40
+ ```bash
41
+ source <(fpasoterm --completion bash)
42
+ ```
43
+
44
+ 永続的に導入する場合は`fpasoterm --completion-install bash`を実行します。`~/.local/share/bash-completion/completions/fpasoterm`(または`XDG_DATA_HOME`配下)へ導入され、`fpasoterm --completion-uninstall bash`で削除できます。
45
+
46
+ ## Zsh
47
+
48
+ 現在のshellだけで有効にする場合:
49
+
50
+ ```zsh
51
+ source <(fpasoterm --completion zsh)
52
+ ```
53
+
54
+ 永続的に導入する場合は`fpasoterm --completion-install zsh`を実行します。`~/.zfunc/_fpasoterm`へ導入され、`fpasoterm --completion-uninstall zsh`で削除できます。
55
+
56
+ `~/.zfunc`が`fpath`に含まれていない場合は、`.zshrc`の
57
+ `autoload -Uz compinit && compinit`より前へ`fpath=(~/.zfunc $fpath)`を追加してください。
58
+
59
+ ## Fish
60
+
61
+ 現在のshellだけで有効にする場合:
62
+
63
+ ```fish
64
+ fpasoterm --completion fish | source
65
+ ```
66
+
67
+ 永続的に導入する場合は`fpasoterm --completion-install fish`を実行します。`~/.config/fish/completions/fpasoterm.fish`(または`XDG_CONFIG_HOME`配下)へ導入され、`fpasoterm --completion-uninstall fish`で削除できます。
68
+
69
+ Fishは次回以降のshellでこのfileを自動的に読み込みます。
70
+
71
+ ## PowerShell
72
+
73
+ 現在のPowerShell sessionだけで有効にする場合:
74
+
75
+ ```powershell
76
+ fpasoterm --completion powershell | Out-String | Invoke-Expression
77
+ ```
78
+
79
+ ユーザー環境へ永続的に導入する場合は次を実行します。
80
+
81
+ ```powershell
82
+ fpasoterm --completion-install powershell
83
+ ```
84
+
85
+ `User/completions`配下へscriptを配置し、利用可能なPowerShellのuser profile(`pwsh`とWindows PowerShell)すべてへfpasoterm専用の識別可能なblockを追加します。Documentsのredirectにも対応します。`fpasoterm --completion-uninstall powershell`はscriptとこのblockだけを削除します。
86
+ profileの内容がこの管理blockだけの場合は空fileを残さずprofile自体を削除します。他のprofile設定がある場合は保持します。
87
+
88
+ fpasoterm windowの再起動ではPowerShell profileは読み直されません。install後にPowerShell consoleを一度閉じて開き直すか、現在のconsoleで直ちに有効にするには次を実行します。
89
+
90
+ ```powershell
91
+ . $PROFILE
92
+ ```
93
+
94
+ `-NoProfile`を付けてPowerShellを起動している場合はprofileを読み込まないため、上記のようにcompletion scriptをsourceするか、`-NoProfile`なしでPowerShellを起動してください。
95
+
96
+ PowerShellが「このシステムではスクリプトを実行できません」と表示する場合は、effective policyを確認し、現在のuserだけでlocal scriptを許可します。administrator consoleは不要です。
97
+
98
+ ```powershell
99
+ Get-ExecutionPolicy -List
100
+ Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
101
+ . $PROFILE
102
+ ```
103
+
104
+ organization policyが`CurrentUser`より優先される場合は、machine-wide bypassを設定せずdevice administratorへ確認してください。
105
+
106
+ installer artifactを直接使用する場合は、PowerShellへstdoutを返すconsole wrapperを使います。
107
+
108
+ ```powershell
109
+ .\fpasoterm.cmd --completion powershell | Out-String | Invoke-Expression
110
+ ```
111
+
112
+ `cmd.exe`にはBashやPowerShellと同等のprogrammaticな引数completion APIがありません。
113
+ Windowsでinteractive completionを使用する場合はPowerShellを使ってください。