<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ollama-web.git, branch v0.5.4</title>
<subtitle>A lightweight personal Ollama Web UI with web search, PDF attachments, and MCP tools.
</subtitle>
<id>https://git.takashi-2521.com/ollama-web.git/atom?h=v0.5.4</id>
<link rel='self' href='https://git.takashi-2521.com/ollama-web.git/atom?h=v0.5.4'/>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/'/>
<updated>2026-09-14T09:59:19+00:00</updated>
<entry>
<title>release: prepare version 0.5.4</title>
<updated>2026-09-14T09:59:19+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-09-14T09:59:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=fbda00608e52eef6a0e7b01ce831b1e6c3666909'/>
<id>urn:sha1:fbda00608e52eef6a0e7b01ce831b1e6c3666909</id>
<content type='text'>
Dependabotで報告された21件の脆弱性を解消した依存更新を、0.5.4のセキュリティパッチリリースとして確定する。

- pyproject.tomlとollama_web.__version__を0.5.4へ更新
- uv.lockのルートパッケージversionを正規のuvコマンドで同期
- CHANGELOGへ2026-09-14付けの0.5.4 Securityセクションを追加
- Pillow、pypdf、h2、hpack、cryptographyの更新内容を記録
- Unreleasedおよび0.5.4のGitHub比較リンクを更新

検証:
- GitHub Dependabot: open 0件、fixed 21件
- pytest: 150 passed
- Ruff: passed
- mypy: 30 source files passed
- JavaScript syntax check: passed
- uv lock --check --offline: passed
- source distribution and wheel build: passed
- installed wheel assets, application initialization, and /login endpoint verified
</content>
</entry>
<entry>
<title>fix(deps): Dependabotで報告された脆弱性を解消</title>
<updated>2026-09-14T09:49:13+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-09-14T09:49:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=09a490b7ad1cbf3df456aab1a6417800e91559f1'/>
<id>urn:sha1:09a490b7ad1cbf3df456aab1a6417800e91559f1</id>
<content type='text'>
openのDependabot alert 21件が要求するfirst patched versionへ、uvの正規コマンドで依存パッケージを更新する。公開依存契約を不必要に変更しないため、pyproject.tomlは維持してlockfileだけを更新する。

更新内容:
- Pillow 12.2.0から12.3.0へ更新し、alert #1から#13を解消
- pypdf 6.14.2から6.16.1へ更新し、alert #16から#21を解消
- h2 4.3.0から4.4.1へ更新し、alert #15を解消
- h2 4.4.1の必須条件に合わせてhpack 4.1.0から4.2.0へ更新
- cryptography 49.0.0から50.0.0へ更新し、alert #14を解消

互換性確認:
- Python 3.10以上というプロジェクト要件と各更新版のRequires-Pythonが整合
- Pillowとpypdfで利用中のAPIに非互換な変更がないことを確認
- h2/hpackはddgsからhttpx[http2]を経由する依存制約内
- cryptographyはmcpからpyjwt[crypto]を経由する依存制約内

検証:
- PyJWTとcryptography 50.0.0によるRS256署名・検証スモーク成功
- pytest: 150 passed
- Ruff: passed
- mypy: 30 source files passed
- JavaScript syntax check: passed
- uv lock --check --offline: passed
- source distribution and wheel build: passed
- git diff --check: passed
</content>
</entry>
<entry>
<title>release: prepare version 0.5.3</title>
<updated>2026-09-13T05:44:53+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-09-13T05:44:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=e1e4036acfb73fede43167264dc26b4e7713c423'/>
<id>urn:sha1:e1e4036acfb73fede43167264dc26b4e7713c423</id>
<content type='text'>
0.5.3 の公開に向けて、プロジェクトおよび実行時のバージョン情報を更新する。

- pyproject.toml と ollama_web.__version__ を 0.5.3 に更新
- uv.lock のルートパッケージバージョンを同期
- CHANGELOG に 2026-09-13 付けの 0.5.3 セクションを追加
- Unreleased と 0.5.3 の GitHub 比較リンクを更新
- MCP 画像・音声 artifact、vision 非対応モデル向け通知、モバイルのセッション削除修正をリリース対象として確定

