Skip to content

fix: daily summary file save issues on Ubuntu#400

Open
shabaraba wants to merge 1 commit intomainfrom
fix/daily-summary-ubuntu-compatibility
Open

fix: daily summary file save issues on Ubuntu#400
shabaraba wants to merge 1 commit intomainfrom
fix/daily-summary-ubuntu-compatibility

Conversation

@shabaraba
Copy link
Owner

Summary

  • Ubuntuで:VibingDailySummaryAllが空ファイルを出力する問題を修正

Changes

  1. 大きなプロンプトの一時ファイル経由渡し (--prompt-fileオプション)

    • Linuxでコマンドライン引数の長さ制限(E2BIG)を超える問題に対応
    • 100KB以上のプロンプトは一時ファイル経由で渡す
  2. パスの~展開

    • save_dirvim.fn.expand()で展開してから使用
    • writefile:edit~が正しく解釈されない問題を修正
  3. 既存バッファの削除

    • ファイルを開く前に既存バッファを削除
    • 古いバッファの内容が残る問題を回避
  4. ファイル存在確認

    • 書き込み後にファイルが存在するか確認

Test Plan

  • Ubuntu環境で:VibingDailySummaryAll <date>を実行し、正しくサマリーファイルが生成されることを確認
  • Mac環境で動作に影響がないことを確認

- Add --prompt-file option to handle large prompts that exceed command
  line argument limits (E2BIG error on Linux)
- Expand ~ to full path in save_dir before file operations
- Delete existing buffer before opening saved file to avoid stale content
- Add file existence verification after write
@claude
Copy link
Contributor

claude bot commented Feb 19, 2026

コードレビュー

このPRはUbuntu環境での:VibingDailySummaryAllコマンドの問題を修正する重要な改善です。全体的に良い実装ですが、いくつかの改善提案があります。

✅ 良い点

  1. 問題の特定と解決策が適切

    • Linux環境のE2BIG(引数長制限)問題を一時ファイル経由で解決
    • 100KBの閾値設定は合理的
    • ~展開の問題を正しく修正
  2. エラーハンドリング

    • ファイル書き込み後の存在確認を追加(L199-203)
    • 一時ファイル読み込み失敗時の適切なエラー処理
  3. クリーンアップ処理

    • 一時ファイルの自動削除(args-parser.ts:97)
    • 既存バッファの削除による古いコンテンツ回避

@claude
Copy link
Contributor

claude bot commented Feb 19, 2026

改善提案

1. セキュリティ: 一時ファイルのクリーンアップ保証

問題: readFileSyncが成功してもunlinkSyncが失敗する可能性があります(権限エラー等)。

推奨修正: finallyブロックでクリーンアップを保証し、cleanup失敗時もwarningログのみにする。

bin/lib/args-parser.ts の91-102行目をfinallyブロックを使った実装に変更することを推奨します。

2. エラーハンドリング: 一時ファイル作成失敗の処理

command_builder.luaで一時ファイル書き込み失敗時に、ユーザーに通知を追加することを推奨します。

@claude
Copy link
Contributor

claude bot commented Feb 19, 2026

3. バッファ削除のエラーログ

バッファ削除が失敗した場合、デバッグ用にログを追加することを推奨します。

lua/vibing/application/daily_summary/use_case.lua の293-296行目で、pcallの結果をチェックしてエラー時にDEBUGログを出力することを検討してください。

4. テストカバレッジ

以下のテストケースを追加することを推奨します:

  • 大きなプロンプト(>100KB)での一時ファイル経由の実行
  • チルダを含むパスでのファイル保存
  • 既存バッファが開いている状態でのサマリー保存
  • 一時ファイル作成失敗時のエラーハンドリング

推奨テストファイル: tests/lua/application/daily_summary/use_case_spec.lua

@claude
Copy link
Contributor

claude bot commented Feb 19, 2026

総評

承認条件: 改善提案1(一時ファイルのクリーンアップ保証)を実装することを強く推奨します。セキュリティ上の問題になる可能性があります。

その他の提案(2-4)はオプションですが、プロダクション品質のコードにするために実装を検討してください。


優先度:

  • 🔴 必須: 改善提案1(セキュリティ - finallyブロックでのクリーンアップ保証)
  • 🟡 推奨: 改善提案2, 3(エラーハンドリングとログ改善)
  • 🟢 任意: 改善提案4(テストカバレッジ)

その他の評価

パフォーマンス: 100KBの閾値は適切で、ほとんどのケースで通常引数を使用します。

セキュリティ: vim.fn.fnameescape()とvim.fn.tempname()の使用は適切です。

コードスタイル: 既存のコーディング規約に準拠しており、適切なコメントと型注釈があります。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant