<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ollama-web.git/src/ollama_web/llm.py, 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-13T04:35:03+00:00</updated>
<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>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>refactor: streamline chat flow and improve diagnostics</title>
<updated>2026-08-16T12:34:13+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-16T12:34:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=a9f083785a7e961a291e5366013fc89c0b801b01'/>
<id>urn:sha1:a9f083785a7e961a291e5366013fc89c0b801b01</id>
<content type='text'>
Store server.log inside OLLAMA_WEB_DATA_DIR and manage the ollama-web file handler through the Starlette lifespan. Close and detach the handler on shutdown to prevent duplicate records and Windows file locks when applications are recreated.

Stop converting DuckDuckGo provider failures into empty search results. Record a query-safe traceback, re-raise the original exception, and let ToolRegistry expose the exception type and message as a tool error without adding or spoofing Referer headers.

Remove the unused non-streaming chat_with_tools implementation and its private helpers. Move capability, options, standard tool, MCP tool, and final tools=[] regression coverage onto the production streaming path.

Add integration coverage for data/server.log placement, handler cleanup, repeated lifespans, and provider 403 diagnostics. Update the Unreleased changelog entry.

Validated with 118 tests, Ruff, mypy, diff checks, real DuckDuckGo searches, successful result-page fetches, and observable 401/403 responses from sites that reject automated retrieval.
</content>
</entry>
<entry>
<title>fix(llm): 上限到達後のツール呼び出しを無効化</title>
<updated>2026-08-16T10:24:33+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-16T10:24:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=8ce6627324c258fead9164b1532241a698284fc4'/>
<id>urn:sha1:8ce6627324c258fead9164b1532241a698284fc4</id>
<content type='text'>
ツールラウンド上限到達後の最終回答生成でも effective_tools を渡していたため、コメント上の「ツールなしで最終回答」と実際のリクエストが一致していなかった。モデルが最終段階で再び tool_calls を生成できる状態も残っていた。

非ストリーミング版とストリーミング版の最終Ollama呼び出しを tools=[] に変更する。通常ラウンドでは従来どおり標準ツールとMCPツールを公開し、上限到達後だけ既存のツール結果から回答をまとめるようにする。

標準ツールとMCPツールの回帰テストを追加し、通常ラウンドにはツール定義が渡ること、最終呼び出しでは空になること、ツール実行・上限通知・最終delta・doneイベントが維持されることを検証した。全115テスト、Ruff、mypy、および実モデルによるWeb検索と複数回スクレイピングの確認を完了している。
</content>
</entry>
<entry>
<title>scrape_url / pdf_to_text / search_and_fetch はページング（継続トークン方式）に対応</title>
<updated>2026-08-02T06:50:41+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-02T06:50:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=515f96a7779f117a7e37f854de2ded99160d0c76'/>
<id>urn:sha1:515f96a7779f117a7e37f854de2ded99160d0c76</id>
<content type='text'>
mypy 6エラー修正
</content>
</entry>
<entry>
<title>ollama側のレスポンスが空の場合に1回リトライする処理に変更</title>
<updated>2026-07-09T12:52:16+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-07-09T12:52:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=1729e1c399a41b4128b5dd7ef0286fae128e6157'/>
<id>urn:sha1:1729e1c399a41b4128b5dd7ef0286fae128e6157</id>
<content type='text'>
トークン数の累積計算処理削除
</content>
</entry>
<entry>
<title>停止ボタンの不具合修正(停止ボタンを押すと送信できなくなるバグを修正)</title>
<updated>2026-07-09T10:52:03+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-07-09T10:52:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=77eef27cad9b0e5b0551d5a8ea9485779ee7dc18'/>
<id>urn:sha1:77eef27cad9b0e5b0551d5a8ea9485779ee7dc18</id>
<content type='text'>
LLMがメッセージ生成途上で画面スクロールしにくい問題を修正
チャットメッセージバルーンをコピペ対応
トークン消費量をリングゲージで可視化(表示タイミングに不具合あり)
</content>
</entry>
<entry>
<title>一般設定の追加(UI/Ollama設定) settings.jsonに設定を保存 UIから言語設定対応 Ollama設定でシステムプロンプト, temperature, コンテキスト長などのパラメータを設定可能</title>
<updated>2026-06-27T08:00:42+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-06-27T08:00:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=6a362d58a952c2de0d3097b03b212388a6bc35e4'/>
<id>urn:sha1:6a362d58a952c2de0d3097b03b212388a6bc35e4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>マルチ言語対応。MCP設定画面の言語切り替え表示にバグあり</title>
<updated>2026-06-27T05:49:12+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-06-27T05:49:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=f93822cebf6258c3a31e03745183aa2c8bb56f4d'/>
<id>urn:sha1:f93822cebf6258c3a31e03745183aa2c8bb56f4d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>MCP toolsの名称による実行制限処理の削除。</title>
<updated>2026-06-26T17:47:14+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-06-26T17:47:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=3f1bf8c0e8ba31d65c5a56041e4a9f89e87aa65e'/>
<id>urn:sha1:3f1bf8c0e8ba31d65c5a56041e4a9f89e87aa65e</id>
<content type='text'>
</content>
</entry>
</feed>
