Address remaining SDK-288 tracing UX issues - #39

Merged
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups
Sep 1, 2026
Merged

Address remaining SDK-288 tracing UX issues#39
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups

Conversation

@Qard

Copy link
Copy Markdown
Collaborator

Summary

  • add CLI-friendly, fully specified parent identifiers for trace imports while retaining SDK span exports
  • print structured import summaries in human and JSON output
  • reject Codex's incompatible global hook-trust bypass with an actionable explanation
  • warn about obsolete Claude tracing env keys without changing shared Claude settings or removing BRAINTRUST_API_KEY

Addresses SDK-279, SDK-280, SDK-282, and SDK-284.

Validation

  • make test
  • cargo test --manifest-path bt-daemon/Cargo.toml --all-features
  • cargo clippy --manifest-path bt-daemon/Cargo.toml --all-features --all-targets -- -D warnings

@chatgpt-codex-connector

chatgpt-codex-connectorBot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code ReviewCompleted2026-09-01T16:11:30.740540Z0317e8eDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:0317e8ef77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

Comment threadbt-daemon/src/lib.rs
Comment threadbt-daemon/src/paths.rs Outdated
@Qard
Stephen Belanger (Qard) merged commit 3409ef7 into mainSep 1, 2026
20 checks passed
@Qard
Stephen Belanger (Qard) deleted the t3code/sdk-288-followups branch September 1, 2026 16:45
Stephen Belanger (Qard) added a commit to braintrustdata/bt that referenced this pull request Sep 2, 2026
## Summary
Implements the `bt`-owned SDK-288 work:
- SDK-272: make `trace enable` / `trace setup`, `trace run`, and `trace
import` complete from credentials already available to the command.
`BRAINTRUST_API_KEY` remains invocation-local for run/import; persistent
setup materializes it into a normal saved profile for future hooks;
interactive commands collect a missing key, org, or project instead of
requiring a separate login step.
- SDK-274: require explicit consent before ordinary `bt login` saves
`BRAINTRUST_API_KEY`; persistent tracing setup itself is the explicit
request to create the durable login it needs.
- SDK-270 / SDK-275: keep bare `bt status` concise; expand saved profile
and credential-storage details only under `--all`, and show precedence
only for an active environment override.
- SDK-276: clarify that logout is local-only and add a one-confirmation
`logout --all` flow with per-profile JSON results. Profile deletion
clears config references before removing metadata, and rename stages
both names while references move so config never points to a missing
profile.
- SDK-273: provide side-effect-free, credential-redacted auth provenance
to `bt trace doctor`.
- SDK-277: add `bt profiles doctor` and `bt profiles repair`. Automatic
diagnosis and cleanup operate on the enumerable plaintext fallback
store; explicit deleted profile names can be repaired across the OS
credential store and plaintext fallback without unsafe keychain
enumeration.
- SDK-278: format no-browser/remote OAuth as labeled authorization,
callback, credential-storage, and logged-in-profile sections while
keeping JSON and quiet output clean.
- SDK-281: advance the embedded daemon to the integrated plugin-monorepo
`main` commit containing PR #39 and stable trace profile IDs.
## Dependency
braintrustdata/braintrust-coding-agent-plugins#39 has been merged. This
PR pins plugin-monorepo `main` at exact commit
`202b3e305ea7ff74bc6ea117f46a32cc18b61b25`, which contains both the PR
#39 import/setup fixes and the subsequent stable-profile-ID migration
from #44.
## Validation
- `cargo fmt --check`
- `cargo clippy --all-targets --locked -- -D warnings -A
clippy::collapsible_match`
- `cargo test --all-targets --locked -- --skip
eval::tests::eval_args_from_env_populates_supported_fields --skip
eval::tests::eval_args_parse_first_sampling_flag --skip
eval::tests::eval_args_parse_max_concurrency_flag`
- 793 unit tests passed; 3 known eval argument-parser tests skipped
- 62 CLI tests passed
- dataset, eval dev-server, eval fixture, functions, and setup
integration suites passed
- focused regression proving environment-auth setup persists and routes
by the new stable profile ID
- `cargo check --locked`
- `git diff --check`
The three excluded eval tests fail without these changes because their
parser inputs combine `--dev` with `--max-concurrency`, which clap
declares mutually conflicting. Current Rust 1.95 clippy also reports
unrelated `collapsible_match` findings in existing dataset, SQL, and
trace code; the repository's existing lint invocation allows that lint.
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

@Qard@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Address remaining SDK-288 tracing UX issues - #39

