既知バグ修正 (テストファースト) + バージョン 1.8 - #21
Merged
Merged
Conversation
- HTMLFormatter の基本要素出力を固定する特性テスト20件 - 変更行ハイライト (changedLines) の挙動固定テスト9件 (DiffCalculator統合含む) - KeyBindingHandler のディスパッチ/パススルー契約テスト10件 (Command-C/A のコピー保護) - String.htmlEscaped テスト3件 - テーブルヘッダの th/td 誤判定バグを XCTExpectFailure で記録 (修正PRで反転予定) - FileWatcher に監視間隔の引数注入を追加 (デフォルト0.5秒で挙動不変) し、テストの Thread.sleep 依存を短縮してフレーク対策 Co-authored-by: Claude Code <claude@anthropic.com>
- project.yml を単一情報源として pbxproj を生成 (生成物もコミット) - Xcode側にユニットテストターゲットを新設 (従来 xcodebuild test 不可だった) - バージョンを project.yml の MARKETING_VERSION/CURRENT_PROJECT_VERSION に一元化 (Info.plist はビルド設定変数を参照。1.5/1.7 の二重管理不整合を解消) - CI に xcodegen 整合性チェックと xcodebuild test を追加 - README の古い手動セットアップ手順を XcodeGen ベースに更新 - プロジェクト名/スキーム名/構成は維持し make build/install の互換性を保持 Co-authored-by: Claude Code <claude@anthropic.com>
Co-authored-by: Claude Code <claude@anthropic.com>
Co-authored-by: Claude Code <claude@anthropic.com>
…eet/String拡張) MarkdownWebView.swift は745行から258行に。未使用だった HTMLFormatter.format(_:) は削除。 Co-authored-by: Claude Code <claude@anthropic.com>
Co-authored-by: Claude Code <claude@anthropic.com>
MarkdownViewerTests.swift に5スイートが連結され import が重複していたのを解消。 Co-authored-by: Claude Code <claude@anthropic.com>
Co-authored-by: Claude Code <claude@anthropic.com>
colspan>1 でヘッダ判定していたため、通常テーブルのヘッダ行が <td> になり 結合セルが <th> になっていた。Table.Head 配下かどうかで判定し、 colspan は属性として出力する。 Co-authored-by: Claude Code <claude@anthropic.com>
- Cmd-R が全ウィンドウを一斉リロード、Cmd-O がウィンドウ数ぶん NSOpenPanel を開いていた問題を修正。通知の object に keyWindow を載せ、 受信側 (WindowScopedNotification) で自ウィンドウと照合する - "ReloadMarkdownFile" の raw string 重複を Notification.Name 定数に統一 - NSEvent ローカルモニタがウィンドウごとに多重登録され、別ウィンドウが スクロールし得た問題を event.window 照合で修正 Co-authored-by: Claude Code <claude@anthropic.com>
各ファイルの非同期解決の完了順で振り分けが変わり得た問題を、 DispatchGroup で全URL解決を待ってから DropTargetPlanner で 決定的に振り分けるよう修正。振り分けロジックは純関数としてテスト追加。 Co-authored-by: Claude Code <claude@anthropic.com>
baseURL が Bundle.main.resourcePath 固定だったため、swift run では mermaid.min.js を解決できなかった。SWIFT_PACKAGE 時は Bundle.module を 使う ResourceBundle を導入。 Co-authored-by: Claude Code <claude@anthropic.com>
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.
概要
デグレ防止シリーズ PR 5/5。調査で発見した既知バグをテストファースト (失敗テスト → 修正 → グリーン) で修正し、バージョンを 1.8 に bump する。
修正内容
visitTableCellがcolspan > 1でヘッダ判定していたため、通常テーブルのヘッダ行が<td>、結合セルが<th>になっていた。Table.Head配下かで判定し、colspan は属性として出力。PR2 で記録したXCTExpectFailureを正しい期待値に反転WindowScopedNotification+WindowAccessor)。keyWindow が nil の場合は従来挙動にフォールバック。raw string 重複だった"ReloadMarkdownFile"もNotification.Name定数化NSEvent.addLocalMonitorForEventsがウィンドウごとに登録され、j/k 等で別ウィンドウがスクロールし得た。event.window照合で自ウィンドウのみ処理DropTargetPlanner(純関数・テスト7件) で決定的に振り分けBundle.main固定でswift runでは mermaid.min.js が見つからなかった。ResourceBundle(SWIFT_PACKAGE で Bundle.module 切替) を導入バージョン
検証
swift test: 95件全パス (10件 → 95件に拡充)make clean && make build: 成功。バンドルの CFBundleShortVersionString = 1.8 を確認swiftlint: exit 0手動確認推奨項目 (マージ前)
Base: #20 (refactor/split-files)
🤖 Generated with Claude Code
https://claude.ai/code/session_01YAgg3ad7Muz4ed4EYTgKU2