Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Aug 11:52
· 43 commits to main since this release

Changelog

  • ae279db: API: empty lists serialize as [] (releases, overview timeline) (@newlix)
  • fedc6d0: ARCHITECTURE: to-do for a plain-Postgres mode (Neon/Supabase lack the TSL half of Timescale) (@newlix)
  • 932be0c: ARCHITECTURE: to-do — import/seed must refresh continuous aggregates (@newlix)
  • 9c0ffc7: Abuse controls: per-project daily quota (429 + X-Sentry-Rate-Limits, nothing written, overview banner, settings/API) and DSN key rotation (API, settings button, CLI rotate-key; ingest key cache 10 s) (@newlix)
  • daefc8d: Add MIT license (@newlix)
  • 65e576e: Android end-to-end: read proguard uuid from debug_meta, R8 line ranges + inline expansion, root-cause exception via mechanism ids, detach ingest writes from the request context, idempotent resends (deterministic event ids), no negative cache on transient misses, Gradle plugin's proguard-artifact-releases endpoint (@newlix)
  • fc7fa62: Docs: TimescaleDB is optional, recommended at scale (@newlix)
  • dae1d99: Extract the NDJSON export format into docs/export-format.md as the cross-implementation contract (@newlix)
  • 0b36eaf: Ground-up rewrite: schema on TimescaleDB, ingest, store, auth, parser, skeleton for the rest (@newlix)
  • fecb1e5: Grouping/location refinements from the SDK sweep: message-event titles, file-aware error location skipping runtime frames, line numbers only for single-frame stacks, Dart async placeholders as pseudo frames; README verified-SDK table (@newlix)
  • cb623ce: Implement viewer, JSON API, symbolication/jobs/alerts/retention, export/import, seed, deploy files, end-to-end suite (@newlix)
  • 432eee7: Ingest: decode gzip/deflate envelopes (sentry-python compresses every request); dedupe session updates by sid (@newlix)
  • ee2a906: Module path: github.com/at-least/crashcart (@newlix)
  • 6dfeb7e: Parser: bare-array exception/threads (sentry-go), invalid items counted and reported, thread stack for message events, message-event grouping, SDK-frame-aware location, native fingerprints by image+offset (@newlix)
  • fad8a48: Plain-Postgres mode: schema variants (0002_timescale / 0002_plain), rolled stats tables behind live-hour views, scheduler rollup, batched retention; TIMESCALE=auto|on|off; TEST_PLAIN=1 runs the suite without TimescaleDB (@newlix)
  • d4d5564: Platform families: project platform is a declared family (ios/android/flutter/react-native/web/backend/other) validated on create; ingest counts and rate-limit-warns on mismatched events without dropping them; portal badge and overview banner show expected vs received (@newlix)
  • 9b62442: README: one project per platform; what mixing platforms in a project affects (@newlix)
  • 43121c2: README: switching schema variants goes through export/import (@newlix)
  • 2cf026c: Review fixes: Mach-O via debug/macho (no hand parser, fat/arm64), upload size cap + junk filtering in one place, UploadError mapped in the fail helpers, symbol form error slot, crash-spike baseline contiguous, crashcart_is_crash() shared predicate + partial index (@newlix)
  • 346bde0: SDK sweep fixes: CORS preflight on SDK endpoints, handled defaults to true without a mechanism, thread-stack fallback for exceptions without frames, SDK/pseudo frames excluded from fingerprints, issue titles carry the message (@newlix)
  • 07c234a: Settings: platform can be changed in the viewer (@newlix)
  • 0e3bae8: Simplify: table-driven frame classification (one FrameKind for grouping and location), ranked ErrorLocation, shared ParseHex/ImageFor, valuesOf for breadcrumbs, single-pass threadFrames; ingest dedupe inside the tx with one hashedPK, dead code removed; ProGuard Expand and classify simplified; sqlc SetSymbolFileRelease + Service.Associate replace raw SQL; one ReadMultipartUpload for API and viewer (@newlix)
  • e9a8f16: Symbols: parse Mach-O UUID for dSYM debug ids; one shared upload path for API, sentry-cli and viewer. Crash spike: exact last hour from events vs 24 full buckets (@newlix)
  • cad5ba4: build: GoReleaser releases with binaries on GitHub and images on GHCR (@newlix)
  • 7c5aa36: import/seed refresh the continuous aggregates afterwards (bulk-written history was invisible until the policy window caught up) (@newlix)
  • 1f8d599: sentry-cli 3 support: chunked upload protocol (chunk-upload options/POST, difs/assemble) backed by an upload_chunks table; assemble carries sentry-cli's debug_id; DIF response shape sentry-cli accepts (@newlix)

Docker

docker pull ghcr.io/crashcartapp/crashcart:0.1.0