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.
- package/CHANGELOG.md +230 -0
- package/CONTRIBUTING.md +67 -0
- package/INSTALL.ja.md +204 -0
- package/INSTALL.md +229 -0
- package/LICENSE +21 -0
- package/README.ja.md +389 -0
- package/README.md +607 -0
- package/bin/fpasoterm +2882 -0
- package/completions/_fpasoterm +81 -0
- package/completions/fpasoterm.bash +55 -0
- package/completions/fpasoterm.fish +64 -0
- package/completions/fpasoterm.ps1 +47 -0
- package/docs/capability-diagnostics.en.md +77 -0
- package/docs/capability-diagnostics.ja.md +63 -0
- package/docs/completion.en.md +141 -0
- package/docs/completion.ja.md +113 -0
- package/docs/config.en.md +554 -0
- package/docs/config.ja.md +544 -0
- package/docs/debugging.en.md +72 -0
- package/docs/debugging.ja.md +66 -0
- package/docs/diagnostics.en.md +69 -0
- package/docs/diagnostics.ja.md +64 -0
- package/docs/font-diagnostics.en.md +116 -0
- package/docs/font-diagnostics.ja.md +105 -0
- package/docs/fpasoterm-plugin.d.ts +51 -0
- package/docs/known-issues.en.md +23 -0
- package/docs/known-issues.ja.md +23 -0
- package/docs/plugins.en.md +266 -0
- package/docs/plugins.ja.md +176 -0
- package/docs/pr-review.en.md +177 -0
- package/docs/pr-review.ja.md +170 -0
- package/docs/release-checklist.en.md +72 -0
- package/docs/release-checklist.ja.md +71 -0
- package/docs/security.en.md +36 -0
- package/docs/security.ja.md +31 -0
- package/docs/spec.en.md +106 -0
- package/docs/spec.ja.md +99 -0
- package/docs/sshfs.en.md +28 -0
- package/docs/sshfs.ja.md +28 -0
- package/docs/sync.en.md +280 -0
- package/docs/sync.ja.md +280 -0
- package/examples/apply-default-appearance.bat +8 -0
- package/examples/apply-default-appearance.ps1 +7 -0
- package/examples/apply-default-appearance.sh +7 -0
- package/examples/apply-runtime-appearance.bat +8 -0
- package/examples/apply-runtime-appearance.ps1 +7 -0
- package/examples/apply-runtime-appearance.sh +7 -0
- package/examples/config/default-appearance.toml +36 -0
- package/examples/config/minimal.toml +30 -0
- package/examples/config/profiles.toml +20 -0
- package/examples/config/runtime-appearance.toml +24 -0
- package/examples/config/sync-folder.toml +17 -0
- package/examples/config/tui-compatibility.toml +7 -0
- package/examples/config/with-plugins.toml +33 -0
- package/examples/plugins/hello.ts +17 -0
- package/examples/plugins/status-banner.ts +14 -0
- package/examples/plugins/theme.ts +32 -0
- package/examples/plugins/welcome-banner.ts +16 -0
- package/extra/linux/icons/hicolor/128x128/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/16x16/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/192x192/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/256x256/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/32x32/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/48x48/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/512x512/apps/fpasoterm.png +0 -0
- package/extra/linux/icons/hicolor/64x64/apps/fpasoterm.png +0 -0
- package/extra/linux/io.github.oyoguhito.fpasoterm.desktop +10 -0
- package/extra/logo/fpasoterm.png +0 -0
- package/extra/macos/fpasoterm.icns +0 -0
- package/extra/windows/fpasoterm.cmd +40 -0
- package/extra/windows/fpasoterm.ico +0 -0
- package/package.json +81 -0
- package/scripts/build-artifacts.js +183 -0
- package/scripts/generate-icon.js +251 -0
- package/scripts/init-jj-empty-main +41 -0
- package/scripts/install-linux-desktop.js +238 -0
- package/scripts/run +16 -0
- package/scripts/security/scan-secrets.js +89 -0
- package/scripts/tests/smoke.js +2476 -0
- package/scripts/uninstall-desktop.js +20 -0
- package/scripts/uninstall-linux-desktop.js +96 -0
- package/scripts/uninstall-windows-path.js +94 -0
- package/src/config.js +855 -0
- package/src/renderer/confirm.html +71 -0
- package/src/renderer/index.html +223 -0
- package/src/renderer/renderer.js +4166 -0
- package/src/renderer/styles.css +969 -0
- package/src/renderer/vendor/addon-fit/addon-fit.js +2 -0
- package/src/renderer/vendor/addon-image/LICENSE +19 -0
- package/src/renderer/vendor/addon-image/addon-image.js +3 -0
- package/src/renderer/vendor/addon-web-links/LICENSE +19 -0
- package/src/renderer/vendor/addon-web-links/addon-web-links.js +2 -0
- package/src/renderer/vendor/xterm/xterm.css +292 -0
- package/src/renderer/vendor/xterm/xterm.js +2 -0
- package/src-tauri/Cargo.lock +5253 -0
- package/src-tauri/Cargo.toml +29 -0
- package/src-tauri/build.rs +140 -0
- package/src-tauri/capabilities/default.json +13 -0
- package/src-tauri/default-config.toml +128 -0
- package/src-tauri/src/main.rs +9347 -0
- package/src-tauri/tauri.conf.json +60 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# デバッグガイド
|
|
2
|
+
|
|
3
|
+
IME composition、clipboard、terminal描画、window lifecycleなど、OS固有の問題を
|
|
4
|
+
event traceで確認する場合に使用します。
|
|
5
|
+
|
|
6
|
+
## 現在のsourceから起動する
|
|
7
|
+
|
|
8
|
+
既存のfpasoterm windowをすべて閉じてから、local debug binaryを強制rebuildします。
|
|
9
|
+
古いpackage済みbinaryやcached runtimeを検証しないためです。
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
mise exec node -- ./bin/fpasoterm --dev --foreground --debug-keys --console-diagnostics \
|
|
13
|
+
2>&1 | tee ~/temp/fpasoterm-debug.log
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
`--dev`は現在のsourceからlocal debug binaryをrebuildします。`--foreground`は
|
|
17
|
+
launcherをconsoleへ接続したままにします。`--debug-keys`はrendererのkey/composition
|
|
18
|
+
diagnosticを有効化し、`--console-diagnostics`はそれをstderrにも出力します。
|
|
19
|
+
|
|
20
|
+
rebuildを強制せず、console接続だけ必要な場合は以下を使います。
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
fpasoterm --foreground --debug-keys --console-diagnostics
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
永続debug logは通常
|
|
27
|
+
`~/.config/fpasoterm/User/logs/fpasoterm-debug.log`です。OSごとに別のUser directoryを
|
|
28
|
+
設定している場合はその配下を確認してください。
|
|
29
|
+
|
|
30
|
+
## IME Composition Trace
|
|
31
|
+
|
|
32
|
+
少なくとも二回の変換を行って再現します。例として、`日本語は`を変換・確定した後、
|
|
33
|
+
別の文字列を変換・確定するか、句読点を入力します。appを閉じた後、IMEとPTY入力だけを
|
|
34
|
+
抜き出します。
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
grep -E 'renderer ime (compositionstart|compositionupdate|compositionend|beforeinput|input|keydown|cleared)|renderer terminal input' \
|
|
38
|
+
~/temp/fpasoterm-debug.log
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
期待する動作では、各`renderer terminal input`のpayloadはその回に確定したtextだけです。
|
|
42
|
+
ChromeOSの調査では、`compositionstart`のhelper textarea `value=`と直後の
|
|
43
|
+
`compositionupdate`を比較します。新しいcompositionが以前のvalueを継承してはいけません。
|
|
44
|
+
|
|
45
|
+
成功した一回と失敗した一回を含む、最小限で連続したtraceを共有してください。event payloadの
|
|
46
|
+
編集や置換はしないでください。eventの順序がplatform webviewとxterm.jsの相互作用を調べる
|
|
47
|
+
根拠になります。
|
|
48
|
+
|
|
49
|
+
## 描画とWindowの診断
|
|
50
|
+
|
|
51
|
+
ChromeOS/BaguetteでWebKitGTKの描画に問題がある場合は以下を使用します。
|
|
52
|
+
|
|
53
|
+
```sh
|
|
54
|
+
fpasoterm --disable-dmabuf --foreground --console-diagnostics
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
glyph、terminfo、truecolor、OSC、bracketed paste、bellの問題は報告前にtitlebar menuの
|
|
58
|
+
**Diagnostics > Font / Glyph Test**と**Diagnostics > Capability Test**を実行してください。
|
|
59
|
+
[設定と診断](diagnostics.ja.md)、[Font / Glyph Diagnostics](font-diagnostics.ja.md)、
|
|
60
|
+
[Terminal Capability Diagnostics](capability-diagnostics.ja.md)も参照してください。
|
|
61
|
+
|
|
62
|
+
## 安全な報告
|
|
63
|
+
|
|
64
|
+
必要に応じて`fpasoterm --diagnostics`の結果を添付しますが、先に内容を確認してください。
|
|
65
|
+
local path、plugin名、shell出力、sync folder情報が含まれる場合があります。credential、token、
|
|
66
|
+
private command、secretを含むterminal outputは公開しないでください。
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Configuration And Diagnostics
|
|
2
|
+
|
|
3
|
+
These commands inspect local state only. They do not open a terminal window or
|
|
4
|
+
modify `config.toml`.
|
|
5
|
+
|
|
6
|
+
## Configuration
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
fpasoterm --config-path
|
|
10
|
+
fpasoterm --config-example > config.toml
|
|
11
|
+
fpasoterm --config-check
|
|
12
|
+
fpasoterm --config ~/.config/fpasoterm/User/work.toml --config-check
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`--config-path` prints the selected `config.toml` path. `--config-example`
|
|
16
|
+
prints the complete default TOML for the current platform. Redirect it only to
|
|
17
|
+
a new file; use `--reset-config` when a backup of an existing config is needed.
|
|
18
|
+
|
|
19
|
+
`--config-check` parses the selected TOML and reports warnings without changing
|
|
20
|
+
it. A TOML syntax error returns exit status `1`; warnings keep exit status `0`
|
|
21
|
+
because fpasoterm can still use defaults for omitted settings. Checks include
|
|
22
|
+
positive numeric settings, `plugins.enabled` entries that are invalid or
|
|
23
|
+
missing, and unsupported keys that `--prune-config` would remove.
|
|
24
|
+
|
|
25
|
+
## Doctor
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
fpasoterm --doctor
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`--doctor` is read-only. The Node launcher validates the selected config,
|
|
32
|
+
compares the installed version with npm `latest`, and runs `npm audit --omit=dev`.
|
|
33
|
+
It never installs an update or changes configuration; follow its explicit
|
|
34
|
+
`--self-update` suggestion only after reviewing the report. Standalone bundled
|
|
35
|
+
binaries run the config and update checks but report npm audit as unavailable,
|
|
36
|
+
because they do not include an npm package manifest.
|
|
37
|
+
|
|
38
|
+
## Diagnostics Report
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
fpasoterm --diagnostics
|
|
42
|
+
fpasoterm --diagnostics > fpasoterm-diagnostics.md
|
|
43
|
+
fpasoterm --copy-diagnostics
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`--diagnostics` prints Markdown intended for a GitHub Issue. It contains the
|
|
47
|
+
version and build commit, operating system and architecture, config path and
|
|
48
|
+
status, enabled plugins, configured or saved terminal size, font size, logging
|
|
49
|
+
path, sync state, and debug-log path. Review the output before posting it:
|
|
50
|
+
plugin names and local paths may be private.
|
|
51
|
+
|
|
52
|
+
`--copy-diagnostics` writes the same Markdown to the operating-system text
|
|
53
|
+
clipboard. It uses the native Windows clipboard, `pbcopy` on macOS, and
|
|
54
|
+
`wl-copy`, `xclip`, or `xsel` on Linux. It returns an error if no supported
|
|
55
|
+
clipboard provider is available.
|
|
56
|
+
|
|
57
|
+
## Logs
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
fpasoterm --open-log-dir
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The command creates the configured terminal-log directory if necessary, opens
|
|
64
|
+
it in the platform file manager, and prints its path. The default is
|
|
65
|
+
`~/.config/fpasoterm/User/logs`; `[logging].directory` overrides it. The debug
|
|
66
|
+
log is always `fpasoterm-debug.log` below the local `User/logs` directory.
|
|
67
|
+
|
|
68
|
+
The npm launcher and direct packaged binaries support these commands. On a
|
|
69
|
+
headless machine, use the printed path rather than `--open-log-dir`.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# 設定と診断
|
|
2
|
+
|
|
3
|
+
以下のcommandはlocal stateを参照するだけで、terminal windowを開かず、
|
|
4
|
+
`config.toml`も書き換えません。
|
|
5
|
+
|
|
6
|
+
## 設定
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
fpasoterm --config-path
|
|
10
|
+
fpasoterm --config-example > config.toml
|
|
11
|
+
fpasoterm --config-check
|
|
12
|
+
fpasoterm --config ~/.config/fpasoterm/User/work.toml --config-check
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`--config-path`は選択中の`config.toml`のpathを表示します。
|
|
16
|
+
`--config-example`は現在のOS向けの完全な既定TOMLを標準出力へ表示します。
|
|
17
|
+
新規fileを作る場合だけredirectを使ってください。既存configをbackup付きで戻す場合は
|
|
18
|
+
`--reset-config`を使用します。
|
|
19
|
+
|
|
20
|
+
`--config-check`は選択中のTOMLを解析し、書換なしでwarningを表示します。TOML構文errorは
|
|
21
|
+
exit status `1`になります。warningだけの場合は、省略した設定を既定値で補えるためexit status
|
|
22
|
+
`0`です。正の数であるべき設定、無効または存在しない`plugins.enabled`、
|
|
23
|
+
`--prune-config`で削除対象となる未対応keyを確認します。
|
|
24
|
+
|
|
25
|
+
## Doctor
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
fpasoterm --doctor
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
`--doctor`はread-onlyです。Node launcherでは選択中のconfig検証、npmの`latest`との比較、
|
|
32
|
+
`npm audit --omit=dev`を実行します。自動更新やconfig書換は行わず、結果に応じて明示的な
|
|
33
|
+
`--self-update`だけを案内します。standalone binaryではconfigと更新確認を実行しますが、
|
|
34
|
+
npm package manifestを持たないためnpm auditは`unavailable`として表示します。
|
|
35
|
+
|
|
36
|
+
## 診断report
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
fpasoterm --diagnostics
|
|
40
|
+
fpasoterm --diagnostics > fpasoterm-diagnostics.md
|
|
41
|
+
fpasoterm --copy-diagnostics
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`--diagnostics`はGitHub Issueへ貼り付けやすいMarkdownを表示します。version/build commit、
|
|
45
|
+
OS/architecture、config path/status、有効plugin、設定済みまたは保存済みterminal size、font size、
|
|
46
|
+
logging path、sync状態、debug log pathを含みます。plugin名やlocal pathがprivateな場合があるため、
|
|
47
|
+
Issueへ投稿する前に内容を確認してください。
|
|
48
|
+
|
|
49
|
+
`--copy-diagnostics`は同じMarkdownをOSのtext clipboardへ書き込みます。Windowsはnative clipboard、
|
|
50
|
+
macOSは`pbcopy`、Linuxは`wl-copy`、`xclip`、`xsel`を順に使います。利用可能なclipboard providerが
|
|
51
|
+
無い場合はerrorになります。
|
|
52
|
+
|
|
53
|
+
## Log
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
fpasoterm --open-log-dir
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
必要ならterminal log directoryを作成し、OSのfile managerで開いた後、pathも表示します。既定は
|
|
60
|
+
`~/.config/fpasoterm/User/logs`で、`[logging].directory`を設定した場合はそのdirectoryを使います。
|
|
61
|
+
debug logは常にlocalの`User/logs/fpasoterm-debug.log`です。
|
|
62
|
+
|
|
63
|
+
npm launcherと配布済みdirect binaryの両方で使用できます。headless環境では
|
|
64
|
+
`--open-log-dir`ではなく表示されたpathを使用してください。
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Font And Glyph Diagnostics
|
|
2
|
+
|
|
3
|
+
Open the window menu and select **Font / Glyph Test**. fpasoterm opens the
|
|
4
|
+
existing diagnostics panel without changing the terminal session or its saved
|
|
5
|
+
configuration.
|
|
6
|
+
|
|
7
|
+
The panel displays the active resolved values for:
|
|
8
|
+
|
|
9
|
+
- `terminal.fontFamily`
|
|
10
|
+
- `terminal.fontSize`
|
|
11
|
+
- `terminal.lineHeight`
|
|
12
|
+
|
|
13
|
+
It renders representative text using those same font values:
|
|
14
|
+
|
|
15
|
+
- CJK text: Japanese, Chinese, and Korean characters
|
|
16
|
+
- Half-width kana, including voiced marks
|
|
17
|
+
- Light and double box-drawing characters
|
|
18
|
+
- Common arrows, mathematical symbols, and status symbols
|
|
19
|
+
- Nerd Font private-use glyphs and their Unicode code points
|
|
20
|
+
|
|
21
|
+
This is a visual check, not a font installation tool. A missing glyph normally
|
|
22
|
+
appears as a fallback glyph, blank cell, or tofu box. That result indicates the
|
|
23
|
+
configured font stack does not supply that glyph. Install or configure an
|
|
24
|
+
appropriate font in `terminal.fontFamily`, then restart fpasoterm and open the
|
|
25
|
+
test again.
|
|
26
|
+
|
|
27
|
+
On Linux and ChromeOS, the default stack starts with installed Noto/DejaVu
|
|
28
|
+
monospace fonts so terminal cell width remains stable for box and block art.
|
|
29
|
+
Nerd Fonts are fallback fonts only. Existing configurations that use the old
|
|
30
|
+
shipped Nerd-Font-first default are migrated at runtime; explicitly selected
|
|
31
|
+
font families are not changed.
|
|
32
|
+
|
|
33
|
+
The default stack includes Noto CJK Japanese, Korean, and Chinese candidates,
|
|
34
|
+
but it cannot use a font that is absent from the operating system. If the
|
|
35
|
+
Korean sample is a tofu box, install an OS CJK font that supports Korean, then
|
|
36
|
+
restart fpasoterm. On Linux, `fc-match 'Noto Sans CJK KR'` is a useful
|
|
37
|
+
diagnostic: a result that falls back to an unrelated font means that candidate
|
|
38
|
+
is not installed.
|
|
39
|
+
|
|
40
|
+
For ChromeOS/Baguette and other Debian-based Linux environments, install the
|
|
41
|
+
Noto CJK font package and rebuild the font cache:
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
sudo apt install fonts-noto-cjk
|
|
45
|
+
fc-cache -f
|
|
46
|
+
fc-match 'Noto Sans CJK KR'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
An existing `config.toml` takes precedence over new defaults. If it has an
|
|
50
|
+
explicit `terminal.fontFamily`, remove that one setting to use the current
|
|
51
|
+
default fallback stack, or replace it with a stack that includes `Noto Sans CJK
|
|
52
|
+
KR`. Restart fpasoterm after changing either fonts or `config.toml`.
|
|
53
|
+
|
|
54
|
+
## Windows
|
|
55
|
+
|
|
56
|
+
Windows can render Nerd Font glyphs when a Nerd Font is installed in Windows.
|
|
57
|
+
Download a trusted Nerd Font `.ttf` or `.otf` file, extract it if needed, then
|
|
58
|
+
right-click the font file and choose **Install** or **Install for all users**.
|
|
59
|
+
In **Settings > Personalization > Fonts**, verify the *exact family name* of
|
|
60
|
+
the chosen Nerd Font. Restart fpasoterm and open **Font / Glyph Test** again.
|
|
61
|
+
The font file name is not necessarily its CSS family name. PowerShell can list
|
|
62
|
+
the installed family names that match common Nerd Font names:
|
|
63
|
+
|
|
64
|
+
```powershell
|
|
65
|
+
Add-Type -AssemblyName PresentationCore
|
|
66
|
+
[Windows.Media.Fonts]::SystemFontFamilies |
|
|
67
|
+
Where-Object Source -match 'Nerd|Caskaydia|JetBrains|Meslo|FiraCode|Hack' |
|
|
68
|
+
ForEach-Object Source
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If a custom `terminal.fontFamily` is already configured, prepend the installed
|
|
72
|
+
font family. For example:
|
|
73
|
+
|
|
74
|
+
```toml
|
|
75
|
+
[terminal]
|
|
76
|
+
fontFamily = "\"CaskaydiaCove Nerd Font Mono\", \"Symbols Nerd Font Mono\", \"JetBrainsMono Nerd Font\", Cascadia Mono, Consolas, monospace"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Replace `CaskaydiaCove Nerd Font Mono` with the exact name reported by Windows
|
|
80
|
+
when using a different Nerd Font. Put that name before non-Nerd fallback fonts,
|
|
81
|
+
fully exit fpasoterm, start it again, then check both Nerd Font lines in the
|
|
82
|
+
panel. This procedure also distinguishes a missing font from a rendering issue.
|
|
83
|
+
|
|
84
|
+
The `Nerd Font (Powerline):` and `Nerd Font (icons):` lines should then show
|
|
85
|
+
the intended icons instead of tofu boxes or unrelated private-use glyphs.
|
|
86
|
+
Windows language-associated fonts can also be optional on a minimal install;
|
|
87
|
+
add the Korean language/font feature in **Settings > Time & language > Language
|
|
88
|
+
& region** if the Korean CJK sample remains unavailable.
|
|
89
|
+
|
|
90
|
+
The preview uses the resolved terminal configuration, so it is useful after
|
|
91
|
+
changing `config.toml`, applying a profile, or diagnosing different behavior
|
|
92
|
+
across ChromeOS/Linux, macOS, and Windows. It does not modify `config.toml`,
|
|
93
|
+
`window-state.json`, the shell, or multiplexer sessions.
|
|
94
|
+
|
|
95
|
+
## Verification
|
|
96
|
+
|
|
97
|
+
Use this procedure after installation, after changing a font setting, or when
|
|
98
|
+
comparing platforms:
|
|
99
|
+
|
|
100
|
+
1. Start fpasoterm and open the window menu.
|
|
101
|
+
2. Select **Font / Glyph Test**.
|
|
102
|
+
3. Confirm that the `CJK:` line reads:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
CJK: 日本語 漢字 ひらがな カタカナ 中文 한국어
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
4. Confirm that the Japanese, Chinese, and Korean text has visible glyphs and
|
|
109
|
+
consistent cell spacing. A tofu box, blank cell, or visibly different
|
|
110
|
+
fallback font identifies a missing glyph in the configured font stack.
|
|
111
|
+
5. Check the `Half-width kana:`, `Box drawing:`, `Symbols:`, and `Nerd Font:`
|
|
112
|
+
lines as needed.
|
|
113
|
+
|
|
114
|
+
`npm test` also asserts that this exact CJK sample is present in the renderer
|
|
115
|
+
source. The automated test cannot determine whether a host operating system
|
|
116
|
+
has the required fonts, so the panel remains the visual acceptance test.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Font / Glyph Diagnostics
|
|
2
|
+
|
|
3
|
+
window menu から **Font / Glyph Test** を選択します。既存のdiagnostics panelを
|
|
4
|
+
表示するだけで、terminal sessionや保存済み設定は変更しません。
|
|
5
|
+
|
|
6
|
+
panelには解決済みの次の値を表示します。
|
|
7
|
+
|
|
8
|
+
- `terminal.fontFamily`
|
|
9
|
+
- `terminal.fontSize`
|
|
10
|
+
- `terminal.lineHeight`
|
|
11
|
+
|
|
12
|
+
これらと同じfont設定で、次の代表文字列を描画します。
|
|
13
|
+
|
|
14
|
+
- 日本語・中国語・韓国語を含むCJK文字
|
|
15
|
+
- 濁点・半濁点を含む半角カナ
|
|
16
|
+
- 通常線と二重線の罫線文字
|
|
17
|
+
- 矢印、数学記号、status用記号
|
|
18
|
+
- Nerd Fontのprivate-use glyphとUnicode code point
|
|
19
|
+
|
|
20
|
+
これは表示確認用であり、fontをinstallする機能ではありません。glyphが無い場合は
|
|
21
|
+
fallback glyph、空cell、tofu boxなどで表示されます。これは設定したfont stackが対象glyphを
|
|
22
|
+
提供していないことを示します。適切なfontをinstallまたは`terminal.fontFamily`へ設定し、
|
|
23
|
+
fpasotermを再起動してから再度確認してください。
|
|
24
|
+
|
|
25
|
+
Linux/ChromeOS の既定font stackは、罫線・block文字のcell幅を安定させるため、導入済みの
|
|
26
|
+
Noto/DejaVu等幅fontを先頭にします。Nerd Fontはprivate-use glyph用のfallbackです。過去に
|
|
27
|
+
配布したNerd Font優先の既定値は起動時に移行します。利用者が明示的に指定した`fontFamily`は
|
|
28
|
+
変更しません。
|
|
29
|
+
|
|
30
|
+
既定のfont stackにはNoto CJKの日本語・韓国語・中国語候補を含めますが、OSにinstallされて
|
|
31
|
+
いないfontは利用できません。韓国語sampleがtofu boxになる場合は、韓国語に対応するCJK fontを
|
|
32
|
+
OS側でinstallしてからfpasotermを再起動してください。Linuxでは、`fc-match 'Noto Sans CJK KR'`
|
|
33
|
+
の結果が無関係なfontへfallbackしている場合、その候補fontはinstallされていません。
|
|
34
|
+
|
|
35
|
+
ChromeOS/Baguetteを含むDebian系Linuxでは、Noto CJK font packageをinstallし、font cacheを
|
|
36
|
+
更新して確認できます。
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
sudo apt install fonts-noto-cjk
|
|
40
|
+
fc-cache -f
|
|
41
|
+
fc-match 'Noto Sans CJK KR'
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
既存の`config.toml`は新しい既定値より優先されます。`terminal.fontFamily`を明示している
|
|
45
|
+
場合は、その一行を削除して現在の既定fallback stackを使うか、`Noto Sans CJK KR`を含むstackへ
|
|
46
|
+
置き換えてください。fontまたは`config.toml`を変更した後はfpasotermを再起動します。
|
|
47
|
+
|
|
48
|
+
## Windows
|
|
49
|
+
|
|
50
|
+
Windowsでも、Nerd FontをWindowsへinstallすればNerd Font glyphを表示できます。信頼できる
|
|
51
|
+
配布元からNerd Fontの`.ttf`または`.otf`を取得して展開し、font fileを右クリックして
|
|
52
|
+
**Install** または **Install for all users** を選択します。**Settings > Personalization > Fonts**
|
|
53
|
+
で、選択したNerd Fontの*正確なfamily名*が一覧にあることを確認します。font file名とCSSで指定する
|
|
54
|
+
family名は一致しない場合があります。次のPowerShellでも、代表的なNerd Fontのinstall済みfamily名を
|
|
55
|
+
列挙できます。
|
|
56
|
+
|
|
57
|
+
```powershell
|
|
58
|
+
Add-Type -AssemblyName PresentationCore
|
|
59
|
+
[Windows.Media.Fonts]::SystemFontFamilies |
|
|
60
|
+
Where-Object Source -match 'Nerd|Caskaydia|JetBrains|Meslo|FiraCode|Hack' |
|
|
61
|
+
ForEach-Object Source
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
fpasotermを再起動してから **Font / Glyph Test** を開いてください。
|
|
65
|
+
|
|
66
|
+
既に`terminal.fontFamily`を指定している場合は、installしたfont familyを先頭へ追加します。
|
|
67
|
+
例:
|
|
68
|
+
|
|
69
|
+
```toml
|
|
70
|
+
[terminal]
|
|
71
|
+
fontFamily = "\"CaskaydiaCove Nerd Font Mono\", \"Symbols Nerd Font Mono\", \"JetBrainsMono Nerd Font\", Cascadia Mono, Consolas, monospace"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
別のNerd Fontを利用する場合は、`CaskaydiaCove Nerd Font Mono`をWindowsで確認した正確なfamily名に
|
|
75
|
+
置き換えます。Nerd Fontではないfallback fontより前に指定し、fpasotermを完全に終了して再起動後、
|
|
76
|
+
panelの2つのNerd Font行を確認してください。この手順によりfont未導入と描画上の問題を区別できます。
|
|
77
|
+
|
|
78
|
+
`Nerd Font (Powerline):` と `Nerd Font (icons):` の行がtofu boxや別のprivate-use glyphではなく、
|
|
79
|
+
意図したiconとして表示されれば成功です。最小構成のWindowsでは韓国語などのlanguage関連fontが
|
|
80
|
+
optionalの場合もあります。CJK韓国語sampleも表示されない場合は、**Settings > Time & language >
|
|
81
|
+
Language & region** から韓国語のlanguage/font featureを追加してください。
|
|
82
|
+
|
|
83
|
+
previewは解決済みterminal設定を使うため、`config.toml`変更後、profile適用後、ChromeOS/Linux、
|
|
84
|
+
macOS、Windows間での表示差異の確認に使えます。`config.toml`、`window-state.json`、shell、
|
|
85
|
+
multiplexer sessionは変更しません。
|
|
86
|
+
|
|
87
|
+
## 動作確認
|
|
88
|
+
|
|
89
|
+
install後、font設定変更後、またはOS間の表示差異を確認する場合は、次を実施します。
|
|
90
|
+
|
|
91
|
+
1. fpasotermを起動し、window menuを開きます。
|
|
92
|
+
2. **Font / Glyph Test** を選択します。
|
|
93
|
+
3. `CJK:` 行が次の文字列として表示されることを確認します。
|
|
94
|
+
|
|
95
|
+
```text
|
|
96
|
+
CJK: 日本語 漢字 ひらがな カタカナ 中文 한국어
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
4. 日本語・中国語・韓国語のglyphが表示され、cell幅が一貫していることを確認します。tofu box、
|
|
100
|
+
空cell、または明らかに異なるfallback fontは、設定したfont stackにglyphが無い目印です。
|
|
101
|
+
5. 必要に応じて `Half-width kana:`、`Box drawing:`、`Symbols:`、`Nerd Font:` 行も確認します。
|
|
102
|
+
|
|
103
|
+
`npm test`では、この固定のCJK sampleがrenderer sourceに含まれることも確認します。ただし、
|
|
104
|
+
自動testではOSに必要なfontがinstallされているかまでは判定できないため、panelでの目視確認を
|
|
105
|
+
表示に関する受け入れ確認として使用します。
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
type FpasotermPluginApi = {
|
|
2
|
+
version: string;
|
|
3
|
+
terminal: {
|
|
4
|
+
options: Record<string, unknown>;
|
|
5
|
+
write: (data: string) => void;
|
|
6
|
+
writeln: (data: string) => void;
|
|
7
|
+
focus: () => void;
|
|
8
|
+
};
|
|
9
|
+
fitAddon: {
|
|
10
|
+
fit: () => void;
|
|
11
|
+
};
|
|
12
|
+
config: {
|
|
13
|
+
window: {
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
minWidth: number;
|
|
17
|
+
minHeight: number;
|
|
18
|
+
backgroundColor: string;
|
|
19
|
+
themeSource: 'system' | 'light' | 'dark';
|
|
20
|
+
};
|
|
21
|
+
terminal: Record<string, unknown>;
|
|
22
|
+
plugins: {
|
|
23
|
+
enabled: string[];
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
log: (message: string) => void;
|
|
27
|
+
getOfficialPluginIndex: () => Promise<Array<{
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
version: string;
|
|
31
|
+
author: string;
|
|
32
|
+
description: string;
|
|
33
|
+
license: string;
|
|
34
|
+
minFpasotermVersion: string;
|
|
35
|
+
installPath: string;
|
|
36
|
+
}>>;
|
|
37
|
+
onReady: (callback: () => void) => void;
|
|
38
|
+
registerCommand: (
|
|
39
|
+
id: string,
|
|
40
|
+
title: string,
|
|
41
|
+
handler: () => void | Promise<void>,
|
|
42
|
+
) => void;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
declare global {
|
|
46
|
+
interface Window {
|
|
47
|
+
fpasotermPluginApi: FpasotermPluginApi;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Known Issues
|
|
2
|
+
|
|
3
|
+
## ChromeOS/Baguette Window Position
|
|
4
|
+
|
|
5
|
+
ChromeOS/Baguette currently ignores or remaps desktop runtime window `x` / `y` placement for fpasoterm. During testing, the runtime reported that `set_position()` applied the requested position, but the visible window was still placed by the compositor/window manager.
|
|
6
|
+
|
|
7
|
+
Repeated delayed position reapplication and `moveTop()` were tested in earlier runtime experiments and removed because resizing the window could freeze the OS. A Tauri one-shot position restore was also tested and did not affect the visible position on the target environment. fpasoterm therefore restores window size only. Window position support is kept as a future task.
|
|
8
|
+
|
|
9
|
+
## ChromeOS/Baguette Transparent Terminal Background
|
|
10
|
+
|
|
11
|
+
Before the Tauri migration, xterm.js canvas alpha backgrounds did not compose as transparent on the tested ChromeOS/Baguette environment. Alpha backgrounds were rendered as black or opaque colors instead of showing the desktop behind the terminal.
|
|
12
|
+
|
|
13
|
+
The Tauri backend uses WebKitGTK on Linux, enables transparent windows, and sets xterm.js `allowTransparency = true` with a 65% opaque terminal background by default. ChromeOS/Baguette still needs device testing. If rendering flickers or turns black/white, launch with `--disable-dmabuf`, which sets `WEBKIT_DISABLE_DMABUF_RENDERER=1`.
|
|
14
|
+
|
|
15
|
+
## Kitty/SIXEL Graphics
|
|
16
|
+
|
|
17
|
+
Rendering Kitty, SIXEL, or iTerm inline-image streams can leave the current Tauri/WebKitGTK WebView unresponsive, including to `Ctrl+C`. `[terminal.images]` is therefore disabled by default.
|
|
18
|
+
|
|
19
|
+
## macOS Gatekeeper
|
|
20
|
+
|
|
21
|
+
Release builds use ad-hoc code signing so CI can verify the generated `.app` bundle and `.dmg` structure. This prevents unsigned or structurally broken artifacts from being uploaded, but it is not the same as Apple Developer ID signing and notarization.
|
|
22
|
+
|
|
23
|
+
For normal double-click installation without Gatekeeper warnings, the release workflow still needs Developer ID certificate and notarization credentials. Until those credentials are configured, macOS may report that a downloaded app is damaged or cannot be verified even when the DMG passes CI validation.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# 現時点の既知課題
|
|
2
|
+
|
|
3
|
+
## ChromeOS/Baguette のウィンドウ位置
|
|
4
|
+
|
|
5
|
+
ChromeOS/Baguette では、fpasoterm から desktop runtime window の `x` / `y` 位置を指定しても、実表示には反映されないことを確認しています。調査中、runtime API は `set_position()` で指定位置が適用されたと報告しましたが、実際の画面では compositor/window manager 側で配置されました。
|
|
6
|
+
|
|
7
|
+
以前の runtime 検証では、遅延して何度も位置を再適用する方法や `moveTop()` を試しましたが、リサイズ時に OS がフリーズする可能性があるため削除しました。Tauri でも 1 回だけの位置復元を試しましたが、対象環境の実表示には反映されませんでした。このため fpasoterm は現時点では window size のみ復元します。window position support は今後の課題として残します。
|
|
8
|
+
|
|
9
|
+
## ChromeOS/Baguette の透明 terminal 背景
|
|
10
|
+
|
|
11
|
+
Tauri 移行前にテストした ChromeOS/Baguette 環境では、xterm.js canvas の alpha 背景は透明として合成されませんでした。alpha 付き背景は、デスクトップが透けるのではなく黒または不透明色として表示されました。
|
|
12
|
+
|
|
13
|
+
Tauri backend は Linux で WebKitGTK を使い、transparent window を有効にし、xterm.js に `allowTransparency = true` と 65% 不透明の terminal 背景を設定します。ChromeOS/Baguette 実機では再検証が必要です。描画がちらつく、黒または白になる場合は `--disable-dmabuf` で起動してください。この引数は `WEBKIT_DISABLE_DMABUF_RENDERER=1` を設定します。
|
|
14
|
+
|
|
15
|
+
## Kitty/SIXEL graphics
|
|
16
|
+
|
|
17
|
+
現在のTauri/WebKitGTKでKitty、SIXEL、iTerm inline imageのstreamを描画すると、WebViewが無反応になり`Ctrl+C`も届かなくなることがあります。このため`[terminal.images]`は既定で無効です。
|
|
18
|
+
|
|
19
|
+
## macOS Gatekeeper
|
|
20
|
+
|
|
21
|
+
Release build では ad-hoc code signing を使い、CI で生成された `.app` bundle と `.dmg` の構造を検証します。これにより、未署名または構造的に壊れた artifact が upload されることは防ぎますが、Apple Developer ID による署名と notarization とは別物です。
|
|
22
|
+
|
|
23
|
+
Gatekeeper の警告なしに通常の double-click install を行うには、Release workflow に Developer ID certificate と notarization credentials を設定する必要があります。これらを設定するまでは、CI validation を通過した DMG でも macOS が「壊れている」または「検証できない」と表示する場合があります。
|