Skip to content

ref!: Remove flushAsync option - #2409

Merged
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda
Aug 31, 2026
Merged

ref!: Remove flushAsync option#2409
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda

Conversation

@lforst

@lforstLuca Forstner (lforst) commented Aug 28, 2026

Copy link
Copy Markdown
Member

Ref braintrustdata/braintrust-sdk-javascript#1841

flushAsync grinded my gears a bit a) as a user b) as a maintainer. Why?:

  • As a user, it added a quite intransparent API that is hard to wrap your head around.
  • As a user, it added a generic type to otherwise very non-generic APIs that made the LSP types incredibly hard to navigate
  • As a maintainer, it required a generic type to be passed around to literally everywhere
  • As a maintainer, it required us to have a weird flushAsync option to every tracing API

In reality, what you can do instead, and which is very simple to understand, is simply do await flush() or await logger.flush() right after a span is ended. Not hard, very few if no drawbacks.

@lforstLuca Forstner (lforst) mentioned this pull request Aug 28, 2026
Open
10 tasks
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:03
@lforst
Luca Forstner (lforst) changed the base branch from v4 to mainAugust 28, 2026 15:04
@lforst
Luca Forstner (lforst)force-pushed the lforst/dum-e/florence-0cc173acda branch from 15d91a5 to 11736b4CompareAugust 28, 2026 15:58
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:59
@lforstLuca Forstner (lforst) changed the title ref!: Remove flushAsync option everywhereref!: Remove flushAsync optionAug 31, 2026
@lforst
Luca Forstner (lforst) merged commit 34bff9d into v4Aug 31, 2026
90 of 92 checks passed
@lforst
Luca Forstner (lforst) deleted the lforst/dum-e/florence-0cc173acda branch August 31, 2026 18:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lforst@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
ref!: Remove `flushAsync` option by lforst · Pull Request #2409 · braintrustdata/braintrust-sdk-javascript · GitHub
Skip to content

ref!: Remove flushAsync option - #2409

Merged
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda
Aug 31, 2026
Merged

ref!: Remove flushAsync option#2409
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda

Conversation

@lforst

@lforstLuca Forstner (lforst) commented Aug 28, 2026

Copy link
Copy Markdown
Member

Ref braintrustdata/braintrust-sdk-javascript#1841

flushAsync grinded my gears a bit a) as a user b) as a maintainer. Why?:

  • As a user, it added a quite intransparent API that is hard to wrap your head around.
  • As a user, it added a generic type to otherwise very non-generic APIs that made the LSP types incredibly hard to navigate
  • As a maintainer, it required a generic type to be passed around to literally everywhere
  • As a maintainer, it required us to have a weird flushAsync option to every tracing API

In reality, what you can do instead, and which is very simple to understand, is simply do await flush() or await logger.flush() right after a span is ended. Not hard, very few if no drawbacks.

@lforstLuca Forstner (lforst) mentioned this pull request Aug 28, 2026
Open
10 tasks
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:03
@lforst
Luca Forstner (lforst) changed the base branch from v4 to mainAugust 28, 2026 15:04
@lforst
Luca Forstner (lforst)force-pushed the lforst/dum-e/florence-0cc173acda branch from 15d91a5 to 11736b4CompareAugust 28, 2026 15:58
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:59
@lforstLuca Forstner (lforst) changed the title ref!: Remove flushAsync option everywhereref!: Remove flushAsync optionAug 31, 2026
@lforst
Luca Forstner (lforst) merged commit 34bff9d into v4Aug 31, 2026
90 of 92 checks passed
@lforst
Luca Forstner (lforst) deleted the lforst/dum-e/florence-0cc173acda branch August 31, 2026 18:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lforst@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' ref!: Remove `flushAsync` option by lforst · Pull Request #2409 · braintrustdata/braintrust-sdk-javascript · GitHub
Skip to content

ref!: Remove flushAsync option - #2409

Merged
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda
Aug 31, 2026
Merged

ref!: Remove flushAsync option#2409
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda

Conversation

@lforst

@lforstLuca Forstner (lforst) commented Aug 28, 2026

Copy link
Copy Markdown
Member

Ref braintrustdata/braintrust-sdk-javascript#1841

flushAsync grinded my gears a bit a) as a user b) as a maintainer. Why?:

  • As a user, it added a quite intransparent API that is hard to wrap your head around.
  • As a user, it added a generic type to otherwise very non-generic APIs that made the LSP types incredibly hard to navigate
  • As a maintainer, it required a generic type to be passed around to literally everywhere
  • As a maintainer, it required us to have a weird flushAsync option to every tracing API

