リリースノート
v4.3.1
パッチリリース — MCP サーバーにクレジットカード/銀行の明細 CSV を照合・取込むツール (preview_csv / reconcile_csv / import_csv) を追加。日計差とカード会社未達(仕訳済み・明細未到着)の検出に対応し、フロントエンドの取込確認画面と同一ロジックを共有します。テスト test_mcp_csv.py (20) を追加し、pytest 2072 件 + E2E 66 件が CI で pass。
MCP: 明細CSVの照合・取込
preview_csv— CSV 明細の文字コード・ヘッダー・プレビューと推定列マッピングを返すreconcile_csv— 指定した支払口座の既存仕訳と照合し、行ごとの状態 (matched/multiple/unmatched)、日計差 (daily_summary)、カード会社未達 (journal_only) を返す。列マッピングは保存プロファイル → ヘッダー推定 → 明示指定 (mapping) の順で解決し、判定できない場合はneeds_mapping: trueとプレビューを返すimport_csv— 未照合行に費目を付けて一括取込。年度制限・確定済み期間・提出済みロック・資産/負債相手の自動振替をフロントと同一ロジックで検証- CSV 本文は
content(UTF-8 テキスト)またはcontent_base64(Shift-JIS 等)で受け取る。content_base64はanalyze_receiptと同様 base64 デコード - スコープ:
reconcile_csv/preview_csvはjournals:read、import_csvはjournals:create(書き込み)
共通化
- 取込確認画面の一括仕訳化ロジックを
app/services/import_ops.pyのimport_rows()に抽出し、CSV / OFX / Web 取込ビューと MCP で共有(取込結果のズレを防止) app/services/csv_import.pyにヘッダーからの列マッピング推定 (detect_mapping_heuristic) とマッピング解決 (resolve_mapping) を追加app/services/api_ops.pyにreconcile_csv()/import_csv_rows()を追加(request 非依存)
セキュリティ修正(出荷前の敵対的レビュー)
- OAuth Device Flow の同意: 権限を1つも選ばずに「承認」した場合、従来は全権限(書込可)のトークンが発行されていた。Authorization Code フローと同じく何も付与しないよう修正。Device Flow を利用する CLI / TUI 等のクライアントで、承認時にスコープを選択していなかった場合は、必要なスコープを選び直すこと(未選択のまま承認すると何もできなくなる)
- MCP
import_csv: ユーザーが保有しない・無効化済みの勘定科目コードでの起票を拒否。1リクエストあたりの行数上限(1000 件)を追加
REST API (/api/v1) のエンドポイント・レスポンス形式に変更はありません。挙動が変わるのは Device Flow でスコープ未選択のまま承認していた場合のみです。
v4.3.0
マイナーリリース — MCP リモートサーバー (/mcp) を内蔵 し、MCP 仕様の OAuth 2.1 認可 (動的クライアント登録 + Authorization Code + PKCE) に対応。日付初期値がプロセスのタイムゾーンに依存して前日にズレる問題と、確定済み期間の伝票を複写できない不具合も修正。pytest 2051 件 + E2E 66 件が CI で pass。
MCP リモートサーバー内蔵 + OAuth 2.1 認可 (PR #469)
MCP サーバー (/mcp)
- Claude のカスタムコネクタ等の MCP クライアントから接続できるリモート MCP サーバーを内蔵 (Streamable HTTP / JSON-RPC 2.0)。対応プロトコルバージョン:
2025-06-18/2025-03-26/2024-11-05 initialize/ping/tools/list/tools/callに対応 (通知は 202)- 提供ツール (15): 仕訳の一覧・詳細・起票・削除、証憑一覧・画像 (base64)、勘定科目一覧、AI 下書きの一覧・詳細・解析・削除、試算表・損益計算書・月次比較・確定申告集計
tools/listはトークンに付与されたスコープで利用可能なツールのみを返す- 未認証アクセスには
401とWWW-Authenticate: Bearer resource_metadata=...を返し、MCP クライアントが認可サーバーを自動発見
OAuth 2.1 (MCP クライアント向け)
- ディスカバリ:
/.well-known/oauth-protected-resource(RFC 9728) //.well-known/oauth-authorization-server(RFC 8414) - 動的クライアント登録
POST /oauth/register(RFC 7591) - 認可コード + PKCE (
S256必須)GET/POST /oauth/authorize+ 同意画面。リダイレクト URI は登録済みのものと完全一致のみ許可 POST /oauth/tokenにauthorization_code/refresh_tokenグラントを追加 (既存の Device Flow も継続)。POST /oauth/revokeを追加- スコープの絞り込み: 同意画面で付与スコープ (仕訳の閲覧/起票/削除・AI 解析・レポート・科目) をチェックボックスで選択可能。書き込み系スコープを 1 つも選ばなければ自動的に読み取り専用扱い。Device Flow の承認画面も同様
- アクセストークン 1 時間 / リフレッシュトークン 30 日 (更新時にローテート)。認可コードは 60 秒・単回使用。トークンはハッシュのみ保存し、発行済みトークンは「設定 > 接続アプリ」から取り消し可能
共通化・セキュリティ
- REST API のコアロジックを
app/services/api_ops.pyに抽出し、REST API と MCP で共有 - Bearer 認証を
BearerPrincipal(スコープ / read_only) に統一。従来の API キー・Device Flow トークンは全権限相当で互換 - ディスカバリ等で返す絶対 URL を
PUBLIC_BASE_URL(未設定ならSERVER_NAME→WEBAUTHN_ORIGIN) に固定し、Host ヘッダ依存を排除 - 仕訳
sourceを許可リスト (api/journal/cashbook/csv/ofx/web/ai_receipt) で検証し、closing等のシステム予約値を拒否 - MCP ツールの引数エラーで例外詳細を応答に含めず、ログにのみ記録
マイグレーション
052_mcp_oauth:oauth_clients/oauth_authorization_codesテーブルを追加し、oauth_tokensにスコープ・有効期限・リフレッシュ関連カラムを追加 (コンテナ再作成で自動適用)
その他
- docs に MCP サーバー ガイドを追加 (README / docs トップも更新)。テスト
test_mcp.py(26) /test_oauth_authorization_code.py(21) を追加
タイムゾーン修正 (PR #469)
date.today()がプロセスのタイムゾーン (UTC 運用のコンテナ等) に依存し、「0時を過ぎても前日の日付が仕訳の初期値になる」問題を修正。APP_TIMEZONE(既定Asia/Tokyo) 基準で today()/now() を返すapp/services/clock.pyを新設し、各画面・サービスの日付取得を置換 (不正な値は UTC にフォールバック)- 元帳モーダルの複写日付が
new Date().toISOString()(UTC) で前日になる問題を修正 (formatLocalDate()) - 新環境変数:
APP_TIMEZONE/PUBLIC_BASE_URL(.env.example参照)。テストtest_timezone.py(6) を追加
確定済み期間の伝票複写の修正 (PR #470)
- 元帳で確定済み期間など閲覧モードの伝票を複写すると、明細行が
readonlyのままで編集 (科目変更) できない不具合を修正。取得済みの明細データから編集可能な行を再描画する - E2E 回帰テスト
ledger-copy.spec.tsを追加
REST API (/api/v1) の既存エンドポイントのリクエスト/レスポンス形式に変更はありません (OAuth 2.1 エンドポイントは MCP クライアント向けの追加)。source にシステム予約値を指定した場合のみ 400 になります。クライアントの更新は不要です。
v4.2.3
パッチリリース — 公開前セキュリティ監査の指摘を修正し、CSP を導入。未使用の WebDAV 自動取込を撤去。AI 証憑仕訳エージェントの最大ターン数をユーザー設定化し、確定漏れ時のフォールバックで仕訳案を必ず生成するよう改善。
公開前セキュリティ強化 (PR #468)
- Lv2 顧問の書き込みスコープ強制: 仕訳 (フォーム / JSON API / 一括削除)・出納帳・医療費の全経路で、公開科目以外への書き込み・削除を拒否 (共通ヘルパー
find_disallowed_write_codes) - セッション Cookie の強化: HTTPS 運用 (
PREFERRED_URL_SCHEME=https) で Secure を自動付与し、SameSite / HttpOnly を明示 - SECRET_KEY の fail-fast: 既定値・空・短鍵のまま本番起動した場合は起動エラーで停止
- リクエストサイズ上限:
MAX_CONTENT_LENGTH(既定 25 MiB) を設定 - CSP 導入:
script-srcから'unsafe-inline'を排除。インライン script はリクエスト毎 nonce、インラインイベントハンドラ 39 箇所はdata-*+ 委譲ハンドラ (app.js) へ置換。Permissions-Policyヘッダも追加 - アップロード検証: 証憑アップロード全経路で、申告 Content-Type と実体の画像形式 (マジックバイト) の一致を検証 (不一致は 400)
- CSV 数式インジェクション対策: 医療費 CSV / AI利用履歴 CSV の先頭危険文字を無害化
- Host ヘッダ偽装対策:
SERVER_NAME未設定時に本番警告を出力 - コンテナ非 root 実行: Dockerfile で app ユーザー実行に変更
- CodeQL アラート 0 件: 例外文言の sanitize (stack-trace-exposure) と CSP 回帰テストの大文字小文字対応
WebDAV 自動取込の撤去 (PR #468)
- 実運用で未使用の WebDAV 経由レシート画像自動取込を撤去 (UI は v2.6.0 でオプトアウト済み)。通知 (Webhook) 機能は維持
- マイグレーション
051_drop_auto_import_tables:auto_import_sources/processed_filesを drop (コンテナ再作成で自動適用) - CLI
auto-importコマンドを削除
AI 証憑仕訳のターン数設定と確定フォールバック (PR #465)
- 最大ターン数を設定化:
UserAIConfig.max_turnsを追加 (既定 10・1〜50、設定画面/settings/aiで変更可能)。複雑な証憑ではターン数を増やして深掘り、単純な証憑では減らしてコスト削減ができる - 確定漏れの防止: 最終ターンで
submit_journal_suggestionsをtool_choiceで強制呼び出しし、調査だけで終わる確定漏れを防止 - フォールバック仕訳案: それでも確定できない場合は抽出した日付・摘要・金額と既定科目で仕訳案を必ず生成 (空振りなし)
- 元帳照会のまとめ対応:
get_account_ledgerが複数科目 (account_codes) のまとめ照会に対応し、ターン消費を削減 - マイグレーション
050_ai_config_max_turns:user_ai_configsにmax_turnsカラムを追加 (server_default 付きの非破壊変更、コンテナ再作成で自動適用)
REST API (/api/v1) の形式変更なし。クライアントの更新は不要 (画像アップロードは実体形式の検証が追加され、申告形式と一致しない場合は 400)。
v4.2.2
パッチリリース — OpenAI 互換 Responses API (/v1/responses) へのリクエスト形式誤りによる 400 Bad Request を修正。AI 証憑仕訳の解析進捗テキストがスピナー内で回転表示される UI 不具合も修正。
OpenAI 互換 Responses API の修正 (PR #464)
- 400 Bad Request の解消: Responses API へ Chat Completions 形式 (
type="text"/image_urlオブジェクト) を送っていたため 400 になっていた。Responses API 仕様のinput_text/input_image(image_urlは文字列) へ修正 - 適用範囲の拡大: エージェントループだけでなく画像・テキストの
openai_compatibleハンドラ全体でapi_style=responsesを尊重するよう修正 - usage 正規化: Responses API の
input_tokens/output_tokensに対応 (Chat Completions のprompt_tokens/completion_tokensと両対応) - テキスト抽出の共通化:
output_text(message) からのテキスト抽出を共通化 - 診断性向上: HTTP エラー時にレスポンス本文をメッセージへ含め原因を特定しやすく
- E2E モックサーバーが
input_textも解釈するよう更新
解析進捗 UI の修正 (PR #464)
updateProgressがspan:last-childでラベルを取得していたが、.step-icon内の.spinner-borderにマッチし進捗テキストが回転するスピナー内に描画されていた。ラベルに.step-labelクラスを付与し正しく選択するよう修正- REST API (
/api/v1) の変更なし。クライアントの更新は不要
v4.2.1
パッチリリース — AI 証憑仕訳の解析進捗を Server-Sent Events (SSE) でリアルタイム表示する機能を追加。エージェントループのツール呼び出しエラー時の再試行耐性を改善。
AI 証憑仕訳の解析進捗 SSE 表示 (PR #463)
- 解析進捗のストリーミング表示: 証憑解析中のエージェント動作状況 (画像読込・推論・科目検索・元帳照会・仕訳案作成) を Server-Sent Events (SSE) でリアルタイムにブラウザへ配信
- エンドポイント新設:
POST /ai-journal/analyze/stream(text/event-stream)。ワーカースレッドで解析を実行し、進捗イベント (reading/thinking/search/ledger/composing/done/error) を順次送出 - アップロード画面 UI 改善: ReadableStream による進捗受信と進捗インジケーター表示を追加。解析完了時は URL パラメータ経由で
draft_idを引き継ぎ、仕訳案確認画面へ自動遷移 - エージェントループの耐障害性向上: 無効な勘定科目コードで確定を試みた際、バリデーションエラーをエージェントにフィードバックして自律的に再提出を行えるよう修正
- テスト拡充: 多ターンでのツール呼び出し・進捗通知および無効コード再提出フローのテストケースを追加
- REST API (
/api/v1) の変更なし。クライアントの更新は不要
v4.2.0
マイナーリリース — AI 証憑仕訳をツールコール型自律エージェント方式へ刷新。依存関係の更新と、それに伴う PostgreSQL ドライバ変更対応 (日付フィルタ修正) を含む。pytest 2017 件 + E2E 65 件が CI で pass。
AI 証憑仕訳のエージェント化 (PR #462)
analyze_and_suggestを最大 5 ターンの自律エージェントループ (ReAct) に移行。AI が必要に応じてツールを呼び出し、科目・履歴を調べてから仕訳案を確定する- 提供ツール: 勘定科目検索 (
search_accounts/get_account_list)、過去仕訳履歴検索 (search_journal_history)、元帳照会 (get_account_ledger)、仕訳案確定 (submit_journal_suggestions) - OpenAI / llama.cpp / Anthropic / Google Gemini のマルチプロバイダー Tool Calling に対応
- OpenAI 互換 API 向けに API 形式 (Chat Completions / Responses) の選択肢を追加
- カスタム HTTP ヘッダー設定と動的プレースホルダー (
{IK_SESSION_ID},{USER_ID}) 展開に対応 - マイグレーション
049_ai_config_api_style_headers:user_ai_configsにapi_style/custom_headersカラムを追加 (server_default 付きの非破壊変更、コンテナ再作成で自動適用) - REST API (
/api/v1) の変更なし。クライアントの更新は不要
依存関係の更新 (Dependabot #451 #454 #456 #460 #461 を commit 330cd27 で一括適用)
- コンテナ (Dockerfile): python 3.14.7-alpine → 3.14.8-alpine
- Python 依存 (requirements.txt):
- SQLAlchemy 2.0.52 → 2.1.3 / alembic 1.19.1 → 1.20.0 / psycopg2-binary 2.9.12 → 2.9.13 / Werkzeug 3.1.8 → 3.1.9 / python-dotenv 1.2.3 → 1.2.4
- boto3 >=1.43.75 → >=1.43.89 / cryptography >=50.0.0 → >=50.0.1 / gunicorn >=26.0.0 → >=26.2.0
- psycopg[binary] >=3.3.6,<4.0 を新規追加 (下記ドライバ変更対応、commit 6c18bc8)
PostgreSQL ドライバ変更対応 (psycopg2 → psycopg v3)
- SQLAlchemy 2.1 で
postgresql://の既定ドライバが psycopg2 → psycopg (v3) に変更。これに伴う修正:- 仕訳帳・出納帳・証憑一覧の日付フィルタ (
date_from/date_to) をdateオブジェクト比較に修正。文字列のまま比較するとoperator does not exist: date >= character varyingで 500 になっていた (CI e2e で検出、実機 Postgres で再現・修正確認) - 不正な日付文字列はフィルタ無視 (従来は 500) に改善
- 仕訳帳・出納帳・証憑一覧の日付フィルタ (
DATABASE_URLのスキーム変更は不要 (postgresql://のまま psycopg v3 が使われる)。psycopg2-binaryは後方互換のため温存- 回帰テスト 3 件追加 (仕訳帳・出納帳・証憑一覧の不正日付フィルタ)
v4.1.2
パッチリリース — 依存関係の更新のみ (機能・仕様の変更なし)。オープン中の Dependabot PR 5 件 (#446〜#450) を適用。CI 全テスト pass を確認済み。
依存関係の更新 (PR #446〜#450)
- Python 依存 (requirements.txt):
- SQLAlchemy 2.0.51 → 2.0.52 / alembic 1.18.5 → 1.19.1 / python-dotenv 1.2.2 → 1.2.3 (PR #446)
- webauthn >=2.8.0,<3.0 → >=3.0.0,<4.0 (メジャー更新: py_webauthn v3.0.0 — PQC (ML-DSA) 署名検証対応、EDDSA 鍵優先化、CBOR 重複キー拒否。アプリ側コード変更は不要) (PR #447)
- boto3 >=1.43.33 → >=1.43.75 (PR #448)
- Pillow >=12.2.0 → >=12.3.0 (PR #449)
- cryptography >=49.0.0 → >=50.0.0 (pkcs7 復号の Bleichenbacher oracle 修正を含むが本アプリの使用機能には非該当) (PR #450)
v4.1.1
パッチリリース — 依存関係の更新のみ (機能・仕様の変更なし)。オープン中の Dependabot PR 9 件を 1 本にまとめて適用 (PR #445)。ローカル・CI とも全テスト (1999 件) が pass していることを確認済み。
依存関係の更新 (PR #445)
- Python 依存 (requirements.txt):
- SQLAlchemy 2.0.50 → 2.0.51
- alembic 1.18.4 → 1.18.5
- webauthn >=2.7.1 → >=2.8.0
- pyotp >=2.9.0 → >=2.10.0
- boto3 >=1.43.28 → >=1.43.33
- cryptography >=48.0.1 → >=49.0.0
- コンテナ (Dockerfile): python 3.14.5-alpine → 3.14.7-alpine
- GitHub Actions: actions/checkout v6 → v7、actions/setup-python v6 → v7、actions/setup-node v6 → v7
v4.1.0
マイナーリリース — 外部 AI プロバイダーとして「OpenAI 互換 API」に対応。テストカバレッジ改善と、その過程で発見したバグ修正 3 件を含む。
OpenAI 互換 API プロバイダー (PR #443)
- AI 証憑仕訳等の LLM 接続に
openai_compatibleプロバイダーを追加。OpenCode Go 等、OpenAI 互換のエンドポイントを 各ユーザーが自分のベースURL (エンドポイント) と API キー を設定して利用できる (BYOK) user_ai_configs.base_urlカラムを復活 (マイグレーション048_user_ai_base_url、Ollama 時代の定義を踏襲)。既存行は空文字で非破壊- 設定画面 (
/settings/ai) にベースURL入力欄を追加。保存時は WebDAV・Webhook と同じvalidate_external_urlで検証 (プライベート IP / localhost / 非 http(s) を拒否、SSRF 対策) - 画像・テキストの OpenAI 互換ハンドラを新設し、llama.cpp の呼び出しを共通コアへ委譲 (実装の重複を排除)
- 外部 API キー (BYOK) は従来の openai / anthropic / google と同様、無償で利用可能 (llama.cpp の有償ゲートとは非連動)
品質改善・バグ修正 (PR #444)
テストカバレッジを 93% → 97% に改善 (テスト 1838 → 1999 件、85% 未満のファイルゼロ)。カバレッジ計測は CI には組み込まず、ローカル計測で確認。
計測の過程で発見したバグ 3 件を修正:
- Lv2 顧問の勘定科目変更ブロックを実エンドポイント名で判定 —
before_requestが実在しないエンドポイント名 (new/edit/toggle/delete/api_add) で判定しており、Lv2 顧問が JSON API 経由で勘定科目を変更できる状態だった。実エンドポイント (api_create/api_update) で判定するよう修正 - 退会時の FK 違反 500 を修正 —
audit_grant_accountsはaccountsへの FK (fk_aga_account、ondelete なし) を持つが、退会処理で Account 削除より後に AuditGrantAccount を削除していたため PostgreSQL で FK 違反が発生。削除順序を修正 - AI ドラフト削除のストレージ失敗を best-effort 化 — ドラフト削除時にストレージ削除が失敗すると 500 になっていた。失敗時は warning ログを残して処理を継続 (孤立ファイルは storage-audit バッチで回収)
その他
.gitignoreにtmp/を追加 (作業用 plan ファイルの誤コミット防止)
v4.0.0
正式版リリース — v4.0.0-beta 公開後の追加開発を経て正式版へ。TOTP 2FA 導入・電帳法対応の全撤去など、認証・証憑管理まわりの大きな仕様変更を含む。
認証強化 (TOTP 2FA)
- TOTP 2FA を段階導入 (PR1: secret 保管・サービス層・設定 UI (opt-in) → PR2: ログイン時の 2FA ゲート → PR3: パスキー登録時の TOTP 必須化 + 移行バナー)
- パスキー専用ログインモード・非常用リカバリコードを撤去 (PR5) — パスキー紛失時の復旧は TOTP が担い、全ユーザーがパスワードを持つため誰もロックアウトされない。
passkey_only_login/recovery_code_*カラムを物理 DROP (マイグレーション 047) - Discord 互換 Webhook 対応 — 通知 URL を discord.com に限定せず、Discord 互換の自家ホスト Webhook も利用可能に (SSRF 対策は維持)
電帳法対応の全撤去
自家ホスト運用では電子帳簿保存法の真実性要件を満たせないと判断し、v4.0.0-beta で導入した電帳法対応関連機能を撤去:
- 証憑ハッシュ検証機能 (SHA-256 改ざん検知・verify エンドポイント)
- AI コンプライアンスチェック機能 (スキャナ保存要件の AI 判定)
- 証憑の入力期限警告 (受領後67日ルール)
- 訂正削除証跡 (
VoucherAuditLog) — 論理削除を物理削除に戻す - ドキュメント・UI 文言から「電帳法」の謳い文句を除去し中立化
file_hash カラムは画像配信の ETag(304) キャッシュに引き続き利用するため温存。
証憑ストレージクオータの無制限設定
STORAGE_QUOTA_BYTES_DEFAULTに0(または負数) を設定すると容量上限を撤廃できるように対応 (セルフホスト向け)
その他
- 「監査」用語を「顧問」に統一 (ユーザー向け表示・コメント・テスト文言のみ。コード識別子
auditor/audit_grants等は据置) - ナビバーが中間幅 (約992〜1359px) で2行に折り返す崩れを修正
- 依存パッケージ更新 (SQLAlchemy / boto3 / cryptography / qrcode)
claude-review.ymlの CI 設定を修正 (レビューコメントが権限エラーで投稿されない silent 障害の解消・Dependabot PR の恒常的な偽 fail チェックの解消)
技術詳細
- マイグレーション 046 (TOTP 関連カラム追加) / 047 (パスキー専用モード・リカバリコード関連カラムの物理 DROP、不可逆)
- pytest 1899+ 件
v4.0.0-beta
一般公開ベータリリース — セルフホスト前提から「公開 SaaS / 招待制ベータ運用」への大規模拡張。
BILLING_BACKEND 環境変数で「セルフホスト全機能解放」「無償ベース機能のみ」「公開 SaaS (将来)」の 3 モードを切替可能。REGISTRATION_INVITE_ONLY で招待制ベータを開始できる。
公開運用基盤 (Phase 1, 4, 8)
- 法的文書ページ (
/legal/terms,/legal/privacy,/legal/tokushoho) を新設。運営者情報はOPERATOR_*環境変数経由で注入 - 規約再同意フロー —
CURRENT_TERMS_VERSION改訂時に既存ユーザーへ強制再同意を求める - お問い合わせフォーム (
/legal/contact) — 運営者宛通知 + 送信者宛自動返信、CAPTCHA + レート制限 - 退会フロー (
/settings/delete-account) — 全データ削除、Passkey 専用ユーザー対応、電帳法証跡のみ匿名化保持 - 招待トークン制 —
REGISTRATION_INVITE_ONLY=trueでflask invite-createで発行したトークン経由のみ登録可能 (email + user_type の二重バインド)
エンタイトルメント基盤 (Phase 2)
BillingClient抽象インターフェース + 3 実装 (UnlimitedBillingClient/FreeOnlyBillingClient/HttpBillingClientは Phase 3 で実装)BILLING_BACKEND=free_onlyで billing コンテナを立てずに公開ベータ運用可能 (有償機能はすべて拒否)- 有償機能ゲート:
paid_llm(自家ホスト LLM) /voucher_storage/audit_seat/timestamp_seal
ストレージクオータ + 電帳法証跡永続化 (Phase 5)
- 証憑画像の容量を
StorageUsageテーブルで集計 (voucher_storageエンタイトルメント、無償枠 500 MB) INSERT ... ON CONFLICT DO UPDATEで並行 INSERT を原子化、SAVEPOINT パターン退役create_voucher_from_uploadを単一トランザクション化 (旧 2 段 commit ゾンビバグ解消)- Voucher 論理削除化 — 削除後も
voucher_audit_logsを 7 年保管できるよう row を保持 (electronic preservation) flask storage-audit [--fix]— file_size NULL backfill + StorageUsage drift 検出 + 修正
メール配信基盤 (Phase 6)
SmtpMailBackend実装 (STARTTLS / SSL / none の 3 モード)、依存追加なし (smtplib 標準)- 通知テンプレート:
contact_received,contact_received_admin,account_deleted,quota_warning,terms_update,audit_invitation,security_alert,invitation - 容量警告メール自動送信 — 80% / 95% 到達時に通知、70% で状態リセット (ヒステリシス)
セキュリティ強化
- メールヘッダインジェクション対策 (フォームバリデーション + render サニタイズの多重防御)
InvitationToken.mark_usedの TOCTOU をUPDATE WHERE used_at IS NULLで原子化record_upload例外時の TOCTOU 空振りで他ユーザー計上を誤減算するバグを修正- CodeQL py/url-redirection / py/stack-trace-exposure 誤検出 2 件をコード書き換えで解消
ライセンス変更
- v3.x までの いいかんじ™ライセンス (IKL) v1.0 (MIT 互換) → Sustainable Use License v1.0 (n8n と同等)
- セルフホスト・自家用は引き続き自由利用可、商用公開ホスティングは別途要相談
- クライアント (
client-py/client-mcp/client-tui) は MIT のまま
運用ガイド
docs/operations/配下にバックアップ手順書・監視ガイドを新設- README に「公開運用に必要な環境変数」一覧 +
flask invite-create使用例を追記
技術詳細
- pytest 1893 件 (新規多数追加)
- マイグレーション 037-045 を追加 (accepted_terms_version, storage_usage, voucher_file_size, ai_draft_file_size, voucher_deleted_at, voucher_audit_log_nullable, user_quota_warning_level, invitation_tokens, voucher_active_partial_index)
- PostgreSQL partial index で
Voucher.active()クエリを最適化 JournalEntry.active_vouchersを SQL レベル relationship + primaryjoin に- GHA:
build-and-push.ymlは v タグ push で自動ビルド + GHCR push (ghcr.io/nananek/iikanji-kakeibo:4.0.0-beta)
公開ロードマップ進捗
完了: Phase 1 (法的文書), Phase 2 (エンタイトルメント), Phase 4 (公開運用), Phase 5 (ストレージクオータ), Phase 6 (メール基盤), Phase 8 (招待トークン)
未着手: Phase 3 (billing コンテナ — free_only モードで回避可), Phase 7 (TSA タイムスタンプ — 事務処理規程方式で代替可)
v3.13.1
ホットフィックス: llama.cpp ヘルプテキストをユーザー向けに修正
AI 設定画面の llama.cpp セクションに、サーバー管理者向けの内部手順 (llama-server -m model.gguf --port 8080、GitHub リポジトリへのリンク、自前ビルド案内) が残っていたためエンドユーザー向けに書き換え。
- llama.cpp サポート提供時のみセクションを表示するよう条件分岐を追加
- 「サーバーには管理者が用意したローカル LLM が組み込まれています」と利用者目線で説明
- 外部プロバイダーにデータを送らずに済む利点を明記
v3.13.0
外部 AI API 利用履歴の可視化 — APIキー監査用途
OpenAI / Anthropic / Google / llama.cpp 各社のコンソール上の課金・利用データと突合できる「サーバー側の呼び出し履歴」を可視化。APIキーが想定外に使われていないか、本人自身で監査できる。
新機能
- AI 利用履歴ページ (
/settings/ai-usage) — 期間 / プロバイダー / 機能で絞り込み可能な詳細テーブル + ページネーション - 月次推移グラフ — Chart.js による provider 別 token 推移
- CSV エクスポート — BOM 付き UTF-8、Excel 互換
- AI 設定画面の「今月の使用量」サマリ併記 — provider 別件数・トークン合計を表示し詳細ページへ誘導
- 履歴一括削除 — ユーザー本人が自分のログを「DELETE」入力で全削除可能
技術詳細
- マイグレーション 036:
ai_usage_logsテーブル新設 (user_id, provider, model, feature, input/output/total_tokens, latency_ms, status, http_status, created_at) + user_id × created_at の複合インデックス - 8 個の AI プロバイダーハンドラの戻り値を
(parsed_json, usage_dict)のタプルに変更 _call_ai/_call_ai_text共通ラッパーで latency 計測 + 自動ログ記録、HTTP/timeout/parse_error/other_error を分類- DB 書き込み失敗は
try/except + rollbackで完全に握りつぶし、AI 呼び出し本体に波及しない - プロンプト本文・レスポンス本文・API キー・画像本体は保存しない (トークン数とメタデータのみ)
- 監査ユーザーからは参照不可 (本人セッションのみ、
current_user.idで絞込) - pytest 1608 件 (test_ai_usage_log に 26 ケース追加)
v3.12.0
Ollama サポートを終了し llama.cpp に置き換え (サーバー管理者提供型)
ローカル LLM サポートを Ollama から llama.cpp (llama-server) に置き換えました。
位置づけも変更: 「ユーザーが自分のPCで建てる」のではなく「サーバー管理者が任意機能として提供」する形になります。エンドポイントは環境変数 LLAMA_CPP_URL でアプリ全体に注入され、ユーザーは設定画面で「llama.cpp」を選ぶだけで利用可能。
主な変更
ollamaプロバイダーを完全削除。既存provider="ollama"の設定は/settings/aiで警告が出て別プロバイダーへの再登録を促されますllama_cppプロバイダーを新設。エンドポイントはLLAMA_CPP_URL環境変数で指定- ユーザー個別 base_url を廃止 —
user_ai_configs.base_urlカラムをマイグレーション 035 で削除 - 提供停止時の誘導 —
LLAMA_CPP_URL未設定のサーバーでは llama.cpp 選択肢が UI から消える。既存llama_cpp設定ユーザーが AI 機能を使うと「サーバー管理者が提供を停止しました。AI 設定画面で別のプロバイダーに変更してください」と案内 - マイグレーション 035:
user_ai_configs.base_urlカラム削除 - pytest 1582 件
サーバー管理者向け
- llama.cpp を提供したい場合:
LLAMA_CPP_URL=http://llama-server:8080のような形で docker-compose の env に設定 - 提供したくない場合: 環境変数を未設定にすればユーザー UI から選択肢が消える
既存 Ollama ユーザー向け移行
- マイグレーションでデータ書換はしません (DB に
provider="ollama"が残る) - AI 設定画面を開くと警告が表示されるので、別プロバイダーに切り替えてください
v3.11.0
パスキー専用ログインモード + 非常用リカバリコード
セキュリティを最大化したいユーザー向けに、パスワードログインを完全に無効化する「パスキー専用モード」を導入。紛失時の救済として 1 回限り使用のリカバリコードを発行し、リカバリログイン後はパスキー再登録とリカバリ再生成まで他操作をブロックする強制復旧フローを実装。
新機能
- パスキー専用モード (オプトイン) — 設定画面のトグルで有効化。ON 中はパスワードログインが拒否され、パスキー or リカバリコードのみでログイン可能
- 非常用リカバリコード —
ikr_プレフィックス +secrets.token_hex(32)を SHA-256 でハッシュ化して DB 保存。生コードは生成時に 1 回だけ表示され、その後は再表示不可。オフライン保管(紙等)を推奨 - 強制復旧フロー — リカバリコードでログイン後、「新パスキー登録」と「新リカバリコード生成」の両方を完了するまで他のページにアクセスできない(
before_requestで/settings/passkeysへ強制リダイレクト)。両達成でセッションフラグがクリアされ通常モードへ復帰 - 最後のパスキー保護 — パスキー専用モード中は最後の 1 本を削除できない。422 でブロックしリカバリ再生成 + モード解除を促す
POST /auth/recovery— リカバリログイン専用エンドポイント。レートリミット5/minute、列挙対策で失敗メッセージ一律- 設定画面 UI — トグル、前提条件チェックリスト(パスキー >=1 本 + 有効リカバリコード)、強制復旧バナー、コピー/印刷ボタン付き表示画面
- ログイン画面に「リカバリコードでログイン」リンク —
/loginと/login/auditor両方
技術詳細
- マイグレーション 034:
usersに 5 カラム追加 (passkey_only_login,recovery_code_hash,recovery_code_prefix,recovery_code_created_at,recovery_code_used_at) - 既存ユーザーは
passkey_only_login=Falseでデフォルト挙動。破壊的変更なし - API キー / OAuth トークンは独立した認証チャネル。パスキー専用モードの影響を受けない(必要なら個別取消)
- リカバリログインは
remember=False(pending セッションが長期化しないよう) - 生コードは
flash()を使わずrender_template直接埋め込み(Cookie 漏洩防止) - pytest 1578 件、test_recovery_login に 29 ケース追加(モデル 6 + エンドポイント 5 + パスキー専用 8 + 削除ガード 2 + リカバリログイン 5 + ペンディング 4)
注意事項 (必読)
- パスキー専用モード ON 中に パスキーとリカバリコードを両方紛失するとアカウントへ二度とログインできません。リカバリコードは必ず紙等のオフラインメディアに保管してください。
- リカバリコードを再生成すると旧コードは即時無効化されます
v3.10.2
ホットフィックス: 引き落とし仕訳を「カード会社未達」から除外
- CSV と同方向の仕訳のみを未達対象とする — クレカ明細 CSV は出金のみが載るため、毎月の引き落とし仕訳 (CC 未払金を銀行から払う = CC 口座への deposit 方向) を未達として表示するのは不当だった。CSV 行に出現する方向 (withdrawal / deposit) を抽出し、journal_only はその方向の仕訳に限定するよう修正
- 例: CSV が出金のみ → 引き落とし仕訳・返金仕訳は除外。CSV に両方向あれば従来通り両方検出
- pytest 1549 件、サーバー全体カバレッジ維持
v3.10.1
ホットフィックス: CSV 照合 UX
- 「カード会社未達」セクションを CSV 取込範囲内に限定 — v3.10.0 では取得トレランス (±7 日) の範囲全てを未達として報告していたため、前回 CSV で照合済みの古い仕訳が表示されていた。CSV 日付の min〜max 範囲内の仕訳のみ未達として報告するよう修正(マッチング自体は引き続き ±7 日トレランスで動作)
- 「編集」ボタン等の文字化け修正 — v3.10.0 で
title属性とボタンテキストが編集のように Unicode エスケープのまま出力されていた箇所を実テキストに修正 - pytest 1546 件、サーバー全体カバレッジ維持
v3.10.0
CSV 照合 UX 改善: 日付ズレ照合・カード会社未達ハイライト・ワンクリック修正動線
レシート起票主軸の家計簿運用を支えるため、CSV 取込時の照合体験を「検出→可視化→修正」まで一気通貫させた。
日付ズレ照合と段階バッジ
- 日付トレランスを ±7 日まで拡大 — クレジットカードの「利用日 vs 計上日」ズレや銀行明細の到着遅延を許容し、自動マッチ率を改善
- 完全一致 (差 0 日) は緑バッジ「照合済」
- ±1〜3 日は黄バッジ「日付ズレ +N日」(
bi-calendar-eventアイコン) - ±4〜7 日は黄バッジ「要確認 +N日」(
bi-exclamation-triangleアイコン) - 8 日以上は照合対象外 (unmatched)
- 誤マッチ防止の貪欲法マッチング — 同金額の仕訳が複数候補にあるとき、距離 0 を優先確定するグローバル最適化を導入。「同額の仕訳 1 件 × 2 CSV 行」のケースで完全一致側が必ず勝つ
- ワンクリック日付スナップ — 日付ズレ/要確認の matched 行に「日付を CSV に合わせる」ボタン。クリックすると
POST /csv-import/match/snap-dateで仕訳の日付を CSV 日付に UPDATE し、その場で緑バッジに切り替わる (リロード不要)。月次確定済み期間に重なる場合はトーストエラーで拒否 - 照合状態カウンタの細分化 — 「照合済 / 日付ズレ / 要確認 / 複数候補 / 未照合」を独立バッジで表示
カード会社未達ハイライトと修正動線
- 「カード会社未達」セクションを強調表示 — 旧「仕訳のみ」セクションを
bi-credit-card-2-frontアイコン + 警告色カードに刷新。「レシート起票済み・明細未到着」を冒頭に明示- 件数バッジと合計金額バッジを並列表示
- 各行に「経過 N 日」サブバッジ(30 日超は
bg-dangerで「長期未着」表示) - 「仕訳を編集」ボタン (新規タブで
/journal/<id>/editを開く) で修正動線を提供 - 「×」ボタンで個別行を一時的に非表示にし、「非表示を戻す」で復元可能(Alpine ローカルステート、サーバー保存なし)
- 日計サマリーに「うちカード未達」内訳 —
pending_card_amount > 0の日は差額セルに金額サブテキストを併記。差額の原因がカード会社未達であることを直感的に把握可能 - journal_only の経過日数降順ソート — 古い未達ほど目立つよう
内部変更
Reconciliationレスポンスにdate_diff_days/date_band/days_since_journal/is_stale/pending_card_amount/cross_day_matchedを追加(既存フィールドの破壊的変更なし)- 依存更新: Python 3.14.5-alpine、actions/dependency-review-action v5、boto3 >=1.43.8
- pytest 1541 件、サーバー全体カバレッジ維持
v3.8.0
レポート API + OAuth 読み取り専用トークン (MCP 連携の基盤)
- OAuth 読み取り専用トークン — Device Flow 承認時に「読み取り専用で承認」を選択すると、書き込み系エンドポイント (
POST /journals,DELETE /journals/:id,POST /ai/analyze,DELETE /ai/drafts/:id) が 403 で拒否されるトークンを発行- 設定 → OAuth トークンの一覧に「読取専用」バッジを表示
- マイグレーション 033:
oauth_devices/oauth_tokensにread_onlyカラム
- レポート API — 財務分析向け JSON エンドポイントを追加 (新スコープ
reports:read)GET /api/v1/reports/trial-balance— 試算表 (期間範囲指定)GET /api/v1/reports/income-statement— 損益計算書 (科目別内訳付き)GET /api/v1/reports/monthly— 月次収支比較GET /api/v1/reports/tax— 確定申告集計 (社会保険料・医療費控除等)
- MCP サーバー — 別リポジトリ
iikanji-kakeibo-client-mcpを新設。Claude Desktop 等から read-only で財務分析が可能 - 既存トークン・APIキーへの影響なし (
read_only=Falseデフォルト) - pytest 1475件、サーバー全体カバレッジ 94% 維持
v3.7.2
AI 証憑案1クイックアクセプトの htmx 化 + テスト網羅
- AI 下書き一覧の「案1で登録」ボタン押下時にページ全体をリロードせず、対象カードを 0.3 秒フェードでその場消去
- 成功時は
HX-Trigger: showToastで結果トースト、エラー時は 422 +HX-Reswap: noneでカード保持+ danger トースト - 既存の非 htmx fallback (flash + redirect) は維持
- レポート系 26 件のテスト追加 (試算表/B/S・P/L・元帳・税務・月次比較)
- pytest 1452 件
v3.7.1
保守リリース — API 整数シリアライズ修正・テスト網羅・依存更新
- API 修正:
/api/v1/journalsの仕訳明細でdebit/creditを整数で返すよう修正(従来はDecimal→ 文字列としてシリアライズされていた)。TUI /client-py互換性向上 - テスト網羅率向上: 60% → 94%、テスト数 734 → 1421 件(13 PR にわたる強化)
- SSRF 対策
validate_external_url、CAPTCHA 全プロバイダ、AI 証憑(OpenAI/Gemini/Claude/Ollama)、監査権限 (Lv1/Lv2/Lv3)、Passkey 登録/認証、WebDAV 自動取込、確定期間ロック、CSV/OFX/Web 取込、S3 ストレージ、画像配信 ETag 等を網羅
- SSRF 対策
- 依存更新:
- Python 3.12-alpine → 3.14-alpine
- cryptography ≥47.0.0 / flask-limiter 4.1.1 / boto3 1.43.1 / gunicorn 25.3.0
- sqlalchemy 2.0.49 / alembic 1.18.4 / werkzeug 3.1.8 / flask-migrate 4.1.0 / flask-wtf 1.3.0 / email-validator 2.3.0 / psycopg2-binary 2.9.12 / python-dotenv 1.2.2
- GitHub Actions: docker/build-push v7, docker/login v4, docker/metadata v6, actions/setup-python v6, actions/deploy-pages v5
- GitHub 整備: Issue/PR テンプレート、Dependabot、Dependency Review ワークフロー、CodeQL を有効化
v3.7.0
OAuth Device Authorization Grant 認証
- TUI / CLI クライアント向けに OAuth 2.0 Device Authorization Grant (RFC 8628) を実装
POST /oauth/deviceでクライアントが device_code / user_code を取得- ユーザーは
/oauth/deviceでブラウザから user_code を入力して承認/拒否 POST /oauth/tokenでクライアントがポーリングしてアクセストークンを取得- 設定 → OAuthトークンで承認済みクライアントの一覧表示・取り消し
- 既存 Bearer 認証ミドルウェアが APIキー (
ik_*) と OAuthトークン (ikt_*) の両方を受け入れる - OAuthトークンはデフォルトで全スコープを付与
- マイグレーション 032:
oauth_devices,oauth_tokensテーブル追加 - pytest 733件(うち新規 38 件: device_code発行/ポーリング/承認・拒否/期限切れ/Bearer統合/IDOR)
v3.6.0
伝票複写機能
- 元帳の仕訳編集モーダルに「複写」ボタンを追加
- 既存伝票の内容(摘要・明細行)をコピーして新規伝票を作成
- 複写時は日付を今日に変更、伝票番号は新規採番、証憑は引き継がない
- 確定済み期間の伝票からも複写可能
POST /journal/create-apiエンドポイント新設(モーダルからのJSON新規作成)- pytest 695件(うち新規6件)
v3.5.6
セキュリティ強化 — Dependabot対応 + Code Scanning修正
- Flask 3.1.0→3.1.3, Werkzeug 3.1.3→3.1.6, cryptography >=46.0.6 に更新(CVE-2025/2026対応)
- 仕訳一括削除のリダイレクトURLにオープンリダイレクト対策を追加
- Passkey登録画面のエラー表示をtextContentに変更(XSS対策)
- GitHub セキュリティ機能を有効化(Dependabot alerts/updates, Secret scanning, Code scanning, Private vulnerability reporting)
- pytest 689件
v3.5.5
照合を行単位マッチングに変更
- 同一仕訳の複数CC行(例: ¥12,000×4 + ¥610×2 + ¥1,840)を個別にCSV行とマッチングするように変更
- 合算方式ではCSV側の個別金額とマッチしないケースを修正
used_entry_idsをused_line_idsに変更し、同一entry_idの異なる金額行を個別にマッチ可能に- pytest 689件
v3.5.4
照合の複数行合算修正 + 日計ホバーdiff改善
- 同一仕訳内で支払元口座が複数行に分かれるケースで、行を合算してからマッチングするように修正
- 日計ホバーdiffを左CSV/右仕訳の2列diff形式に変更、金額降順で並列表示
- ポップオーバーにマウスを移動してもスクロール可能(150msタイマーで消え防止)
- pytest 689件
v3.5.2
照合の集計修正 + 日計ホバーdiff + AI照合バグ修正
- 日計サマリーの仕訳金額集計を credit(出金)/debit(入金) に分離し、元帳の金額と正しく対応
- 日計サマリーの差異行にマウスホバーすると、その日のCSV明細と仕訳明細のdiffをポップオーバー表示
- AI照合で
_extract_jsonの二重呼び出しによるAttributeErrorを修正 - pytest 688件
v3.5.1
照合の日付マッチングを完全一致に変更
- 照合の日付許容範囲を±5日から完全一致(±0日)に変更
- クレカ明細の日付が正であるため、日付ズレのある取引は unmatched / journal_only として検出
- 日付ズレの取引はAI照合で摘要テキストの類似性から候補提案可能
- pytest 688件
v3.5.0
照合機能の大幅強化 — 日計サマリー・逆方向照合・AI照合 + 科目コピーバグ修正
照合機能
find_matches()の返り値を拡張し、csv_results/journal_only/daily_summaryを返す dict 形式に変更- 日計サマリー: 日付ごとにCSV件数/合計 vs 仕訳件数/合計を比較、差額・件数差をハイライト表示。合計行で全体の過不足を一目で確認可能
- 逆方向照合(journal_only): CSVにマッチしなかった仕訳を「仕訳のみ(CSV未照合)」セクションに表示。記帳済みだがCSVに出てこない取引を可視化
- 同日同額の回数差異検出: CSV3件・仕訳2件のように件数が異なるケースを件数差・金額差で検出
- AI照合: 金額不一致でマッチしなかった行に対し、AIが摘要テキストの類似性・日付の近さ等から照合候補を提案。確信度バッジ付き(0.7以上=緑、0.3-0.7=黄)
バグ修正
- 科目コピーが更新APIに送信されるバグを修正 — コピーモードで
editingCodeに値が残り、新規作成ではなく既存科目の更新APIにPOSTされていた問題を修正
テスト
- 科目管理APIテスト34件(新規21件: 残高API、バリデーション、残高振替、無効化/有効化)
- AI証憑仕訳テスト29件(新規: upload/drafts/delete/review/quick_accept異常系)
- 照合エンドポイントテスト13件(新規: reconcile/ai-reconcileエンドポイント)
- 照合サービステスト37件(+13件: エッジケース、フォーマットヘルパー、AI照合追加)
- pytest 689件
v3.4.1
AI証憑仕訳 — 案1クイックアクセプト
- 下書き一覧に「案1で登録」ボタンを追加。レビュー画面を開かずに、AIの第1候補をワンタップで仕訳登録
- 従来の「仕訳を作成」ボタンは「編集」ボタンとして横に配置(レビュー画面で内容を確認・修正したい場合に使用)
- 下書きカードに案1の借方・貸方科目名を表示(例: 食費 → 現金)。複合仕訳はスラッシュ区切り
- 提出済みロック科目・確定済み期間のチェックは従来通り実施。エラー時はレビュー画面にリダイレクトして手動修正可能
- pytest 589件(うち新規5件)
v3.4.0
青色申告決算書対応 — 科目マッピング・決算書レポート・事業所得折りたたみ
所得税の青色申告決算書(一般用)に対応。決算書の各欄に勘定科目をマッピングし、損益計算書・貸借対照表の形式でレポートを出力する機能を追加。将来の不動産所得用決算書にも対応可能な設計。
科目マッピング設定
TaxFormFieldマスタテーブルに青色決算書(一般用)の全66欄を定義(マイグレーション 030)TaxFormMappingテーブルでユーザーの勘定科目を決算書の欄に紐付け- 決算書欄から9000番台の事業用勘定科目を一括作成し、自動でマッピングを設定
- 設定画面(
/settings/tax-form)で欄ごとのマッピングを管理 - 1科目は1つの決算書種別にのみ所属可能(二重計上防止)
決算書レポート
- 決算書レポート画面(
/reports/tax-form)で損益計算書(第1面)と貸借対照表(第4面)を表示 - 小計欄(売上原価・差引金額・所得金額など)を自動計算
- 貸借対照表は期首残高・期末残高を別列で表示
- 未マッピングの欄は「(未設定)」と表示
家計簿レポートとの連携
- 損益計算書(P/L)で事業科目を「事業所得」1行に折りたたみ表示(事業収入 - 事業費用)
- 月次比較レポートでも事業所得行を収入セクションの先頭に表示
- マッピング未設定時は従来通り全科目を個別表示
複数決算書種別対応
- 設定・レポート画面に「一般用」「不動産所得用」のタブナビを追加
form_typeパラメータで種別を保持し、一括作成・保存後もタブ状態を維持- 不動産所得用の欄定義は今後のマイグレーションで追加予定
データモデル
- マイグレーション 030:
tax_form_fields+tax_form_mappingsテーブル新設、一般用66欄をシード - マイグレーション 031: form_type スコープ対応のアプリロジック変更
- Account の複合PK
(user_id, code)をForeignKeyConstraintで参照
テスト
- 青色申告決算書テスト 51件(マッピングCRUD、一括作成、小計計算、B/S期首期末、事業所得計算、P/L折りたたみ、月次比較、ユーザー分離、form_type排他制御)
- pytest 584件(うち新規51件)
v3.3.0
月次着地予想の予測方法選択
- 変動費の月末着地予想に3つの計算方法を選択可能に
- 日割按分(従来方式): 経過日数で按分して月末着地を予測
- 28日移動平均: 過去28日間の日平均 × 残り日数で予測(月初でも安定)
- 曜日別平均: 過去4週間の曜日別パターンで残り日数を予測
- 表示設定画面(
/settings/display)から切り替え可能 - 固定費・随時費の計算には影響なし
- 過去データがない科目は日割按分にフォールバック
- テスト 533件(うち新規16件)
v3.2.3
明細取込の source 修正 + 仕訳帳ソースバッジ追加
- CSV/OFX/Web取込で作成される仕訳の
sourceを正しく設定(csv/ofx/web)- 従来は全て
cashbookになっていたため、仕訳帳の編集リンクが出納帳編集に誘導されていた
- 従来は全て
- 仕訳帳にCSV/OFX/Webソースバッジを追加表示
- E2Eテストの安定性改善(並列テスト実行時のロケーター修正)
v3.2.2
照合画面に全選択/全解除ボタン追加
- 照合タブの取込チェックボックスに全選択/全解除ボタンを追加
- 照合済み・候補選択済み行は操作対象外(disabled)
v3.2.1
CSV取込: 入出金1列モード廃止 + マイナス値自動反転
amount_mode: "single"オプションを廃止、常に入金列/出金列の2列モードに統一- マイナス値は自動反転(出金列に -500 → 入金 500 として扱う。クレカのキャッシュバック等)
parse_amount()が符号を保持するように変更(abs()削除)- AI列検出プロンプトを更新: クレカCSVの利用額を出金列として検出するよう指示
v3.2.0
CSV列マッピングプロファイル + 取込UI改善
CSV列マッピングの自動化
- 口座ごとにCSV列マッピング設定を自動保存、2回目以降は復元
- 初回はAIで列マッピングを自動検出(AI設定済みの場合)
- CsvColumnProfile モデル + マイグレーション 029
取込確認画面のバグ修正
- Account PK 移行後、
default_income_id/default_expense_idが文字列になりtojsonが HTML属性を破壊していた問題を修正(CSV/OFX/Web 3画面)
取込UI改善
- アップロード画面を段階的表示に変更: 口座選択 → ファイル入力 → 送信ボタン(CSV/OFX/Web)
- 出納帳のCSV取込リンクを削除(ナビバーに集約済み)
- アップロード画面のキャンセルボタンを削除
インポート履歴の安全性向上
- 損益振替(自動生成)バッチの削除ボタンを非表示
- 確定済み期間に含まれるバッチの削除ボタンを無効化
テスト
- CSV取込 E2E テスト 6件追加(フルフロー、プロファイル復元、確認画面)
- CSV取込ユニットテスト 53件(モデル、CRUD、AI検出、ビュー統合)
- 521 pytest + 63 E2E(うち6件新規)
v3.1.0
出納帳3タブ化 — 支出/収入/資金移動 + マイナス金額対応
- 出納帳の取引種類を支出/収入のドロップダウンから3タブ(支出・収入・資金移動)に変更
- 各タブで適切な科目のみ表示: 支出→費用科目、収入→収益科目、資金移動→BS科目
- 資金移動タブで同一科目選択時にクライアント/サーバー両方でバリデーション
- 既存仕訳の編集時に科目タイプから取引種類を自動検出(3方向)
- マイナス金額を受付可能に(返金・費用戻りなどを記録可能、借方・貸方が自動反転)
v3.0.0
Account 複合PK移行 — 科目コードをプライマリーキーに
accounts テーブルの PK を auto-increment id から (user_id, code) 複合キーに変更。API・フォーム・内部ロジックの全レイヤーで account_id(整数)を account_code(文字列)に置換。
破壊的変更
- REST API: 仕訳明細の
account_id(int) →account_code(str) - Python クライアント:
JournalLine.account_id→JournalLine.account_code - DBマイグレーション (
028_account_composite_pk):accounts.id廃止、FK を持つ 3 テーブル(journal_entry_lines,audit_grant_accounts,balance_caches)のカラム構造が変更
変更内容
- Account モデル:
id(Integer PK) →(user_id, code)複合 PK - JournalEntryLine:
account_id→account_user_id+account_code(複合 FK) - AuditGrantAccount: 同上
- BalanceCache:
account_id→account_code(user_idは既存) - サービス層 7 ファイル: 関数名・引数名を
_id→_codeに統一 - ビュー層 11 ファイル: URL パラメータ・フォーム処理・JSON レスポンス
- テンプレート 15 ファイル + JS:
account.id→account.code全置換 - IDOR セキュリティテスト 7 件追加(科目一覧・元帳・試算表・API の他ユーザー分離検証)
- 71 ファイル変更、pytest 499 件 + E2E 55 件
アップグレード手順
- コンテナを再作成(マイグレーション 028 が自動実行)
- Python クライアントを v3.0.0 に更新
v2.16.1
科目コードのモバイル表示を統制
- モバイル(576px以下)で科目コードが表示されていた5箇所を修正:
- 勘定科目管理テーブルのコード列に
d-mobile-noneを適用 - 総勘定元帳の科目selectからコードを除外(デスクトップ時のみJSで付与)
- 総勘定元帳カードヘッダーのコードを
d-mobile-noneで囲む - AI証憑仕訳の仕訳モードで
fullName: trueを削除(モバイル判定が効くように) - 公開科目管理のラベルのコードを
d-mobile-noneで囲む
- 勘定科目管理テーブルのコード列に
- 科目コードのモバイル非表示E2Eテストを新規追加(10テスト)
- pytest 492件 + E2E 55件
v2.16.0
既存仕訳への証憑添付機能
- 元帳の仕訳編集モーダルに「証憑追加」ボタンを追加 — 出納帳・CSV取込・手動入力など、AI証憑仕訳以外で登録した仕訳にも後から証憑画像を添付可能に
- AI設定がある場合は添付時に自動で2つのチェックを実行:
- 電帳法コンプライアンスチェック — 画像品質・必須情報の視認性・書類妥当性を判定(pass/warn/fail)
- 仕訳整合性チェック — 証憑の日付・金額・摘要と既存仕訳データを照合し一致度をバッジ表示
- AIチェック失敗時も添付はブロックされない(警告表示のみ)
- 証憑は SHA-256 ハッシュ付きで永続保存、VoucherAuditLog に操作記録
create_voucher_from_upload()サービス関数で直接アップロード→Voucher作成を一括処理- pytest 492件 + E2E 45件
v2.15.2
元帳の逆順表示を改善
- 逆順(新しい順)表示時、合計行を上部・前期繰越を下部に配置するよう変更
- 合計行の colspan 不足(9列に対して8セル)を修正 — 摘要列のセルが欠落していた
- Jinja2 マクロ化で合計行・前期繰越行の重複を排除
- pytest 482件 + E2E 45件
v2.15.1
設定ナビのドロップダウン廃止
- ナビバーの設定ドロップダウンメニューを廃止し、設定トップへの直接リンクに変更
- 項目が増えてドロップダウンが長くなったため、設定トップページのカード一覧をハブとして利用する方式に統一
- E2Eテスト更新(ドロップダウン→直接リンク検証)
- pytest 482件 + E2E 45件
v2.15.0
CSV明細照合モードの追加 + 表示設定E2Eテスト拡充
- CSV照合モード — CSV取込確認画面(Step 3)に「照合」タブを追加。クレジットカード明細などのCSVと、レシートやAI仕訳で日々記帳した既存仕訳を突合して差異を可視化
- 金額一致+日付±5日で既存仕訳と自動マッチング
- 照合済み(緑)/ 複数候補(黄)/ 未照合(灰)で色分け表示
- 複数候補はドロップダウンで選択可能
- 未照合行のみ科目を選択してそのまま取込可能
- バッチクエリで N+1 回避、金額インデックスで高速ルックアップ
- 照合サービス (
app/services/reconciliation.py) —find_matches()マッチングロジック - 照合API (
/csv-import/reconcile) — 照合タブからの遅延ロード用 JSON API - reconcileMode Alpine コンポーネント — 取込/照合タブ切り替え・照合結果管理
- 表示設定E2Eテスト — 設定ページの表示・保存・復元を6テストケースで検証
- pytest 482件 + E2E 49件
v2.14.0
表示設定の追加(試算表・元帳のデフォルト期間+元帳ソート順)
- 表示設定ページ — 設定 > 帳簿 に「表示設定」を追加
- レポートのデフォルト期間 — 試算表・元帳を開いたときの初期表示期間を「全期間」または「当月のみ」から選択可能
- 元帳のソート順 — デフォルトのソート順を「古い順(標準)」または「新しい順」から選択可能
- 元帳画面にソートトグルボタン — 元帳画面上で古い順/新しい順をワンクリックで切り替え
- 期間バーのクリック/ドラッグ操作時はユーザー設定を上書きせず URL パラメータが優先
- User モデルに
preferencesJSON カラム追加(マイグレーション 027) - E2E テスト: settings テストに表示設定カード検証追加、login リトライ強化
- pytest 470件 + E2E 43件
v2.13.2
tojson 属性バグを全テンプレートで修正
月次確定データがある場合、|tojson 出力のダブルクォートが x-data="..." HTML属性を壊し、日付や仕訳明細が表示されなくなるバグを修正。
- AI証憑仕訳レビュー画面 — 日付が空になり仕訳登録できない問題
- 仕訳帳編集画面 — 既存仕訳の編集時に明細行が表示されない問題
- 出納帳フォーム — 月次確定チェックが動作しない問題
- CSV/OFX/Web取込確認画面 — 取込データが表示されない問題
- 勘定科目管理画面 — 科目一覧が表示されない問題
- 全
|tojsonを<script>タグ経由に移動して根本的に解消 - E2E テスト 18 件に拡充(仕訳編集画面テスト追加)
- pytest 470件 + E2E 43件
v2.13.1
仕訳モードのバグ修正・タブ保持・E2Eテスト追加
- 仕訳モードの JSON 属性破壊バグを修正 — Jinja2
|tojson出力のダブルクォートが HTML 属性x-data="..."を壊し、仕訳明細が表示されない問題を修正 - 仕訳案候補切替時のタブ保持 — 仕訳モードで別の仕訳案候補を選んでも、タブ選択(かんたん/仕訳モード)を維持
- AI 証憑仕訳 E2E テスト 15 件追加 — モック AI サーバーによるアップロード〜解析〜レビュー〜登録の全フローをテスト
- pytest 470件 + E2E 40件
v2.13.0
AI証憑仕訳の改善 — 電帳法チェック表示・仕訳モード修正・セキュリティテスト
電帳法コンプライアンスチェック
- pass 時の表示追加 — チェック通過時に「電帳法チェックOK」メッセージを表示
- (i) 詳細ボタン — pass/warn/fail いずれの場合もチェック詳細をモーダルで確認可能に
- 下書き一覧に pass バッジ — 緑色の「OK」バッジを追加
レビュー画面の改善
- 「下書き保存」ボタン追加 — レビュー画面から直接下書き保存が可能に(API再呼び出し不要)
- 「やり直す」に確認ダイアログ — AI解析結果が削除される旨を警告
- 仕訳モード修正 — AI提案の勘定科目名が表示されない問題を修正
- POST エラー時のテンプレート変数不足を修正 — 月次確定チェッカーが正常に動作するように
テスト
- 証憑画像アクセス権限のセキュリティテスト追加(12件)
- AI仕訳モードのテスト追加(9件)
- pytest 470件
v2.12.1
UI バグ修正 — 一括選択バー・PWA 画像プレビュー
- 仕訳帳「0件選択中」常時表示を修正 — Bootstrap
d-flexの!importantが Alpine.jsx-showを上書きしていた問題を解消 - PWA で証憑画像を外部ブラウザで開けるように —
<a target="_blank">をwindow.open()に変更し、スタンドアロンモードでもシステムブラウザが起動
v2.12.0
画像配信最適化 — キャッシュ・サムネイル・Gunicorn
証憑画像の読み込み速度を大幅に改善。
- HTTP キャッシュ —
Cache-Control: immutable+ ETag/304 で、2回目以降のアクセスはネットワーク転送ゼロ - サムネイル自動生成 — アップロード時に Pillow で 400px サムネイルを生成。一覧画面の転送量を数MB→数十KBに削減
- send_file() ストリーミング — ローカルストレージはメモリに全読みせずファイルから直接配信。Range リクエスト対応
- S3 presigned URL — S3 使用時は Flask を経由せずブラウザが直接ダウンロード
- serve_image() ヘルパー — 3つの画像エンドポイントの配信ロジックを統一
- Gunicorn 本番サーバー — 2ワーカーで AI 処理中も画像配信がブロックされない(
FLASK_DEBUG=1時は Flask dev server 維持) flask generate-thumbnails— 既存画像の一括サムネイル生成コマンド- pytest 445件 + E2E 25件
アップグレード手順
- コンテナを再ビルド・再作成(Pillow / Gunicorn が新規依存)
- 既存画像のサムネイルを生成:
docker exec -w /app <container> flask generate-thumbnails
v2.11.0
htmx + Alpine.js によるフロントエンド刷新
手動 DOM 操作・インライン <script> 約 1,600 行を htmx の宣言的属性と Alpine.js のリアクティブコンポーネントに段階的に移行。ビルドシステムなし(CDN のみ)。
- Phase 0: 基盤 — htmx 2.0 / Alpine.js 3.x を CDN で導入。CSRF トークン自動付与、htmx → Toast 連携
- Phase 1: 月次確定チェック統合 — 3テンプレートに重複していた
checkClosedPeriod()を AlpinefiscalPeriodCheckerコンポーネントに統合 - Phase 2: 簡単なフォーム — cashbook/medical フォームのインライン JS 全廃
- Phase 3: リスト削除の htmx 化 — 出納帳・設定画面の
fetch()+ DOM 操作をhx-post/hx-confirmに置換 - Phase 4: 仕訳帳一覧 — 個別削除を htmx 化、一括選択バーを Alpine
bulkSelectコンポーネントに移行 - Phase 5: 科目管理・科目選択モーダル — IIFE 約 400 行を Alpine
accountEditor/accountSelectorに移行 - Phase 6: 仕訳明細行 —
addLine()/updateTotals()の重複を AlpinejournalLinesに統合。仕訳フォーム・AI レビュー画面で共用 - Phase 7: 取込確認画面 —
import_confirm.js(499 行)を AlpineimportConfirmに全面移行。CSV/OFX/Web の 3 テンプレートを共通パーシャルに統合 - Phase 8: ドキュメント整備 — CLAUDE.md にフロントエンドパターンを文書化、陳腐化した参照を更新
- pytest 431件 + E2E 25件
v2.10.3
証憑画像のライトボックスプレビュー
- 証憑画像をモーダルでプレビュー表示 — PWA モードで
target="_blank"による画面遷移で戻れなくなる問題を解消。全ての証憑画像リンクを Bootstrap モーダルによるライトボックスに統一 - 仕訳編集画面・仕訳帳一覧・元帳・証憑一覧の全箇所で対応
- モーダル内「別タブで開く」ボタンで従来動作も可能
- pytest 431件 + E2E 25件
v2.10.2
証憑プレビューの共通化・元帳モーダル対応
- 証憑プレビューを共通JS関数に統合 —
renderVoucherPreview()をapp.jsに定義し、仕訳編集画面と元帳モーダルで共通利用 - 元帳モーダルに証憑プレビュー表示 — 元帳の仕訳編集モーダルでも証憑画像を表示
- pytest 431件 + E2E 25件
v2.10.1
仕訳編集画面の証憑プレビュー・削除警告
- 仕訳編集画面に証憑プレビュー表示 — 証憑ありの仕訳を編集する際、フォーム上部に証憑画像を表示。クリックで別タブに拡大表示
- 証憑付き仕訳の削除警告 — 仕訳帳(個別・一括)、元帳モーダルで証憑が紐づく仕訳を削除しようとした際に、証憑が未紐付けになる旨の確認ダイアログを表示
- pytest 431件 + E2E 25件
v2.10.0
電子帳簿保存法(スキャナ保存)対応
AI証憑仕訳でアップロードしたレシート画像を電帳法の要件に沿って保存・管理する機能を追加。
- Phase 1: 証憑の永続保存と仕訳紐付け —
Voucherモデルを新設し、AI 仕訳登録時に証憑画像を永続保存。仕訳と 1:N で紐付け、仕訳削除時も証憑は孤立証憑として保持 - Phase 1.5: AI コンプライアンスチェック — 画像品質(ピンぼけ・影・切れ)、必須情報の視認性(日付・金額・取引先)、入力期限を AI が自動判定。下書き一覧・レビュー画面にコンプライアンスバッジを表示
- Phase 2: 証憑一覧画面(電帳法検索要件対応) — 日付・金額・取引先(摘要)で証憑を検索できる一覧画面を新設。REST API にも証憑一覧・画像取得エンドポイントを追加
- Phase 3: 改ざん防止 — 保存時に SHA-256 ハッシュを記録し、Web UI・API からいつでも検証可能。仕訳削除による孤立化を
VoucherAuditLogに自動記録 - Phase 4: 入力期限チェック — レシート日付から約2ヶ月+7日(67日)を超過した証憑に警告バッジを表示。AI 下書き一覧・レビュー画面・証憑一覧・API の全箇所で対応
- GitHub Pages に証憑 API ドキュメントを追加 — 証憑一覧・画像取得・ハッシュ検証・操作ログの API リファレンス
- pytest 426件 + E2E 25件
v2.9.0
Playwright E2E テストの CI 統合
- GitHub Actions に E2E ジョブ追加 — PostgreSQL サービスコンテナ + Flask バックグラウンド起動で Playwright (Firefox) E2E テストを CI で自動実行
- global-setup の CI 対応 —
process.env.CIを検出し、CI では Python を直接実行(ローカルは従来通り docker compose) - RATELIMIT_ENABLED 環境変数対応 —
RATELIMIT_ENABLED=falseでレート制限を無効化可能に - pytest 337件 + E2E 25件
v2.8.0
証憑画像のオブジェクトストレージ移行
電子帳簿保存法対応に向け、証憑画像の保存先を PostgreSQL (LargeBinary) からファイルシステム/S3互換ストレージへ移行。
- ストレージ抽象レイヤー — ローカルファイルシステムと S3 互換ストレージ (AWS S3 / MinIO / Cloudflare R2) を環境変数
STORAGE_BACKENDで切替可能 - マイグレーション安全チェック — Docker 環境でローカルストレージ使用時、ボリュームマウントされていなければマイグレーションを中断しデータ消失を防止
- 既存データ自動移行 — マイグレーション
023で既存のimage_dataをストレージに書き出し、DB には参照キー (image_key) のみ保持 - pytest 357件
アップグレード手順
docker-compose.ymlにボリュームマウントを追加してからコンテナを再作成すること(マウントなしではマイグレーションが中断します):web: volumes: - ./volumes/vouchers:/app/data/vouchers # 追加- コンテナ起動時に
flask db upgradeが自動実行され、既存の証憑画像がファイルシステムに書き出されます - S3 を使う場合は
.envにSTORAGE_BACKEND=s3と S3 関連の環境変数を設定してください
v2.7.2
セキュリティ修正・テスト拡充・バグ修正
- セキュリティ: パストラバーサル脆弱性を修正 —
load_import_data()/delete_import_data()でos.path.join()にユーザー由来のキーをそのまま渡しており、../../を含むキーで一時ディレクトリ外のファイル(.json拡張子付き)を読み取り・削除できる可能性があった。os.path.realpath()による正規化と_TEMP_DIR配下の検証を追加して修正 - セキュリティテスト70件追加 — 認証フロー(27)・IDOR(12)・入力検証(12)・CSRF(9)・セキュリティヘッダー(7)・レート制限(3)
- fix: チェックボックス単体クリック時の二重トグルを修正 —
drag_select.jsのmousedownハンドラで手動設定した後、clickイベントのデフォルト動作でチェックが戻る問題をpreventDefault()で防止 - fix: AI科目推定が設定済み行をスキップして使えない問題を修正 — 科目未設定行は自動で対象、設定済み行はチェック時のみ上書き推定するように変更
- Playwright E2E ドラッグ選択テスト15件追加
- pytest 337件 + E2E 25件
v2.7.0
Ollama (ローカルAI) 対応
- AIプロバイダーに Ollama を追加(OpenAI互換API経由)
base_url設定でカスタムエンドポイントに対応(Tailnet上の別マシン等)- APIキー不要で利用可能
- UserAIConfig に
base_urlカラム追加(マイグレーション 022)
v2.6.1
Worker サービス削除
- WebDAV UI オプトアウトに伴い worker サービスを docker-compose / Dockerfile / CI から削除
v2.6.0
設定メニューリファクタリング
/settings/に設定トップページを新設(カード型レイアウト)- ヘッダードロップダウンを帳簿・AI連携・セキュリティの3カテゴリーに整理
- 勘定科目をトップナビから設定メニュー内に移動
- 「AI API設定」を「外部AI」に改名(APIキー管理との混同を解消)
- 「自動取込」を「通知」に改名、WebDAVソース管理UIをオプトアウト
- Playwright E2Eテスト(Firefox)を導入
- pytest 256件 + E2E 10件
v2.5.6
AI証憑仕訳に定型プロンプト機能を追加
- 設定画面から定型プロンプト(カスタムプロンプト)を設定可能に
- 「QUICPay = JCB CARD W」「摘要は店名+品目」等のルールをAIに毎回自動で指示
- 画像解析(Round 1)と仕訳案生成(Round 2)の両方に定型プロンプトを注入
v2.5.5
Discord通知に完了マーク・URLボタン追加
- Discord Webhook通知にAI証憑仕訳画面へのURLボタンを追加
- 仕訳登録後、Discord通知メッセージに完了マークを自動付与(Webhook API編集)
AIDraftにdiscord_webhook_url/discord_message_idカラムを追加
v2.5.4
AI下書き自動削除 & テスト追加
- AI仕訳下書きを仕訳登録後に自動削除(done ステータス廃止)
- csv_import テスト(53件)、ofx_import テスト(15件)、balance_cache テスト(15件)を追加
- テスト合計 249件
v2.5.3
ドキュメント修正
- docs のクライアントリポジトリ名 typo 修正(
kakiebo→kakeibo)
v2.5.2
テスト拡充
- 税務集計テストを重点拡充(合計 123テスト)
v2.5.1
確定申告集計のバグ修正
- 確定申告集計から損益振替仕訳を除外
- 医療費・住民税カテゴリの除外処理を修正
v2.5.0
GitHub Pages ドキュメントサイト
- GitHub Pages でドキュメントサイトを公開
- REST API リファレンス・Python クライアントガイドを整備
v2.4.1
セキュリティ強化
- レート制限・ページネーション・入力検証の強化
v2.4.0
AI証憑仕訳 REST API
- AI証憑仕訳の REST API エンドポイントを追加
key_prefixカラム修正
v2.3.0
Discord通知改善
- Discord通知に下書き一覧へのリンクを追加
v2.2.0
WebDAV接続テストUI
- WebDAV接続テストUIを追加
- FK制約修正
v2.1.2
Alpine化・セキュリティ強化
- Docker イメージを Alpine ベースに移行
- セキュリティ強化
v2.1.1
Dockerマルチステージビルド
- web/worker の Docker イメージを分離(マルチステージビルド)
v2.1.0
自動取込機能
- WebDAV ストレージ(Nextcloud等)からレシート画像を定期取得
- AI で自動仕訳して下書きに保存
- Discord Webhook 通知
v2.0.0
セキュリティ強化・CAPTCHA対応
- CAPTCHA 対応(hCaptcha / reCAPTCHA / Turnstile / mCaptcha)
- セキュリティ全般の見直し
- README 見直し
v1.6.x
- v1.6.9 — セキュリティ強化(XSS・オープンリダイレクト・IDOR・セキュリティヘッダー・レート制限)
- v1.6.8 — 収益・費用の集計を正味額に修正、docker-compose 分離
- v1.6.7 — 元帳モーダル削除・AI仕訳確定済み期間チェック
- v1.6.6 — セッション永続化・AI科目推定機能
- v1.6.5 — 確定済み期間チェック改善(全年度対応・年度開設制限)
- v1.6.4 — 確定済み期間の警告表示・フォームデータ保持
- v1.6.3 — モバイル sticky カラム修正・仕訳フォームエラー時のデータ保持
- v1.6.2 — 医療費控除の自動計算を削除
- v1.6.1 — DEV 環境バッジ追加
- v1.6.0 — 貸借対照表・損益計算書・残高キャッシュ・損益振替期間
v1.5.0
API スコープ・仕訳 CRUD・ブックマークレット
- API スコープ(read/create/delete)を導入
- 仕訳の閲覧・削除エンドポイントを追加
- Web取込用ブックマークレット「明細ピッカー」を追加
v1.4.0
REST API
- 仕訳起票の REST API を追加(API キー Bearer 認証)
v1.3.x
- v1.3.4 — AI証憑仕訳にコメント欄・一時保存機能を追加
- v1.3.3 — モバイルレスポンシブ対応
- v1.3.2 — ドラッグ選択のモバイル修正、CLAUDE.md 追加
- v1.3.1 — バグ修正(btn-group レイアウト・マイグレーション ID)、CI 対応
- v1.3.0 — 年度制限・インポート確認画面の大幅強化(ソート・日付編集・sticky ツールバー・元入金変換)
v1.2.x
- v1.2.3 — マイナー修正
- v1.2.2 — PWA 対応(manifest / Service Worker / アプリアイコン)
- v1.2.1 — README 更新(監査アカウント・月次確定・プロジェクト構成)
v1.2
監査用アカウント機能
- 税理士・公認会計士向け監査用アカウント(Lv1 集計のみ / Lv2 税務科目 / Lv3 本人同等)
- 提出ロック・科目隠蔽・部分編集
- 個人/監査用の分離ログイン
v1.1
- 月次試算表で P/L 科目の年初来残高を表示
v1.0
初版リリース