Merged
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups
Sep 1, 2026
Merged

Address remaining SDK-288 tracing UX issues#39
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups

Conversation

@Qard

Copy link
Copy Markdown
Collaborator

Summary

  • add CLI-friendly, fully specified parent identifiers for trace imports while retaining SDK span exports
  • print structured import summaries in human and JSON output
  • reject Codex's incompatible global hook-trust bypass with an actionable explanation
  • warn about obsolete Claude tracing env keys without changing shared Claude settings or removing BRAINTRUST_API_KEY

Addresses SDK-279, SDK-280, SDK-282, and SDK-284.

Validation

  • make test
  • cargo test --manifest-path bt-daemon/Cargo.toml --all-features
  • cargo clippy --manifest-path bt-daemon/Cargo.toml --all-features --all-targets -- -D warnings

@chatgpt-codex-connector

chatgpt-codex-connectorBot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code ReviewCompleted2026-09-01T16:11:30.740540Z0317e8eDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:0317e8ef77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

Comment threadbt-daemon/src/lib.rs
Comment threadbt-daemon/src/paths.rs Outdated
@Qard
Stephen Belanger (Qard) merged commit 3409ef7 into mainSep 1, 2026
20 checks passed
@Qard
Stephen Belanger (Qard) deleted the t3code/sdk-288-followups branch September 1, 2026 16:45
Stephen Belanger (Qard) added a commit to braintrustdata/bt that referenced this pull request Sep 2, 2026
## Summary
Implements the `bt`-owned SDK-288 work:
- SDK-272: make `trace enable` / `trace setup`, `trace run`, and `trace
import` complete from credentials already available to the command.
`BRAINTRUST_API_KEY` remains invocation-local for run/import; persistent
setup materializes it into a normal saved profile for future hooks;
interactive commands collect a missing key, org, or project instead of
requiring a separate login step.
- SDK-274: require explicit consent before ordinary `bt login` saves
`BRAINTRUST_API_KEY`; persistent tracing setup itself is the explicit
request to create the durable login it needs.
- SDK-270 / SDK-275: keep bare `bt status` concise; expand saved profile
and credential-storage details only under `--all`, and show precedence
only for an active environment override.
- SDK-276: clarify that logout is local-only and add a one-confirmation
`logout --all` flow with per-profile JSON results. Profile deletion
clears config references before removing metadata, and rename stages
both names while references move so config never points to a missing
profile.
- SDK-273: provide side-effect-free, credential-redacted auth provenance
to `bt trace doctor`.
- SDK-277: add `bt profiles doctor` and `bt profiles repair`. Automatic
diagnosis and cleanup operate on the enumerable plaintext fallback
store; explicit deleted profile names can be repaired across the OS
credential store and plaintext fallback without unsafe keychain
enumeration.
- SDK-278: format no-browser/remote OAuth as labeled authorization,
callback, credential-storage, and logged-in-profile sections while
keeping JSON and quiet output clean.
- SDK-281: advance the embedded daemon to the integrated plugin-monorepo
`main` commit containing PR #39 and stable trace profile IDs.
## Dependency
braintrustdata/braintrust-coding-agent-plugins#39 has been merged. This
PR pins plugin-monorepo `main` at exact commit
`202b3e305ea7ff74bc6ea117f46a32cc18b61b25`, which contains both the PR
#39 import/setup fixes and the subsequent stable-profile-ID migration
from #44.
## Validation
- `cargo fmt --check`
- `cargo clippy --all-targets --locked -- -D warnings -A
clippy::collapsible_match`
- `cargo test --all-targets --locked -- --skip
eval::tests::eval_args_from_env_populates_supported_fields --skip
eval::tests::eval_args_parse_first_sampling_flag --skip
eval::tests::eval_args_parse_max_concurrency_flag`
- 793 unit tests passed; 3 known eval argument-parser tests skipped
- 62 CLI tests passed
- dataset, eval dev-server, eval fixture, functions, and setup
integration suites passed
- focused regression proving environment-auth setup persists and routes
by the new stable profile ID
- `cargo check --locked`
- `git diff --check`
The three excluded eval tests fail without these changes because their
parser inputs combine `--dev` with `--max-concurrency`, which clap
declares mutually conflicting. Current Rust 1.95 clippy also reports
unrelated `collapsible_match` findings in existing dataset, SQL, and
trace code; the repository's existing lint invocation allows that lint.
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

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

Address remaining SDK-288 tracing UX issues - #39

