Repository navigation
Releases
v2.3.0
go get github.com/pskclub/mine-core/v2@v2.3.0What's Changed
💥 Breaking changes
- feat(v2)!: sync v2 with idin-core — fixes, memory MQ, presigned POST, rate limit, retry by @pskclub in #17
📦 Dependencies
- chore(deps): bump the v2-minor-and-patch group across 1 directory with 19 updates by @dependabot[bot] in #13
Full Changelog: v2.2.0...v2.3.0
v2.2.0
The first release of github.com/pskclub/mine-core/v2: a batteries-included Go framework for backend services, rebuilt from scratch.
go get github.com/pskclub/mine-core/v2@v2.2.0Requires Go 1.27 or later.
Highlights
- One
contextfor everything. HTTP handlers, jobs, consumers and background work share oneIContext, which carries the database, cache, logger, Sentry scope and request ID. Nothing lives in global state, and the whole suite passes the race detector. - Every capability has an in-memory implementation, so a service's tests need no mocks:
NewMemoryCache(),NewMemoryStorage(),NewMemoryMailer(),NewMemoryPusher(),NewRecordingSentry(). - A capability is never nil. A service with no cache configured still starts. The cache degrades silently, while storage, queues and mail fail loudly, because a lost file cannot be recovered.
- Structured errors end to end.
IErrorflows through every layer and is reported to Sentry once, with the request's scope attached.
What's inside
| Capability | Built on |
|---|---|
| HTTP server, routing, binding, validation | Echo v5 |
| SQL repositories | GORM: Postgres, MySQL, SQL Server, Oracle, SQLite |
| MongoDB repositories and aggregation | mongo-driver v2 |
| Cache, distributed locks, counters | go-redis v9, or in-memory |
| Message queue | RabbitMQ |
| Jobs, cron, durable job store | gocron v2 |
| Object storage and presigned URLs | AWS SDK v2 (S3, MinIO), or in-memory |
| Mail and push notifications | go-mail, Firebase |
| AI: text, typed output, tools, streaming, embeddings | multi-provider, or in-memory |
| Logging, errors, tracing, metrics | slog, Sentry |
| Health probes, graceful shutdown, dev tools | built in |
| Postman and OpenAPI generation | go tool postmangen |
Getting started
- Getting started: wiring and a complete controller
- Why v2: what changed from v1, and why
- Migrating from v1
- API reference on pkg.go.dev
The guides are written in Thai.
Changes since the import
- Builds against sentry-go v0.49, which removed
ClientOptions.DisableLogsandDisableMetrics. Logs and metrics are still sent only whenSENTRY_ENABLE_LOGS/SENTRY_ENABLE_METRICSare set; the framework's own gates enforce this, and a regression test covers it. - Dependencies updated: AWS SDK v2, sentry-go, mongo-driver v2, goai, x/crypto and Google APIs (#4). GitHub Actions updated (#3).
Notes
- Do not use
v2.0.0,v2.0.6orv2.1.0. Those tags date from 2022, before thev2/module existed, and Go cannot resolve the module at them.v2.2.0is the first usable v2 release. - v1 (
github.com/pskclub/mine-core) is now in maintenance mode. It receives critical fixes only, and new work goes into v2.
Full Changelog: v1.4.90...v2.2.0
v1.4.91
A security maintenance release of github.com/pskclub/mine-core (v1).
go get github.com/pskclub/mine-core@v1.4.91v1 is now deprecated. It is in maintenance mode and receives critical fixes only. New code should use
github.com/pskclub/mine-core/v2;go getprints this notice from this release on. The migration guide covers moving a service across.
⚠️ Requires Go 1.25
The fixed dependency releases need a newer Go, so the module's go directive moves from 1.20 to 1.25.0. Services importing v1 must build with Go 1.25 or later. Earlier toolchains will not compile this version.
Security fixes
govulncheck found 15 vulnerabilities reachable from v1. This release fixes all of them, and it now reports none.
| Module | From | To | Advisories |
|---|---|---|---|
github.com/jackc/pgx/v5 |
v5.3.1 | v5.9.2 | GO-2024-2567, GO-2024-2606, GO-2026-5004 (SQL injection, panic) |
golang.org/x/image |
v0.6.0 | v0.43.0 | GO-2023-1989, GO-2023-1990, GO-2024-2937, GO-2026-4815, GO-2026-5031, GO-2026-5032, GO-2026-5062, GO-2026-5066 (TIFF/image decoding: resource exhaustion, panics) |
golang.org/x/net |
v0.21.0 | v0.56.0 | GO-2024-2687 (HTTP/2 CONTINUATION flood) |
golang.org/x/text |
v0.17.0 | v0.39.0 | GO-2026-5970 (infinite loop on invalid input) |
go.mongodb.org/mongo-driver |
v1.17.3 | v1.17.7 | GO-2026-5327 (out-of-bounds read) |
github.com/labstack/echo/v4 |
v4.10.2 | v4.15.4 | GO-2025-3553: removes golang-jwt/jwt v3, which has no fixed release |
Other changes
- CI builds and scans v1 with Go 1.27.
Full Changelog: v1.4.90...v1.4.91