Repository navigation
Releases: b4moss/es4
Releases · b4moss/es4
Release list
v0.10.0
What's Changed
v0.10.0 — BREAKING: key hierarchy delimiter / → : + Scan (Issue #37)
Breaking
- Hierarchy delimiter is now
:(ValidateKey/validateKey) /is allowed as an ordinary character- HTTP mapping A:
/v1/keys/a:b:c(one path segment). Old/v1/keys/a/b→ 404 - Firestore Doc ID:
:→%3A(Go/Node parity) - Recovery Restore: old
/-hierarchy keys are dropped (decision D). No automatic migration — discard and re-ingest
Added
Scan(prefix) ([]string, error)— batch, no paging, usable inside Tx (Go Store/Tx/DB + Node)
Packages
packages/go→0.10.0(packages/go/v0.10.0)@b4moss/es4→0.10.0
Full Changelog: v0.9.0...v0.10.0
Go module v0.10.0
Go module github.com/b4moss/es4/packages/go v0.10.0.
v0.9.0
What's Changed
v0.9.0 — Node.js / TypeScript port(Go v0.8.0 契約パリティ)
- feat(node): v0.9.0 TypeScript port of Go v0.8.0 contracts by @kohki-shikata in #32
packages/node
- Options(Defaults → YAML →
ES4_*、snake_case) - State: Memory · SQLite · Redis/Valkey · Firestore
- Tx、内部 Snapshot / Recovery(file / libsql / object)
- HTTP Es4 Server(
/livez/readyz/v1/keys/...) - E2E: object / file / memory / libsql / redis / valkey / firestore(
layer=allは redis/valkey/firestore 除外) - CI:
e2e.ymlのruntime(go|node|both)
Go 契約・ソースは変更なし。リリースブランチへの PR は未作成。
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
v0.8.0 — 外部サービスの充実(State Backend)
- feat(state): Redis/Valkey State backend + E2E by @kohki-shikata in #29
- feat(state): Firestore State Backend + E2E by @kohki-shikata in #30
State backends
- Memory / SQLite(既存)
- Redis/Valkey(同一プロトコルアダプタ)—
layer=redis/layer=valkey - Firestore(単一 collection・Clear は設定 collection のみ)—
layer=firestore - 新 layer は
layer=allに含めない
Full Changelog: v0.7.3...v0.8.0
v0.7.3
What's Changed
- feat: libSQL Recovery E2E (File + InMemory) — v0.7.3 by @kohki-shikata in #26
Full Changelog: v0.7.2...v0.7.3
v0.7.2
What's Changed
- feat: GitHub Actions suite (v0.7.2) by @kohki-shikata in #23
Full Changelog: v0.7.1...v0.7.2
v0.7.1
E2E three-layer enhance
- File SQLite layer: C1–C5 (local persistence + restart)
- In-memory layer: C2 / C4 / C5 (no restart restore)
- S3 / Object: existing §5.1–§5.5 assertions unchanged
- Actions:
.github/workflows/e2e.yml(workflow_dispatch,layerinput)
See #22
v0.7.0
Phase 6 — E2E Object Recovery × RustFS
- E2E suite (
//go:build e2e) against RustFS in Docker for Object Recovery restart restore (Snapshot-saved only) - Manual GitHub Actions workflow (
workflow_dispatchonly):.github/workflows/e2e-object-recovery.yml - Spec:
docs/tests/e2e/e2e-spec.md
See #18
v0.6.0
Phase 5 — State Backend Adapter boundary
- Harden shared
Storecontract for Memory and SQLite with table-driven contract tests (Export deep copy, Replace atomicity, Close→ErrClosed, invalid keys/values) - Document Adapter boundaries; Redis/Valkey remain Unscheduled
- SQLite internal only: explicit deep copy on Get/Export; Exists via
SELECT 1 … LIMIT 1
See #16
v0.5.0
Phase 4 / SemVer v0.5.0
Es4 Server(単一プロセス HTTP)を着地。
追加
cmd/es4-server+internal/server(stdlibnet/http)- State:
PUT/GET/DELETE/HEAD /v1/keys/{key…}、POST /v1/clear - Tx:
POST /v1/tx→ keys / clear / commit / rollback GET /livez常時 200 /GET /readyzは Restore Ready 後のみ 200- 待受:
PORT>ES4_LISTEN_ADDR>:8080 docker/Dockerfile(マルチステージ、EXPOSE 8080)- Cloud Run 向け: 公開パスは末尾
/なし(付きは 404)
検証
cd packages/go && go test ./... PASS
PR: #15