Merged
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups
Sep 1, 2026
Merged

Address remaining SDK-288 tracing UX issues#39
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups

Conversation

@Qard

Copy link
Copy Markdown
Collaborator

Summary

  • add CLI-friendly, fully specified parent identifiers for trace imports while retaining SDK span exports
  • print structured import summaries in human and JSON output
  • reject Codex's incompatible global hook-trust bypass with an actionable explanation
  • warn about obsolete Claude tracing env keys without changing shared Claude settings or removing BRAINTRUST_API_KEY

Addresses SDK-279, SDK-280, SDK-282, and SDK-284.

Validation

  • make test
  • cargo test --manifest-path bt-daemon/Cargo.toml --all-features
  • cargo clippy --manifest-path bt-daemon/Cargo.toml --all-features --all-targets -- -D warnings

@chatgpt-codex-connector

chatgpt-codex-connectorBot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code ReviewCompleted2026-09-01T16:11:30.740540Z0317e8eDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:0317e8ef77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

Comment threadbt-daemon/src/lib.rs
Comment threadbt-daemon/src/paths.rs Outdated
@Qard
Stephen Belanger (Qard) merged commit 3409ef7 into mainSep 1, 2026
20 checks passed
@Qard
Stephen Belanger (Qard) deleted the t3code/sdk-288-followups branch September 1, 2026 16:45
Stephen Belanger (Qard) added a commit to braintrustdata/bt that referenced this pull request Sep 2, 2026
## Summary
Implements the `bt`-owned SDK-288 work:
- SDK-272: make `trace enable` / `trace setup`, `trace run`, and `trace
import` complete from credentials already available to the command.
`BRAINTRUST_API_KEY` remains invocation-local for run/import; persistent
setup materializes it into a normal saved profile for future hooks;
interactive commands collect a missing key, org, or project instead of
requiring a separate login step.
- SDK-274: require explicit consent before ordinary `bt login` saves
`BRAINTRUST_API_KEY`; persistent tracing setup itself is the explicit
request to create the durable login it needs.
- SDK-270 / SDK-275: keep bare `bt status` concise; expand saved profile
and credential-storage details only under `--all`, and show precedence
only for an active environment override.
- SDK-276: clarify that logout is local-only and add a one-confirmation
`logout --all` flow with per-profile JSON results. Profile deletion
clears config references before removing metadata, and rename stages
both names while references move so config never points to a missing
profile.
- SDK-273: provide side-effect-free, credential-redacted auth provenance
to `bt trace doctor`.
- SDK-277: add `bt profiles doctor` and `bt profiles repair`. Automatic
diagnosis and cleanup operate on the enumerable plaintext fallback
store; explicit deleted profile names can be repaired across the OS
credential store and plaintext fallback without unsafe keychain
enumeration.
- SDK-278: format no-browser/remote OAuth as labeled authorization,
callback, credential-storage, and logged-in-profile sections while
keeping JSON and quiet output clean.
- SDK-281: advance the embedded daemon to the integrated plugin-monorepo
`main` commit containing PR #39 and stable trace profile IDs.
## Dependency
braintrustdata/braintrust-coding-agent-plugins#39 has been merged. This
PR pins plugin-monorepo `main` at exact commit
`202b3e305ea7ff74bc6ea117f46a32cc18b61b25`, which contains both the PR
#39 import/setup fixes and the subsequent stable-profile-ID migration
from #44.
## Validation
- `cargo fmt --check`
- `cargo clippy --all-targets --locked -- -D warnings -A
clippy::collapsible_match`
- `cargo test --all-targets --locked -- --skip
eval::tests::eval_args_from_env_populates_supported_fields --skip
eval::tests::eval_args_parse_first_sampling_flag --skip
eval::tests::eval_args_parse_max_concurrency_flag`
- 793 unit tests passed; 3 known eval argument-parser tests skipped
- 62 CLI tests passed
- dataset, eval dev-server, eval fixture, functions, and setup
integration suites passed
- focused regression proving environment-auth setup persists and routes
by the new stable profile ID
- `cargo check --locked`
- `git diff --check`
The three excluded eval tests fail without these changes because their
parser inputs combine `--dev` with `--max-concurrency`, which clap
declares mutually conflicting. Current Rust 1.95 clippy also reports
unrelated `collapsible_match` findings in existing dataset, SQL, and
trace code; the repository's existing lint invocation allows that lint.
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

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

Address remaining SDK-288 tracing UX issues - #39

Merged
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups
Sep 1, 2026
Merged