検証:
- pytest: 150 passed
- ruff check src tests
- mypy src
- node --check src/ollama_web/static/app.js
- uv lock --check --offline
- sdist / wheel ビルドおよび wheel インストール後の起動確認
</content>
</entry>
<entry>
<title>fix(ui): スマホでセッションを削除できるようにする</title>
<updated>2026-09-13T05:36:46+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-09-13T05:36:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=b24aa19ad22f59556fc7bbb63c58836799239588'/>
<id>urn:sha1:b24aa19ad22f59556fc7bbb63c58836799239588</id>
<content type='text'>
セッション削除ボタンが通常時はdisplay:noneで、li:hover時だけ表示されていたため、持続的なhoverを持たないスマートフォンでは安定して操作できなかった。モバイル幅、hover非対応、coarse pointer環境ではボタンを常時表示し、44x44pxのタップ領域とtouch-actionを設定する。

表示修正後もタップ後の処理がネイティブwindow.confirmと複数のclickリスナーに依存していたため、削除とセッション選択をsession-list上の単一イベント委譲へ統合する。削除ボタンを先に判定して行選択とサイドバー閉鎖へ伝播しないようにした。

ネイティブ確認ダイアログを既存modalスタイルに沿ったアプリ内確認ダイアログへ置き換える。キャンセル、背景タップ、Escape、フォーカス復帰に対応し、DELETE実行中の二重送信を防止する。通信失敗はネイティブalertではなくダイアログ内のaria-live領域へ表示する。

削除ボタンへbutton typeとaria-labelを明示し、確認ダイアログへdialog semanticsと日英のキャンセル文言を追加する。CHANGELOGと、タッチ向けCSSのカスケード順・サイズ・ネイティブconfirm非依存を確認する回帰テストも更新する。

Validation: 150 tests passed; ruff check passed; node --check src/ollama_web/static/app.js passed; git diff --check passed.
</content>
</entry>
<entry>
<title>feat(multimedia): MCP画像・音声artifactの安全な表示経路を追加</title>
<updated>2026-09-13T04:35:03+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-09-13T04:35:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=f2d24cb7d437ad099291262d7c1b021809cd66ae'/>
<id>urn:sha1:f2d24cb7d437ad099291262d7c1b021809cd66ae</id>
<content type='text'>
MCP Tool結果をテキストと型付きartifactへ分離し、画像・音声のbase64をMIME、サイズ、件数のallowlistで検証する。annotations.audienceを反映し、ユーザー向けartifactだけをセッションへ保存してSSEにはメタデータのみを公開する。

画像はvision capabilityが明示されたモデルだけへ渡し、非対応時は既存の多言語プロンプト機構による固定通知へ置き換える。MCP生成音声とユーザー添付音声はOllamaへ送らず、誤デコードしたテキストやbase64がモデル入力へ混入しないポリシーに統一する。

保存メディア用の認証済み同一オリジン配信ルートを追加し、セッションスコープ、MIME allowlist、nosniff、private/no-store、Rangeリクエストを適用する。UIはMCP由来HTMLを使わずDOM APIでimgとaudio controlsを生成し、CSPへmedia-src selfを追加する。

web_searchは文字列メタデータだけを返す既存仕様を維持する。scrape_urlとsearch_and_fetchは画像・音声・動画レスポンスを拒否し、search_and_fetchの対象拡張子を明示的allowlistへ変更して標準Webツールをテキスト専用の契約に揃える。

責務境界と導入しない過剰対策をdocs/multimedia.mdへ記録し、README、ツール仕様、CHANGELOGを更新する。MCP artifact変換・永続化、vision分岐、音声非送信、認証、Range配信、MIME偽装拒否をテストで追加確認した。

Validation: 148 tests passed; ruff check passed; mypy src passed; node --check src/ollama_web/static/app.js passed.
</content>
</entry>
<entry>
<title>release: prepare version 0.5.2</title>
<updated>2026-08-26T10:29:40+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-26T10:29:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=f36cc852cc1792bd624ff701fb2476d0b43fa1af'/>
<id>urn:sha1:f36cc852cc1792bd624ff701fb2476d0b43fa1af</id>
<content type='text'>
Finalize the 0.5.2 changelog for lossless PDF pagination, session-scoped attachment continuation, deduplicated fetched files, and token-only cross-conversation resume.

Synchronize the project metadata, runtime package version, and uv lock entry at 0.5.2. Refresh the exceptiongroup typing-extensions marker emitted by the current uv resolver, and move changelog comparison links to the v0.5.2 release boundary.

