WALKTHROUGH 完了ログ

方針: 完了済みウォークスルーは個別長文を保持せず、何をいつ完了したかを一元管理する。 最終更新: 2026-06-28


完了記録 (2026-06-28: generator の真の遅延評価化・.next(v) 値受け渡し — replay 方式)

generator は呼び出し時に本体を最後まで eager 実行し yield 値を Vec に収集する方式で、無限 generator が無限ループし .next(v) の双方向値渡しも不可だった。replay(再実行)方式へ全面再設計し真の遅延評価を実現。os_lib/js/{value,interp,builtins}.rs


完了記録 (2026-06-28: grid-auto-flow:column を実装 — 列優先 auto-flow)

grid の auto-flow は行優先(row)固定で、grid-auto-flow:column(列優先: 行を縦に埋めてから次列へ)が未対応だった。列優先フローを実装。os_lib/layout.rs


完了記録 (2026-06-28: grid-auto-rows を実装 — 暗黙行トラックのサイズ指定)

明示 grid-template-rows の本数を超えて配置された暗黙行は内容実測(auto 相当)のみで、grid-auto-rows によるサイズ指定が効かなかった。暗黙行のサイズ制御を実装。os_lib/layout.rs


完了記録 (2026-06-28: grid minmax() 行トラックの min/max を正しく実装)

grid-template-rowsminmax(min, max) は max 側のみ採用し min(下限)を無視していた。minmax(50px, auto) で最低 50px が保証されない等の不具合を修正。os_lib/layout.rs


完了記録 (2026-06-28: min-width/max-width への intrinsic キーワード対応)

width の min-content/max-content/fit-content は実装済みだったが、min-width/max-width 制約ではこれらキーワードが無視されていた。両制約でも内容ベース幅を解決するよう拡張。os_lib/layout.rs


完了記録 (2026-06-28: CSS gap の % 対応 — flex/grid の row-gap/column-gap/gap)

flex/grid の gap/row-gap/column-gap(および grid-row-gap/grid-column-gap)が px のみで、% 指定を 0 扱いしていた。% をコンテナ content 幅基準で解決するよう拡張。os_lib/layout.rs


完了記録 (2026-06-28: flexbox 主軸 auto margin を実装 — margin-left/right/top/bottom:auto で余剰空間吸収)

flex アイテムの主軸方向 margin:automargin-left:auto で右寄せ、margin:0 auto で中央寄せ等)が未対応だった。余剰空間を auto margin 辺へ分配する一般的なセンタリング/押し出しパターンを実装。os_lib/layout.rs(非折返し layout_flex 経路)。


完了記録 (2026-06-28: CSS aspect-ratio を height→width 逆算へ拡張)

aspect-ratio は width→height の一方向のみ対応していた。height 明示・width:auto のとき width を逆算する方向を追加し、min/max-width クランプも適用した。os_lib/layout.rs


完了記録 (2026-06-28: CSS intrinsic sizing を実装 — width の min-content / max-content / fit-content)

ブロック要素の width がキーワード min-content/max-content/fit-content を解釈できなかった。内容ベース幅で要素を伸縮させるこれらを実装した機能ユニット。os_lib/layout.rs


完了記録 (2026-06-28: ブラウザ互換性強化バッチ I–K — IntersectionObserver/setInterval/CSS @media/transform 他)

www.sugi-lab.net を Chromium に近い見た目にするためのバッチ実装と git コンフリクト解消。

修正・実装内容

IntersectionObserver(Batch H 修正) - io_observe()observe() が呼ばれた時点でコールバックを即時発火するよう変更(Chromium の初回発火相当)。従来は JsRuntime::eval() 終了後に発火していたため、セルフテストの seenfalse のまま返っていた。JS_SELFTEST PASS を確認。

setInterval / clearInterval(Batch I) - set_interval 関数を独立実装(最大 8 回発火でベアメタル無限ループ防止)。 - Interpintervals: Vec<(u64, Value, Vec<Value>, u32)> フィールドを追加。 - run_event_loop() にインターバル発火ループ(run_intervals())を組み込み。 - clearInterval(id) で即時停止。

CSS @media クエリのパース・適用(Batch I) - css.rsmedia_query_matches() を実装(max-width/min-width/max-height/min-height/orientation/screen/all/print 対応)。 - parse_css_declarations() ヘルパで @media ブロック内のルールを再帰パース。 - VIEWPORT_HINT_W/H を基準に適用可否を判定。 - LAYOUT selftest case38(@media max-width: viewport=200 → ルール適用)を追加・PASS。