In reality, what you can do instead, and which is very simple to understand, is simply do await flush() or await logger.flush() right after a span is ended. Not hard, very few if no drawbacks.

@lforstLuca Forstner (lforst) mentioned this pull request Aug 28, 2026
Open
10 tasks
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:03
@lforst
Luca Forstner (lforst) changed the base branch from v4 to mainAugust 28, 2026 15:04
@lforst
Luca Forstner (lforst)force-pushed the lforst/dum-e/florence-0cc173acda branch from 15d91a5 to 11736b4CompareAugust 28, 2026 15:58
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:59
@lforstLuca Forstner (lforst) changed the title ref!: Remove flushAsync option everywhereref!: Remove flushAsync optionAug 31, 2026
@lforst
Luca Forstner (lforst) merged commit 34bff9d into v4Aug 31, 2026
90 of 92 checks passed
@lforst
Luca Forstner (lforst) deleted the lforst/dum-e/florence-0cc173acda branch August 31, 2026 18:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lforst@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' ref!: Remove `flushAsync` option by lforst · Pull Request #2409 · braintrustdata/braintrust-sdk-javascript · GitHub
Skip to content

ref!: Remove flushAsync option - #2409

Merged
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda
Aug 31, 2026
Merged

ref!: Remove flushAsync option#2409
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda

Conversation

@lforst

@lforstLuca Forstner (lforst) commented Aug 28, 2026

Copy link
Copy Markdown
Member

Ref braintrustdata/braintrust-sdk-javascript#1841

flushAsync grinded my gears a bit a) as a user b) as a maintainer. Why?:

  • As a user, it added a quite intransparent API that is hard to wrap your head around.
  • As a user, it added a generic type to otherwise very non-generic APIs that made the LSP types incredibly hard to navigate
  • As a maintainer, it required a generic type to be passed around to literally everywhere
  • As a maintainer, it required us to have a weird flushAsync option to every tracing API

In reality, what you can do instead, and which is very simple to understand, is simply do await flush() or await logger.flush() right after a span is ended. Not hard, very few if no drawbacks.

@lforstLuca Forstner (lforst) mentioned this pull request Aug 28, 2026
Open
10 tasks
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:03
@lforst
Luca Forstner (lforst) changed the base branch from v4 to mainAugust 28, 2026 15:04
@lforst
Luca Forstner (lforst)force-pushed the lforst/dum-e/florence-0cc173acda branch from 15d91a5 to 11736b4CompareAugust 28, 2026 15:58
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:59
@lforstLuca Forstner (lforst) changed the title ref!: Remove flushAsync option everywhereref!: Remove flushAsync optionAug 31, 2026
@lforst
Luca Forstner (lforst) merged commit 34bff9d into v4Aug 31, 2026
90 of 92 checks passed
@lforst
Luca Forstner (lforst) deleted the lforst/dum-e/florence-0cc173acda branch August 31, 2026 18:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lforst@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' ref!: Remove `flushAsync` option by lforst · Pull Request #2409 · braintrustdata/braintrust-sdk-javascript · GitHub
Skip to content

ref!: Remove flushAsync option - #2409

Merged
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda
Aug 31, 2026
Merged

ref!: Remove flushAsync option#2409
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda

Conversation

@lforst

@lforstLuca Forstner (lforst) commented Aug 28, 2026

Copy link
Copy Markdown
Member

Ref braintrustdata/braintrust-sdk-javascript#1841

flushAsync grinded my gears a bit a) as a user b) as a maintainer. Why?:

  • As a user, it added a quite intransparent API that is hard to wrap your head around.
  • As a user, it added a generic type to otherwise very non-generic APIs that made the LSP types incredibly hard to navigate
  • As a maintainer, it required a generic type to be passed around to literally everywhere
  • As a maintainer, it required us to have a weird flushAsync option to every tracing API

In reality, what you can do instead, and which is very simple to understand, is simply do await flush() or await logger.flush() right after a span is ended. Not hard, very few if no drawbacks.

