The module declares go 1.27.1 and the adapter image follows. go fix
applied the modernizers and left ptrString and ptrBool with no callers,
so they are gone; omitzero is not applied, since it changes what the
JSON says.
Co-authored-by: Hanzo Dev <[email protected]>
Adds a Phase 1 implementation of the Server SDK Feature Flag
Evaluations RFC, mirroring posthog-js#3476 and posthog-python#539.
Client.EvaluateFlags returns a FeatureFlagEvaluations snapshot built
from at most one /flags request. The snapshot powers IsEnabled,
GetFlag, and GetFlagPayload checks, fires deduped $feature_flag_called
events with full v4 metadata (id, version, reason, request_id), and can
be attached to a Capture event via the new Capture.Flags field to
populate $feature/<key> and $active_feature_flags with no extra
network call.
The dedup logic for $feature_flag_called is extracted into
captureFlagCalledIfNeeded so the existing single-flag path and the new
snapshot path share the same per-distinct_id LRU cache and behave
identically.
OnlyAccessed and Only return filtered child snapshots with independent
access tracking, so filtering for a Capture does not back-propagate to
the parent. A new Config.FeatureFlagsLogWarnings option silences their
warnings for callers that prefer quieter helpers.
Capture.SendFeatureFlags is unchanged and not deprecated; Phase 2 will
follow up with deprecations and migration guidance.
Task-Id: b9d98122-fe61-462a-bfb3-6e1be3a8966a
Rename Go package from posthog to insights across all 80+ files.
Consumers now import as `insights "github.com/hanzoai/insights-go"`
and use insights.Client, insights.Config, insights.Capture, etc.
- Rename posthog.go -> insights.go, posthog_test.go -> insights_test.go
- Update package declaration from posthog to insights in all .go files
- Update SDKName from posthog-go to insights-go
- Update DefaultEndpoint from app.posthog.com to insights.hanzo.ai
- Update all FieldError/ConfigError type strings
- Update User-Agent headers, log prefixes, comments, and docs
- Update JSON test fixtures to match new SDK name
- Update CLI, examples, extras, and sdk_compliance_adapter
- Fix pre-existing go vet warnings (non-constant format strings)
Add support for passing device_id to the PostHog /flags endpoint.
This allows clients to identify devices separately from users when
evaluating feature flags.
- Add DeviceId field to FlagsRequestData (omitted when nil)
- Add DeviceId to FeatureFlagPayload and FeatureFlagPayloadNoKey
- Thread device_id through all flag evaluation paths
- Add tests verifying device_id is passed in request payload
* intitial refactor:
- Add Context-based graceful shutdown and drain phase for enqueued requests
- Use buffered channels vs. mutex for concurrency mgmt.
- Use atomic.Pointer vs. locks for FF mgmt
- Use Callback ifc vs. lossy internal tracking for unit test result validation
- Add new APIs mirroring current that accept caller's Context to control
operation timeouts
* expose batch submission timeout with default equiv to old hardcoded timeout
* restructure event submission and batching pipeline
* overhaul tests; implement new stress tests and address coverage gaps
* parallelize tests where safe to do so (3x CI time savings!)
* introduce faster pure Go JSON seralization library
* more refactors: unit tests & benchmarks
* DRY up shutdown req drain and prepareForSend serializer
* use go-json in CLI utils too; remove redundant helpers
* move error type to proper pkg
* DRY up loop() and fix deadlock in old test case
* normalize CI and Makefile test and benchmark target behavviors
* more realistic feature flags benchmark
* replace leaky time.After pattern with idiomatic safer Timers
* internal queue size minimums decoupled from batch and worker configs
* remove dead comments
* fix test bug
* update default http.Transport cfg to avoid conn pool as bottleneck; update batch enqueue limiting strategy and tests/benches
* adjust stress test defaults to match prod
* update flaky tests and rm stale file
* make graceful shutdown timeout opt-in for now
* fix tests that reverted to hold helper utils during rebase
* fix flaky test due to overhead from -race detector now default in test flags
* add more graceful shutdown test cases
* Move URL parsing errors to init, validate endpoint when creating client
* Proper logger
* fix issues with timeout test
* do not waste go routines (fix bug with infinite goroutines / http requests)
* minor fixes to errors