Address remaining SDK-288 tracing UX issues#39
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups

Conversation

@Qard

Copy link
Copy Markdown
Collaborator

Summary

  • add CLI-friendly, fully specified parent identifiers for trace imports while retaining SDK span exports
  • print structured import summaries in human and JSON output
  • reject Codex's incompatible global hook-trust bypass with an actionable explanation
  • warn about obsolete Claude tracing env keys without changing shared Claude settings or removing BRAINTRUST_API_KEY

Addresses SDK-279, SDK-280, SDK-282, and SDK-284.

Validation

  • make test
  • cargo test --manifest-path bt-daemon/Cargo.toml --all-features
  • cargo clippy --manifest-path bt-daemon/Cargo.toml --all-features --all-targets -- -D warnings

@chatgpt-codex-connector

chatgpt-codex-connectorBot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code ReviewCompleted2026-09-01T16:11:30.740540Z0317e8eDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:0317e8ef77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

Comment threadbt-daemon/src/lib.rs
Comment threadbt-daemon/src/paths.rs Outdated
@Qard
Stephen Belanger (Qard) merged commit 3409ef7 into mainSep 1, 2026
20 checks passed
@Qard
Stephen Belanger (Qard) deleted the t3code/sdk-288-followups branch September 1, 2026 16:45
Stephen Belanger (Qard) added a commit to braintrustdata/bt that referenced this pull request Sep 2, 2026
## Summary
Implements the `bt`-owned SDK-288 work:
- SDK-272: make `trace enable` / `trace setup`, `trace run`, and `trace
import` complete from credentials already available to the command.
`BRAINTRUST_API_KEY` remains invocation-local for run/import; persistent
setup materializes it into a normal saved profile for future hooks;
interactive commands collect a missing key, org, or project instead of
requiring a separate login step.
- SDK-274: require explicit consent before ordinary `bt login` saves
`BRAINTRUST_API_KEY`; persistent tracing setup itself is the explicit
request to create the durable login it needs.
- SDK-270 / SDK-275: keep bare `bt status` concise; expand saved profile
and credential-storage details only under `--all`, and show precedence
only for an active environment override.
- SDK-276: clarify that logout is local-only and add a one-confirmation
`logout --all` flow with per-profile JSON results. Profile deletion
clears config references before removing metadata, and rename stages
both names while references move so config never points to a missing
profile.
- SDK-273: provide side-effect-free, credential-redacted auth provenance
to `bt trace doctor`.
- SDK-277: add `bt profiles doctor` and `bt profiles repair`. Automatic
diagnosis and cleanup operate on the enumerable plaintext fallback
store; explicit deleted profile names can be repaired across the OS
credential store and plaintext fallback without unsafe keychain
enumeration.
- SDK-278: format no-browser/remote OAuth as labeled authorization,
callback, credential-storage, and logged-in-profile sections while
keeping JSON and quiet output clean.
- SDK-281: advance the embedded daemon to the integrated plugin-monorepo
`main` commit containing PR #39 and stable trace profile IDs.
## Dependency
braintrustdata/braintrust-coding-agent-plugins#39 has been merged. This
PR pins plugin-monorepo `main` at exact commit
`202b3e305ea7ff74bc6ea117f46a32cc18b61b25`, which contains both the PR
#39 import/setup fixes and the subsequent stable-profile-ID migration
from #44.
## Validation
- `cargo fmt --check`
- `cargo clippy --all-targets --locked -- -D warnings -A
clippy::collapsible_match`
- `cargo test --all-targets --locked -- --skip
eval::tests::eval_args_from_env_populates_supported_fields --skip
eval::tests::eval_args_parse_first_sampling_flag --skip
eval::tests::eval_args_parse_max_concurrency_flag`
- 793 unit tests passed; 3 known eval argument-parser tests skipped
- 62 CLI tests passed
- dataset, eval dev-server, eval fixture, functions, and setup
integration suites passed
- focused regression proving environment-auth setup persists and routes
by the new stable profile ID
- `cargo check --locked`
- `git diff --check`
The three excluded eval tests fail without these changes because their
parser inputs combine `--dev` with `--max-concurrency`, which clap
declares mutually conflicting. Current Rust 1.95 clippy also reports
unrelated `collapsible_match` findings in existing dataset, SQL, and
trace code; the repository's existing lint invocation allows that lint.
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

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

Address remaining SDK-288 tracing UX issues - #39

Merged
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups
Sep 1, 2026
Merged

