Release the slide feature without the experimental flag - #422
Open
tomoasleep wants to merge 9 commits into
Open
tomoasleep wants to merge 9 commits into
tomoasleep wants to merge 9 commits into
Conversation
tomoasleep
added this pull request to stack #424
September 25, 2026 08:01
Member
Author
|
AI Review への対応です。
|
tomoasleep
commented
Sep 25, 2026
tomoasleep
left a comment
Member
Author
There was a problem hiding this comment.
🤖 AI Review 🤖
問題はありません。
その他確認した項目
何を確認したか
- PR: #422
- diff: apply-design-to-slide-feature...release-slide-feature
- CI state: success
- 既存レビュー: 未解決の行コメント0件。general comment 1件(tomoasleep 本人による前回 AI Review 対応の報告)
見たが問題にしなかった観点
- general comment(basename が記事にもスライドにも見つからないときの not found 分岐のテスト復元)は対応済みと確認した。
55e085fでpublish.test.tsに該当ケースが復元され、publish(["deck"])がエラーメッセージとprocess.exit(1)を伴って終了することを検証している。ローカルのyarn testでも該当テストを含む214件すべてが green だった。 experimentalSlideFeatureEnabledフラグの撤去は一貫している。config・get-slide-file-system-repo・publish/pull/preview・newArticles・help・error-handler・server/app の各所から分岐が漏れなく除去されており、フラグ名や関連関数名の残存参照はテストの否定アサーション文字列以外に見当たらない。slides/ディレクトリの遅延作成は安全に見える。SlideFileSystemRepo.build()はディレクトリを作らず、getSlideFilenames()は ENOENT のときのみ空配列を返し、それ以外は re-throw する。書き込み系は書き込み直前に mkdir する実装になっており、ディレクトリが無い状態と有る状態の両方をテストが個別にカバーしている。previewが常にスライドのルートパスを watch 対象に加える変更は、起動時にディレクトリが存在しなくても動作し、後から作られても検知できることを前提にしており、コード上追加のガードは不要と判断できる。- ローカルでも
eslint .とtsc --noEmitをエラーなしで確認した。
tomoasleep に確認するべき点
stack 登録の状態をこの環境の gh stack view からは再現確認できない
gh stack link によるスタック登録は GitHub 側の GraphQL(pullRequest.stack)では #421→#422 として確認できるが、レビューに使った worktree の gh stack view では「stack の一部ではない」という結果になり、ローカルの git 設定には反映されていない。GitHub 側の登録自体は問題なさそうだが、マージ前に PR ページ上でスタックのリンク表示を目視確認できると安心。
補足
CI は6チェックすべて成功しており、ローカルでも yarn test(214 tests)・eslint .・tsc --noEmit に問題はなかった。
head: 55e085f
Member
Author
|
GitHub 側で rebase stack したら conflict したので、 Conflict 解消してほしい |
tomoasleep
force-pushed
the
release-slide-feature
branch
from
September 28, 2026 08:13
55e085f to
69c8ce2
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The help text had become async only to read the experimental flag, so it goes back to a constant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tomoasleep
force-pushed
the
release-slide-feature
branch
from
September 28, 2026 08:53
69c8ce2 to
a102ca4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
qiita.config.jsonのexperimentalSlideFeatureEnabledを廃止し、スライド機能(new --slide/publish/pull/preview)を設定なしで使えるようにする。UserConfigと既定値からexperimentalSlideFeatureEnabledを削除する。qiita initが生成するqiita.config.jsonにもこのキーは出なくなるpublish/pull/previewは常にスライドを同期し、publishはスライドも投稿対象にする(getSlideFileSystemRepoIfEnabledを削除)qiita new --slideのフラグ判定とエラーを削除する/api/slidesのルートを常に登録し、フラグ無効時の 404 stub を削除するpullの説明をスライドを含む形にする既存の
qiita.config.jsonにこのキーが残っていても、読み込まれて使われないだけなのでエラーにはならない。slides/は必要になったときだけ作るこれまでは
SlideFileSystemRepo.build()がslides/とslides/.remote/を必ず作っていた。フラグを外すとスライドを使わない人のリポジトリにも空のディレクトリができるので、次のように変えた。build()ではディレクトリを作らないcreateSlide/updateSlideFrontmatter/ 同期時のミラーとローカルの書き込み)の直前に、書き込み先のディレクトリをmkdir -pするそのため、スライドがないアカウントで
pull/publish --all/previewを実行してもslides/はできない。スライドを作ったとき、または Qiita 上にスライドがあるときにだけできる。help を定数に戻す
getHelpText()は #414 でフラグを読むためだけに async にしたものなので、フラグの廃止に合わせて #414 以前のhelpText定数に戻した。未知のコマンドのときにgetHelpText()の失敗を拾っていた try/catch も不要になったので消している。How
マージの順番
mainへ切り替えるpublish/pull/previewが起動時に必ずスライド API を呼ぶ。スライド API が 404 を返すと、記事だけを扱うユーザーのコマンドも失敗する。そのため、qiita.com でスライド API が一般公開されてからマージする動作確認
自動テスト
yarn test(24 suites, 214 tests)、eslint .、tsc --noEmit、yarn buildがいずれも成功。src/lib/slide-file-system-repo.test.ts:build()でディレクトリが作られないこと /slides/がないときにloadSlides()とloadPublishTargets()が[]を返すこと / ENOENT 以外のエラーは投げること /createSlide()が書き込み前にslides/を作ること /saveSlides()がslides/とslides/.remote/を作り、空配列なら何も作らないことsrc/commands/publish.test.ts/pull.test.ts/preview.test.ts: スライドを常に同期し、previewがpublic/とslides/の両方を watch することsrc/commands/publish.test.ts: 記事にもスライドにもない basename を渡すとError: '<basename>' is not foundで終了することsrc/commands/newArticles.test.ts: フラグなしで--slideを渡すとスライドが作られることsrc/commands/help.test.ts/src/lib/error-handler.test.ts: スライドを含む文言になり、実験的機能の注記がないこと手動確認
ビルド済み CLI(
node dist/main.js)で、空のディレクトリに対して確認した。qiita initqiita.config.jsonはincludePrivate/host/portだけで、experimentalSlideFeatureEnabledがない。slides/は作られないqiita new --slide fooslides/foo.mdが生成される(slides/.remote/は作られない)qiita helpnew --slideの注記が消え、publish / pull の説明が「記事、スライド」になっているpreviewの watcher(chokidar v4)は、起動時に存在しないslides/を watch しても落ちず、後から作られたslides/とその中のファイルの追加・変更を検知することを確認した。Qiita の API に対する
publish/pull/previewの確認は、スライド API の一般公開後、マージ前に行う。Why
スライド機能は
experimentalSlideFeatureEnabled: trueを設定したときだけ使える実験的機能として入れてきた。投稿・同期と Preview のデザイン反映が揃ったので、フラグなしで使えるようにする。Refs
🤖 Generated with Claude Code