Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
dd48c4f
feat(proto): add gRPC storage protocol definition
Feb 5, 2026
d82d6ed
feat(storage): add gRPC storage server in Rust
Feb 5, 2026
c064c9d
feat(dotnet): multi-tenant gRPC storage integration
Feb 5, 2026
9f0b214
feat(proxy): add SSE/HTTP proxy with PAT authentication
Feb 5, 2026
dc23563
build(docker): add Dockerfiles for all components
Feb 5, 2026
f96dd63
build(compose): add docker-compose for full stack
Feb 5, 2026
7223ea5
refactor: replace client-side locks with atomic index operations
Feb 5, 2026
9791fdb
feat(ci): build Rust storage server for all architectures first
Feb 5, 2026
7e5ff88
fix(ci): use macos-15-intel runner (macos-13 retired)
Feb 5, 2026
2f93148
ci: add path filters to skip builds when unrelated files change
Feb 5, 2026
94a1db5
fix(ci): install protoc for Rust gRPC builds
Feb 5, 2026
a1cc82a
fix(storage): make Unix socket code conditional for Windows
Feb 5, 2026
a920f0a
fix(ci): use paths-filter for per-push website change detection
Feb 5, 2026
15098a9
fix(storage): make effective_unix_socket conditional on unix
Feb 5, 2026
3d2ba65
fix(grpc): pass --local-storage-dir to storage server
Feb 5, 2026
14bae4e
fix(tests): use temporary directory for test storage isolation
Feb 5, 2026
76d63c3
fix(docker): remove missing Directory.Build.props copy
Feb 5, 2026
64af645
feat(installers): include docx-mcp-storage in Windows and macOS insta…
Feb 5, 2026
4089d3c
fix(storage): use fully qualified fs2::FileExt::unlock to avoid name …
Feb 5, 2026
8e88ac7
fix: use empty tenant ID for backward-compatible session paths
Feb 5, 2026
f5f52ae
fix(storage): full backward compatibility with .NET file formats
Feb 5, 2026
887b1ff
fix(dotnet): align SessionIndex format with Rust storage server
Feb 5, 2026
85fc4ad
fix(storage): correct truncate_wal semantics for undo/redo
Feb 5, 2026
a4f3153
refactor: declare docx-storage-local for common stuff, and create wat…
Feb 6, 2026
9017057
feat: external saving is working
Feb 6, 2026
0948fee
fix: redo / undo / notifications
Feb 6, 2026
42852c9
fix: build
Feb 6, 2026
05b0625
feat(infra): add Pulumi IaC for Cloudflare resources and fix storage-…
Feb 6, 2026
0cff16c
fix(storage-cloudflare): add exponential backoff retry on KV 429 rate…
Feb 7, 2026
ca39147
ci: restrict macOS/Windows builds to manual workflow_dispatch only
Feb 12, 2026
b21a79f
feat: embed Rust storage as staticlib in .NET NativeAOT binaries
Feb 12, 2026
f36de91
fix: style-element on direct run path and heading style with runs
Feb 13, 2026
c197737
fix(storage-cloudflare): replace KV lock with R2 ETag optimistic lock…
Feb 13, 2026
c893a94
test: skip local-file-only tests when STORAGE_GRPC_URL is set
Feb 13, 2026
a96e50f
refactor: split IStorageClient into IHistoryStorage + ISyncStorage wi…
Feb 13, 2026
c3c4867
test: remove all test skips, enable dual-server mode for Cloudflare R…
Feb 14, 2026
eb40b5e
feat: dual-mode HTTP+stdio MCP server with multi-tenant TenantScope
Feb 14, 2026
9274a5b
refactor(storage-cloudflare): remove sync/watch, StorageService only
Feb 15, 2026
2bc9b51
refactor(proxy): simplify to transparent HTTP reverse proxy
Feb 15, 2026
9080675
feat(storage-gdrive): multi-tenant Google Drive sync/watch server
Feb 15, 2026
d8fb934
feat(dotnet): SYNC_GRPC_URL support for dual-server deployment
Feb 15, 2026
be36363
feat(website): Google Drive OAuth connection flow
Feb 15, 2026
6070125
feat(infra): GCP Drive API + OAuth credentials via Pulumi
Feb 15, 2026
671571c
feat(docker): root Dockerfiles + simplified single-mode compose
Feb 15, 2026
1b5763b
docs: update CLAUDE.md with docker deployment and multi-tenant archit…
Feb 15, 2026
6c76452
fix(website): correct import paths for oauth-connections lib
Feb 15, 2026
4e10356
refactor(website): add @/ path alias, use clean imports
Feb 15, 2026
d2b35a4
fix(website): Doccy close button broken due to define:vars + import c…
Feb 15, 2026
c7f8828
feat(website): add ConnectionsManager component for external storage …
Feb 15, 2026
da79fbe
feat(infra): manage Cloudflare Pages secrets via Pulumi
Feb 15, 2026
6eb5ab6
refactor(website): move ConnectionsManager into Stockage section
Feb 15, 2026
96e2f01
fix(website): fix scoped styles for dynamic content in dashboard comp…
Feb 15, 2026
945e25b
fix(website): mobile responsive layout + update wrangler to 4.65
Feb 15, 2026
527de43
fix: claude enabled commands
Feb 15, 2026
6eda99b
fix: tenant isolation on OAuth connection lookup + dashboard spacing
Feb 15, 2026
8e5c094
feat: typed source descriptors + connection browsing + OAuth scope fix
Feb 15, 2026
452faaf
feat: document_open supports cloud sources (Google Drive)
Feb 15, 2026
ca608fd
feat: persist ExternalChangeGate in gRPC storage index
Feb 15, 2026
d93d48e
feat: proxy transparent session recovery on backend restart
Feb 16, 2026
14675d1
chore: docker build cache + debug logging
Feb 16, 2026
65c722c
feat: GDrive file creation on first sync
Feb 16, 2026
9fa0ee7
feat: cloud source support in document tools and external changes
Feb 16, 2026
4420741
feat: deploy MCP backend to Koyeb via Pulumi
Feb 19, 2026
d30374c
feat: OAuth 2.1 authorization server + dashboard management
Feb 19, 2026
38d2b88
feat: add OAuth env vars to proxy Koyeb deployment
Feb 19, 2026
0f68f35
feat: OAuth 2.1 resource server support in proxy
Feb 19, 2026
4cf23c7
fix: disable Astro CSRF origin check for cross-origin OAuth token exc…
Feb 19, 2026
31e6483
feat: add source_path to UpdateSessionInIndex for stateless SessionMa…
Feb 19, 2026
5b2984d
feat: AppendWal always saves checkpoint + pass bytes from tools
Feb 19, 2026
fe69f28
feat: unified gRPC error handling across all MCP tools
Feb 19, 2026
cb5830a
feat: consolidate export tools into single export command
Feb 19, 2026
3f35473
feat: proxy resilience — retry with backoff, health probe, remove OAu…
Feb 19, 2026
282bfc7
feat: Koyeb auto-scaling with scale-to-zero and per-service sizing
Feb 19, 2026
71ffcb1
fix: reduce log noise in HTTP mode and fix session pool retry
Feb 19, 2026
b0b776e
chore: update Claude Code local permission settings
Feb 19, 2026
92d10bb
feat: make SessionManager fully stateless — remove in-memory dictiona…
Feb 19, 2026
854e1bd
refactor: remove SessionRestoreService and cleanup for stateless Sess…
Feb 19, 2026
acec4a1
feat: cold-start resilience across proxy, gRPC, and infra
Feb 19, 2026
e54e19a
fix: revert scale-to-zero on mesh-only services
Feb 19, 2026
2e54966
chore: align Pulumi with CLI-applied scale-to-zero on storage/gdrive
Feb 19, 2026
623d702
docs: add Koyeb deployment, mcptools proxy testing, and debugging doc…
Feb 19, 2026
407c326
fix: grpcurl release uses x86_64 not amd64 in filename
Feb 19, 2026
6bca10e
fix: proxy /health should not test upstream (causes Koyeb 502)
Feb 19, 2026
5a4ff1a
fix: proxy dual-stack HTTP/1.1 + HTTP/2 (h2c) via hyper
Feb 19, 2026
79013f9
fix: Koyeb 502 — internal services must use tcp protocol with no routes
Feb 19, 2026
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
48 changes: 46 additions & 2 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,52 @@
"Bash(dist/macos-arm64/docx-mcp:*)",
"Bash(echo:*)",
"Bash(grep:*)",
"Bash(mcptools call query:*)"
"Bash(mcptools call query:*)",
"Bash(git checkout:*)",
"Bash(git stash:*)",
"Bash(git rebase:*)",
"Bash(xargs cat:*)",
"WebSearch",
"WebFetch(domain:docs.rs)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(/Users/laurentvaldes/Projects/docx-mcp/dist/macos-arm64/docx-cli:*)",
"Bash(xargs:*)",
"Bash(find:*)",
"Bash(cargo tree:*)",
"Bash(pulumi version:*)",
"Bash(pulumi stack output:*)",
"Bash(STORAGE_GRPC_URL=http://localhost:50052 dotnet test:*)",
"Bash(docker compose:*)",
"Bash(wrangler:*)",
"Bash(gcloud services list:*)",
"Bash(gcloud alpha iap oauth-clients list:*)",
"Bash(gcloud auth application-default print-access-token:*)",
"Bash(source:*)",
"WebFetch(domain:www.pulumi.com)",
"WebFetch(domain:pypi.org)",
"WebFetch(domain:www.koyeb.com)",
"Bash(pip install:*)",
"Bash(pulumi preview:*)",
"Bash(gh release view:*)",
"Bash(pulumi plugin install:*)",
"WebFetch(domain:registry.terraform.io)",
"Bash(pulumi config get:*)",
"Bash(pulumi config set:*)",
"Bash(pulumi config rm:*)",
"Bash(koyeb service list:*)",
"Bash(koyeb deployments list:*)",
"WebFetch(domain:developers.cloudflare.com)",
"WebFetch(domain:mcp-auth.dev)",
"Bash(koyeb instances logs:*)",
"Bash(gh api:*)",
"Bash(gh search code:*)",
"Bash(gh pr view:*)",
"Bash(gh release list:*)"
],
"deny": []
}
},
"enableAllProjectMcpServers": true,
"enabledMcpjsonServers": [
"tavily"
]
}
19 changes: 16 additions & 3 deletions .github/workflows/build-website.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,25 @@ name: Build Website

on:
pull_request:
paths:
- 'website/**'
- '.github/workflows/build-website.yml'

jobs:
changes:
runs-on: ubuntu-latest
outputs:
website: ${{ steps.filter.outputs.website }}
steps:
- uses: actions/checkout@v4
- uses: dorny/paths-filter@v3
id: filter
with:
filters: |
website:
- 'website/**'
- '.github/workflows/build-website.yml'

build:
needs: changes
if: needs.changes.outputs.website == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand Down
Loading