<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ollama-web.git, branch v0.5.2</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.2</id>
<link rel='self' href='https://git.takashi-2521.com/ollama-web.git/atom?h=v0.5.2'/>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/'/>
<updated>2026-08-26T10:29:40+00:00</updated>
<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>
<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>release: prepare version 0.5.0</title>
<updated>2026-08-16T10:38:42+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-16T10:38:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=e45e2dbf160445891ec765ffb3e0e14f106cfb56'/>
<id>urn:sha1:e45e2dbf160445891ec765ffb3e0e14f106cfb56</id>
<content type='text'>
Document the project as a lightweight personal Ollama Web UI that runs directly on the host OS without Docker or a virtual machine, and align the English and Japanese highlights.

Add a Keep a Changelog-style history and record the clipboard fallback, final tool-round disabling, packaging metadata compatibility, and runtime asset inclusion fixes delivered in v0.5.0.

Synchronize the package and runtime version at 0.5.0, remove duplicate setuptools license metadata, and explicitly include templates, static assets, translations, prompts, and bundled fonts in built distributions.

Validated with 115 tests, Ruff, mypy, uv lock checking, sdist/wheel builds, and wheel-installed application initialization.
</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>fix(ui): コピー失敗時のエラーハンドリングを追加</title>
<updated>2026-08-16T10:07:08+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-16T10:07:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=239c206659d02f5e89b3f54aa050aff6a71dcdd5'/>
<id>urn:sha1:239c206659d02f5e89b3f54aa050aff6a71dcdd5</id>
<content type='text'>
Clipboard API が利用できない非セキュアコンテキストや、ブラウザの権限拒否で writeText が失敗した場合に、未処理例外となってコピーボタンが無反応に見える問題を修正。

navigator.clipboard.writeText の存在を事前に確認し、非同期処理を try/catch で囲むことで同期例外と Promise の拒否をまとめて処理する。成功時はチェックマーク、失敗時は警告マークを一時表示し、詳細はコンソールへ記録する。アラートは表示しない。
</content>
</entry>
<entry>
<title>version0.4.5</title>
<updated>2026-08-02T07:20:04+00:00</updated>
<author>
<name>tanaka takashi</name>
<email>isazaka@gmail.com</email>
</author>
<published>2026-08-02T07:20:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.takashi-2521.com/ollama-web.git/commit/?id=28b2684da9cf8e48cff811b9f5b35997815cb530'/>
<id>urn:sha1:28b2684da9cf8e48cff811b9f5b35997815cb530</id>
<content type='text'>
</content>
</entry>
</feed>
