Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge: upstreamからマージ #45

Merged
merged 142 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
142 commits
Select commit Hold shift + click to select a range
0b7a5e7
project-s: 開発用にタブ分割する (#955)
romot-co Sep 27, 2022
46eb62d
Merge branch 'main' into merge-main
Hiroshiba Oct 2, 2022
823f260
project-sブランチに現在のmianブランチをマージする (#966)
Hiroshiba Oct 2, 2022
57a62f1
project-s: StoreStateを追加 (#970)
sigprogramming Oct 10, 2022
64dc057
project-s: UIスケルトンの用意 (#977)
romot-co Oct 18, 2022
dcb4cd1
project-s: 初期化とシンガー・楽譜を設定するaction/mutationを追加 (#988)
sigprogramming Oct 26, 2022
f40a542
project-s: シンガーを表示・設定するUIを追加 (#999)
sigprogramming Nov 3, 2022
7a45861
project-s: MIDIファイルとMusicXMLファイルをインポートする機能を追加 (#1018)
sigprogramming Nov 19, 2022
99a02ed
project-s: テンポ・拍子の表示と設定を行う機能を追加 (#1025)
sigprogramming Nov 25, 2022
495b9d4
[project-s] ピアノロールにノートを表示/追加/削除できるようにする (#1102)
romot-co Feb 5, 2023
7bce3e3
[project-s]再生周りの機能を追加 (#1184)
sigprogramming Mar 1, 2023
32dbae7
[project-s] 音声を書き出す機能を追加 (#1249)
sigprogramming Mar 15, 2023
bef16f5
[project-s] 歌ボ形式で歌声合成する機能を追加 (#1255)
sigprogramming Apr 11, 2023
554afef
[project-s] ノート(複数)をドラッグおよびキーボードで移動+長さ変更+削除 (#1256)
romot-co Jul 10, 2023
ca98530
[project-s] 各Schedulerを直接使用してスケジューリングを行う形に変更する (#1532)
sigprogramming Sep 4, 2023
18a86c7
[project-s] シーケンスの追加・削除をチャンネル内で行わないようにする (#1536)
sigprogramming Sep 11, 2023
e3ac2c7
[project-s] AudioRenderer.tsのリファクタリングとコメントの追加 (#1571)
sigprogramming Sep 20, 2023
7120176
Merge branch 'main' into merge-main
Hiroshiba Sep 24, 2023
f15ae5b
[project-s] mainブランチマージのコンフリクト解消、及び追従 (#1583)
Hiroshiba Sep 26, 2023
e7692c4
[project-s] mainブランチを一旦マージする (#1582)
Hiroshiba Sep 26, 2023
17557ce
[project-s] 音声コンテキストとトランスポートを直接扱う形にして、音声をBlobで保持するようにする (#1590)
sigprogramming Sep 27, 2023
7a94cb4
[project-s] 出力する音声が0dBを超えないようにする (#1593)
sigprogramming Sep 30, 2023
aa06c65
[project-s] エンジンプロトタイプでレンダリングできるようにする (#1595)
sigprogramming Oct 7, 2023
e1388cf
[project-s] シーケンサーの計算の整理と修正 (#1602)
sigprogramming Oct 11, 2023
1aa007d
[project-s] 拍の線を描画する処理を追加 (#1607)
sigprogramming Oct 14, 2023
d7a28d3
[project-s] スナップを設定する機能を追加 (#1609)
sigprogramming Oct 15, 2023
645ab4b
[project-s] インポート周りの修正とリファクタリング (#1614)
sigprogramming Oct 19, 2023
be89dae
[project-s] スナップ周りの修正とリファクタリング (#1615)
sigprogramming Oct 22, 2023
07cec39
[project-s] 拍子周りの修正とリファクタリング (#1621)
sigprogramming Oct 25, 2023
0def6f0
[project-s] state.scoreからundefinedを消す (#1622)
Hiroshiba Oct 26, 2023
1c727ea
[project-s] データ構造の整理とリファクタリング (#1625)
sigprogramming Oct 28, 2023
e3416b0
[project-s] シーケンサー周りの調整 (#1632)
sigprogramming Nov 3, 2023
37eb121
[project-s] ルーラーを実装 (#1639)
sigprogramming Nov 5, 2023
cb468f0
[project-s] ズーム周りの調整 (#1640)
sigprogramming Nov 6, 2023
e4a308b
[project-s] 再生ヘッドの描画処理とオートスクロールを実装 (#1649)
sigprogramming Nov 20, 2023
3a7524b
[project-s] 再生ヘッドの位置を設定する機能を追加 (#1658)
sigprogramming Nov 23, 2023
1a4563f
[project-s] 音声書き出し時にダイアログを表示する (#1661)
sigprogramming Nov 28, 2023
46556c9
[project-s] Phraseをストアで持つようにする (#1663)
sigprogramming Dec 3, 2023
1483940
[project-s] レンダリング中の範囲を表示する機能を追加 (#1668)
sigprogramming Dec 11, 2023
1331abb
[project-s] フィルターの追加とオプション周りの修正 (#1670)
sigprogramming Dec 13, 2023
e3b7847
[project-s] 鍵盤クリック時とノート編集時に音を鳴らす機能を追加 (#1671)
sigprogramming Dec 16, 2023
b7e4e54
[project-s] 重なっているノートを検出して色を変えて表示する機能を追加 (#1676)
sigprogramming Dec 23, 2023
b89edd9
Merge remote-tracking branch 'upstream/main' into merge-main
Hiroshiba Dec 23, 2023
3dedb71
update package lock
Hiroshiba Dec 23, 2023
f13a4ab
[project-s] mainブランチを追従 (#1677)
Hiroshiba Dec 23, 2023
259e8a0
[project-s] ドラッグ周りの整理とプレビュー処理の追加 (#1680)
sigprogramming Dec 28, 2023
4c88e95
[project-s] 歌詞入力周りの実装 (#1689)
sigprogramming Jan 5, 2024
b199f3f
[project-s] シンセ周りのリファクタリング (#1691)
sigprogramming Jan 6, 2024
8c06ed4
[project-s] コードを整理 (#1693)
sigprogramming Jan 7, 2024
2ce1c3f
[project-s] 複数選択を実装 (#1695)
sigprogramming Jan 8, 2024
5151536
[project-s] ノートが追加される位置を表示する機能を追加 (#1704)
sigprogramming Jan 10, 2024
ebaa6bf
[project-s] ノートを右クリックでコンテキストメニューが表示されるようにする (#1710)
sigprogramming Jan 14, 2024
1dc1918
Merge remote-tracking branch 'upstream/main' into mainのマージ
Hiroshiba Jan 17, 2024
1802cb8
[project-s] mainブランチのマージ (#1721)
Hiroshiba Jan 17, 2024
5616743
[project-s] project-s用のopanpiに更新 (#1722)
Hiroshiba Jan 17, 2024
9b13083
openapiの再更新 (#1727)
Hiroshiba Jan 20, 2024
04ef2d1
[docs] 支援に関してのQandA追加 (#1705)
Hiroshiba Jan 20, 2024
27529f3
0.15に向けたUXやUIの調整 (#1719)
Hiroshiba Jan 20, 2024
ab7bd48
[refactor] アップデート通知ダイアログ周りをEditorHome.vueから分離 (#1717)
Hiroshiba Jan 20, 2024
8d82be8
[release-0.15] to 0.15.0 (#1731)
Hiroshiba Jan 20, 2024
8b52f6f
[project-s] ハミング対応のエンジンでレンダリングできるようにする (#1728)
sigprogramming Jan 20, 2024
09f6335
Change: CIでのエンジンポートを変更 (#1726)
sevenc-nanashi Jan 20, 2024
296ce7a
[release-0.15] Add: 複数選択の使い方を追加 (#1732)
sevenc-nanashi Jan 21, 2024
6d074e4
[release-0.15] to 0.15.1 (#1734)
Hiroshiba Jan 21, 2024
2f57769
[release-0.15] to 0.15.2 (#1737)
Hiroshiba Jan 21, 2024
0f16033
[project-s] リファクタリング (#1735)
sigprogramming Jan 21, 2024
c403e1a
[release-0.15] macOSのatributeからバージョン名が抜けているのを解決 (#1741)
Hiroshiba Jan 22, 2024
39e9dc7
build: エンジンの配置ディレクトリを変更 (#1611)
sabonerune Oct 18, 2023
79da035
merge 0.15.2 (#1742)
Hiroshiba Jan 22, 2024
541db78
[project-s] レンダリングできなかったときの表示を修正 (#1740)
sigprogramming Jan 22, 2024
63f9a99
Merge branch 'main' into merge-main
Hiroshiba Jan 22, 2024
ec14e0a
[project-s] mainブランチをマージ (#1743)
Hiroshiba Jan 22, 2024
0b37dca
[project-s] #1743 のマージミスを修正 (#1744)
Hiroshiba Jan 22, 2024
b5801cc
[project-s] エンジン起動をApp.vueに移管 (#1746)
Hiroshiba Jan 23, 2024
1ca1585
=== undefined/nullを消す (#1747)
sevenc-nanashi Jan 24, 2024
deb0666
右辺がundefinedやnullである厳密等価演算子を等価演算子に自動で修正できる設定を追加 (#1752)
cm-ayf Jan 24, 2024
cd41c30
[project-s] メニューを統一して切り替えUIをメニューに追加 (#1748)
Hiroshiba Jan 24, 2024
2b2013b
fix from markdownlint (#1757)
cm-ayf Jan 25, 2024
bf9f368
[project-s] キャラクターメニューおよび全身ポートレート表示 (#1750)
romot-co Jan 25, 2024
b46d856
[project-s] キャラクターメニューの調整 (#1764)
sigprogramming Jan 26, 2024
a804e47
[project-s] シーケンサーのスクロール・編集周りを調整 (#1767)
sigprogramming Jan 28, 2024
55a497c
[project-s] Openapiを0.16.0-dev用に更新 (#1769)
Hiroshiba Jan 28, 2024
9f01699
[project-s] Escキーでノートの選択を全て解除できるようにする (#1775)
sigprogramming Jan 28, 2024
7d1772b
[refactor] Talk系移動 (#1762)
Hiroshiba Jan 28, 2024
3129605
project-sブランチをmainブランチにマージ (#1776)
Hiroshiba Jan 28, 2024
a164427
全OSでGithub Actionsでのスナップショットを更新できるようにする (#1761)
Hiroshiba Jan 28, 2024
c50e73b
トーク画面でハミング・歌のキャラクター・スタイルが表示されないように修正 (#1779)
y-chan Jan 28, 2024
df3f0c0
0.16をとりあえずビルドしてみる (#1784)
Hiroshiba Jan 29, 2024
5ad43b2
[refactor] ダイアログ系のコンポーネントを移動 (#1780)
Hiroshiba Jan 29, 2024
3ce8b3e
ソングのメニューから動かないボタンを削除 (#1788)
Hiroshiba Jan 29, 2024
a7016a7
デフォルトスタイル選択ダイアログでトークスタイルのみを表示する (#1786)
y-chan Jan 29, 2024
8b65f82
ソングエディタでキャラクター選択の挙動がおかしくなる問題を修正 (#1785)
y-chan Jan 29, 2024
8497fea
singタイプのスタイルの表示でエラーが出るのを修正 (#1794)
sigprogramming Jan 29, 2024
23fe259
[ソング] script setup構文に移行 (#1789)
sevenc-nanashi Jan 29, 2024
27867b3
Fix #1797 (ソングで四国めたん トーク・ノーマルが選択されている状態になっている) (#1798)
madosuki Jan 30, 2024
b052bbc
#1751 歌詞入力時に選択状態にする (#1791)
romot-co Jan 30, 2024
5152ee6
UI_LOCK中はソング・トーク切り替えができないように (#1806)
Hiroshiba Jan 31, 2024
5115c12
ソングも立ち絵をスタイルごとに変える (#1803)
Hiroshiba Jan 31, 2024
123e555
Fix: エンジンが起動していないと画面が真っ白になるのを修正 (#1799)
sevenc-nanashi Jan 31, 2024
e4a9623
#1755 ダークモード対応(初期調整) (#1796)
romot-co Jan 31, 2024
ed2e174
エンジン0.16.0のAPIに対応 (#1807)
Hiroshiba Jan 31, 2024
57f19b9
to 0.16.0 (#1808)
Hiroshiba Jan 31, 2024
ea65183
Fix: 歌声対応してないエンジンからsingerを取ろうとするのを修正 (#1812)
sevenc-nanashi Jan 31, 2024
0431ef9
to 0.16.1 (#1813)
Hiroshiba Jan 31, 2024
24a1b1b
fix: 設定が壊れる問題を修正 (#1814)
sabonerune Feb 1, 2024
16cd5ac
楽譜情報とsingerの持ち方を変更する (#1820)
sigprogramming Feb 3, 2024
93fe48e
getterでトラックを取得するようにする (#1821)
sigprogramming Feb 4, 2024
47f90b5
[rafactor] App.vueとSingerHome.vueを移動 (#1823)
Hiroshiba Feb 4, 2024
54e8b72
[ソング] Fix: Firefoxだと音が止まらないのを修正 (#1792)
sevenc-nanashi Feb 6, 2024
e157e5b
[docs] Q&AでMacのエラーログの場所が違っていたので修正 (#1827)
Hiroshiba Feb 6, 2024
55d3df8
[refactor] Menu系のコンポーネントをまとめ、型を別ファイルに分ける (#1824)
Hiroshiba Feb 7, 2024
fb78789
ツールバーの表示を整理する (#1830)
romot-co Feb 10, 2024
2167df2
`store/audio.ts`から音声を生成する部分を分離 (#1773)
cm-ayf Feb 11, 2024
e936796
audio.tsのリファクタリング (#1832)
weweweok Feb 13, 2024
b95c2a0
キーを変更する機能を追加 (#1842)
sigprogramming Feb 13, 2024
e159b3c
サードパーティがエンジンへのアクセス情報を得るための設定書き出し機能 (#1765)
nmori Feb 13, 2024
33167d8
[ソング] Improve: エンジン起動前の画面を良い感じにする (#1790)
sevenc-nanashi Feb 13, 2024
cefb99d
[refactor] TalkのHeaderBarをTalk下に移動 (#1825)
Hiroshiba Feb 17, 2024
948c6dd
ダークモードのときにノートの縁が白っぽくならないようにする (#1809)
sigprogramming Feb 17, 2024
821d298
ソングエディタの編集状態を保存できるようにする (#1829)
y-chan Feb 17, 2024
0896bd3
Merge: main -> buffer/2024-02-18
sevenc-nanashi Feb 18, 2024
5ae6afd
[ソング] Macにおいて、スコアシーケンサー内でCtrlキーではなくCommandキーを使うようにする (#1853)
y-chan Feb 18, 2024
e8f7407
Change: バージョンを固定
sevenc-nanashi Feb 18, 2024
6e466f7
Fix: URLを修正
sevenc-nanashi Feb 18, 2024
0b716a5
[refactor] Vuex.spec.tsを消す (#1855)
Hiroshiba Feb 19, 2024
8bb3f42
連続再生中にバックグラウンドで音声を合成する (#1774)
cm-ayf Feb 20, 2024
008f020
[ソング] Undo/Redoの実装 (#1836)
y-chan Feb 20, 2024
3e18a72
fix 歌wave出力時のデフォルトファイル名を変更 (#1859)
P0ngCh4ng Feb 20, 2024
ad6f682
fix: dev版のアップロードが失敗する問題を修正 (#1848)
sabonerune Feb 20, 2024
3869583
Change: ショートカットキー周りをHotkeyManagerにまとめる (#1822)
sevenc-nanashi Feb 21, 2024
1614db5
[ソング] undoとredoのショートカットキー登録 (#1861)
Hiroshiba Feb 21, 2024
3e90be4
[refactor] HotkeyCombinationブランド型を導入 (#1864)
Hiroshiba Feb 22, 2024
6a51865
ソング関連のe2eテストを追加 (#1849)
weweweok Feb 22, 2024
ac1d1c0
[refactor] tests/icon.svgを消す (#1867)
Hiroshiba Feb 25, 2024
ff362c8
ピッチを表示する機能を追加 (#1828)
sigprogramming Feb 25, 2024
aa1fdb6
Refactor: backendフォルダにelectron、browser、backgroundをまとめる (#1871)
sevenc-nanashi Feb 25, 2024
d0fcc10
template内のコンポーネントの名称をPascalCaseに変更 (#1874)
cm-ayf Feb 26, 2024
f218028
feat: 不適切なフォルダにファイルを保存できないようにする (#1844)
sabonerune Feb 26, 2024
8b959ab
Add: 入力欄の全角を半角に変換する機能の追加 (#1876)
tsym77yoshi Feb 26, 2024
3c63906
Dialog周りと初期化周りを移動 (#1868)
sevenc-nanashi Feb 28, 2024
f9d5a4d
Merge: main -> buffer/2024-02-18
sevenc-nanashi Feb 28, 2024
5ff3b79
Change: backendディレクトリに移動
sevenc-nanashi Feb 28, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 16 additions & 33 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ module.exports = {
"@vue/prettier",
"@vue/eslint-config-typescript/recommended",
"@vue/eslint-config-prettier",
"plugin:@voicevox/all",
],
plugins: ["import"],
parser: "vue-eslint-parser",
Expand All @@ -25,6 +26,7 @@ module.exports = {
? ["error", "unix"]
: "off",
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-constant-condition": ["error", { checkLoops: false }], // while(true) などを許可
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
"prettier/prettier": [
"error",
Expand All @@ -49,47 +51,32 @@ module.exports = {
ignoreRestSiblings: true,
},
],
"vue/component-tags-order": [
"vue/component-name-in-template-casing": [
"error",
"PascalCase",
{
order: ["template", "script", "style"],
registeredComponentsOnly: false,
ignores: [],
},
],
"import/order": "error",
"no-restricted-syntax": [
"warn",
{
selector:
"BinaryExpression[operator='==='][right.type='Literal'][right.value=null]",
message:
"'=== null'ではなく'== null'を使用してください。詳細: https://github.com/VOICEVOX/voicevox/issues/1513",
},
{
selector:
"BinaryExpression[operator='!=='][right.type='Literal'][right.value=null]",
message:
"'!== null'ではなく'!= null'を使用してください。詳細: https://github.com/VOICEVOX/voicevox/issues/1513",
},
"vue/component-tags-order": [
"error",
{
selector:
"BinaryExpression[operator='==='][right.type='Identifier'][right.name=undefined]",
message:
"'=== undefined'ではなく'== undefined'を使用してください。詳細: https://github.com/VOICEVOX/voicevox/issues/1513",
order: ["template", "script", "style"],
},
],
"vue/multi-word-component-names": [
"error",
{
selector:
"BinaryExpression[operator='!=='][right.type='Identifier'][right.name=undefined]",
message:
"'!== undefined'ではなく'!= undefined'を使用してください。詳細: https://github.com/VOICEVOX/voicevox/issues/1513",
ignores: ["Container", "Presentation"],
},
],
"import/order": "error",
},
overrides: [
{
files: [
"./src/background.ts",
"./src/background/*.ts",
"./src/electron/*.ts",
"./src/backend/electron/**/*.ts",
"./tests/**/*.ts",
"./build/*.js",
"./build/*.mts",
Expand All @@ -101,11 +88,7 @@ module.exports = {
// Electronのメインプロセス以外でelectronのimportを禁止する
{
files: ["./src/**/*.ts", "./src/**/*.vue"],
excludedFiles: [
"./src/background.ts",
"./src/background/*.ts",
"./src/electron/*.ts",
],
excludedFiles: ["./src/backend/electron/**/*.ts"],
rules: {
"no-restricted-imports": [
"error",
Expand Down
38 changes: 10 additions & 28 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ on:

env:
VOICEVOX_ENGINE_REPO_URL: "https://github.com/VOICEVOX/voicevox_engine"
VOICEVOX_ENGINE_VERSION: 0.14.7
VOICEVOX_RESOURCE_VERSION: 0.15.0-preview.3
VOICEVOX_ENGINE_VERSION: 0.16.0
VOICEVOX_RESOURCE_VERSION: 0.16.0
VOICEVOX_EDITOR_VERSION:
|- # releaseタグ名か、workflow_dispatchでのバージョン名か、999.999.999-developが入る
${{ github.event.release.tag_name || github.event.inputs.version || '999.999.999-develop' }}
Expand Down Expand Up @@ -89,7 +89,7 @@ jobs:
compressed_artifact_name: voicevox-windows-nvidia
app_asar_dir: prepackage/resources
installer_artifact_name: windows-nvidia-nsis-web
nsis_web_artifact_name: "VOICEVOX-CUDA Web Setup ${version}.${ext}"
nsis_web_artifact_name: "VOICEVOX-CUDA.Web.Setup.${version}.${ext}"
os: windows-2019
# Windows CPU
- artifact_name: windows-cpu-prepackage
Expand All @@ -99,7 +99,7 @@ jobs:
compressed_artifact_name: voicevox-windows-cpu
app_asar_dir: prepackage/resources
installer_artifact_name: windows-cpu-nsis-web
nsis_web_artifact_name: "VOICEVOX-CPU Web Setup ${version}.${ext}"
nsis_web_artifact_name: "VOICEVOX-CPU.Web.Setup.${version}.${ext}"
os: windows-2019
# Windows DirectML
- artifact_name: windows-directml-prepackage
Expand All @@ -109,7 +109,7 @@ jobs:
compressed_artifact_name: voicevox-windows-directml
app_asar_dir: prepackage/resources
installer_artifact_name: windows-directml-nsis-web
nsis_web_artifact_name: "VOICEVOX Web Setup ${version}.${ext}"
nsis_web_artifact_name: "VOICEVOX.Web.Setup.${version}.${ext}"
os: windows-2019
# macOS CPU
- artifact_name: macos-cpu-prepackage
Expand All @@ -119,7 +119,7 @@ jobs:
compressed_artifact_name: voicevox-macos-cpu
app_asar_dir: prepackage/VOICEVOX.app/Contents/Resources
installer_artifact_name: macos-cpu-dmg
macos_artifact_name: "VOICEVOX.${ext}"
macos_artifact_name: "VOICEVOX.${version}.${ext}"
os: macos-11

runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -294,7 +294,6 @@ jobs:
- name: Recover file permissions for macOS build
if: startsWith(matrix.artifact_name, 'macos-') # macOS
run: |
chmod +x "prepackage/VOICEVOX.app/Contents/MacOS/${{ matrix.macos_executable_name }}"
chmod +x "prepackage/VOICEVOX.app/Contents/MacOS/vv-engine/run"
chmod +x "prepackage/VOICEVOX.app/Contents/Frameworks/VOICEVOX Helper (GPU).app/Contents/MacOS/VOICEVOX Helper (GPU)"
chmod +x "prepackage/VOICEVOX.app/Contents/Frameworks/VOICEVOX Helper (Plugin).app/Contents/MacOS/VOICEVOX Helper (Plugin)"
Expand Down Expand Up @@ -471,31 +470,14 @@ jobs:
dist_electron/*.dmg
target_commitish: ${{ github.sha }}

- name: Create Windows NSIS Web artifact directory
if: endsWith(matrix.installer_artifact_name, '-nsis-web')
run: |
mkdir -p nsis-web-artifact
mv dist_electron/nsis-web/out/*.7z.* nsis-web-artifact/
mv dist_electron/nsis-web/*.exe nsis-web-artifact/

# Rename file name like "VOICEVOX Web Setup X.X.X.exe" to "VOICEVOX.Web.Setup.X.X.X.exe".
- name: Rename Windows NSIS Web Installer
if: endsWith(matrix.installer_artifact_name, '-nsis-web')
run: |
cd nsis-web-artifact
OLD_NAME=`find . -maxdepth 1 -name '*.exe'`
# replace space by dot(.)
NEW_NAME=${OLD_NAME// /.}
mv "${OLD_NAME}" $NEW_NAME

- name: Upload Windows NSIS Web to Artifacts
if: endsWith(matrix.installer_artifact_name, '-nsis-web') && github.event.inputs.upload_artifact
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.installer_artifact_name }}-release
path: |-
nsis-web-artifact/*.7z.*
nsis-web-artifact/*.exe
dist_electron/nsis-web/out/*.7z.*
dist_electron/nsis-web/*.exe

- name: Upload Windows NSIS Web to Release Assets
if: endsWith(matrix.installer_artifact_name, '-nsis-web') && (github.event.release.tag_name || github.event.inputs.version) != ''
Expand All @@ -504,6 +486,6 @@ jobs:
prerelease: ${{ github.event.inputs.prerelease }}
tag_name: ${{ env.VOICEVOX_EDITOR_VERSION }}
files: |-
nsis-web-artifact/*.7z.*
nsis-web-artifact/*.exe
dist_electron/nsis-web/out/*.7z.*
dist_electron/nsis-web/*.exe
target_commitish: ${{ github.sha }}
81 changes: 52 additions & 29 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,29 @@ defaults:
shell: bash

jobs:
config: # 全 jobs で利用する定数の定義. `env` が利用できないコンテキストでも利用できる.
runs-on: ubuntu-latest
outputs:
shouldUpdateSnapshots: ${{ steps.check-whether-to-update-snapshots.outputs.shouldUpdateSnapshots }}
steps:
- name: Check if commit message includes [update snapshots]
id: check-whether-to-update-snapshots
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const commits = ${{ toJson(github.event.commits) }};
if (!commits) {
// pull_request などでコミットがない場合はスキップ
core.setOutput("shouldUpdateSnapshots", false);
process.exit(0);
}
const shouldUpdateSnapshots = commits.some((commit) =>
commit.message.toLowerCase().includes("[update snapshots]")
);
core.setOutput("shouldUpdateSnapshots", shouldUpdateSnapshots);
console.log(`shouldUpdateSnapshots: ${shouldUpdateSnapshots}`);

# ビルドのテスト
build-test:
runs-on: windows-latest
Expand All @@ -38,6 +61,7 @@ jobs:
# e2e テスト
e2e-test:
runs-on: ${{ matrix.os }}
needs: [config]
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -81,34 +105,19 @@ jobs:
# .env
sed -i -e 's|"074fc39e-678b-4c13-8916-ffca8d505d1d"|"208cf94d-43d2-4cf5-abc0-9783cac36d29"|' .env.test
sed -i -e 's|"../voicevox_engine/run.exe"|"${{ steps.download-engine.outputs.run_path }}"|' .env.test
sed -i -e 's|"executionArgs": \[\],|"executionArgs": ["--port=50021"],|' .env.test
# GitHub Actions 環境だとたまに50021が封じられていることがあるので、ランダムなポートを使うようにする
PORT=$(node -r net -e "server=net.createServer();server.listen(0,()=>{console.log(server.address().port);server.close()})")
sed -i -e 's|"host": "http://127.0.0.1:50021"|"host": "http://127.0.0.1:'$PORT'"|' .env.test
sed -i -e 's|"executionArgs": \[\],|"executionArgs": ["--port='$PORT'"],|' .env.test
cp .env.test .env

- name: Check if commit message includes [update snapshots]
id: check-whether-to-update-snapshots
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const commits = ${{ toJson(github.event.commits) }};
if (!commits) {
// pull_request などでコミットがない場合はスキップ
core.setOutput("shouldUpdateSnapshots", false);
process.exit(0);
}
const shouldUpdateSnapshots = commits.some((commit) =>
commit.message.toLowerCase().includes("[update snapshots]")
);
core.setOutput("shouldUpdateSnapshots", shouldUpdateSnapshots);
console.log(`shouldUpdateSnapshots: ${shouldUpdateSnapshots}`);

- name: Run npm run test:browser-e2e
run: |
if [ -n "${{ runner.debug }}" ]; then
export DEBUG="pw:browser*"
fi
ARGS=""
if [[ ${{ steps.check-whether-to-update-snapshots.outputs.shouldUpdateSnapshots }} == 'true' ]]; then
if [[ ${{ needs.config.outputs.shouldUpdateSnapshots }} == 'true' ]]; then
ARGS="--update-snapshots"
fi
npm run test:browser-e2e -- $ARGS
Expand All @@ -131,35 +140,49 @@ jobs:
name: playwright-report-${{ matrix.os }}
path: playwright-report

- name: Upload updated snapshots to artifact
if: steps.check-whether-to-update-snapshots.outputs.shouldUpdateSnapshots == 'true'
- name: Collect patch for snapshots
if: needs.config.outputs.shouldUpdateSnapshots == 'true'
run: |
git add --intent-to-add tests/ # git diff に表示されるようにする
git diff tests/ # ロギング用
git diff --binary tests/ > patch-${{ matrix.os }}.diff

- name: Upload patch to artifact
if: needs.config.outputs.shouldUpdateSnapshots == 'true'
uses: actions/upload-artifact@v4
with:
name: updated-snapshots-${{ matrix.os }}
path: tests/e2e/browser/*-snapshots/*
path: patch-${{ matrix.os }}.diff

commit-snapshots:
runs-on: ubuntu-latest
permissions:
contents: write
needs:
- e2e-test
needs: [config, e2e-test]
if: needs.config.outputs.shouldUpdateSnapshots == 'true'
steps:
- uses: actions/checkout@v3

- name: Download artifacts
uses: actions/download-artifact@v4
with:
pattern: updated-snapshots-*
path: tests/e2e/browser
path: patches
merge-multiple: true

- name: Commit updated snapshots
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
# パッチを適用
for patch in patches/*.diff; do
git apply --allow-empty $patch
rm $patch
done

# 変更があるかチェック
if [ -n "$(git status --porcelain)" ]; then
git add tests/e2e/browser
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git add tests/
git commit -m "(スナップショットを更新)"
git push
else
Expand Down
16 changes: 14 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ npm run electron:serve
npm run browser:serve
```

また、main ブランチのビルド結果がこちらにデプロイされています <https://voicevox-browser-dev.netlify.app/#/home>
また、main ブランチのビルド結果がこちらにデプロイされています <https://voicevox-browser-dev.netlify.app/#/talk>
今はローカル PC 上で音声合成エンジンを起動する必要があります。

## ビルド
Expand All @@ -174,6 +174,7 @@ npm run electron:build
```bash
npm run test:unit
npm run test-watch:unit # 監視モード
npm run test:unit -- --update # スナップショットの更新
```

### ブラウザ End to End テスト
Expand All @@ -193,16 +194,19 @@ Playwright を使用しているためテストパターンを生成すること
**ブラウザ版を起動している状態で**以下のコマンドを実行してください。

```bash
npx playwright codegen http://localhost:5173/#/home --viewport-size=800,600
npx playwright codegen http://localhost:5173/#/talk --viewport-size=800,600
```

詳細は [Playwright ドキュメントの Test generator](https://playwright.dev/docs/codegen-intro) を参照してください。

#### スクリーンショットの更新

ブラウザ End to End テストでは Visual Regression Testing を行っています。
現在 VRT テストは Windows のみで行っています。
以下の手順でスクリーンショットを更新できます:

##### Github Actions で更新する場合

1. フォークしたリポジトリの設定で GitHub Actions を有効にします。
2. リポジトリの設定の Actions > General > Workflow permissions で Read and write permissions を選択します。
3. `[update snapshots]` という文字列をコミットメッセージに含めてコミットします。
Expand All @@ -213,6 +217,14 @@ npx playwright codegen http://localhost:5173/#/home --viewport-size=800,600

4. Github Workflow が完了すると、更新されたスクリーンショットがコミットされます。

##### ローカルで更新する場合

ローカル PC の OS に対応したもののみが更新されます。

```bash
npm run test:browser-e2e -- --update-snapshots
```

### Electron End to End テスト

Electron の機能が必要な、エンジン起動・終了などを含めた End to End テストを実行します。
Expand Down
Loading
Loading