window.innerWidth / innerHeight 他(Batch I) - innerWidth/innerHeight/outerWidth/outerHeight/devicePixelRatio をグローバルと window オブジェクトに登録。VIEWPORT_HINT から値を取得。 - scrollBywindow オブジェクトに追加。

RenderElement フィールド拡充(Batch I) - bg_size: String(background-size: cover/contain/auto 等) - bg_position: String(background-position) - text_shadow: Option<(i32, i32, i32, u32)>(offset_x, offset_y, blur, color) - before_content/after_content: String(::before/::after の content) - transform_tx/transform_ty: i32transform_scale: f32transform_rotate_deg: f32 - web_engine のスタイル収集パスで CSS プロパティから各フィールドへマップ。

CSS transform パース → 描画座標反映(Batch K) - parse_transform() を追加(translateX/Y/translate/translate3d/scale/rotate/matrix 対応)。 - el_x = el.x_offset + el.transform_txel_y = ... + el.transform_ty で描画位置にオフセット適用。 - TODO.md の「CSS transform(translate/scale/rotate)」を完了へ。

CSS aspect-ratio レイアウト(Batch K) - layout_block のデストラクタに aspect_ratio_val を追加。 - height が auto の場合のみ aspect-ratio: W/H から height = width * H/W を算出。 - LAYOUT selftest case36(16/9 → 90px)・case37(1/1 正方形)を追加・PASS。

ResizeObserver / MutationObserver / CustomEvent(Batch J) - ResizeObserver: observe() 時に contentRect=0 の即時コールバック発火。 - MutationObserver: observe/disconnect/takeRecords を no-op として登録(クラッシュ防止)。 - CustomEvent(type, {detail}): type/detail/bubbles/cancelable 付きオブジェクトを生成。

document API 拡充(Batch J) - createRange() → selectNodeContents/collapse/getBoundingClientRect 付き Range オブジェクト。 - getSelection() → removeAllRanges/addRange/toString(→““) 付き Selection オブジェクト。 - execCommand() → no-op、hasFocus() → true を返す。

Element.animate()(Batch K) - DOM メソッドディスパッチに "animate" を追加。playState:"finished"finished: Promise<void>(即時 fulfilled)付きの Animation オブジェクトを返す。play/pause/cancel/currentTime を提供。

git コンフリクト解消 - src/os_lib/js/mod.rs(UU): setInterval セルフテストの重複を整理してマージ。 - src/kernel/net.rs(UD): net/ ディレクトリ分割済みのため削除を採用(git rm)。

セルフテスト件数


完了記録 (2026-06-28: flexbox flex-basis を実装 — 主軸初期サイズを width/height より優先)

flexbox は flex-grow/flex-shrink/order まで実装済みだったが、主軸初期サイズを指定する flex-basis が未対応だった。これを実装した機能ユニット。os_lib/layout.rs(非折返し layout_flex 経路)。


完了記録 (2026-06-28: flexbox flex-shrinkorder を実装 — 超過時の縮小とアイテム並び替え)

flexbox は flex-grow(余剰分配)まで実装済みだったが、主軸超過時の flex-shrink(縮小)と order(描画順並び替え)が未対応だった。これを実装した機能ユニット。os_lib/layout.rs(非折返し layout_flex 経路)。


完了記録 (2026-06-28: CSS Grid アイテム整列を実装 — justify-self / align-self / justify-items / align-items)

CSS Grid は2次元配置まで実装済みだったが、アイテムをセル内で整列する justify-self(インライン=列軸)/ align-self(ブロック=行軸)と、コンテナ既定の justify-items / align-items が未対応で、アイテムは常にセルへ stretch されていた。これを実装した機能ユニット。os_lib/layout.rs


完了記録 (2026-06-28: CSS letter-spacing を実装 — 文字幅計測・折返し・描画の全経路対応)

letter-spacing は CSS パーサに登録済みだったが計測にも描画にも未適用だった。文字間に px(負も可) を加える本プロパティを、テキスト計測→折返し→RenderElement→ピクセル描画の全経路へ通した横断的ユニット。既存の多数の呼び出し(string_width 23・wrapped_size 7・draw_string 22 箇所)を壊さないため、各 API に _ls 派生を追加し旧 API は ls=0 で委譲する方式を採用。