Address remaining SDK-288 tracing UX issues#39
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups

Conversation

@Qard

Copy link
Copy Markdown
Collaborator

Summary

  • add CLI-friendly, fully specified parent identifiers for trace imports while retaining SDK span exports
  • print structured import summaries in human and JSON output
  • reject Codex's incompatible global hook-trust bypass with an actionable explanation
  • warn about obsolete Claude tracing env keys without changing shared Claude settings or removing BRAINTRUST_API_KEY

Addresses SDK-279, SDK-280, SDK-282, and SDK-284.

Validation

  • make test
  • cargo test --manifest-path bt-daemon/Cargo.toml --all-features
  • cargo clippy --manifest-path bt-daemon/Cargo.toml --all-features --all-targets -- -D warnings

@chatgpt-codex-connector

chatgpt-codex-connectorBot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code ReviewCompleted2026-09-01T16:11:30.740540Z0317e8eDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:0317e8ef77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

Comment threadbt-daemon/src/lib.rs
Comment threadbt-daemon/src/paths.rs Outdated
@Qard
Stephen Belanger (Qard) merged commit 3409ef7 into mainSep 1, 2026
20 checks passed
@Qard
Stephen Belanger (Qard) deleted the t3code/sdk-288-followups branch September 1, 2026 16:45
Stephen Belanger (Qard) added a commit to braintrustdata/bt that referenced this pull request Sep 2, 2026
## Summary
Implements the `bt`-owned SDK-288 work:
- SDK-272: make `trace enable` / `trace setup`, `trace run`, and `trace
import` complete from credentials already available to the command.
`BRAINTRUST_API_KEY` remains invocation-local for run/import; persistent
setup materializes it into a normal saved profile for future hooks;
interactive commands collect a missing key, org, or project instead of
requiring a separate login step.
- SDK-274: require explicit consent before ordinary `bt login` saves
`BRAINTRUST_API_KEY`; persistent tracing setup itself is the explicit
request to create the durable login it needs.
- SDK-270 / SDK-275: keep bare `bt status` concise; expand saved profile
and credential-storage details only under `--all`, and show precedence
only for an active environment override.
- SDK-276: clarify that logout is local-only and add a one-confirmation
`logout --all` flow with per-profile JSON results. Profile deletion
clears config references before removing metadata, and rename stages
both names while references move so config never points to a missing
profile.
- SDK-273: provide side-effect-free, credential-redacted auth provenance
to `bt trace doctor`.
- SDK-277: add `bt profiles doctor` and `bt profiles repair`. Automatic
diagnosis and cleanup operate on the enumerable plaintext fallback
store; explicit deleted profile names can be repaired across the OS
credential store and plaintext fallback without unsafe keychain
enumeration.
- SDK-278: format no-browser/remote OAuth as labeled authorization,
callback, credential-storage, and logged-in-profile sections while
keeping JSON and quiet output clean.
- SDK-281: advance the embedded daemon to the integrated plugin-monorepo
`main` commit containing PR #39 and stable trace profile IDs.
## Dependency
braintrustdata/braintrust-coding-agent-plugins#39 has been merged. This
PR pins plugin-monorepo `main` at exact commit
`202b3e305ea7ff74bc6ea117f46a32cc18b61b25`, which contains both the PR
#39 import/setup fixes and the subsequent stable-profile-ID migration
from #44.
## Validation
- `cargo fmt --check`
- `cargo clippy --all-targets --locked -- -D warnings -A
clippy::collapsible_match`
- `cargo test --all-targets --locked -- --skip
eval::tests::eval_args_from_env_populates_supported_fields --skip
eval::tests::eval_args_parse_first_sampling_flag --skip
eval::tests::eval_args_parse_max_concurrency_flag`
- 793 unit tests passed; 3 known eval argument-parser tests skipped
- 62 CLI tests passed
- dataset, eval dev-server, eval fixture, functions, and setup
integration suites passed
- focused regression proving environment-auth setup persists and routes
by the new stable profile ID
- `cargo check --locked`
- `git diff --check`
The three excluded eval tests fail without these changes because their
parser inputs combine `--dev` with `--max-concurrency`, which clap
declares mutually conflicting. Current Rust 1.95 clippy also reports
unrelated `collapsible_match` findings in existing dataset, SQL, and
trace code; the repository's existing lint invocation allows that lint.
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

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

Address remaining SDK-288 tracing UX issues - #39

Merged
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups
Sep 1, 2026
Merged

Address remaining SDK-288 tracing UX issues#39
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups

Conversation

@Qard

Copy link
Copy Markdown
Collaborator

Summary

  • add CLI-friendly, fully specified parent identifiers for trace imports while retaining SDK span exports
  • print structured import summaries in human and JSON output
  • reject Codex's incompatible global hook-trust bypass with an actionable explanation
  • warn about obsolete Claude tracing env keys without changing shared Claude settings or removing BRAINTRUST_API_KEY

Addresses SDK-279, SDK-280, SDK-282, and SDK-284.

Validation

  • make test
  • cargo test --manifest-path bt-daemon/Cargo.toml --all-features
  • cargo clippy --manifest-path bt-daemon/Cargo.toml --all-features --all-targets -- -D warnings

@chatgpt-codex-connector

chatgpt-codex-connectorBot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code ReviewCompleted2026-09-01T16:11:30.740540Z0317e8eDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:0317e8ef77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

Comment threadbt-daemon/src/lib.rs
Comment threadbt-daemon/src/paths.rs Outdated
@Qard
Stephen Belanger (Qard) merged commit 3409ef7 into mainSep 1, 2026
20 checks passed
@Qard
Stephen Belanger (Qard) deleted the t3code/sdk-288-followups branch September 1, 2026 16:45
Stephen Belanger (Qard) added a commit to braintrustdata/bt that referenced this pull request Sep 2, 2026
## Summary
Implements the `bt`-owned SDK-288 work:
- SDK-272: make `trace enable` / `trace setup`, `trace run`, and `trace
import` complete from credentials already available to the command.
`BRAINTRUST_API_KEY` remains invocation-local for run/import; persistent
setup materializes it into a normal saved profile for future hooks;
interactive commands collect a missing key, org, or project instead of
requiring a separate login step.
- SDK-274: require explicit consent before ordinary `bt login` saves
`BRAINTRUST_API_KEY`; persistent tracing setup itself is the explicit
request to create the durable login it needs.
- SDK-270 / SDK-275: keep bare `bt status` concise; expand saved profile
and credential-storage details only under `--all`, and show precedence
only for an active environment override.
- SDK-276: clarify that logout is local-only and add a one-confirmation
`logout --all` flow with per-profile JSON results. Profile deletion
clears config references before removing metadata, and rename stages
both names while references move so config never points to a missing
profile.
- SDK-273: provide side-effect-free, credential-redacted auth provenance
to `bt trace doctor`.
- SDK-277: add `bt profiles doctor` and `bt profiles repair`. Automatic
diagnosis and cleanup operate on the enumerable plaintext fallback
store; explicit deleted profile names can be repaired across the OS
credential store and plaintext fallback without unsafe keychain
enumeration.
- SDK-278: format no-browser/remote OAuth as labeled authorization,
callback, credential-storage, and logged-in-profile sections while
keeping JSON and quiet output clean.
- SDK-281: advance the embedded daemon to the integrated plugin-monorepo
`main` commit containing PR #39 and stable trace profile IDs.
## Dependency
braintrustdata/braintrust-coding-agent-plugins#39 has been merged. This
PR pins plugin-monorepo `main` at exact commit
`202b3e305ea7ff74bc6ea117f46a32cc18b61b25`, which contains both the PR
#39 import/setup fixes and the subsequent stable-profile-ID migration
from #44.
## Validation
- `cargo fmt --check`
- `cargo clippy --all-targets --locked -- -D warnings -A
clippy::collapsible_match`
- `cargo test --all-targets --locked -- --skip
eval::tests::eval_args_from_env_populates_supported_fields --skip
eval::tests::eval_args_parse_first_sampling_flag --skip
eval::tests::eval_args_parse_max_concurrency_flag`
- 793 unit tests passed; 3 known eval argument-parser tests skipped
- 62 CLI tests passed
- dataset, eval dev-server, eval fixture, functions, and setup
integration suites passed
- focused regression proving environment-auth setup persists and routes
by the new stable profile ID
- `cargo check --locked`
- `git diff --check`
The three excluded eval tests fail without these changes because their
parser inputs combine `--dev` with `--max-concurrency`, which clap
declares mutually conflicting. Current Rust 1.95 clippy also reports
unrelated `collapsible_match` findings in existing dataset, SQL, and
trace code; the repository's existing lint invocation allows that lint.
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

@Qard@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Address remaining SDK-288 tracing UX issues - #39

Merged
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups
Sep 1, 2026
Merged

Address remaining SDK-288 tracing UX issues#39
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups

