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
6 changes: 3 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ updates:
groups:
github-actions:
patterns:
- "*"
- '*'

- package-ecosystem: cargo
directory: /
Expand All @@ -16,7 +16,7 @@ updates:
groups:
cargo:
patterns:
- "*"
- '*'

- package-ecosystem: npm
directory: /apps/web
Expand All @@ -25,4 +25,4 @@ updates:
groups:
npm:
patterns:
- "*"
- '*'
21 changes: 12 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,17 @@ jobs:
restore-keys: ${{ runner.os }}-cargo-test-

- name: Install cargo-llvm-cov
uses: taiki-e/install-action@704f92c11daa75bfb4e01fcb083350c16c47b9 # v2.69.13
uses: taiki-e/install-action@fd0f63e180a477d7434580b6d80817978b9ff2b8 # v2.70.1
with:
tool: cargo-llvm-cov

- name: Run unit tests with coverage
run: cargo llvm-cov --lib --lcov --output-path lcov-unit.info
run: cargo llvm-cov --lib --lcov --output-path lcov.info

- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: coverage-unit
path: lcov-unit.info
path: lcov.info

integration-test:
name: Integration Test
Expand All @@ -116,15 +118,17 @@ jobs:
restore-keys: ${{ runner.os }}-cargo-integration-

- name: Install cargo-llvm-cov
uses: taiki-e/install-action@704f92c11daa75bfb4e01fcb083350c16c47b9 # v2.69.13
uses: taiki-e/install-action@fd0f63e180a477d7434580b6d80817978b9ff2b8 # v2.70.1
with:
tool: cargo-llvm-cov

- name: Run integration tests with coverage
run: cargo llvm-cov --test integration_test --lcov --output-path lcov-integration.info
run: cargo llvm-cov --test integration_test --lcov --output-path lcov.info

- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: coverage-integration
path: lcov-integration.info
path: lcov.info

codecov:
name: Upload Coverage
Expand All @@ -136,20 +140,19 @@ jobs:
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
pattern: coverage-*
merge-multiple: true

- name: Upload unit coverage
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5.5.4
with:
files: lcov-unit.info
files: coverage-unit/lcov.info
flags: unit
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}

- name: Upload integration coverage
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5.5.4
with:
files: lcov-integration.info
files: coverage-integration/lcov.info
flags: integration
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}
4 changes: 2 additions & 2 deletions .mise.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ run = "cargo build --release"

[tasks.dev]
description = "Run local-hub + web dev server"
depends = ["build"]
depends = [ "build" ]
run = """
./target/release/local-hub start &
cd apps/web && npm run dev
"""

[tasks.hub]
description = "Build and start local-hub"
depends = ["build"]
depends = [ "build" ]
run = "./target/release/local-hub start"

[tasks.web]
Expand Down
6 changes: 4 additions & 2 deletions .please/docs/knowledge/product.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,20 @@ Eliminate GitHub API latency and rate limit friction for developers by providing
1. All GET requests cached transparently
2. ETag + TTL-based freshness (configurable per-endpoint)
3. Write requests (POST/PUT/PATCH/DELETE) pass through + invalidate related cache
4. Token-hash isolation — no privilege leaks between different tokens
4. GraphQL query caching (POST /graphql with query operations)
5. Entity graph-based cross-protocol cache invalidation (REST ↔ GraphQL via node_id)
6. Token-hash isolation — no privilege leaks between different tokens

### Out of Scope (Phase 1)

- Team shared cache (Phase 3)
- Web dashboard (Phase 4)
- GitHub Enterprise Server support
- GraphQL API caching (REST only in Phase 1)

## Roadmap

- **Phase 1**: Local proxy with TTL + ETag caching — shipped (v0.3.0)
- **Phase 1.5**: Entity graph cache invalidation + GraphQL caching — shipped (v0.4.0)
- **Phase 2**: Webhook-based cache invalidation (via relay-worker)
- **Phase 3**: Team shared cache (Cloudflare Worker + D1 as L2)
- **Phase 4**: Web client dashboard (via better-hub) — in progress (`apps/web`)
30 changes: 15 additions & 15 deletions .please/docs/knowledge/tech-stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,21 @@

## Core Dependencies

| Crate | Purpose |
| -------------------------------- | -------------------------------------------- |
| `tokio` | Async runtime |
| `axum` | HTTP server framework |
| `hyper` | Low-level HTTP (Unix socket support) |
| `hyper-util` | Hyper utilities (tokio integration) |
| `reqwest` | HTTP client (GitHub API forwarding) |
| `redb` | Embedded key-value store (single file, ACID) |
| `serde` + `serde_json` | JSON serialization |
| `clap` | CLI argument parsing |
| `tracing` + `tracing-subscriber` | Structured logging |
| `sha2` + `hex` | Token hashing |
| `thiserror` | Error types |
| `http` | HTTP types |
| `tower` | Middleware layer |
| Crate | Purpose |
| -------------------------------- | --------------------------------------------------------------- |
| `tokio` | Async runtime |
| `axum` | HTTP server framework |
| `hyper` | Low-level HTTP (Unix socket support) |
| `hyper-util` | Hyper utilities (tokio integration) |
| `reqwest` | HTTP client (GitHub API forwarding) |
| `libsql` | Embedded SQLite (Turso fork, entity graph + future replication) |
| `serde` + `serde_json` | JSON serialization |
| `clap` | CLI argument parsing |
| `tracing` + `tracing-subscriber` | Structured logging |
| `sha2` + `hex` | Token hashing |
| `thiserror` | Error types |
| `http` | HTTP types |
| `tower` | Middleware layer |

## Project Structure

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"track_id": "entity-graph-cache-20260329",
"type": "feature",
"status": "in_progress",
"created_at": "2026-03-29T17:30:00+09:00",
"updated_at": "2026-03-29T17:40:00+09:00",
"issue": "#9",
"pr": "",
"project": ""
}
Loading
Loading