完了記録 (2026-06-28: flexbox align-content を実装 — 複数行フレックスの交差軸ライン配置)

flex-wrap:wrap の複数行レイアウト(layout_flex_wrapped)は実装済みだったが、生成した複数行ブロックを交差軸方向にどう配置するか(align-content)が未対応で、常に交差軸先頭から詰めるだけだった。これを CSS 仕様の全値に対応させた機能ユニット。os_lib/layout.rs


完了記録 (2026-06-28: CSS Grid を列専用 → 本格2次元配置へ拡張 — grid-template-rows / 明示配置 / span / occupancy auto-flow / fr 行)

従来 layout_grid は grid-template-columns と単純な行優先 auto-flow(列カーソルだけ)しか持たず、行は実測の最大高さで畳むだけだった。これを CSS Grid の2次元プレースメントモデルへ一気に拡張した機能ユニット。os_lib/layout.rs を横断。


完了記録 (2026-06-28: positioned 要素を全フォーマッティングコンテキストへ拡張 — flex/grid/table 内の relative/absolute/fixed)

CSS positioned 要素(position: relative/absolute/fixed)の後処理が block コンテナ専用だった制約を解消し、flex / grid / table の全フォーマッティングコンテキストで動くよう一気に拡張した機能ユニット。os_lib/layout.rs を横断。


完了記録 (2026-06-27 セッション2: ブラウザ描画のインクリメンタル再レイアウト基盤 + NTPフリーズ修正 + CI赤解消)

ブラウザ/ノートの描画パイプライン(os_lib/web_engine/layout.rs::parse_and_layout)が、JS による DOM 変更やサイズ変更のたびに毎回フル再構築していた問題を緩和する機能ユニット。web_engine/mod.rs(状態フィールド)・os_lib/dom.rs(ヘルパ)・os_lib/layout.rs(セルフテスト)を横断。


完了記録 (2026-06-27: DOM イベントファミリーの本格実装 — MouseEvent/KeyboardEvent 標準プロパティ、修飾キー共有、追加イベント、contextmenu 右クリック配線)

ブラウザ JS エンジンの DOM イベントを、本物のブラウザに近い標準プロパティ・イベント種別まで一気に拡充した機能ユニット。os_lib/web_engine/render.rs(発火)と os_lib/js/interp.rs(イベントオブジェクト生成)、kernel/keyboard.rs(修飾キー状態)を横断。


完了記録 (2026-06-25: google.com ロード時の UI フリーズ修正 — ネットワーク待機の sleep 移行)

www.google.com ロード中/直後に GUI 全体が超スローモーション化(事実上フリーズ)するバグの修正。 (旧 spec/task.md / spec/walkthrough.md / spec/implementation_plan.md の単発タスク3ファイルを本ログへ統合。spec 運用ルール「ファイル数を増やさない/完了タスクは本ログへ圧縮記録」に従い、それらは削除)

⚠️ 既知の不整合(2026-06-26 spec 整理時に発見・要確認): 上記タスクは当時の単一ファイル src/kernel/net.rs に対して実施されたが、その後のリファクタ(コミット b99becde 「src整理と分割」)で net.rssrc/kernel/net/ 配下へ分割された。現状コードでは net/tcp.rssleep(1) 済みだが、net/dns.rsdns_query_a_via_udp(57行付近)・ntp_query(99行付近)、net/icmp.rsnet/arp.rs には yield_now() が残存している。分割時に sleep 移行が一部引き継がれなかった可能性が高い。TODO.md の P0 として再修正対象に登録済み。


完了記録 (2026-06-24: CI/CD警告解消、起動時のウィンドウ状態・サイズ制御、app_sandboxマニフェスト拡張、pingのDNS解決対応、ブラウザのYouTubeモック解除とコメント・堅牢性整備)


完了記録 (2026-06-22: 動的サイト対応キャンペーン — JS/CSS エンジン強化)

「本物のサイトを表示したい」という要望に対し、Chromium 級は規模・DRM 的に非現実的と正直に 共有した上で、毎ターン「実在サイトがより動く具体的 1 機能」を自己テスト検証付きで積む長期 キャンペーンを実施。各機能はビルド警告ゼロ + セルフテストで非回帰を確認。最終: JS 220 / CSS 38 / LAYOUT 24 全 PASS、クリーンビルド警告ゼロ


