Commit Graph

18 Commits

  • chore: clean up argument-comment lint and roll out all-target CI on macOS (#16054)
    ## Why
    
    `argument-comment-lint` was green in CI even though the repo still had
    many uncommented literal arguments. The main gap was target coverage:
    the repo wrapper did not force Cargo to inspect test-only call sites, so
    examples like the `latest_session_lookup_params(true, ...)` tests in
    `codex-rs/tui_app_server/src/lib.rs` never entered the blocking CI path.
    
    This change cleans up the existing backlog, makes the default repo lint
    path cover all Cargo targets, and starts rolling that stricter CI
    enforcement out on the platform where it is currently validated.
    
    ## What changed
    
    - mechanically fixed existing `argument-comment-lint` violations across
    the `codex-rs` workspace, including tests, examples, and benches
    - updated `tools/argument-comment-lint/run-prebuilt-linter.sh` and
    `tools/argument-comment-lint/run.sh` so non-`--fix` runs default to
    `--all-targets` unless the caller explicitly narrows the target set
    - fixed both wrappers so forwarded cargo arguments after `--` are
    preserved with a single separator
    - documented the new default behavior in
    `tools/argument-comment-lint/README.md`
    - updated `rust-ci` so the macOS lint lane keeps the plain wrapper
    invocation and therefore enforces `--all-targets`, while Linux and
    Windows temporarily pass `-- --lib --bins`
    
    That temporary CI split keeps the stricter all-targets check where it is
    already cleaned up, while leaving room to finish the remaining Linux-
    and Windows-specific target-gated cleanup before enabling
    `--all-targets` on those runners. The Linux and Windows failures on the
    intermediate revision were caused by the wrapper forwarding bug, not by
    additional lint findings in those lanes.
    
    ## Validation
    
    - `bash -n tools/argument-comment-lint/run.sh`
    - `bash -n tools/argument-comment-lint/run-prebuilt-linter.sh`
    - shell-level wrapper forwarding check for `-- --lib --bins`
    - shell-level wrapper forwarding check for `-- --tests`
    - `just argument-comment-lint`
    - `cargo test` in `tools/argument-comment-lint`
    - `cargo test -p codex-terminal-detection`
    
    ## Follow-up
    
    - Clean up remaining Linux-only target-gated callsites, then switch the
    Linux lint lane back to the plain wrapper invocation.
    - Clean up remaining Windows-only target-gated callsites, then switch
    the Windows lint lane back to the plain wrapper invocation.
  • Add timestamps to feedback log lines (#13688)
    `/feedback` uploads can include `codex-logs.log` from the in-memory
    feedback logger path. That logger was emitting level + message without a
    timestamp, which made some uploaded logs much harder to inspect. This
    change makes the feedback logger use an explicit timer so
    feedback-captured log lines include timestamps consistently.
    
    This is not Windows-specific code. The bug showed up in Windows reports
    because those uploads were hitting the feedback-buffer path more often,
    while Linux/macOS reports were typically coming from the SQLite feedback
    export, which already prefixes timestamps.
    
    Here's an example of a log that is missing the timestamps:
    
    ```
    TRACE app-server request: getAuthStatus
    TRACE app-server request: model/list
     INFO models cache: evaluating cache eligibility
     INFO models cache: attempting load_fresh
     INFO models cache: loaded cache file
     INFO models cache: cache version mismatch
     INFO models cache: no usable cache entry
    DEBUG 
     INFO models cache: cache miss, fetching remote models
    TRACE windows::current_platform is called
    TRACE Returning Info { os_type: Windows, version: Semantic(10, 0, 26200), edition: Some("Windows 11 Professional"), codename: None, bitness: X64, architecture: Some("x86_64") }
    ```
  • [diagnostics] show diagnostics earlier in workflow (#13604)
    <img width="591" height="243" alt="Screenshot 2026-03-05 at 10 17 06 AM"
    src="https://github.com/user-attachments/assets/84a6658b-6017-4602-b1f8-2098b9b5eff9"
    />
    
    - show feedback earlier
    - preserve raw literal env vars (no trimming, sanitizing, etc.)
  • [feedback] diagnostics (#13292)
    - added header logic to display diagnostics on cli
    - added logic for collecting env vars
    
    <img width="606" height="327" alt="Screenshot 2026-03-03 at 3 49 31 PM"
    src="https://github.com/user-attachments/assets/05e78c56-8cb3-47fa-abaf-3e57f1fdd8e2"
    />
    
    <img width="690" height="353" alt="Screenshot 2026-03-02 at 6 47 54 PM"
    src="https://github.com/user-attachments/assets/e470b559-13f4-44d9-897f-bc398943c6d1"
    />
  • app-server: source /feedback logs from sqlite at trace level (#12969)
    ## Summary
    - write app-server SQLite logs at TRACE level when SQLite is enabled
    - source app-server `/feedback` log attachments from SQLite for the
    requested thread when available
    - flush buffered SQLite log writes before `/feedback` queries them so
    newly emitted events are not lost behind the async inserter
    - include same-process threadless SQLite rows in those `/feedback` logs
    so the attachment matches the process-wide feedback buffer more closely
    - keep the existing in-memory ring buffer fallback unchanged, including
    when the SQLite query returns no rows
    
    ## Details
    - add a byte-bounded `query_feedback_logs` helper in `codex-state` so
    `/feedback` does not fetch all rows before truncating
    - scope SQLite feedback logs to the requested thread plus threadless
    rows from the same `process_uuid`
    - format exported SQLite feedback lines with the log level prefix to
    better match the in-memory feedback formatter
    - add an explicit `LogDbLayer::flush()` control path and await it in
    app-server before querying SQLite for feedback logs
    - pass optional SQLite log bytes through `codex-feedback` as the
    `codex-logs.log` attachment override
    - leave TUI behavior unchanged apart from the updated `upload_feedback`
    call signature
    - add regression coverage for:
      - newest-within-budget ordering
      - excluding oversized newest rows
      - including same-process threadless rows
      - keeping the newest suffix across mixed thread and threadless rows
      - matching the feedback formatter shape aside from span prefixes
      - falling back to the in-memory snapshot when SQLite returns no logs
      - flushing buffered SQLite rows before querying
    
    ## Follow-up
    - SQLite feedback exports still do not reproduce span prefixes like
    `feedback-thread{thread_id=...}:`; there is a `TODO(ccunningham)` in
    `codex-rs/state/src/log_db.rs` for that follow-up.
    
    ## Testing
    - `cd codex-rs && cargo test -p codex-state`
    - `cd codex-rs && cargo test -p codex-app-server`
    - `cd codex-rs && just fmt`
  • Add ability to attach extra files to feedback (#12370)
    Allow clients to provide extra files.
  • add(feedback): over-refusal / safety check (#11948)
    Add new feedback option for "Over-refusal / safety check"
  • feat: add support for building with Bazel (#8875)
    This PR configures Codex CLI so it can be built with
    [Bazel](https://bazel.build) in addition to Cargo. The `.bazelrc`
    includes configuration so that remote builds can be done using
    [BuildBuddy](https://www.buildbuddy.io).
    
    If you are familiar with Bazel, things should work as you expect, e.g.,
    run `bazel test //... --keep-going` to run all the tests in the repo,
    but we have also added some new aliases in the `justfile` for
    convenience:
    
    - `just bazel-test` to run tests locally
    - `just bazel-remote-test` to run tests remotely (currently, the remote
    build is for x86_64 Linux regardless of your host platform). Note we are
    currently seeing the following test failures in the remote build, so we
    still need to figure out what is happening here:
    
    ```
    failures:
        suite::compact::manual_compact_twice_preserves_latest_user_messages
        suite::compact_resume_fork::compact_resume_after_second_compaction_preserves_history
        suite::compact_resume_fork::compact_resume_and_fork_preserve_model_history_view
    ```
    
    - `just build-for-release` to build release binaries for all
    platforms/architectures remotely
    
    To setup remote execution:
    - [Create a buildbuddy account](https://app.buildbuddy.io/) (OpenAI
    employees should also request org access at
    https://openai.buildbuddy.io/join/ with their `@openai.com` email
    address.)
    - [Copy your API key](https://app.buildbuddy.io/docs/setup/) to
    `~/.bazelrc` (add the line `build
    --remote_header=x-buildbuddy-api-key=YOUR_KEY`)
    - Use `--config=remote` in your `bazel` invocations (or add `common
    --config=remote` to your `~/.bazelrc`, or use the `just` commands)
    
    ## CI
    
    In terms of CI, this PR introduces `.github/workflows/bazel.yml`, which
    uses Bazel to run the tests _locally_ on Mac and Linux GitHub runners
    (we are working on supporting Windows, but that is not ready yet). Note
    that the failures we are seeing in `just bazel-remote-test` do not occur
    on these GitHub CI jobs, so everything in `.github/workflows/bazel.yml`
    is green right now.
    
    The `bazel.yml` uses extra config in `.github/workflows/ci.bazelrc` so
    that macOS CI jobs build _remotely_ on Linux hosts (using the
    `docker://docker.io/mbolin491/codex-bazel` Docker image declared in the
    root `BUILD.bazel`) using cross-compilation to build the macOS
    artifacts. Then these artifacts are downloaded locally to GitHub's macOS
    runner so the tests can be executed natively. This is the relevant
    config that enables this:
    
    ```
    common:macos --config=remote
    common:macos --strategy=remote
    common:macos --strategy=TestRunner=darwin-sandbox,local
    ```
    
    Because of the remote caching benefits we get from BuildBuddy, these new
    CI jobs can be extremely fast! For example, consider these two jobs that
    ran all the tests on Linux x86_64:
    
    - Bazel 1m37s
    https://github.com/openai/codex/actions/runs/20861063212/job/59940545209?pr=8875
    - Cargo 9m20s
    https://github.com/openai/codex/actions/runs/20861063192/job/59940559592?pr=8875
    
    For now, we will continue to run both the Bazel and Cargo jobs for PRs,
    but once we add support for Windows and running Clippy, we should be
    able to cutover to using Bazel exclusively for PRs, which should still
    speed things up considerably. We will probably continue to run the Cargo
    jobs post-merge for commits that land on `main` as a sanity check.
    
    Release builds will also continue to be done by Cargo for now.
    
    Earlier attempt at this PR: https://github.com/openai/codex/pull/8832
    Earlier attempt to add support for Buck2, now abandoned:
    https://github.com/openai/codex/pull/8504
    
    ---------
    
    Co-authored-by: David Zbarsky <dzbarsky@gmail.com>
    Co-authored-by: Michael Bolin <mbolin@openai.com>
  • chore: unify conversation with thread name (#8830)
    Done and verified by Codex + refactor feature of RustRover
  • Attach more tags to feedback submissions (#8688)
    Attach more tags to sentry feedback so it's easier to classify and debug
    without having to scan through logs.
    
    Formatting isn't amazing but it's a start.
    <img width="1234" height="276" alt="image"
    src="https://github.com/user-attachments/assets/521a349d-f627-4051-b511-9811cd5cd933"
    />
  • chore(deps): bump sentry from 0.34.0 to 0.46.0 in /codex-rs (#8043)
    Bumps [sentry](https://github.com/getsentry/sentry-rust) from 0.34.0 to
    0.46.0.
    <details>
    <summary>Release notes</summary>
    <p><em>Sourced from <a
    href="https://github.com/getsentry/sentry-rust/releases">sentry's
    releases</a>.</em></p>
    <blockquote>
    <h2>0.46.0</h2>
    <h3>Breaking changes</h3>
    <ul>
    <li>Removed the <code>ClientOptions</code> struct's
    <code>trim_backtraces</code> and <code>extra_border_frames</code> fields
    (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/925">#925</a>).
    <ul>
    <li>These fields configured backtrace trimming, which is being removed
    in this release.</li>
    </ul>
    </li>
    </ul>
    <h3>Improvements</h3>
    <ul>
    <li>Removed backtrace trimming to align the Rust SDK with the general
    principle that Sentry SDKs should only truncate telemetry data when
    needed to comply with <a
    href="https://develop.sentry.dev/sdk/data-model/envelopes/#size-limits">documented
    size limits</a> (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/925">#925</a>).
    This change ensures that as much data as possible remains available for
    debugging.
    <ul>
    <li>If you notice any new issues being created for existing errors after
    this change, please open an issue on <a
    href="https://github.com/getsentry/sentry-rust/issues/new/choose">GitHub</a>.</li>
    </ul>
    </li>
    </ul>
    <h3>Fixes</h3>
    <ul>
    <li>fix: adjust sentry.origin for log integration (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/919">#919</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a></li>
    </ul>
    <h2>0.45.0</h2>
    <h3>Breaking changes</h3>
    <ul>
    <li>Add custom variant to <code>AttachmentType</code> that holds an
    arbitrary String. (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/916">#916</a>)</li>
    </ul>
    <h2>0.44.0</h2>
    <h3>Breaking changes</h3>
    <ul>
    <li>feat(log): support combined LogFilters and RecordMappings (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/914">#914</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>Breaking change: <code>sentry::integrations::log::LogFilter</code>
    has been changed to a <code>bitflags</code> struct.</li>
    <li>It's now possible to map a <code>log</code> record to multiple items
    in Sentry by combining multiple log filters in the filter, e.g.
    <code>log::Level::ERROR =&gt; LogFilter::Event |
    LogFilter::Log</code>.</li>
    <li>If using a custom <code>mapper</code> instead, it's possible to
    return a
    <code>Vec&lt;sentry::integrations::log::RecordMapping&gt;</code> to map
    a <code>log</code> record to multiple items in Sentry.</li>
    </ul>
    </li>
    </ul>
    <h3>Behavioral changes</h3>
    <ul>
    <li>ref(log): send logs by default when logs feature flag is enabled (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/915">#915</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>If the <code>logs</code> feature flag is enabled, the default Sentry
    <code>log</code> logger now sends logs for all events at or above
    INFO.</li>
    </ul>
    </li>
    <li>ref(logs): enable logs by default if logs feature flag is used (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/910">#910</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>This changes the default value of
    <code>sentry::ClientOptions::enable_logs</code> to
    <code>true</code>.</li>
    <li>This simplifies the setup of Sentry structured logs by requiring
    users to just add the <code>log</code> feature flag to the
    <code>sentry</code> dependency to opt-in to sending logs.</li>
    <li>When the <code>log</code> feature flag is enabled, the
    <code>tracing</code> and <code>log</code> integrations will send
    structured logs to Sentry for all logs/events at or above INFO level by
    default.</li>
    </ul>
    </li>
    </ul>
    <h2>0.43.0</h2>
    <h3>Breaking changes</h3>
    <ul>
    <li>ref(tracing): rework tracing to Sentry span name/op conversion (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/887">#887</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>The <code>tracing</code> integration now uses the tracing span name
    as the Sentry span name by default.</li>
    <li>Before this change, the span name would be set based on the
    <code>tracing</code> span target
    (<code>&lt;module&gt;::&lt;function&gt;</code> when using the
    <code>tracing::instrument</code> macro).</li>
    <li>The <code>tracing</code> integration now uses <code>&lt;span
    target&gt;::&lt;span name&gt;</code> as the default Sentry span op (i.e.
    <code>&lt;module&gt;::&lt;function&gt;</code> when using
    <code>tracing::instrument</code>).</li>
    <li>Before this change, the span op would be set based on the
    <code>tracing</code> span name.</li>
    <li>Read below to learn how to customize the span name and op.</li>
    <li>When upgrading, please ensure to adapt any queries, metrics or
    dashboards to use the new span names/ops.</li>
    </ul>
    </li>
    <li>ref(tracing): use standard code attributes (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/899">#899</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>Logs now carry the attributes <code>code.module.name</code>,
    <code>code.file.path</code> and <code>code.line.number</code>
    standardized in OTEL to surface the respective information, in contrast
    with the previously sent <code>tracing.module_path</code>,
    <code>tracing.file</code> and <code>tracing.line</code>.</li>
    </ul>
    </li>
    <li>fix(actix): capture only server errors (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/877">#877</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a></li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Changelog</summary>
    <p><em>Sourced from <a
    href="https://github.com/getsentry/sentry-rust/blob/master/CHANGELOG.md">sentry's
    changelog</a>.</em></p>
    <blockquote>
    <h2>0.46.0</h2>
    <h3>Breaking changes</h3>
    <ul>
    <li>Removed the <code>ClientOptions</code> struct's
    <code>trim_backtraces</code> and <code>extra_border_frames</code> fields
    (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/925">#925</a>).
    <ul>
    <li>These fields configured backtrace trimming, which is being removed
    in this release.</li>
    </ul>
    </li>
    </ul>
    <h3>Improvements</h3>
    <ul>
    <li>Removed backtrace trimming to align the Rust SDK with the general
    principle that Sentry SDKs should only truncate telemetry data when
    needed to comply with <a
    href="https://develop.sentry.dev/sdk/data-model/envelopes/#size-limits">documented
    size limits</a> (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/925">#925</a>).
    This change ensures that as much data as possible remains available for
    debugging.
    <ul>
    <li>If you notice any new issues being created for existing errors after
    this change, please open an issue on <a
    href="https://github.com/getsentry/sentry-rust/issues/new/choose">GitHub</a>.</li>
    </ul>
    </li>
    </ul>
    <h3>Fixes</h3>
    <ul>
    <li>fix: adjust sentry.origin for log integration (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/919">#919</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a></li>
    </ul>
    <h2>0.45.0</h2>
    <h3>Breaking changes</h3>
    <ul>
    <li>Add custom variant to <code>AttachmentType</code> that holds an
    arbitrary String. (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/916">#916</a>)</li>
    </ul>
    <h2>0.44.0</h2>
    <h3>Breaking changes</h3>
    <ul>
    <li>feat(log): support combined LogFilters and RecordMappings (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/914">#914</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>Breaking change: <code>sentry::integrations::log::LogFilter</code>
    has been changed to a <code>bitflags</code> struct.</li>
    <li>It's now possible to map a <code>log</code> record to multiple items
    in Sentry by combining multiple log filters in the filter, e.g.
    <code>log::Level::ERROR =&gt; LogFilter::Event |
    LogFilter::Log</code>.</li>
    <li>If using a custom <code>mapper</code> instead, it's possible to
    return a
    <code>Vec&lt;sentry::integrations::log::RecordMapping&gt;</code> to map
    a <code>log</code> record to multiple items in Sentry.</li>
    </ul>
    </li>
    </ul>
    <h3>Behavioral changes</h3>
    <ul>
    <li>ref(log): send logs by default when logs feature flag is enabled (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/915">#915</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>If the <code>logs</code> feature flag is enabled, the default Sentry
    <code>log</code> logger now sends logs for all events at or above
    INFO.</li>
    </ul>
    </li>
    <li>ref(logs): enable logs by default if logs feature flag is used (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/910">#910</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>This changes the default value of
    <code>sentry::ClientOptions::enable_logs</code> to
    <code>true</code>.</li>
    <li>This simplifies the setup of Sentry structured logs by requiring
    users to just add the <code>log</code> feature flag to the
    <code>sentry</code> dependency to opt-in to sending logs.</li>
    <li>When the <code>log</code> feature flag is enabled, the
    <code>tracing</code> and <code>log</code> integrations will send
    structured logs to Sentry for all logs/events at or above INFO level by
    default.</li>
    </ul>
    </li>
    </ul>
    <h2>0.43.0</h2>
    <h3>Breaking changes</h3>
    <ul>
    <li>ref(tracing): rework tracing to Sentry span name/op conversion (<a
    href="https://redirect.github.com/getsentry/sentry-rust/pull/887">#887</a>)
    by <a href="https://github.com/lcian"><code>@​lcian</code></a>
    <ul>
    <li>The <code>tracing</code> integration now uses the tracing span name
    as the Sentry span name by default.</li>
    <li>Before this change, the span name would be set based on the
    <code>tracing</code> span target
    (<code>&lt;module&gt;::&lt;function&gt;</code> when using the
    <code>tracing::instrument</code> macro).</li>
    <li>The <code>tracing</code> integration now uses <code>&lt;span
    target&gt;::&lt;span name&gt;</code> as the default Sentry span op (i.e.
    <code>&lt;module&gt;::&lt;function&gt;</code> when using
    <code>tracing::instrument</code>).</li>
    <li>Before this change, the span op would be set based on the
    <code>tracing</code> span name.</li>
    <li>Read below to learn how to customize the span name and op.</li>
    </ul>
    </li>
    </ul>
    <!-- raw HTML omitted -->
    </blockquote>
    <p>... (truncated)</p>
    </details>
    <details>
    <summary>Commits</summary>
    <ul>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/8d82bfde5944de48482e4d8ada2d2ab35978845f"><code>8d82bfd</code></a>
    release: 0.46.0</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/9525735e5cdfa25c98667aa91c3cade2ef5acdff"><code>9525735</code></a>
    feat(backtrace): Stop truncating backtraces (<a
    href="https://redirect.github.com/getsentry/sentry-rust/issues/925">#925</a>)</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/a57b91c5c8992c0955f22cb26f0db0625c1aa9cd"><code>a57b91c</code></a>
    ref: Fix new Clippy lints (<a
    href="https://redirect.github.com/getsentry/sentry-rust/issues/935">#935</a>)</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/57595753d6d7c039b640405a369d8b039455633c"><code>5759575</code></a>
    meta: Update cargo metadata (<a
    href="https://redirect.github.com/getsentry/sentry-rust/issues/927">#927</a>)</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/77193f81e44500662acd115ed190dec4bb870852"><code>77193f8</code></a>
    chore: X handle update (<a
    href="https://redirect.github.com/getsentry/sentry-rust/issues/926">#926</a>)</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/ca232686f4f338f3e13a0123b15654c32c68d47c"><code>ca23268</code></a>
    chore(ci): Migrate danger workflow from v2 to v3 (<a
    href="https://redirect.github.com/getsentry/sentry-rust/issues/918">#918</a>)</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/2edf6d7a54dde2284b8954501beea311a2468aae"><code>2edf6d7</code></a>
    fix: adjust sentry.origin for log integration (<a
    href="https://redirect.github.com/getsentry/sentry-rust/issues/919">#919</a>)</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/641204891076a8a4efdde9fb753a2012702e58ac"><code>6412048</code></a>
    Merge branch 'release/0.45.0'</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/aa6d85b90fc8dcc1292b9727c32350e1aa12a425"><code>aa6d85b</code></a>
    release: 0.45.0</li>
    <li><a
    href="https://github.com/getsentry/sentry-rust/commit/b99eb46bcff33ea17b309f772e0bef0db30c0bed"><code>b99eb46</code></a>
    feat(types): Add custom variant to <code>AttachmentType</code> (<a
    href="https://redirect.github.com/getsentry/sentry-rust/issues/916">#916</a>)</li>
    <li>Additional commits viewable in <a
    href="https://github.com/getsentry/sentry-rust/compare/0.34.0...0.46.0">compare
    view</a></li>
    </ul>
    </details>
    <br />
    
    
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sentry&package-manager=cargo&previous-version=0.34.0&new-version=0.46.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after
    your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge
    and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating
    it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    
    
    </details>
    
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
  • chore: add cargo-deny configuration (#7119)
    - add GitHub workflow running cargo-deny on push/PR
    - document cargo-deny allowlist with workspace-dep notes and advisory
    ignores
    - align workspace crates to inherit version/edition/license for
    consistent checks
  • [feedback] Add source info into feedback metadata. (#7140)
    Verified the source info is correctly attached based on whether it's cli
    or vscode.
  • Followup feedback (#5663)
    - Added files to be uploaded
    - Refactored
    - Updated title
  • Log more types of request IDs (#5645)
    Different services return different sets of IDs, log all of them to
    simplify debugging.