From 004aa1f4f4a1191c14c9ff814e2a64117325e372 Mon Sep 17 00:00:00 2001 From: Izzetee Date: Thu, 9 Jul 2026 17:15:15 +0200 Subject: [PATCH] chore(docs): rename CLAUDE.md to AGENTS.md and record Azure Foundry fixes - Rename CLAUDE.md -> AGENTS.md (history preserved) and generalize the title to "Project Context for AI Coding Agents" so it isn't tool-specific. - Update references to the renamed file in .gitleaks.toml and CONTRIBUTING.md. - CHANGELOG: document the recent Azure AI Foundry fixes under [Unreleased]: provider/model-config persistence (bind-mount + in-place SaveProviders), live provider propagation via SetProviders, Anthropic thinking-block parsing, refusal handling, and start-stack.sh rebuild. --- .gitleaks.toml | 2 +- CLAUDE.md => AGENTS.md | 2 +- CHANGELOG.md | 5 +++++ CONTRIBUTING.md | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) rename CLAUDE.md => AGENTS.md (99%) diff --git a/.gitleaks.toml b/.gitleaks.toml index 5ce2148..c5e6c6a 100644 --- a/.gitleaks.toml +++ b/.gitleaks.toml @@ -10,7 +10,7 @@ '''SECURITY\.md''', '''CONTRIBUTING\.md''', '''CHANGELOG\.md''', - '''CLAUDE\.md''', + '''AGENTS\.md''', '''\.github/copilot-instructions\.md''', ] diff --git a/CLAUDE.md b/AGENTS.md similarity index 99% rename from CLAUDE.md rename to AGENTS.md index 078f7bb..fb45aa9 100644 --- a/CLAUDE.md +++ b/AGENTS.md @@ -1,4 +1,4 @@ -# PiPiMink — Project Context for Claude +# PiPiMink — Project Context for AI Coding Agents ## What this project is diff --git a/CHANGELOG.md b/CHANGELOG.md index efb1aaf..705c939 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). ### Fixed +- Azure AI Foundry: provider and per-model config changes made in the Console UI now persist to `providers.json`. `SaveProviders` used an atomic temp-file + rename, which fails with `EBUSY` on single-file Docker bind mounts; it now falls back to an in-place write. `providers.json` and `.env` are bind-mounted read-write in the compose files so UI changes survive container rebuilds. +- Provider config changes now propagate to the running LLM client immediately. The client held a provider snapshot from startup; a mutex-guarded `SetProviders()` is now invoked from every provider mutation handler, so chat, routing, and benchmark use the current config instead of a stale map (previously tagging worked but chat/benchmark hit the wrong endpoint). +- Anthropic response parsing now scans all content blocks: extended-thinking models (e.g. Claude on Azure Foundry) emit a `thinking` block before the `text` block, which previously caused "missing/empty content" failures during tagging, chat, and benchmarking. +- Anthropic policy refusals (`stop_reason=refusal`) are now surfaced as a distinct, clear error instead of a misleading "empty content" message. +- `scripts/start-stack.sh` now rebuilds the app image (`up -d --build`) so code changes are actually deployed to the running container. - Analytics latency time series query using incorrect `date_trunc` unit strings (`"1 hour"` → `"hour"`) --- diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4500928..2adaf24 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,7 +33,7 @@ This project was built with the help of AI coding tools (Claude Code, GitHub Cop - **Understand what you submit.** Review every line of AI-generated code before committing. You are responsible for the correctness, security, and maintainability of your contribution — not the AI. - **Test thoroughly.** AI-generated code can look plausible while being subtly wrong. Run the full test suite (`go test ./...`) and verify edge cases manually. -- **Respect the architecture.** AI tools sometimes ignore existing patterns or invent unnecessary abstractions. Follow the conventions described in this guide and in `CLAUDE.md`. +- **Respect the architecture.** AI tools sometimes ignore existing patterns or invent unnecessary abstractions. Follow the conventions described in this guide and in `AGENTS.md`. - **Do not blindly paste.** If you do not understand why a piece of generated code works, do not include it. Ask questions in the PR instead. - **Disclose when helpful.** You are not required to label every AI-assisted line, but if a PR contains substantial AI-generated logic, a brief note in the PR description helps reviewers calibrate their review.