Validated with uv lock --check, the complete 132-test suite, Ruff, mypy for 30 source files, source and wheel builds, packaged runtime assets, and application initialization from the installed wheel.
</content>
</entry>
<entry>
<title>build: uv.lockを追加して依存関係を固定</title>
<updated>2026-08-26T10:25:08+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-26T10:25:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=43856e7a2fea93d4986b13743f0aa558652a2cd8'/>
<id>urn:sha1:43856e7a2fea93d4986b13743f0aa558652a2cd8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(tools): PDFの会話間継続をトークン単独で再開可能にする</title>
<updated>2026-08-26T10:23:40+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-26T10:23:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=b495dde6810882efc8481ebebd22ff26a6afb902'/>
<id>urn:sha1:b495dde6810882efc8481ebebd22ff26a6afb902</id>
<content type='text'>
長いPDFを複数会話に分けて取得する際、モデルがurl_or_pathを省略したり、過去の添付IDや古い継続トークンを組み合わせたりして、先頭または以前のページへ戻る問題を改善する。PDFカーソル自体は正しく進んでいたため、汎用LLM層やセッション形式を変更せず、pdf_to_textの入出力契約だけを明確化する。

- continue_fromを自己完結した再開情報として扱い、PDFソース、ページ番号、ページ内文字位置をトークンから復元

- 継続時はurl_or_pathを省略可能にし、競合する値が渡されてもトークン内のソースを優先

- Ollama生成スキーマでもurl_or_pathを任意にして、continue_from単独のツール呼び出しを許可

- 未完了結果へ最新トークン、旧トークンの置換、単独再開、上限時の保持を表すPDF専用メタデータを追加

- 継続メタデータを固定キーと真偽値で表現し、会話言語に依存しない形式へ統一

- 無効トークン時は先頭再試行を禁止し、直前の最新トークンを再利用する機械可読情報を返却

- メタデータをpage-info側へ配置して本文連結を汚さず、結果全体を6000文字以内に再調整

- llm.py、チャット処理、セッションJSON、scrape_url、search_and_fetch、MCPツールは変更しない

検証:

- pytest: 132 passed

- ruff check: passed

- mypy src: passed

- 1463891.1463912.pdf: 12ページ、52577文字をcontinue_from単独の10回で完全再構成

- 指定PDFの最大ツール結果長はメタデータ込み5992文字
</content>
</entry>
<entry>
<title>fix(tools): PDFページングを損失なしカーソル方式へ再設計</title>
<updated>2026-08-23T08:28:39+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-23T08:28:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=33f6b4dbb69e9366e312a8b44dbed9d22e7cba5b'/>
<id>urn:sha1:33f6b4dbb69e9366e312a8b44dbed9d22e7cba5b</id>
<content type='text'>
PDF本文をページ単位で抽出した後に文字数上限で切断しつつ、継続位置だけ次ページへ進めていたため、ページ末尾が復元不能になる問題を修正する。ツール側の本文上限とLLM側の結果上限の不整合、25ページの処理上限、添付経路での継続情報欠落も共通契約で解消する。

- 共通PageResultと、メタデータ込みの結果上限内で本文量を決めるフォーマッターを追加

- v2トークンにPDFのページ番号とページ内文字位置を保持し、v1トークンの読み取り互換性を維持

- pdf_to_text、scrape_url、search_and_fetchを返却済み本文だけカーソルが進む方式へ統一

- max_pdf_pagesを文書全体ではなく1呼び出しの処理上限として扱い、長い単一ページと26ページ目以降の継続取得に対応

- attachment:&lt;file_id&gt;をセッション限定で解決し、既存添付も保存済みプレビューではなく元PDFから再解析

- Web取得ファイルをセッションとURL単位で重複排除し、HTMLおよびテキスト経路の全文ページングも維持

- 正常なページング結果の後段切断を禁止し、結果上限・コンテキスト予算・ラウンド上限では未取得状態を明示

- 日英プロンプト、UIメッセージ、ツールスキーマ、変更履歴を実装へ同期

- 実PDF、30ページ超、長い単一ページ、旧トークン、セッション分離、コンテキスト境界の回帰テストを追加

検証:

- pytest: 130 passed

- ruff check src tests: passed

- mypy src: passed

- c2144.pdf: 19ページ、抽出本文46015文字（ページ区切り込み46051文字）を8回で重複・欠落なく完全再構成
</content>
</entry>
<entry>
<title>release: prepare version 0.5.1</title>
<updated>2026-08-16T12:52:23+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-16T12:52:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=68969bfbeea68ded7ff863d229760562072f910b'/>
<id>urn:sha1:68969bfbeea68ded7ff863d229760562072f910b</id>
<content type='text'>
Finalize the 0.5.1 changelog with the logging lifecycle, search error diagnostics, and streaming chat cleanup delivered since v0.5.0.

Synchronize the project metadata and runtime package version at 0.5.1, and update changelog comparison links for the new release boundary.

Validated with uv lock --check, the complete 118-test suite, Ruff, mypy, source and wheel builds, packaged runtime assets, and application initialization from the installed wheel.
</content>
</entry>
</feed>
