Releases: jamiequint/groundeffect
Releases · jamiequint/groundeffect
v0.5.6
v0.5.5
- Harden OpenRouter embedding requests and error handling\n- Truncate oversized embedding inputs and split failing batches adaptively\n- Cap searchable email body text used for embeddings to avoid giant payloads
v0.5.4
Release v0.5.4
v0.5.3
Release v0.5.3
v0.5.2 - Multi-tenant PostgreSQL Token Provider
New Features
- Multi-tenant user_id support for PostgreSQL token provider
- Add
user_idanduser_id_envconfig options for tenant isolation - Share a single
groundeffect_tokenstable across multiple users - Each user's queries filter by their user_id automatically
- Backwards compatible: single-tenant mode works without user_id configured
- Add
Configuration
For multi-tenant deployments:
[tokens]
provider = "postgres"
database_url_env = "DATABASE_URL"
encryption_key_env = "GE_TOKEN_ENCRYPTION_KEY"
table_name = "groundeffect_tokens"
user_id_env = "USER_ID"The table schema changes to PRIMARY KEY (user_id, email) when user_id is configured.
v0.5.1
Bug Fixes
- Fix stale
estimated_total_emailsnot being cleared after backfill completes- When backfill completed, the estimated_total_emails value was persisted in the database but never cleared
- This caused the CLI to show misleading "emails_remaining" counts even when sync was up to date
- The fix clears estimated_total_emails both when email sync is skipped and after it completes successfully
v0.5.0 - PostgreSQL Token Provider
What's New
PostgreSQL Token Provider
New optional feature postgres that enables storing OAuth tokens in PostgreSQL instead of the filesystem. This is useful for deployments where groundeffect runs in ephemeral containers (like Fly.io).
Features:
TokenProvidertrait for pluggable token storage backendsFileTokenProviderwrapping existing KeychainManager (default)PostgresTokenProviderwith AES-256-GCM encryption at rest- HKDF-SHA256 key derivation from user-provided secret
- Configurable table name for multi-tenant deployments
Configuration:
[tokens]
provider = "postgres"
database_url_env = "DATABASE_URL"
encryption_key_env = "GE_TOKEN_ENCRYPTION_KEY"
table_name = "groundeffect_tokens" # optionalBuild with postgres support:
cargo build --release --features postgresNote: The default file-based token storage remains unchanged. The postgres feature is opt-in and requires the postgres feature flag at compile time.
v0.4.2 - Metal GPU & Memory Fixes
What's New since v0.3.9
Metal GPU Acceleration (macOS)
- GPU-accelerated embeddings on Apple Silicon using Metal
- Enabled by default on macOS for faster search indexing
- Falls back to CPU if Metal is unavailable
Memory Leak Fix
- Fixed memory leak in the embedding pipeline that caused gradual memory growth
- Significant reduction in memory usage for large mailboxes
BGE Embeddings
- Switched to BGE-base-en-v1.5 for improved search quality
- Better handling of email-specific content
Sync Progress Tracking
- Added progress indicators with date-filtered email counts
- Better visibility into sync status
Installation
brew tap jamiequint/groundeffect
brew install groundeffectOr upgrade:
brew upgrade groundeffectv0.4.1
Fix Metal GPU memory leak
- Add
sync()call insideembed_batch()after GPU tensors are dropped to force Metal buffer pool cleanup - Reduce batch size from 128 to 32 to limit peak memory usage
- Memory now stable at ~700MB instead of growing to 35GB+
SHA256: d8069edb5138c0c23228529ae1871b9d694d4da13c00c7bf1e50bfee714f7fd0
v0.4.0
v0.4.0
Features
- Metal GPU acceleration enabled by default on macOS - Embedding generation now uses Metal GPU acceleration, providing significant speedup for email sync
- Build script automatically enables:
metalfeature on macOScudafeature on Linux with NVIDIA GPUs
SHA256
b9c99ae504fd800c4db3abd47122d4c52050b8cba37ade1c8ec05d1244f82bba