Conversation

@Qard

Copy link
Copy Markdown
Collaborator

Summary

  • add CLI-friendly, fully specified parent identifiers for trace imports while retaining SDK span exports
  • print structured import summaries in human and JSON output
  • reject Codex's incompatible global hook-trust bypass with an actionable explanation
  • warn about obsolete Claude tracing env keys without changing shared Claude settings or removing BRAINTRUST_API_KEY

Addresses SDK-279, SDK-280, SDK-282, and SDK-284.

Validation

  • make test
  • cargo test --manifest-path bt-daemon/Cargo.toml --all-features
  • cargo clippy --manifest-path bt-daemon/Cargo.toml --all-features --all-targets -- -D warnings

@chatgpt-codex-connector

chatgpt-codex-connectorBot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code ReviewCompleted2026-09-01T16:11:30.740540Z0317e8eDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:0317e8ef77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

Comment threadbt-daemon/src/lib.rs
Comment threadbt-daemon/src/paths.rs Outdated
@Qard
Stephen Belanger (Qard) merged commit 3409ef7 into mainSep 1, 2026
20 checks passed
@Qard
Stephen Belanger (Qard) deleted the t3code/sdk-288-followups branch September 1, 2026 16:45
Stephen Belanger (Qard) added a commit to braintrustdata/bt that referenced this pull request Sep 2, 2026
## Summary
Implements the `bt`-owned SDK-288 work:
- SDK-272: make `trace enable` / `trace setup`, `trace run`, and `trace
import` complete from credentials already available to the command.
`BRAINTRUST_API_KEY` remains invocation-local for run/import; persistent
setup materializes it into a normal saved profile for future hooks;
interactive commands collect a missing key, org, or project instead of
requiring a separate login step.
- SDK-274: require explicit consent before ordinary `bt login` saves
`BRAINTRUST_API_KEY`; persistent tracing setup itself is the explicit
request to create the durable login it needs.
- SDK-270 / SDK-275: keep bare `bt status` concise; expand saved profile
and credential-storage details only under `--all`, and show precedence
only for an active environment override.
- SDK-276: clarify that logout is local-only and add a one-confirmation
`logout --all` flow with per-profile JSON results. Profile deletion
clears config references before removing metadata, and rename stages
both names while references move so config never points to a missing
profile.
- SDK-273: provide side-effect-free, credential-redacted auth provenance
to `bt trace doctor`.
- SDK-277: add `bt profiles doctor` and `bt profiles repair`. Automatic
diagnosis and cleanup operate on the enumerable plaintext fallback
store; explicit deleted profile names can be repaired across the OS
credential store and plaintext fallback without unsafe keychain
enumeration.
- SDK-278: format no-browser/remote OAuth as labeled authorization,
callback, credential-storage, and logged-in-profile sections while
keeping JSON and quiet output clean.
- SDK-281: advance the embedded daemon to the integrated plugin-monorepo
`main` commit containing PR #39 and stable trace profile IDs.
## Dependency
braintrustdata/braintrust-coding-agent-plugins#39 has been merged. This
PR pins plugin-monorepo `main` at exact commit
`202b3e305ea7ff74bc6ea117f46a32cc18b61b25`, which contains both the PR
#39 import/setup fixes and the subsequent stable-profile-ID migration
from #44.
## Validation
- `cargo fmt --check`
- `cargo clippy --all-targets --locked -- -D warnings -A
clippy::collapsible_match`
- `cargo test --all-targets --locked -- --skip
eval::tests::eval_args_from_env_populates_supported_fields --skip
eval::tests::eval_args_parse_first_sampling_flag --skip
eval::tests::eval_args_parse_max_concurrency_flag`
- 793 unit tests passed; 3 known eval argument-parser tests skipped
- 62 CLI tests passed
- dataset, eval dev-server, eval fixture, functions, and setup
integration suites passed
- focused regression proving environment-auth setup persists and routes
by the new stable profile ID
- `cargo check --locked`
- `git diff --check`
The three excluded eval tests fail without these changes because their
parser inputs combine `--dev` with `--max-concurrency`, which clap
declares mutually conflicting. Current Rust 1.95 clippy also reports
unrelated `collapsible_match` findings in existing dataset, SQL, and
trace code; the repository's existing lint invocation allows that lint.
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

@Qard@AbhiPrasad
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Address remaining SDK-288 tracing UX issues - #39

Merged
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups
Sep 1, 2026
Merged