@lforstLuca Forstner (lforst) mentioned this pull request Aug 28, 2026
Open
10 tasks
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:03
@lforst
Luca Forstner (lforst) changed the base branch from v4 to mainAugust 28, 2026 15:04
@lforst
Luca Forstner (lforst)force-pushed the lforst/dum-e/florence-0cc173acda branch from 15d91a5 to 11736b4CompareAugust 28, 2026 15:58
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:59
@lforstLuca Forstner (lforst) changed the title ref!: Remove flushAsync option everywhereref!: Remove flushAsync optionAug 31, 2026
@lforst
Luca Forstner (lforst) merged commit 34bff9d into v4Aug 31, 2026
90 of 92 checks passed
@lforst
Luca Forstner (lforst) deleted the lforst/dum-e/florence-0cc173acda branch August 31, 2026 18:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lforst@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' ref!: Remove `flushAsync` option by lforst · Pull Request #2409 · braintrustdata/braintrust-sdk-javascript · GitHub
Skip to content

ref!: Remove flushAsync option - #2409

Merged
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda
Aug 31, 2026
Merged

ref!: Remove flushAsync option#2409
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda

Conversation

@lforst

@lforstLuca Forstner (lforst) commented Aug 28, 2026

Copy link
Copy Markdown
Member

Ref braintrustdata/braintrust-sdk-javascript#1841

flushAsync grinded my gears a bit a) as a user b) as a maintainer. Why?:

  • As a user, it added a quite intransparent API that is hard to wrap your head around.
  • As a user, it added a generic type to otherwise very non-generic APIs that made the LSP types incredibly hard to navigate
  • As a maintainer, it required a generic type to be passed around to literally everywhere
  • As a maintainer, it required us to have a weird flushAsync option to every tracing API

In reality, what you can do instead, and which is very simple to understand, is simply do await flush() or await logger.flush() right after a span is ended. Not hard, very few if no drawbacks.

@lforstLuca Forstner (lforst) mentioned this pull request Aug 28, 2026
Open
10 tasks
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:03
@lforst
Luca Forstner (lforst) changed the base branch from v4 to mainAugust 28, 2026 15:04
@lforst
Luca Forstner (lforst)force-pushed the lforst/dum-e/florence-0cc173acda branch from 15d91a5 to 11736b4CompareAugust 28, 2026 15:58
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:59
@lforstLuca Forstner (lforst) changed the title ref!: Remove flushAsync option everywhereref!: Remove flushAsync optionAug 31, 2026
@lforst
Luca Forstner (lforst) merged commit 34bff9d into v4Aug 31, 2026
90 of 92 checks passed
@lforst
Luca Forstner (lforst) deleted the lforst/dum-e/florence-0cc173acda branch August 31, 2026 18:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lforst@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); ref!: Remove `flushAsync` option by lforst · Pull Request #2409 · braintrustdata/braintrust-sdk-javascript · GitHub
Skip to content

ref!: Remove flushAsync option - #2409

Merged
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda
Aug 31, 2026
Merged

ref!: Remove flushAsync option#2409
Luca Forstner (lforst) merged 2 commits into
v4from
lforst/dum-e/florence-0cc173acda

Conversation

@lforst

@lforstLuca Forstner (lforst) commented Aug 28, 2026

Copy link
Copy Markdown
Member

Ref braintrustdata/braintrust-sdk-javascript#1841

flushAsync grinded my gears a bit a) as a user b) as a maintainer. Why?:

  • As a user, it added a quite intransparent API that is hard to wrap your head around.
  • As a user, it added a generic type to otherwise very non-generic APIs that made the LSP types incredibly hard to navigate
  • As a maintainer, it required a generic type to be passed around to literally everywhere
  • As a maintainer, it required us to have a weird flushAsync option to every tracing API

In reality, what you can do instead, and which is very simple to understand, is simply do await flush() or await logger.flush() right after a span is ended. Not hard, very few if no drawbacks.

@lforstLuca Forstner (lforst) mentioned this pull request Aug 28, 2026
Open
10 tasks
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:03
@lforst
Luca Forstner (lforst) changed the base branch from v4 to mainAugust 28, 2026 15:04
@lforst
Luca Forstner (lforst)force-pushed the lforst/dum-e/florence-0cc173acda branch from 15d91a5 to 11736b4CompareAugust 28, 2026 15:58
@lforst
Luca Forstner (lforst) changed the base branch from main to v4August 28, 2026 15:59
@lforstLuca Forstner (lforst) changed the title ref!: Remove flushAsync option everywhereref!: Remove flushAsync optionAug 31, 2026
@lforst
Luca Forstner (lforst) merged commit 34bff9d into v4Aug 31, 2026
90 of 92 checks passed
@lforst
Luca Forstner (lforst) deleted the lforst/dum-e/florence-0cc173acda branch August 31, 2026 18:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lforst@AbhiPrasad