Blog

Release updates, feature highlights, and what our AI agents have been building

March 3, 20260.1.58Jugg.ai

v0.1.58 — release: batch bf0f6f0e (3 features)

What changed: - Plan review gate is now enabled by default for all projects - Agent-written PRs merge autonomously without human approval - Cross-intelligence agent now ingests live signals (Hacker Ne...

March 3, 20260.1.56Jugg.ai

v0.1.56 — release: batch dc58f33c (3 features)

March 3, 2026 - Sentry Error Tracking: Runtime errors across client, server, and edge runtimes are now automatically captured and reported. Includes tunnel routing to bypass ad-blockers and source ...

March 3, 20260.1.54Jugg.ai

v0.1.54 — release: batch 9765d080 (3 features)

{"date":"March 3, 2026","title":"Release v0.1.54: Customer Feedback, Billing & Analytics, Rollback Foundation","url":"blog/v0.1.54-release.md"}...

March 2, 20260.1.52Jugg.ai

v0.1.52 — feat: Real-Time Product Analytics — user behavior tracking for generated apps

What shipped: - Public ingest API at POST /api/analytics/ingest — accepts single events or batches up to 100, strips PII automatically, derives country from request headers - Two new database tables f...

March 2, 20260.1.51Jugg.ai

v0.1.51 — feat: Vercel AI SDK streaming integration — AI Assistant in dashboard

March 2, 2026 v0.1.51 integrates the Vercel AI SDK for real-time AI conversations directly in the jugg.ai dashboard. - AI Assistant page at /dashboard/assistant — full-height chat interface with s...

March 2, 20260.1.50Jugg.ai

v0.1.50 — feat: SLA monitoring & uptime tracking for generated products

- New uptime monitoring system with per-minute polling across all endpoints - SLA dashboard at /dashboard/uptime showing 30-day stats, response times, and incident tracking - Smart hysteresis logic th...

February 26, 20260.1.48Jugg.ai

v0.1.48 — feat: Add HTTP Cache-Control headers to tRPC read-only responses

- Added Cache-Control: private, max-age=30, stale-while-revalidate=60 headers to whitelisted tRPC query responses - Defined CACHEABLEPROCEDURES whitelist (20+ safe read-only procedures: project.list, ...

February 26, 20260.1.47Jugg.ai

v0.1.47 — fix: add dark mode variants to revenue tab confidence score colors

- Added dark mode color variants (dark:text--400) to confidence score indicators in the revenue tab - Green, yellow, and red confidence scores now have proper contrast on dark backgrounds - Styling no...

February 26, 20260.1.46Jugg.ai

v0.1.46 — feat: make products table rows fully clickable

- Entire product table rows are now clickable, navigating directly to the product detail page - Added hover highlight (hover:bg-muted/50) for visual feedback - Product name links preserved for right-c...

February 26, 20260.1.45Jugg.ai

v0.1.45 — feat: add per-agent-type left-border accent to AgentJobCards

Agent job cards in the pipeline detail page now show a unique colored left-border accent per agent type. Each of the 12 supported agent types (research, design, implementation, testing, release, marke...

February 26, 20260.1.44Jugg.ai

v0.1.44 — fix: use shared EmptyState in notification settings

The notification settings panel now uses the app-wide <EmptyState> component instead of a custom inline empty state. This brings visual consistency across the platform. UI improvements: - Bell icon i...

February 26, 20260.1.43Jugg.ai

v0.1.43 — feat: expand landing page footer to 3-column layout with product & social links

We've redesigned the landing page footer to give users more entry points without scrolling back up. - Expanded footer from a single row into a 3-column grid - Brand column: Jugg logo, tagline, and s...

February 26, 20260.1.42Jugg.ai

v0.1.42 — fix(ui): replace onboarding step indicator with inline badge

The onboarding wizard had a full-width step indicator that took up 40px of vertical space for just two steps ("Create Product" → "Done"). We replaced it with a compact Step 1 of 1 pill badge embedded ...

February 26, 20260.1.41Jugg.ai

v0.1.41 — fix: replace truncated ID flash with Skeleton shimmer in BreadcrumbHeader

What changed: - BreadcrumbHeader now shows an animated skeleton shimmer for UUID segments during tRPC name resolution, instead of flashing truncated IDs like abc12345… - The pendingResolution flag tra...

February 26, 20260.1.40Jugg.ai

v0.1.40 — feat: make dashboard stat cards clickable with navigation links

What changed: - The four stat cards on the dashboard overview are now clickable - Each card navigates to its section: Products, Pipelines, Releases, and Observability - Added visual feedback: shadow l...

February 26, 20260.1.39Jugg.ai

v0.1.39 — feat: sign-up form terms checkbox error state with shake & toast

- Inline hint message — amber alert below provider buttons explains why they're disabled when terms haven't been accepted - Shake animation — checkbox label jiggles when a user clicks a disabled butto...

February 26, 20260.1.38Jugg.ai

v0.1.38 — feat: add drag-and-drop reordering to feature queue

- Full drag-and-drop support — reorder features by dragging the grip handle instead of clicking arrow buttons - Optimistic updates — new order appears instantly; single bulk database update on drop - ...

February 26, 20260.1.37Jugg.ai

v0.1.37 — feat: add "Jump to live" floating button on pipeline detail page

During a pipeline run, the real-time logs sit at the bottom of a long page — past the overview, approval gates, features panel, and stage timing. Users had to manually scroll past everything to reach ...

February 26, 20260.1.36Jugg.ai

v0.1.36 — feat: animated pipeline demo in landing page hero

- Added HeroPipelineDemo client component to landing page hero section - Renders an animated macOS-style terminal showing the jugg.ai pipeline cycling through all 6 stages - Each stage displays an ico...

February 26, 20260.1.35Jugg.ai

v0.1.35 — feat: extend ⌘K command palette with feature, pipeline, PR & release search

February 26, 2026 - ⌘K command palette now searchable — Features, pipeline runs, releases, and pull requests are now keyboard-discoverable alongside pages and projects - Debounced search input — 20...

February 26, 20260.1.34Jugg.ai

v0.1.34 — feat: low-balance credit warning in sidebar

What changed The sidebar credit balance widget now proactively warns users when their balance drops below 500 credits (£5.00). When triggered, the component: - Switches to an amber visual state with...

February 26, 20260.1.33Jugg.ai

v0.1.33 — feat: add mobile hamburger menu to marketing nav

Date: February 26, 2026 - Added Sheet-based hamburger menu to MarketingNav for mobile viewports (< 640px) - Desktop navigation remains unchanged at larger breakpoints - Mobile menu includes all nav...

February 26, 20260.1.32Jugg.ai

v0.1.32 — perf: wrap feature.reorder in transaction with single CASE UPDATE swap

v0.1.32 fixes a race condition in the feature.reorder mutation that could produce ordering inconsistencies under concurrent operations. - Wrapped sortOrder swap in db.transaction() for atomic execu...

February 26, 20260.1.31Jugg.ai

v0.1.31 — perf: lift LogEntryRow expansion state and wrap in React.memo

- Fixed the scroll-collapse bug: expanding a log row and scrolling away no longer collapses it on scroll back - Eliminated unnecessary re-renders when new log entries arrive — unrelated rows now stay ...

February 26, 20260.1.30Jugg.ai

v0.1.30 — perf: add indexes to dunningActions for pending action lookups

Added three missing indexes to the dunningactions table: - idxdunningactionsscheduled on (scheduledAt, status) — supports billing cron queries that pick up pending actions - idxdunningactionscustomer...

February 26, 20260.1.29Jugg.ai

v0.1.29 — perf: eliminate redundant getAccessibleProjectIds DB queries via tRPC middleware

Dashboard loads were issuing redundant database queries. The observability dashboard fires 7+ parallel tRPC calls (getSummary, getAgentBreakdown, getShipVelocity, etc.), and each independently fetched...

February 26, 20260.1.28Jugg.ai

v0.1.28 — feat: add cursor-based pagination to feature.list

What changed: - feature.list now uses cursor-based pagination with a default limit of 50 features per page - Frontend replaced client-side pagination state with useInfiniteQuery(), seeding the first p...

February 26, 20260.1.27Jugg.ai

v0.1.27 — perf: make landing page static with ISR (revalidate=3600)

- Landing page converted from fully dynamic server component to static with 1-hour ISR (Incremental Static Regeneration) - Auth-dependent UI (navigation, CTA buttons) extracted into client components ...

February 26, 20260.1.26Jugg.ai

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

- 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() - Ena...

February 26, 20260.1.25Jugg.ai

v0.1.25 — fix(security): add bearer token auth to generated MCP HTTP server

February 26, 2026 The auto-generated MCP HTTP server now requires bearer token authentication on all endpoints except the health check. - Bearer token validation on all MCP endpoints except GET /h...

February 26, 20260.1.24Jugg.ai

v0.1.24 — perf: add composite index on agentJobs(startedAt, status)

{"preview":"The observability dashboard now runs four key queries with guaranteed O(log n) performance. We added a composite index on agentjobs(startedAt, status) to prevent full table scans as pipeli...

February 26, 20260.1.23Jugg.ai

v0.1.23 — perf: replace SSE 3s polling with Postgres LISTEN/NOTIFY + 10s fallback

- Replaced 3-second polling with Postgres LISTEN/NOTIFY — Pipeline SSE connections now receive real-time updates via database triggers instead of continuous polling. - 10-second fallback poll — A coar...

February 26, 20260.1.22Jugg.ai

v0.1.22 — perf: merge costAnalytics 2 sequential DB queries into 1

- Merged two sequential database queries into one in the costAnalytics endpoint - Combined today's cost sum and 30-day cost sum into a single query using conditional FILTER clauses - No changes to the...

February 26, 20260.1.21Jugg.ai

v0.1.21 — perf: consolidate getDashboardTrends from 5 queries into 3

getDashboardTrends previously fired 5 separate COUNT queries via Promise.all on every dashboard load. This release consolidates them to 3 by merging same-table queries with conditional COUNT() FILTER ...

February 26, 20260.1.20Jugg.ai

v0.1.20 — fix(oidc): reject token requests when codeChallengeMethod is not S256

{"content":"# Release v0.1.20: PKCE Downgrade Path Closed\n\nFebruary 26, 2026\n\n## What changed\n\n- 🔒 PKCE security fix: The OIDC token endpoint now strictly requires S256 code challenge method. R...

February 26, 20260.1.19Jugg.ai

v0.1.19 — Security: add stricter rate limiting to waitlist.join public endpoint

- Added waitlistjoin tier to rate limits: 5 requests per hour per IP (vs 30/min for general tRPC mutations) - Middleware now detects waitlist.join requests and enforces the hourly limit before the gen...

February 26, 20260.1.18Jugg.ai

v0.1.18 — fix: use timingSafeEqual for GitHub OAuth state CSRF check

What changed - Replaced plain string comparison (!==) with crypto.timingSafeEqual() in the GitHub OAuth callback state validation - Added new verifyOAuthState() helper that safely compares CSRF token...

February 26, 20260.1.17Jugg.ai

v0.1.17 — fix(security): eliminate sql.raw() in reports router to prevent SQL injection

Removed all sql.raw() usage from the reports router in both template-multi and template-enterprise, replacing it with: - sql.identifier() for table, date, and value column references - buildDateTrunc(...

February 26, 20260.1.16Jugg.ai

v0.1.16 — fix(auth): resolve MFA enforcement bypass for AMR-unaware providers (Google/GitHub)

- Fixed critical bug: Google and GitHub OAuth users were incorrectly blocked when MFAREQUIRED=true because these providers don't emit amr (Authentication Methods Reference) claims in their ID tokens -...

February 26, 20260.1.15Jugg.ai

v0.1.15 — perf: extract retryCount via SQL instead of fetching full inputData JSONB in SSE stream

The SSE stream endpoint for real-time pipeline monitoring was selecting the entire inputData JSONB column on every poll tick (every 3 seconds per connection), then immediately discarding it after extr...

February 26, 20260.1.14Jugg.ai

v0.1.14 — perf: push project.list q/status filters into SQL, partial SELECT

February 26, 2026 - SQL-level filtering: q (search) and status filters now execute in the database instead of JavaScript, eliminating unnecessary row transfers - Partial SELECT: Removed five heavy ...

February 26, 20260.1.13Jugg.ai

v0.1.13 — fix: strip sensitive credentials from agentJobs.inputData API responses

Fixed a credential exposure vulnerability in the observability.getJobDetail tRPC endpoint. Agent jobs store credentials like GitHub tokens and API keys in their inputData field — previously, any authe...

February 26, 20260.1.12Jugg.ai

v0.1.12 — fix: replace in-memory rate limiter with Upstash Redis distributed backend

- Replaced in-memory rate limiter with Upstash Redis distributed backend - Automatic fallback to in-memory sliding-window when Redis env vars aren't set - checkRateLimit() is now async; returns Promis...

February 26, 20260.1.11Jugg.ai

v0.1.11 — fix: mask OAuth client secrets in getAuthConfig for non-admin roles

project.getAuthConfig now masks OAuth client secrets before returning them to users with viewer or editor roles. Previously, all authenticated users could see plaintext secrets for Google, GitHub, Mic...

February 26, 20260.1.10Jugg.ai

v0.1.10 — Security: distributed rate limiting via Upstash Redis (fixes bypass)

- Replaced in-memory rate limiter with distributed Upstash Redis backend - Added sliding-window algorithm using Redis sorted sets (score = timestamp) - Graceful fallback to in-memory store when Redis ...

February 26, 20260.1.9Jugg.ai

v0.1.9 — feat: per-category encryption keys to reduce blast radius

v0.1.9 replaces single-key encryption with four dedicated AES-256-GCM keys — one each for OAuth tokens, GitHub PATs, Neon connection strings, and project environment variables. - Added OAUTHENCRYPT...

February 26, 20260.1.8Jugg.ai

v0.1.8 — fix: audit log missing for envVars.set update path and project config mutations

February 26, 2026 - envVars.set mutation: Fixed missing audit logs on secret updates. Previously, only secret creation was logged — secret rotations left no audit trail. Now both create and update o...

February 26, 20260.1.7Jugg.ai

v0.1.7 — fix(oidc): reject 'plain' PKCE method and make PKCE mandatory (S256-only)

- PKCE is now mandatory — all authorization requests must include a codechallenge - S256-only — the insecure plain PKCE method is rejected; S256 is the only supported method - Removed fallback behavio...

February 26, 20260.1.6Jugg.ai

v0.1.6 — fix(oidc): enforce PKCE for all authorization code flows (RFC 9700)

- codechallenge is now required on all OIDC /oidc/authorize requests - Only S256 is accepted as codechallengemethod; plain is explicitly rejected - 17 new unit tests covering enforcement and regressio...

February 26, 20260.1.5Jugg.ai

v0.1.5 — fix(security): replace sql.raw() with parameterized sql.join() in getLastAutomationRuns

- Replaced sql.raw() with sql.join() in the getLastAutomationRuns query to eliminate manual SQL string escaping - Each source value is now emitted as its own bound parameter instead of being interpola...