Address remaining SDK-288 tracing UX issues#39
Stephen Belanger (Qard) merged 2 commits into
mainfrom
t3code/sdk-288-followups

Conversation

@Qard

Copy link
Copy Markdown
Collaborator

Summary

  • add CLI-friendly, fully specified parent identifiers for trace imports while retaining SDK span exports
  • print structured import summaries in human and JSON output
  • reject Codex's incompatible global hook-trust bypass with an actionable explanation
  • warn about obsolete Claude tracing env keys without changing shared Claude settings or removing BRAINTRUST_API_KEY

Addresses SDK-279, SDK-280, SDK-282, and SDK-284.

Validation

  • make test
  • cargo test --manifest-path bt-daemon/Cargo.toml --all-features
  • cargo clippy --manifest-path bt-daemon/Cargo.toml --all-features --all-targets -- -D warnings

@chatgpt-codex-connector

chatgpt-codex-connectorBot commented Sep 1, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

ReviewStatusCommitReview trigger
📝 Code ReviewCompleted2026-09-01T16:11:30.740540Z0317e8eDraft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:0317e8ef77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

Comment threadbt-daemon/src/lib.rs
Comment threadbt-daemon/src/paths.rs Outdated
@Qard
Stephen Belanger (Qard) merged commit 3409ef7 into mainSep 1, 2026
20 checks passed
@Qard
Stephen Belanger (Qard) deleted the t3code/sdk-288-followups branch September 1, 2026 16:45
Stephen Belanger (Qard) added a commit to braintrustdata/bt that referenced this pull request Sep 2, 2026
## Summary
Implements the `bt`-owned SDK-288 work:
- SDK-272: make `trace enable` / `trace setup`, `trace run`, and `trace
import` complete from credentials already available to the command.
`BRAINTRUST_API_KEY` remains invocation-local for run/import; persistent
setup materializes it into a normal saved profile for future hooks;
interactive commands collect a missing key, org, or project instead of
requiring a separate login step.
- SDK-274: require explicit consent before ordinary `bt login` saves
`BRAINTRUST_API_KEY`; persistent tracing setup itself is the explicit
request to create the durable login it needs.
- SDK-270 / SDK-275: keep bare `bt status` concise; expand saved profile
and credential-storage details only under `--all`, and show precedence
only for an active environment override.
- SDK-276: clarify that logout is local-only and add a one-confirmation
`logout --all` flow with per-profile JSON results. Profile deletion
clears config references before removing metadata, and rename stages
both names while references move so config never points to a missing
profile.
- SDK-273: provide side-effect-free, credential-redacted auth provenance
to `bt trace doctor`.
- SDK-277: add `bt profiles doctor` and `bt profiles repair`. Automatic
diagnosis and cleanup operate on the enumerable plaintext fallback
store; explicit deleted profile names can be repaired across the OS
credential store and plaintext fallback without unsafe keychain
enumeration.
- SDK-278: format no-browser/remote OAuth as labeled authorization,
callback, credential-storage, and logged-in-profile sections while
keeping JSON and quiet output clean.
- SDK-281: advance the embedded daemon to the integrated plugin-monorepo
`main` commit containing PR #39 and stable trace profile IDs.
## Dependency
braintrustdata/braintrust-coding-agent-plugins#39 has been merged. This
PR pins plugin-monorepo `main` at exact commit
`202b3e305ea7ff74bc6ea117f46a32cc18b61b25`, which contains both the PR
#39 import/setup fixes and the subsequent stable-profile-ID migration
from #44.
## Validation
- `cargo fmt --check`
- `cargo clippy --all-targets --locked -- -D warnings -A
clippy::collapsible_match`
- `cargo test --all-targets --locked -- --skip
eval::tests::eval_args_from_env_populates_supported_fields --skip
eval::tests::eval_args_parse_first_sampling_flag --skip
eval::tests::eval_args_parse_max_concurrency_flag`
- 793 unit tests passed; 3 known eval argument-parser tests skipped
- 62 CLI tests passed
- dataset, eval dev-server, eval fixture, functions, and setup
integration suites passed
- focused regression proving environment-auth setup persists and routes
by the new stable profile ID
- `cargo check --locked`
- `git diff --check`
The three excluded eval tests fail without these changes because their
parser inputs combine `--dev` with `--max-concurrency`, which clap
declares mutually conflicting. Current Rust 1.95 clippy also reports
unrelated `collapsible_match` findings in existing dataset, SQL, and
trace code; the repository's existing lint invocation allows that lint.
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

@Qard@AbhiPrasad