diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 09e4e38..08c1bab 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -22,6 +22,10 @@ updates: directories: ["/backend", "/deploy"] schedule: interval: monthly + ignore: + # Caddy 2.11 cancels proxied requests after 60 s; see deploy/lb.Dockerfile + - dependency-name: caddy + versions: [">= 2.11"] - package-ecosystem: docker-compose directories: ["/", "/deploy"] diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cc7ed6..57db7ce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,10 @@ Notable changes to Knowledge Hubs. The format follows [Keep a Changelog](https:/ - Backend dependencies upgraded to current releases, including FastAPI 0.142 (Starlette 1.7), Pydantic 2.13, sentence-transformers 6, NumPy 2 and Celery 5.6. - JWTs are handled by PyJWT instead of python-jose, and passwords by `bcrypt` directly instead of passlib. Existing password hashes and sessions keep working. - Tokens without an expiry are refused. -- Docker base images: Caddy 2.11, Node 22. +- Docker base images: Caddy 2.10, Node 22. + +### Fixed +- Reloading a page whose path is also an API path (such as `/knowledge`) made the app show "Failed to load knowledge": the browser reused the cached page for the app's data request. The web server now sends `Vary: Accept`. ### Removed - Unused dependencies: `openai`, `tiktoken`, `aiofiles`, `python-jose`, `passlib`. diff --git a/README.md b/README.md index 9447a7c..b04db03 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,21 @@ A **local-first knowledge base** for teams. It turns meeting notes, retros, decision logs, documents, web pages and transcripts into structured knowledge (decisions, risks, lessons, how-tos) that you can review, search, track over time and question in plain English. +![GraphRAG answering "What do we use for domain events now, and why did it change?" with citations, and flagging the superseded Kafka decision](docs/images/graphrag.png) + + + + + + + + + + +
Decision log: each decision's status, tags, and the older decision it supersedes or amendsReview queue: extracted items waiting to be accepted, edited or rejected
Decision log: status, history and what replaced whatReview queue: nothing reaches GraphRAG until someone accepts it
+ +Screenshots use fictional demo data. + - **Runs on your machine.** FastAPI backend, Angular frontend, **ArcadeDB** as the only data store, and local AI: one of three LLMs run by [Ollama](docs/local-models.md) plus sentence-transformers embeddings. There are no cloud AI providers. - **Personal and group spaces.** Everyone has a private space and can create or join groups that share one. A switcher in the nav picks where you're working. - **Decisions have a history.** A decision can supersede, reverse or amend an older one, and risks can be mitigated or actually happen. The app tracks each item's status and shows how it evolved. diff --git a/deploy/Caddyfile b/deploy/Caddyfile index 08ac3f2..b17af08 100644 --- a/deploy/Caddyfile +++ b/deploy/Caddyfile @@ -22,6 +22,10 @@ # Some API prefixes are also app routes (/knowledge, /connectors, /groups, # /admin/users): a browser page load (GET accepting HTML) gets the app. + # Vary: Accept keeps the browser from answering the app's own API request + # for such a path with the page it cached on a reload, and vice versa. + @shared path /knowledge* /connectors* /groups* /admin* + header @shared Vary Accept @page { method GET header Accept *text/html* diff --git a/deploy/lb.Dockerfile b/deploy/lb.Dockerfile index be75e51..bf003e0 100644 --- a/deploy/lb.Dockerfile +++ b/deploy/lb.Dockerfile @@ -9,6 +9,8 @@ RUN npm ci COPY frontend/ ./ RUN npx ng build --configuration production -FROM caddy:2.11-alpine +# 2.10, not 2.11: Caddy 2.11 cancels proxied requests after 60 s (499), which +# breaks GraphRAG answers that take longer on a CPU-only machine +FROM caddy:2.10-alpine COPY --from=frontend /src/dist/frontend/browser /srv COPY deploy/Caddyfile /etc/caddy/Caddyfile diff --git a/docs/images/decisions.png b/docs/images/decisions.png new file mode 100644 index 0000000..682cb05 Binary files /dev/null and b/docs/images/decisions.png differ diff --git a/docs/images/graphrag.png b/docs/images/graphrag.png new file mode 100644 index 0000000..b6dacb9 Binary files /dev/null and b/docs/images/graphrag.png differ diff --git a/docs/images/review.png b/docs/images/review.png new file mode 100644 index 0000000..3901b94 Binary files /dev/null and b/docs/images/review.png differ