完了記録 (2026-06-20: H.264 baseline 本物デコーダ完成 — 実ストリーム完全対応)

旧モック(「簡易レンダリング(模倣)」)を撤去し、src/os_lib/h264_decode.rs に本物の Baseline H.264 デコーダを実装。ffmpeg/x264 出力とビット完全一致を達成。

完了記録 (2026-06-17 後半: Aura 修正 / Google Drive ネイティブアプリ / H.264 本物デコーダ再実装)

完了記録 (2026-06-17: YouTube動画視聴機能 & システムモニターUI改善 & ドキュメント整備)

完了記録 (2026-06-16: ドキュメント棚卸し + タブUI改善 + 詳細カラーカスタマイズ実装)

完了記録 (2026-06-16: SylFS 堅牢性バグ 3 件 + FS_SELFTEST 新設)

完了記録 (2026-06-16: 全警告ゼロ化 + string_slice クレート全体施錠)


完了記録 (2026-06-15 セッション7-n: パニック回復時のロックリーク対策 / 安全設計 C)

完了記録 (2026-06-15 セッション7-m: apps コマンド刷新・フォントフォールバック・設定アプリ)

完了記録 (2026-06-14〜15 補遺: JSエンジン基盤・カーネル安定化・アプリ)

完了記録 (2026-06-15 セッション7-j: Phase 7 外部連携クライアント基盤)


完了記録 (2026-06-15 セッション7-i: IME 実用化・nn 撥音バグ修正)


完了記録 (2026-06-15 セッション7-l: CSS プロパティ拡充 text-transform/list-style-type/flex gap)


完了記録 (2026-06-15 セッション7-k: CSS !important)


完了記録 (2026-06-15 セッション7-h: CSS セレクタ拡充)


完了記録 (2026-06-15 セッション7-g: DOM 動的ノード)


完了記録 (2026-06-15 セッション7-f: JS generator / setTimeout / RegExp)


完了記録 (2026-06-15 セッション7-e: JS Promise / async / await)


完了記録 (2026-06-15 セッション7-d: JS class・継承・super)


完了記録 (2026-06-15 セッション7-c: JS 分割代入・デフォルト引数・算出キー)


完了記録 (2026-06-15 セッション7-b: JS モダン構文 switch/spread/rest/Map/Set)


完了記録 (2026-06-15 セッション7: JS Phase 3 DOM/イベント連携)


完了記録 (2026-06-14 セッション6: テーブル・DDG検索・タブ独立化)


完了記録 (2026-06-13 セッション5: ヒープ破壊根治・エラー型整備・シリアルコンソール)


完了記録 (2026-06-13 Note 全面フィット・レイアウトバグ根治・コード整理)


完了記録 (2026-06-12 カーネル安定性・自動化・ブラウザ修正)


完了記録 (2026-06-11 構造ハードニング)


完了記録 (2026-06-10 セッション2)


完了記録 (2026-06-10 追加・続き)

完了記録 (2026-06-10 追加)

完了記録 (2026-06-02 確認)

TASK完了記録 (2026-06-21 追加)

TASK完了記録 (2026-06-02 確認)


旧アーカイブ要約 (2026-05-23 〜 2026-06-04)

方針(冒頭)に従い、旧 PROGRESS_LOG.md と個別の実装計画書/タスク/ウォークスルーの 長文原文は「何をいつ完了したか」の要約に圧縮した(2026-06-14 セッション6 で実施)。 詳細な設計判断は各機能の現行コードと DESIGN.md / TECHNOTE.md に反映済み。

進捗ログ要約(PROGRESS_LOG.md 由来)

実装計画書/タスク アーカイブ(2026-06-04 に個別ファイルから統合・要約)

いずれも完了済み。現行の DESIGN.md(設計)/ TECHNOTE.md(バグ分析)が最新の正典。

原文が必要な場合は本コミット以前 of git 履歴を参照(git log -- spec/WALKTHROUGH_COMPLETION_LOG.md)。


完了実績アーカイブ (2026-06-25 〜 2026-06-28)

1. ネットワーク待機ループおよびマルチスレッド並行処理の改善

2. システム安定化・MMU バグ修正

3. ブラウザ・CSS エンジンの機能拡充

4. JavaScript エンジンの動的サイト対応

5. H.264 ソフトウェアデコーダ

6. Google Drive 連携(ネイティブアプリ)

7. CIビルド / 品質保証