feat(tutorial): add deck setup foundation (Phase 2 base)#684
Merged
Conversation
チュートリアル deck 起動時に「タブ・Ruby モード・拡張機能」を自動セットアップ
する横断機構を導入。Phase 2 以降のすべての新規 deck (Ruby/Block/DNCL) がこの
仕組みに依存する。
deck 定義に新しい `setup` プロパティを追加可能にする:
'deck-id': {
setup: {
tab: 'ruby', // 'code' | 'costumes' | 'sounds' | 'ruby'
rubyMode: 'dncl', // 'ruby' | 'furigana' | 'dncl'
extensions: ['pen', 'microbitMore'],
},
// ...
}
`tips-library.jsx` の `handleItemSelect` で deck activate 直前に
`applyDeckSetup` を await 呼び出しし、:
- `tab` → `editor-tab` reducer の `activateTab` を dispatch
- `rubyMode` → `dncl-mode` reducer の `setDnclMode` を dispatch +
`smalruby:furiganaEnabled` localStorage を同期 (ruby-tab.jsx が次回 mount 時に反映)
- `extensions` → `vm.extensionManager.loadExtensionURL` を順次 await
(ロード失敗は `console.warn` のみで deck 開始を阻害しない)
全操作が冪等。setup を持たない既存 10 deck は影響なし (後方互換)。
- `src/lib/deck-setup.js`: `applyDeckSetup(setup, dispatch, vm)` ヘルパー実装
- `src/containers/tips-library.jsx`: setup 呼び出し + vm prop 接続
- `test/unit/lib/deck-setup.test.js`: 10 ケースの単体テスト (全 pass)
- `.prettierignore` / `smalruby-prettier-files.md`: 新 Smalruby ファイルの whitelist 登録
- `docs/tutorial/progress.md`: Phase 1 を ✅ マージ済みに更新、基盤の進捗を反映
Refs: #679, #682
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
🚀 Preview deployed: https://smalruby.jp/smalruby3-editor/feature/tutorial-setup-foundation/ |
github-actions Bot
pushed a commit
that referenced
this pull request
May 11, 2026
…ial-setup-foundation feat(tutorial): add deck setup foundation (Phase 2 base)
6 tasks
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.
Summary
Phase 2 の基盤実装: チュートリアル deck 起動時に タブ・Ruby モード・拡張機能を自動セットアップ する横断機構
applyDeckSetupを導入。Phase 2 以降のすべての新規 deck (Ruby / Block / DNCL) がこの仕組みに依存する。新規 deck では以下のように
setupプロパティを宣言するだけで、tipsLibrary から起動した瞬間に正しい環境が整う:Architecture
tips-library.jsxのhandleItemSelectで deck activate 直前にapplyDeckSetupを await 呼び出し し、全前提条件が整ってからチュートリアルカードを表示する。tab: 'code'/'blocks'/'costumes'/'sounds'/'ruby'editor-tabreducer のactivateTabを dispatchrubyMode: 'dncl'setDnclMode(true)+ furigana off (localStorage)rubyMode: 'furigana'setDnclMode(false)+ furigana on (localStorage)rubyMode: 'ruby'setDnclMode(false)+ furigana off (localStorage)extensions: [...]vm.extensionManager.loadExtensionURLで順次 await ロード全操作が 冪等 (既に正しい状態なら no-op)。拡張ロード失敗時は
console.warnするのみで deck 開始を阻害しない (graceful degradation)。既存 10 deck への影響
setupを持たないため何も実行されず、現状動作を完全に維持。後方互換あり。Ruby モードと furigana state の連携
furiganaフラグはruby-tab.jsxのローカル state (Redux 化されていない) のため、applyDeckSetupは localStorage を更新するに留めます。既に mount 済みの ruby-tab には次回 mount 時 (タブ切替などをトリガー) に反映されます。setup.tab: 'ruby'を併せて指定するチュートリアルでは、タブ切替が ruby-tab を新規 mount するため即座に反映される設計。Changes
packages/scratch-gui/src/lib/deck-setup.jsapplyDeckSetup(setup, dispatch, vm)ヘルパー実装packages/scratch-gui/src/containers/tips-library.jsxhandleItemSelectを async 化し setup を適用、vmを Redux から接続packages/scratch-gui/test/unit/lib/deck-setup.test.jspackages/scratch-gui/.prettierignore.claude/rules/scratch-gui/smalruby-prettier-files.mddocs/tutorial/progress.mdTest plan
bin/dx bash -c "cd packages/scratch-gui && npm run lint"緑bin/dx bash -c "cd packages/scratch-gui && npm exec jest test/unit/lib/deck-setup.test.js"全 10 ケース passintro-getting-started,chat-1-basic-1等) がsetup不在でも従来通り動作することを Playwright で確認ruby-basics-1-numbers) が実装されてから setup の実機動作を結合確認Closes
部分対応 (foundation のみ): #679 (Phase 2 — Ruby チュートリアル拡充)。Ruby deck 本体は後続 PR で対応するため issue は close しない。
Related
docs/tutorial/improvement-plan.md「チュートリアル起動時の環境セットアップ」セクション🤖 Generated with Claude Code