- Add `loadConfig` function to load config files using `cosmiconfig`
- Update `parseOptions` function to handle `ZodObject` schema
- Add `TupleOfLength` type helper for tuple types
- Export `parseOptions` and `TupleOfLength` for external use
- modify `mapHistoricalResults` to track first timestamp of each commit hash
- sort commit hashes chronologically using `getTime()` values
- maintain result structure while ensuring chronological commit order
- integrate historical performance tracking for p95 search times
- add 30-day historical data querying from influxdb
- group and visualize metrics by scenario and virtual user count
- support comparison across multiple commits with dual-line charts
- add `plot.ts` utility for creating ASCII charts with customizable configs
- implement support for multiple data series with custom labels and colors
- add automatic scaling and tick generation for x/y axes
- support plot titles, axis labels, and legend rendering
- increase gap between test scenarios from 1s to 5s for better isolation
- update first virtual user stage from 10 to 50 for more realistic load
- rename scenario keys to reflect new 50vu configuration
- add dataset download step in `performBenchmarks` method
- integrate with filesystem service to fetch musicbrainz dataset
- update benchmark execution flow to include download step
- add `downloadTypesenseDataset` method to fetch datasets from urls
- implement `decompressStream` to handle gunzip and tar extraction
- add support for jsonl file extraction and saving
- update file system imports to include `writeFile`
- add new github action workflow for automated benchmark testing
- configure workflow to run every 12 hours via cron
- implement binary comparison between successful test runs
- setup influxdb for storing benchmark metrics
- add artifact management for test binaries and benchmark data
- remove separate `integration-tests.yml` workflow
- add integration tests as a dependent job in `tests.yml`
- update artifact download action to use `actions/download-artifact`
- simplify workflow triggers by removing workflow_run dependency
- make `ipAddress` optional in `TypesenseProcessManager`
- remove default ip address fallback
- conditionally add peering address arguments to process startup
- restructure argument building for better readability
- add dynamic log level setting based on application's logger level
- use `debug` level when application is in debug mode
- fallback to `info` level for all other cases
- add `networkInterfaces` detection for CI environments
- make `ip` parameter optional in test command
- add fallback to default ip for non-CI environments
- introduce `isInCi` flag to control ip detection behavior
- handle null ip case in `writeToNodesFile`
- Add benchmark command to compare performance between commits
- Add time-based metrics for search and indexing operations
- Add result formatting with percentage change calculations
- Add configurable failure threshold for performance regression
- Add container and process management for test execution
- Add `validateK6Environment` function for env var validation
- Add type-safe validation for required k6 environment variables
- Add specific validation rules for numeric, string, and duration values
- Add error reporting for invalid environment configurations
- Add `NodeConfig` interface for typesense node configuration
- Add `initNode` method to validate node configuration
- Make `snapshotPath` optional with default value
- Add option to disable multi-node mode in `startProcess`
- Simplify process error handling and cleanup