feat: add BatchProjectCleaner as an optimization when multiple project deletions are pending by @sumerman in https://github.com/langfuse/langfuse/pull/11476
feat: move batchProjectCleaner to use BullMQ by @sumerman in https://github.com/langfuse/langfuse/pull/11504
feat(corrections): add JSON validation toggle by @marliessophie in https://github.com/langfuse/langfuse/pull/11520
feat(corrections): add global toggle for showing corrections in session and IOPreview components by @marliessophie in https://github.com/langfuse/langfuse/pull/11522
feat: extend BatchProjectCleanerJob to handle dataset run items by @sumerman in https://github.com/langfuse/langfuse/pull/11528
feat(otel): support mapping of custom trace_id for litellm by @jannikmaierhoefer in https://github.com/langfuse/langfuse/pull/11553
feat: cursor-based sequential processing for event propagation by @Steffen911 in https://github.com/langfuse/langfuse/pull/11561
feat(corrections): support diff viewer between actual vs. corrected output by @marliessophie in https://github.com/langfuse/langfuse/pull/11556
Fixes
fix: enforce plan limits for org member invites by @Steffen911 in https://github.com/langfuse/langfuse/pull/11455
fix: ensure correct numeric handling of usage_details values instead of concatenation by @Steffen911 in https://github.com/langfuse/langfuse/pull/11472
fix(api): make retention optional and fix metadata handling in update project by @Steffen911 in https://github.com/langfuse/langfuse/pull/11442
fix(tables): small row height spacing equalized by @nimarb in https://github.com/langfuse/langfuse/pull/11478
fix: posthog reset by @nimarb in https://github.com/langfuse/langfuse/pull/11481
fix: make BatchProjectCleaner start conditional for events table by @sumerman in https://github.com/langfuse/langfuse/pull/11480
fix: posthog init by @nimarb in https://github.com/langfuse/langfuse/pull/11482
fix: make BatchProjectCleaner start conditional for events table by @sumerman in https://github.com/langfuse/langfuse/pull/11483
fix: return empty string for correction data type by @marliessophie in https://github.com/langfuse/langfuse/pull/11490
fix: update dataset name duplication logic to append "(copy)" by @marliessophie in https://github.com/langfuse/langfuse/pull/11494
fix: deleteEventsByTraceIds should respect global deletion timeout by @sumerman in https://github.com/langfuse/langfuse/pull/11491
fix(trace): add beta toggle instead of tab by @nimarb in https://github.com/langfuse/langfuse/pull/11495
fix: add search for prompt version dropdown by @marliessophie in https://github.com/langfuse/langfuse/pull/11500
fix: prevent retention configuration drift when queues are backlogged by @sumerman in https://github.com/langfuse/langfuse/pull/11502
fix(otel-ingestion-ai-sdk): parse usage from both ai.usage and providerMetadata by @hassiebp in https://github.com/langfuse/langfuse/pull/11498
fix(api): fix score API environment filtering for session scores by @sumerman in https://github.com/langfuse/langfuse/pull/11515
fix(score-analytics): include source type in distribution chart legends by @Lotte-Verheyden in https://github.com/langfuse/langfuse/pull/11458
fix(filters): date picker time adjustments don't change value by @nimarb in https://github.com/langfuse/langfuse/pull/11531
fix: fixing bullmq config for BatchProjectDelete. removing accidentally commited dataModel changes. by @sumerman in https://github.com/langfuse/langfuse/pull/11551
fix(slack): install endpoint by @Steffen911 in https://github.com/langfuse/langfuse/pull/11566
fix(trace): ensure JSON expansion state is honoured across traces by @nimarb in https://github.com/langfuse/langfuse/pull/11518
fix(events-ingestion): add trace_name to direct writes by @hassiebp in https://github.com/langfuse/langfuse/pull/11559
Chores
chore: add sign up event by @nimarb in https://github.com/langfuse/langfuse/pull/11473
style: display message for non-annotation scores in AnnotationDrawer by @marliessophie in https://github.com/langfuse/langfuse/pull/11497
chore(dataset-item-events): drop unused tables and sys_id col by @marliessophie in https://github.com/langfuse/langfuse/pull/11136
chore(annotation-queue-ui): add onOpenChange callback for smooth scrolling behavior when the dropdown opens by @marliessophie in https://github.com/langfuse/langfuse/pull/11527
chore(ui): show 1pass modal only for sign-up/sign-in input fields by @marliessophie in https://github.com/langfuse/langfuse/pull/11530
chore: add span attributes for session span by @maxdeichmann in https://github.com/langfuse/langfuse/pull/11549
chore: LANGFUSE_BATCH_PROJECT_CLEANER_SLEEP_ON_EMPTY_MS bump by @sumerman in https://github.com/langfuse/langfuse/pull/11554
chore: forbidden on excessive chatcompletion use by @nimarb in https://github.com/langfuse/langfuse/pull/11555
chore: reduce event dual write timestamp buffer from 3.5min to 2min by @Steffen911 in https://github.com/langfuse/langfuse/pull/11552
chore(sessions): enhance TraceRow component with annotation queue item creation functionality by @marliessophie in https://github.com/langfuse/langfuse/pull/11560
Full Changelog: https://github.com/langfuse/langfuse/compare/v3.146.0...v3.147.0