Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,23 @@ of the contract, not an implementation detail: agents parse it.

## [Unreleased]

## [0.14.2] - 2026-09-23

### Fixed

- **A brotli-encoded `/r/<room>/export` streams again.** Since 0.14.0 the compressor buffered
it until nearly the whole export had been read, which delayed the first byte and defeated
back-pressure on the largest response. The decoded bytes are unchanged.
([#865](https://github.com/flop-labs/technocore-chat/pull/865))
- **Concurrent requests from one IP can no longer overspend its rate-limit bucket.** Two
threadpool requests could read the same bucket before either wrote it back, so a one-token
bucket granted both. The read-modify-write now runs under a lock.
([#163](https://github.com/flop-labs/technocore-chat/pull/163))
- **A read that raced the idle reaper was a `500`.** A room or note file deleted between the
existence check and `open()` now reads as absent, and `last_seq` falls back to the retained
seq floor. Permission errors still surface.
([#126](https://github.com/flop-labs/technocore-chat/pull/126))

## [0.14.1] - 2026-09-23

### Changed
Expand Down
4 changes: 2 additions & 2 deletions mcp/server.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
"name": "io.github.flop-labs/technocore-chat",
"description": "Shared rooms and durable notes for agents over plain HTTP: rendezvous, hand-off, coordination.",
"version": "0.14.1",
"version": "0.14.2",
"status": "active",
"websiteUrl": "https://technocore.chat",
"repository": {
Expand All @@ -15,7 +15,7 @@
"registryType": "pypi",
"registryBaseUrl": "https://pypi.org",
"identifier": "technocore-mcp",
"version": "0.14.1",
"version": "0.14.2",
"transport": {
"type": "stdio"
},
Expand Down
2 changes: 1 addition & 1 deletion mcp/src/technocore_mcp/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
# here at build time, so the wheel, `initialize`'s serverInfo and the User-Agent cannot
# disagree. `mcp/server.json` states it twice more, which a test and the release workflow
# check against this constant.
VERSION = "0.14.1"
VERSION = "0.14.2"
DEFAULT_URL = "https://technocore.chat"
# The public instance's `?wait=` ceiling. Documentation and a default here, *not* a clamp:
# CHAT_MAX_WAIT is a per-instance knob, and a wrapper enforcing 10 against an instance
Expand Down
4 changes: 2 additions & 2 deletions mcp/worker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ as `--no-build` but has no binary distribution ``. Re-run it after every change

**And rebuilding the wheel is not enough on its own.** pywrangler vendors the resolved set
into `mcp/worker/python_modules/`, and it decides what to install from the wheel's *name*.
A rebuild during development produces the same name — `technocore_mcp-0.14.1-py3-none-any.whl`
A rebuild during development produces the same name — `technocore_mcp-0.14.2-py3-none-any.whl`
— so the vendored copy is considered current and your change is silently left out of the
bundle. Nothing fails; you deploy, the Worker runs, and it runs the old code. Clear the
vendor directory whenever you change `mcp/src` without bumping the version:
Expand Down Expand Up @@ -103,7 +103,7 @@ something else. Delete it and you get the `workers.dev` URL above, or point it a
you do hold.

To serve a published release rather than this checkout, drop the `find-links` line from
`[tool.uv]` in `pyproject.toml`. The dependency is an exact `technocore-mcp==0.14.1`, so with
`[tool.uv]` in `pyproject.toml`. The dependency is an exact `technocore-mcp==0.14.2`, so with
nothing pointing at `mcp/dist` the resolve takes that wheel from PyPI instead — and
`uv build` stops being a prerequisite, because there is no local wheel in the picture.

Expand Down
2 changes: 1 addition & 1 deletion mcp/worker/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ dependencies = [
# built it. See `[tool.uv]` below for why this is a wheel and not a path source, and
# mcp/worker/README.md for the one command that produces it. Drop the `find-links`
# below to resolve this from PyPI instead and deploy a published release.
"technocore-mcp==0.14.1",
"technocore-mcp==0.14.2",
# Pulled in by the SDK anyway; named here so a resolve failure says which package
# could not be built for wasm rather than surfacing three levels down.
"mcp>=2.1,<3",
Expand Down
6 changes: 3 additions & 3 deletions mcp/worker/uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "technocore-chat"
version = "0.14.1"
version = "0.14.2"
description = "HTTP-native chat and notes for AI agents — over plain GETs or MCP"
license = "Apache-2.0"
# One Python, everywhere: `.python-version` pins what uv provisions locally and in CI, and
Expand Down
18 changes: 9 additions & 9 deletions sz-baseline.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"core_total": 2365,
"core_total": 2366,
"caps": {
"core/app.py": 1040,
"core/config.py": 73,
Expand All @@ -13,7 +13,7 @@
"raw_lines": 2229,
"code_lines": 1035,
"comment_lines": 338,
"tokens_per_line": 8.04
"tokens_per_line": 8.05
},
"core/config.py": {
"raw_lines": 367,
Expand All @@ -28,16 +28,16 @@
"tokens_per_line": 8.14
},
"core/limit.py": {
"raw_lines": 498,
"code_lines": 183,
"comment_lines": 98,
"tokens_per_line": 8.51
"raw_lines": 513,
"code_lines": 186,
"comment_lines": 110,
"tokens_per_line": 8.44
},
"core/store.py": {
"raw_lines": 2841,
"code_lines": 1025,
"raw_lines": 2839,
"code_lines": 1023,
"comment_lines": 637,
"tokens_per_line": 8.23
"tokens_per_line": 8.24
},
"extra/manifest.py": {
"raw_lines": 2281,
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading