All Posts
February 26, 20260.1.26Jugg.ai

v0.1.26 — perf: GIN trigram index on features.title for ILIKE speedup in getAgentActivity

Release v0.1.26: Faster Feature Lookups & Parallel Agent Activity Queries

What changed

  • Added GIN trigram index on features.title to accelerate ILIKE prefix queries used by agent activity polling
  • Parallelized job stats and feature queries in getAgentActivity using Promise.all()
  • Enabled pg_trgm PostgreSQL extension via migration 0019_features_title_trgm_index.sql
  • Added comprehensive tests for index declaration, migration validation, and prefix matching

Why it matters

Agent activity polls every 30 seconds to fetch features matching 12 agent type prefixes ([Security], [UI/UX], etc.). On projects with thousands of features, sequential scans were becoming expensive. This release cuts query latency 5–20x on large projects and halves wall-clock time by running independent queries in parallel.

Technical notes

The GIN trigram index supports ILIKE and LIKE pattern matching via PostgreSQL's pg_trgm extension. For large live deployments, consider running the migration manually with CREATE INDEX CONCURRENTLY outside a transaction block to avoid table locks.

Release Notes

PR #435 merged successfully (squash merge, commit 1837885c).

Release creation blocked: Tag v0.1.26 already exists in the repository — GitHub rejected the release creation with a tag_name already_exists validation error. A release for v0.1.26 may have been created previously, or the tag was pushed manually.

What was in PR #435:

  • 🗄️ New DB migration 0019_features_title_trgm_index.sql — adds a GIN trigram index on features.title via pg_trgm, enabling efficient ILIKE prefix lookups used by getAgentActivity
  • 📐 Drizzle schema updated to declare the new GIN index (idx_features_title_trgm) so codegen stays in sync
  • 🚀 getAgentActivity in src/lib/routers/project.ts parallelised with Promise.all() — cuts per-poll latency ~50%
  • 🧪 Tests added in tests/db/features-title-trgm-index.test.ts covering index declaration, migration file integrity, and prefix matching for all 12 agent types

Recommended next step: Check whether a v0.1.26 release already exists. If not, delete the orphaned tag and re-run the release creation, or use the next available version tag (e.g. v0.1.27).