diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f972fdd2..aee5c1000 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,36 @@ # Changelog +## Unreleased + +Documentation-only work. No application code, resource, or version file +changed, and no release was produced. + +### Documentation + +- Added `README.ja.md`, a Japanese counterpart to the English README that + mirrors the same download channels, distribution formats, core features, + portable-mode behavior, build and test commands, privacy statement, code + signing policy, and license and upstream notices. Commands, filenames, + executable names, JSON setting names, version strings, the pinned upstream + baseline, and release URLs are preserved verbatim, and the unsigned + installer, SmartScreen, checksum, current signing status, and Microsoft + non-affiliation disclosures are carried over in full. Links to + English-only documentation are labelled as such, and the translation states + that winTerm-specific new features still display some English text. +- Added a language selector to the top of both README files: `README.md` + links to `README.ja.md` and `README.ja.md` links back to `README.md` and + to the Japanese website at . +- Extended `scripts/winterm/verify-version.ps1` so documentation validation + covers the Japanese README: the two language links, the website link, the + source and stable version references, the checksum filename, the + unsigned-installer and current signing-status disclosures, the exact + SignPath attribution, the Microsoft non-affiliation disclaimer, and the + pinned upstream baseline. +- Added `README.ja.md` to the conservative documentation allowlist in + `scripts/winterm/ci/ChangeClassification.psm1`, so translation-only + changes classify as `docs-only` and never request a native build. + + ## 1.3.0-beta3 - 2026-08-05 Third beta of the Command Timeline release, fixing the beta2 field report diff --git a/README.ja.md b/README.ja.md new file mode 100644 index 000000000..4fb09cbb6 --- /dev/null +++ b/README.ja.md @@ -0,0 +1,183 @@ +[English](README.md) | 日本語 + +# winTerm + +[![Validation](https://github.com/HelloThisWorld/winTerm/actions/workflows/winterm-validation.yml/badge.svg)](https://github.com/HelloThisWorld/winTerm/actions/workflows/winterm-validation.yml) +[![Windows CI](https://img.shields.io/github/actions/workflow/status/HelloThisWorld/winTerm/winterm-validation.yml?branch=main&label=Windows%20CI)](https://github.com/HelloThisWorld/winTerm/actions/workflows/winterm-validation.yml) +[![Latest release](https://img.shields.io/github/v/release/HelloThisWorld/winTerm?display_name=tag&label=release)](https://github.com/HelloThisWorld/winTerm/releases/latest) + +日本語の製品ページ: + +## winTermをダウンロード + +[**最新の安定版リリースページを開いて、x64版のwinTermをダウンロードする**](https://github.com/HelloThisWorld/winTerm/releases/latest) + +最新の安定版リリースページには、インストーラー(Setup EXE)、ポータブルZIP、 +リリースノート、チェックサムがまとめて掲載されています。 + +Command Timelineを先行して試せる**ベータ版**のチャンネルもあります。 +[v1.3.0-beta3](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0-beta3) +はGitHubのプレリリースとして公開されており、資産の構成は安定版と同じです。 +ベータ版は動作確認を目的とした配布のため、通常の利用には上記の安定版を推奨します。 + +インストーラーは署名されていないため、Windowsに「不明な発行元」または +SmartScreenの警告が表示される場合があります。必ず上記の公式リリースから +ダウンロードし、同梱の `SHA256SUMS.txt` を確認してから実行してください。 + +winTermは、`helloThisWorld` が公開している独立したオープンソースの +Windows 11向けターミナルです。Microsoft Terminalのソースコードを基にしていますが、 +Microsoftの製品ではなく、Microsoftによる提供・承認・支援を受けたものでもありません。 +Microsoft、Windows、Windows Terminalのロゴも使用していません。 + +## 配布形式 + +主な配布形式は、アンパッケージ形式で自己完結したInno Setup製のEXEです。 +ポータブルZIPも提供しています。バージョンを `` とすると、 +推奨されるアプリケーションのダウンロードは次の2つだけです。 + +- `winTerm--setup-x64.exe` — 現在のユーザー、または全ユーザーへのインストール用; +- `winTerm--portable-x64.zip` — 展開してそのまま実行する用。 + +現在のソースバージョンは `1.3.0-beta3` で、 +最新の安定版リリースは `1.2.0` です。公開されている資産の一覧とチェックサムの全体は、 +[最新の公式リリース](https://github.com/HelloThisWorld/winTerm/releases/latest) +を参照してください。 + +リリースが署名されていない場合は、そのリリースノートに明記されています。 +Windowsに「不明な発行元」またはSmartScreenの警告が表示される場合があるため、 +同じリリースに含まれる `SHA256SUMS.txt` で検証してください。 +リリースEXEのインストールに、証明書のインポート、開発者モード、Visual Studio、 +Windows SDK、`Add-AppxPackage` は一切必要ありません。 + +[インストール手順(英語)](docs/user/installation.md)と +[1.2.0のリリースノート(英語)](docs/releases/1.2.0.md)もあわせて参照してください。 + +## 主な機能 + +- ペインごとの**Command Timeline**(`Ctrl+Tab`、またはターミナル左端の細い + ハンドル): そのペインで実行したコマンドをメモリ上に保持する一覧です。 + OSC 133のシェル統合の情報だけから構築され、実行せずに入力欄へ読み込む操作、 + 大文字と小文字を区別しない文字列での絞り込み、コマンドや出力のコピー、 + 出力位置への移動に対応し、推測を行わない ✓/✕/Running の状態表示を備えます; +- PowerShellの自動的なシェル統合: 素の `powershell.exe` または `pwsh.exe` + プロファイルは、起動時に同梱の `winTerm.Shell` モジュールを読み込みます + (プロファイルごとの設定 `"shellIntegration.autoInject"`、既定は有効)。 + そのためコマンドの区切りが最初から機能します。独自に指定された + コマンドラインが書き換えられることはなく、`cmd.exe` を推測することもありません; +- フォーカス中のペインを基準にした上・下・左・右への分割。プロファイルの選択を + 引き継ぎ、失敗時はトランザクションとしてロールバックします; +- 境界のドラッグによるペインのサイズ変更。連続的な更新、最小サイズの制約、 + 4分の1・3分の1・50%のスナップ位置に対応します; +- Altキーを併用した自由なサイズ変更、安定したスナップのヒステリシス、 + 正確なサイズ変更の取り消しとやり直し、そして1コマンドで実行できる + **Balance Panes**(ペインのバランス調整); +- ペインのアイコン、タイトル、実際の状態テキスト、統一されたオーバーフロー + メニューを備えたコンパクトなペインヘッダー。ペインの位置を入れ替えるための + 操作要素は持ちません; +- ウェブサイトと調和したダークなネイティブウィンドウ、タブストリップ、 + ペイン表面、細い青灰色の分割線、ミントカラーのフォーカスとサイズ変更の表示; +- ペインのサイズ変更とアプリケーションUIの設定、キーボードによるサイズ変更 + コマンド、ハイコントラストに対応した分割線の表示、スクリーンリーダー向けラベル; +- ペインごとのVisual Progress。標準のOSC進捗、シェルのライフサイクル状態、 + 一般的なCLIの進捗表示の範囲を限定したローカルな認識に対して、 + Rainbow Arc Weldのオーバーレイを表示します。描画は環境に応じて調整され、 + 状態はアクセシビリティに配慮して読み上げられます; +- `%LOCALAPPDATA%\winTerm` を使う独立したデータ領域と `winterm.exe` の + コマンド登録。Windows Terminalや `wt.exe` を置き換えることはありません; +- PowerShell、CMD、WSLプロファイルの動的な検出、テーマ、アプリ内蔵フォント、 + ワークスペース、スナップショット、診断、複数行の貼り付け保護。 + +Windowsのファイル名は大文字と小文字を区別しないため、製品名の表記に合わせた +実行ファイル `winTerm.exe` は `winterm.exe` としてもそのまま起動できます。 +インストーラーは `PATH` を全体的に書き換えるのではなく、App Pathsのエントリを使用します。 + +## ポータブルモード + +ポータブルZIPの中身をすべて書き込み可能なディレクトリへ展開し、 +`winTerm.exe` を実行してください。同梱の `portable.marker` があると、winTermは設定、 +テーマ、ワークスペース、スナップショット、ログ、更新データを、隣接する `data` +ディレクトリ以下に保存します。このマーカーを削除すると、データの保存先は +`%LOCALAPPDATA%\winTerm` に切り替わります。 + +ポータブルモードは、レジストリを変更せず、ショートカットを作成せず、 +アンインストーラーを登録せず、管理者権限も必要としません。 + +## ビルドとテスト + +PowerShell 7と、[ビルド手順(英語)](docs/build.md)に記載されたMicrosoft Terminalの +ツールチェーンを使用します。 + +```powershell +.\scripts\winterm\build.ps1 -Configuration Release -Platform x64 -IncludeTests +.\scripts\winterm\test.ps1 -Suite Relevant -Configuration Release -Platform x64 +.\scripts\winterm\build-unpackaged.ps1 -Configuration Release -Platform x64 +.\scripts\winterm\build-installer.ps1 -Version 1.3.0-beta3 -Platform x64 +.\scripts\winterm\build-portable.ps1 -Version 1.3.0-beta3 -Platform x64 +``` + +アンパッケージ形式の生成処理では、統合されたリソースインデックスを作るための +アップストリーム由来のビルド中間物として、署名なしのMSIXのみを使用します。 +MSIXは、ステージ、リリースの許可リスト、利用者向けの主要なインストール経路には +一切含まれません。 + +## プライバシーとセキュリティ + +winTermは、コマンド内容、ターミナル出力、クリップボード内容、ワークスペース内容、 +作業ディレクトリ、利用状況を収集しません。クラッシュレポートの送信は既定で無効の +オプトインです。Visual Progressの認識処理はローカルで完結し、範囲を限定した +メモリ上の処理として行われます。ターミナルの内容を送信したり保存したりすることは +ありません。詳細は [PRIVACY.md(英語)](PRIVACY.md)、 +[SECURITY.md(英語)](SECURITY.md)、[SUPPORT.md(英語)](SUPPORT.md)を参照してください。 + +## コード署名ポリシー + +Free code signing provided by SignPath.io, certificate by SignPath Foundation. + +正式なポリシーは [CODE_SIGNING_POLICY.md(英語)](CODE_SIGNING_POLICY.md)です。 + +### 役割 + +- 作成者、コミッター、レビュアー: + [HelloThisWorld](https://github.com/HelloThisWorld) +- 承認者: + [HelloThisWorld](https://github.com/HelloThisWorld) + +公式のリリース資産は、この公開リポジトリから、変更されないリリースタグを起点として、 +GitHub Actionsのマネージドランナー上でビルドされます。 + +リリースの署名要求には、毎回手動での承認が必要です。 + +**現在の状態:** 最新の公開リリースはAuthenticode署名されていません。SignPathの証明書は +まだ発行されていません。正式な状態は +[CODE_SIGNING_POLICY.md(英語)](CODE_SIGNING_POLICY.md)を参照してください。 + +winTermのプライバシーポリシーは [PRIVACY.md(英語)](PRIVACY.md)を参照してください。 + +## ライセンスとアップストリーム + +winTermは、Microsoft TerminalのMITライセンス、著作権表示、サードパーティ通知を +そのまま維持しています。固定しているアップストリームの基準は +`release-1.25@1cea42d433253d95c4487a3037db48197b5e72f4` です。 + +[LICENSE](LICENSE)、[NOTICE.md(英語)](NOTICE.md)、 +[THIRD_PARTY_NOTICES.md(英語)](THIRD_PARTY_NOTICES.md)、 +[アップストリームの同期(英語)](docs/upstream-sync.md)を参照してください。 + +## サポートと関連ドキュメント + +不具合の報告や機能の要望は +[GitHubのIssue](https://github.com/HelloThisWorld/winTerm/issues)へお寄せください。 +サポート方針は [SUPPORT.md(英語)](SUPPORT.md)、 +セキュリティ上の問題の報告手順は [SECURITY.md(英語)](SECURITY.md)に記載しています。 + +利用者向けのドキュメントは `docs/user/` にあります。 +[はじめに(英語)](docs/user/getting-started.md)、 +[Command Timeline(英語)](docs/user/command-timeline.md)、 +[キーボードショートカット(英語)](docs/user/keyboard-shortcuts.md)、 +[設定(英語)](docs/user/settings.md)、 +[アンインストール(英語)](docs/user/uninstall.md)などが含まれます。 + +リポジトリのドキュメントとアプリケーションのUIは、現時点ではすべてが日本語で +提供されているわけではありません。アプリケーションの表示言語はWindowsの言語設定に +従い、日本語も選択できますが、winTerm固有の新機能では一部の表示が英語のままです。 +このREADMEの日本語訳は、英語版 [README.md](README.md) を正本として同期しています。 diff --git a/README.md b/README.md index a640cff0c..2d52cc784 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +English | [日本語](README.ja.md) + # winTerm [![Validation](https://github.com/HelloThisWorld/winTerm/actions/workflows/winterm-validation.yml/badge.svg)](https://github.com/HelloThisWorld/winTerm/actions/workflows/winterm-validation.yml) diff --git a/scripts/winterm/ci/ChangeClassification.psm1 b/scripts/winterm/ci/ChangeClassification.psm1 index 22a10249c..51d88a6e1 100644 --- a/scripts/winterm/ci/ChangeClassification.psm1 +++ b/scripts/winterm/ci/ChangeClassification.psm1 @@ -28,6 +28,7 @@ function Test-WinTermDocumentationPath 'CONTRIBUTING.md', 'PRIVACY.md', 'README.md', + 'README.ja.md', 'SECURITY.md', 'SUPPORT.md' ) diff --git a/scripts/winterm/verify-version.ps1 b/scripts/winterm/verify-version.ps1 index 179c92e95..d11c624ab 100644 --- a/scripts/winterm/verify-version.ps1 +++ b/scripts/winterm/verify-version.ps1 @@ -145,6 +145,45 @@ try Assert-Condition ((Get-Text 'README.md').Contains("current source version is ``$($version.applicationVersion)``")) 'README source version matches release metadata' Assert-Condition ((Get-Text 'README.md').Contains('latest stable release is `1.2.0`')) 'README retains public Latest 1.2.0' + # The Japanese README is a maintained counterpart, not a marketing summary: + # both files must link to each other, the translation must point at the + # Japanese website, and it must mirror the same release facts and the same + # signing and non-affiliation disclosures as the English original. + # + # Every assertion below is written with ASCII literals only. Every other + # PowerShell file in this repository is pure ASCII, and a BOM-less script + # carrying non-ASCII string literals is decoded with the runner's active + # code page by Parser::ParseFile, which corrupts the literals and fails the + # syntax gate on some hosts. The Japanese prose is therefore verified + # structurally: by the ASCII tokens embedded in it, and by a direct check + # that the file really is UTF-8 encoded Japanese. + $readmeJa = Get-Text 'README.ja.md' + Assert-Condition ((Get-Text 'README.md').Contains('](README.ja.md)')) 'README links to the Japanese README' + Assert-Condition ($readmeJa.Contains('[English](README.md)')) 'Japanese README links back to the English README' + Assert-Condition ($readmeJa.Contains('https://winterm.dev/ja/')) 'Japanese README links to the Japanese website' + Assert-Condition ($readmeJa.Contains("``$($version.applicationVersion)``")) 'Japanese README source version matches release metadata' + Assert-Condition ($readmeJa.Contains('`1.2.0`')) 'Japanese README retains public Latest 1.2.0' + Assert-Condition ($readmeJa.Contains('winTerm--setup-x64.exe')) 'Japanese README retains the installer asset pattern' + Assert-Condition ($readmeJa.Contains('winTerm--portable-x64.zip')) 'Japanese README retains the portable asset pattern' + Assert-Condition ($readmeJa.Contains('SHA256SUMS.txt')) 'Japanese README retains the checksum filename' + Assert-Condition ($readmeJa.Contains('SmartScreen')) 'Japanese README retains the unsigned-installer disclosure' + Assert-Condition ($readmeJa.Contains('Authenticode')) 'Japanese README retains the current signing status' + Assert-Condition ($readmeJa.Contains('Free code signing provided by SignPath.io, certificate by SignPath Foundation.')) 'Japanese README retains the exact SignPath attribution' + Assert-Condition ($readmeJa.Contains('Microsoft')) 'Japanese README retains the Microsoft non-affiliation disclaimer' + Assert-Condition ($readmeJa.Contains('portable.marker')) 'Japanese README retains the portable-mode marker filename' + Assert-Condition ($readmeJa.Contains('release-1.25@1cea42d433253d95c4487a3037db48197b5e72f4')) 'Japanese README retains the pinned upstream baseline' + + # The translation must actually be Japanese and must be stored as UTF-8, so + # an English copy or a mis-encoded file cannot pass the checks above. + $readmeJaBytes = [System.IO.File]::ReadAllBytes((Join-Path $script:repositoryRoot 'README.ja.md')) + Assert-Condition (-not ($readmeJaBytes.Length -ge 3 -and $readmeJaBytes[0] -eq 0xEF -and $readmeJaBytes[1] -eq 0xBB -and $readmeJaBytes[2] -eq 0xBF)) 'Japanese README has no UTF-8 BOM' + $strictUtf8 = [System.Text.UTF8Encoding]::new($false, $true) + $readmeJaText = $null + try { $readmeJaText = $strictUtf8.GetString($readmeJaBytes) } catch { $readmeJaText = $null } + Assert-Condition ($null -ne $readmeJaText) 'Japanese README is valid UTF-8' + $cjkCount = @($readmeJaText.ToCharArray() | Where-Object { ($_ -ge [char]0x3040 -and $_ -le [char]0x30FF) -or ($_ -ge [char]0x4E00 -and $_ -le [char]0x9FFF) }).Count + Assert-Condition ($cjkCount -gt 500) "Japanese README contains Japanese prose ($cjkCount kana and kanji characters)" + if ($RequireTag) { $tag = (& git describe --tags --exact-match 2>$null).Trim()