Skip to content

Bump OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.17.0 to 1.18.0 - #87

Closed
dependabot[bot] wants to merge 643 commits into
mainfrom
dependabot/nuget/src/OpenTelemetry.Exporter.OpenTelemetryProtocol-1.18.0
Closed

Bump OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.17.0 to 1.18.0#87
dependabot[bot] wants to merge 643 commits into
mainfrom
dependabot/nuget/src/OpenTelemetry.Exporter.OpenTelemetryProtocol-1.18.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 24, 2026

Copy link
Copy Markdown
Contributor

Updated OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.17.0 to 1.18.0.

Release notes

Sourced from OpenTelemetry.Exporter.OpenTelemetryProtocol's releases.

1.18.0

For highlights and announcements pertaining to this release see: Release Notes > 1.18.0.

The following changes are from the previous release 1.17.0.

  • NuGet: OpenTelemetry v1.18.0

    • Fixed self-diagnostics log lines being silently dropped when an event message or parameter contained enough 3-byte UTF-8 characters to overflow the internal buffer estimate. Such content is now truncated.
      (#​7543)

    • Fixed activity creation throwing when multiple tracer providers return a sampler attribute with the same key.
      (#​7558)

    • Added the otel.sdk.processor.log.processed SDK self-observability metric.
      (#​7486)

    • Added the otel.sdk.processor.span.processed SDK self-observability metric.
      (#​7598)

    • BatchActivityExportProcessor and SimpleActivityExportProcessor no longer forward spans to the exporter once Shutdown has been called, and BatchActivityExportProcessor.Shutdown now waits for in-flight OnEnd calls to finish enqueueing before flushing.
      (#​7598)

    • Fix logger, meter and tracer providers leaking background threads if an exception is thrown by their constructor after resource creation.
      (#​7615)

    • CircularBufferBuckets.Copy optimized to use bulk array copies.
      (#​7670)

    • Restored configured MaxScale after delta exponential histogram collection.
      (#​7671)

    See CHANGELOG for details.

  • NuGet: OpenTelemetry.Api v1.18.0

    • Avoid formatting exceptions and creating exception attributes when RecordException is called on a span that is not recorded.
      (#​7669)

    See CHANGELOG for details.

  • NuGet: OpenTelemetry.Api.ProviderBuilderExtensions v1.18.0

    No notable changes.

    See CHANGELOG for details.

  • NuGet: OpenTelemetry.Exporter.Console v1.18.0

    • Added support for serializing attribute values that are key/value lists (IEnumerable<KeyValuePair<string, object?>>). These attributes will be serialized as JSON objects.
      (#​7015)

... (truncated)

1.18.0-rc.1

The following changes are from the previous release 1.17.0.

  • NuGet: OpenTelemetry v1.18.0-rc.1

    • Fixed self-diagnostics log lines being silently dropped when an event message or parameter contained enough 3-byte UTF-8 characters to overflow the internal buffer estimate. Such content is now truncated.
      (#​7543)

    • Fixed activity creation throwing when multiple tracer providers return a sampler attribute with the same key.
      (#​7558)

    • Added the otel.sdk.processor.log.processed SDK self-observability metric.
      (#​7486)

    • Added the otel.sdk.processor.span.processed SDK self-observability metric.
      (#​7598)

    • BatchActivityExportProcessor and SimpleActivityExportProcessor no longer forward spans to the exporter once Shutdown has been called, and BatchActivityExportProcessor.Shutdown now waits for in-flight OnEnd calls to finish enqueueing before flushing.
      (#​7598)

    • Fix logger, meter and tracer providers leaking background threads if an exception is thrown by their constructor after resource creation.
      (#​7615)

    • CircularBufferBuckets.Copy optimized to use bulk array copies.
      (#​7670)

    • Restored configured MaxScale after delta exponential histogram collection.
      (#​7671)

    See CHANGELOG for details.

  • NuGet: OpenTelemetry.Api v1.18.0-rc.1

    • Avoid formatting exceptions and creating exception attributes when RecordException is called on a span that is not recorded.
      (#​7669)

    See CHANGELOG for details.

  • NuGet: OpenTelemetry.Api.ProviderBuilderExtensions v1.18.0-rc.1

    No notable changes.

    See CHANGELOG for details.

  • NuGet: OpenTelemetry.Exporter.Console v1.18.0-rc.1

    • Added support for serializing attribute values that are key/value lists (IEnumerable<KeyValuePair<string, object?>>). These attributes will be serialized as JSON objects.
      (#​7015)

    See CHANGELOG for details.

... (truncated)

1.18.0-beta.1

The following changes are from the previous release 1.17.0-beta.1.

  • NuGet: OpenTelemetry.Exporter.Prometheus.AspNetCore v1.18.0-beta.1

    • Fix concurrent scrapes returning an empty response under contention. Now the exporter will return an HTTP 500 error instead.
      (#​7571)

    • Waiting for concurrent scrapes to finish before collecting no longer blocks, which could stall concurrent scrapes being waited on.
      (#​7571)

    • Fixed the interaction between PrometheusAspNetCoreOptions.TranslationStrategy and content negotiation. The configured strategy is now applied before content negotiation, instead of the negotiated escaping scheme replacing the strategy's, and the Content-Type header now reports the escaping scheme that was applied rather than the one that was negotiated.
      (#​7610)

    • Fixed metric values and histogram bucket bounds being written with 17 significant digits instead of their shortest round-trippable representation.
      (#​7589)

    • Fixed the canonical representation used for histogram le and summary quantile label values falling back to 17 significant digits incorrectly.
      (#​7589)

    • Fixed a race where a slow scrape could return an HTTP 200 instead of 408.
      (#​7615)

    • Updated OpenTelemetry core component version(s) to 1.18.0.
      (#​7674)

    See CHANGELOG for details.

  • NuGet: OpenTelemetry.Exporter.Prometheus.HttpListener v1.18.0-beta.1

    • Fix concurrent scrapes returning an empty response under contention. Now the exporter will return an HTTP 500 error instead.
      (#​7571)

    • Waiting for concurrent scrapes to finish before collecting no longer blocks, which could stall concurrent scrapes being waited on.
      (#​7571)

    • A scrape which is still collecting when the listener is disposed now returns an HTTP 503 response.
      (#​7587)

    • Shutting down the listener no longer waits indefinitely for its request processing loop to stop, and no longer throws if the loop faulted.
      (#​7587)

    • Fixed the interaction between PrometheusHttpListenerOptions.TranslationStrategy and content negotiation. The configured strategy is now applied before content negotiation, instead of the negotiated escaping scheme replacing the strategy's, and the Content-Type header now reports the escaping scheme that was applied rather than the one that was negotiated.
      (#​7610)

    • Fixed metric values and histogram bucket bounds being written with 17 significant digits instead of their shortest round-trippable representation.
      (#​7589)

    • Fixed the canonical representation used for histogram le and summary quantile label values falling back to 17 significant digits incorrectly.
      (#​7589)

... (truncated)

Commits viewable in compare view.

Dependabot compatibility score

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 commands and options

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 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)

Scott Stauffer added 30 commits June 10, 2026 02:29
- Workflows 1.9.0 changed AgentFileSkillScriptRunner delegate signature
  from AIFunctionArguments to JsonElement? with a new IServiceProvider?
  param; updated RunSkillScriptAsync to match and parse JSON properties
- Worksheet and Slide can be null per the OpenXml SDK's nullability
  annotations; existing null guards already handled the case, just
  needed ?. to flow null through without a compiler warning
- ExpandSessionPaths calls Path.GetFullPath, which prepends the CWD to
  any non-rooted string; applied to multi-line agent Instructions this
  corrupts the entire text and leaves ~/ references unexpanded, causing
  agents to write session artifacts (e.g. brief.json) to the wrong location
- New ExpandTextTokens replaces {session_id}, {project_slug}, and ~/
  inline without path normalisation; InterpolateSessionId now uses it for
  Instructions while all file-path fields continue to use ExpandSessionPaths
- Single-turn blowups reached 186k tokens because MaxSingleTurnInputTokens
  (200k) and InTurnToolWindow (default 20) were too permissive; reducing them
  forces earlier compaction and tombstones stale tool results more aggressively
- Developer MaxTurnAge 8→5 and MaxInTurnContextTokens 50k→30k directly cut
  the cross-turn history that drove per-turn token explosions
- Verifier lacked a pattern for build-unit misattribution; agents patched the
  wrong artefact when a parent build unit pulled in a child file via glob —
  new pattern d surfaces this with a specific hypothesis
- MaxSingleTurnInputTokens 120k was below the cost of a routine heavy
  turn, causing compaction to fire on nearly every Developer/Verifier/Tester
  turn; raised to 200k so cumulative CutoverAt remains the primary guard
- KeepRecentTurns 12→8 so each compaction drops more retained turns and
  the post-compaction context is meaningfully smaller, breaking the
  immediate re-trigger loop
- InTurnToolWindow 8→5 and MaxToolResultTokens 8k→6k so the tool-result
  slice sent to the LLM is tighter, compounding the retained-turn reduction
- CommandRun evidence already stored up to 4096 chars of output but
  ContextRebuilder never emitted it; failed commands now include a 400-char
  snippet so agents resuming after compaction see the actual error text,
  not just an exit code
- Full-width bordered panels for turns with no text content were visually
  noisy, consuming screen space to show only a tool-call count
- Tool-only turns now render as a compact dim inline summary, keeping the
  same metadata (agent name, turn index, elapsed, token usage)
- The standard Serilog Console sink writes directly to Console.Out,
  bypassing Spectre.Console's live-display cursor management; this
  caused WRN/INF lines to land on the same terminal row as spinner
  text or compact turn summaries
- AnsiConsoleSink routes all formatted log output through
  AnsiConsole.MarkupLine so Serilog respects the Status spinner and
  never corrupts the live display layout
- VSCode mode keeps the original Console sink with stderr routing so
  stdout remains a clean JSON stream for the webview bridge
- Verifier was executing verify_command whenever the change log showed it
  hadn't run yet, including during Planning/BriefReview before the Developer
  existed any files — causing spurious INCONSISTENCY findings that triggered
  ConflictingEvidence reinstruct and blocked the handoff to Implementation
- Step 4 now skips the shell_run unless SignificantChanges shows at least one
  files_to_change entry has been written, i.e. implementation has actually started
- PlannerCritic used sub_agent_explore to find "affected files" on every
  turn, but for new projects this returns a theoretical list of files to
  create, not files that exist and need modification — causing it to block
  indefinitely on files the Developer was supposed to create
- Critic step 2 now first checks existence via sub_agent_locate; skips
  exploration entirely if no files_to_change exist yet (greenfield)
- Verifier step 2b adds an early-exit guard: if no files_to_change appear
  in SignificantChanges, skip all inconsistency checks — pre-implementation
  change log state is not meaningful evidence of a real inconsistency
- ApplyWithManifest appends a [Context Manifest] listing active and
  superseded tool results so the model knows what it can still see
  without re-reading full history at the recency end of the prompt
- ContextAssembler repeats a brief task reminder at the end of any
  assembled context exceeding 2 000 chars, sandwiching the objective
  at both the primacy and recency positions
- Tombstones now include the evicted tool label and a 300-char content
  preview so the model can judge whether to re-read without issuing a
  blind full-file read
- ApplyWithManifest previously called Apply then rebuilt callLabels with a
  second scan of the original context; ApplyCore does one pass and returns
  the map + evicted flag, eliminating the redundant work
- extract task-reminder thresholds into named constants in ContextAssembler
  to make the intent readable without inline comments
- add tests for the all-evicted manifest path and the disabled-budget
  same-reference fast path
- Task Reminder and Context Manifest are non-obvious behavioral features
  that affect how agents perceive their own context; worth calling out so
  contributors know to preserve the primacy+recency sandwich invariant
- Tombstone format changed (now includes label + preview) — example in
  the doc prevents stale assumptions about the old single-line format
- Add ContextAssembler and ToolResultWindowTrimmer to Where-to-look table
- Tombstone example was the old one-liner; now shows the enriched format
  with tool label and content preview that ships in this branch
- Context Manifest (appended when evictions occur) was not documented
- Task Reminder step was missing from both pipeline overview and diagram
- Session context was injected at position 1, burying it mid-history where
  models attend least; moved to recency boundary so it is read last
- TrimToWindow could drain the final message pair: the assistant removal
  only checked start < list.Count, not start + 1 < list.Count, allowing
  both messages to be removed in a single loop iteration
- Pipeline Knowledge was re-appended every turn regardless of whether
  identical content already existed in history, compounding context growth
- Roslyn on Windows sees two resolution paths for ContextAddCommand when
  both fuseraft.Cli.Commands and fuseraft.Cli.Commands.Context are imported,
  triggering an ambiguous reference error; type aliases make each name
  resolve to exactly one type on all platforms
- Bar chart at top of ctx_viz.html shows input and output tokens per
  turn with toggle buttons to show/hide each dataset independently
- Events.jsonl is now loaded alongside ctx_snapshots.jsonl; validation_fail
  and tool_blocked events render as annotated vertical lines on both charts
- Context assembly details (chars, tool count, assembly time) from events.jsonl
  surface in bar and line chart tooltips when present
- Only four event types are loaded (turn_end, validation_fail, tool_blocked,
  context_assembly) to keep embedded HTML size reasonable
- Inline string literals scattered across 18 files created silent
  breakage risk: a typo in any emitter or consumer would compile fine
  but produce events that no hook, filter, or viz would ever match
- const string fields work as switch patterns (unlike static readonly),
  so EventLogViewer's switch expressions adopt them without ceremony
- Eliminates 47+ raw string literals across Cli, Infrastructure, and
  Orchestration layers — typos caused silent data gaps in events.jsonl
  with no compile-time signal
- Extends EventTypes with all missing constants so every event string
  has a single authoritative definition
- Aligns naming with context_budget_warn so the distinction is obvious:
  budget = token accumulation, window = message-count cap
- Both events signaled the same condition from different layers; a
  source field in the payload now distinguishes graph_orchestrator,
  keyword_strategy, and state_machine_strategy without a separate type
Defines agent lifecycle (AgentStart/End/Error/Timeout), tool completion
(ToolResult/Error/Timeout), retry (RetryScheduled/Attempt/Exhausted),
termination (TerminationSatisfied/MaxTurnsExceeded), parallel branches
(ParallelBranchStart/End/Error), HITL outcomes (HitlApproved/Rejected/
Resolved), model invocation, selection strategy, knowledge retrieval,
artifact lifecycle, and checkpointing/replay constants.

Wires emit calls in AgentOrchestrator, GraphOrchestrator, ChangeTracker
(CapturingMiddleware), and SessionRunner. Adds four SessionRunner tests
covering CancellationRequested, MaxTurnsExceeded, and HitlResolved
(agent-blocked and validator-stuck paths) using hook-based
synchronization for fire-and-forget emits.

false
- Checkpoint lifecycle (created/loaded/resume_started/resume_completed,
  event_replay_start/complete) needed emission sites; wired in RunCommand
  and SessionRunner where the emitter is already in scope
- Model invocation events (model_call/response/error/timeout) wired in
  AgentFactory middleware chain alongside existing inner_call_context;
  model_timeout also added to GraphOrchestrator streaming catch sites
  so SSE idle timeouts surface at the model level, not just turn/agent
- cancellation_observed distinguishes clean inter-turn stops from
  mid-turn OperationCanceledException (cancellation_requested); wired
  at the proactive IsCancellationRequested check in SessionRunner
- JsonSessionStore gains OnCorruptionDetected callback for
  event_corruption_detected; avoids circular dependency by using a
  Func delegate instead of a direct EventEmitter reference
- EventEmitter docblock updated to reference EventTypes instead of
  listing a stale hand-picked subset
- docs/sessions.md gains an orchestration event types reference table
  covering all wired event groups
- Eliminates typo-induced silent failures by centralising the canonical
  strings in one place; a rename now only touches OrchestratorTypes.cs
- Covers ValidateConfigCommand, WorkflowDiagramGenerator,
  OrchestratorBuilder, StrategyFactory, and KeywordSelectionStrategy
- Eliminates typo-induced silent failures; a mode rename now only
  touches CompactionModes.cs
- CompactionConfig.Mode default left as a bare string to avoid
  introducing a Core.Models → Orchestration layer dependency
- Mirrors the OrchestratorTypes/CompactionModes pattern to eliminate
  scattered inline literals that could silently diverge
- Capitalizes "orchestrator" → "Orchestrator" for consistency with all
  other reserved names (System, Human, Assistant, Verifier, Unknown)
- Eliminates scattered inline string literals for validator names, matching the pattern established by AgentNames and CompactionModes
- Replaces ToLowerInvariant switch in GraphOrchestrator with OrdinalIgnoreCase if/else chain for consistency with StrategyFactory
- Replaces raw "assistant"/"user" string literals with MessageRole constants to eliminate scatter across orchestrators and CLI
- Moves CompactionReason out of CompactionCoordinator into its own file, consistent with CompactionModes and similar constants classes
Scott Stauffer and others added 23 commits August 9, 2026 21:46
An audit of the actual agent-framework source (checked against
Microsoft.Agents.AI.Workflows 1.16.0, the version we pin) found three
claims in the "why we don't use X" rationale no longer hold, and two
framework features we do use weren't documented at all.

- Handoff orchestration: autonomous mode now injects a continuation
  message and re-invokes the agent when the handoff tool isn't called —
  the "no correction-injection loop, blocks for human input" framing
  is stale, and autonomous mode graduated out of experimental. The
  real remaining gap is generic vs. typed/validator-driven corrections,
  and the shared-history/ContextWindow-filtering incompatibility.
- Concurrent orchestration: branches don't share one mutable AgentContext
  (that's a fuseraft type, not a MAF one, and a category error to begin
  with) — each agent gets its own session-isolated executor. The actual
  blocker is retry semantics, which stands on its own without the
  shared-history argument.
- GraphOrchestrator cycles: WorkflowBuilder.Validate() never checked for
  cycles, and the framework's own GroupChatWorkflowBuilder/HandoffWorkflowBuilder
  build cyclic graphs by design. The real reason for phase-restart is
  validator gating at phase boundaries, not a framework limitation.
- Added missing "what we use" entries: Microsoft.Agents.AI.Compaction
  (ToolResultCompactionStrategy/CompactionProvider, used in
  AgentContextCompactionFilters) and AgentSkillsProvider/
  AgentSkillsProviderBuilder (MAF's own Skills feature, not a
  fuseraft-built system despite reading like one).
- Softened the GroupChatWorkflowBuilder rejection: a manager subclass
  can hold private state via the framework's checkpoint hooks; what's
  actually forced is that GroupChatHost always passes full history into
  the manager's own decision calls, which is what Magentic's two-history
  invariant is actually incompatible with.

None of this changes fuseraft-cli's own code or its architectural
decisions — the underlying reasons (typed correction pipeline, per-agent
ContextWindow filtering, two-history Magentic invariant) still hold.
This only corrects the framework-behavior claims used to justify them.
- Documents why TruncationCompactionStrategy/SummarizationCompactionStrategy
  aren't used for session-level compaction: they operate on ChatMessage,
  not fuseraft's AgentMessage/AgentContext.History, and neither expresses
  the routing-signal-pinning or grounding invariants ConversationCompactor
  already implements
- Free-form turns only ever appended the final text to ctx.History,
  dropping every FunctionCallContent/FunctionResultContent from the
  turn — the model had no record of its own tool calls past the
  current turn. Now the full transcript (assistant calls, tool-role
  results, final text) is captured via ChatResponseExtensions.AddMessages,
  matching what TrimHistory/compaction filters/session snapshotting
  already expected but never received.
- A cancelled or unrecoverable streaming error mid-/execute cleared
  the entire remaining plan queue with HaltedAt never set, so /resume
  and /recover had nothing to act on — infra hiccups and deliberate
  Ctrl+C got the same irreversible treatment as a designed stop. Those
  failures now route through the same halted-state transition a step
  verify-failure already gets.
- Free-form/plan-capture turns silently hit ctx.Client's tool-iteration
  cap with no signal — the model gets cut off mid tool-loop and returns
  a rushed answer that looks like a normal complete response. Step mode
  already warned on this; free-form turns now do too.
- Live-tested evidence shows grok-4.3 tolerates ~58 tools without
  degradation, but every registered tool still adds its schema to
  every request, so the token/latency cost is real regardless
- Split the always-on FileSystem/Shell/Git surface into a curated
  core (read, edit, search, status, commit — ~37 tools total) and an
  opt-in "Extended" plugin (delete/copy/move, remote git, background
  shell jobs — ~24 tools), enabled the same way as Http/Changes/etc.
  via --plugins Extended
- /explore and /locate keep full read-tool access regardless of
  whether Extended is enabled, since SubAgentPlugin's explorerTools
  is built from the unfiltered FileSystem/Shell/Git lists
- TodoPlugin was always constructed fresh in ReplCommand.ExecuteAsync
  and ReplSessionSnapshot never captured its state, so after --resume
  the restored chat history could show a populated checklist while
  todo_read returned [EMPTY] — the one tool whose entire point is
  durable state was the one piece of REPL state --resume dropped
- Add TodoPlugin.Restore() to set state directly from a prior
  snapshot without re-running Write's JSON parsing/validation
- Thread todo items through ReplSessionSnapshot.Capture/SaveAsync and
  restore them in the --resume path, mirroring how CurrentPlan/
  ExecutionQueue/HaltedAt are already persisted
- MagenticWorkflowBuilder ships in the pinned MAF 1.16.0 and is
  purpose-built for Magentic-One orchestration, but its manager
  reasoning calls thread the same shared taskContext.ChatHistory that
  participants see (verified against Specialized/Magentic/
  MagenticOrchestrator.cs and MagenticManager.cs) — same defect as
  GroupChatWorkflowBuilder, just Magentic-specific, so it can't
  express our manager-never-sees-raw-history invariant (§6.2)
- A turn's stream can end without throwing right after a tool_use
  chunk, before its tool_result ever arrives (dropped connection
  mid tool-round). The unresolved call still got merged into
  ctx.History, and providers reject any request whose history ends
  with a tool_use lacking a matching tool_result — permanently
  400ing every later turn in that session with no self-repair.
- RepairDanglingToolCalls scans history for orphaned
  FunctionCallContent and appends a synthetic tool_result so the
  transcript stays valid. Runs after merging a turn's raw updates,
  and again after restoring a --resume snapshot so a session
  poisoned by an earlier (unpatched) run heals instead of
  immediately failing again.
- CmdForkAsync built its own ReplSessionSnapshot.Capture(...) call
  instead of reusing ReplTurn.SaveSnapshotAsync, and never passed
  todoItems — a forked session (or --resume of one) silently lost
  every todo_write the model had made, even though 7124f5c already
  fixed the same gap for the ordinary auto-save/--resume path
- Add ReplForkTodoPersistenceTests: the regression case (todo items
  survive a fork), plus two edge cases (empty todo list stays null,
  no TodoPlugin instance doesn't throw)

Claude-Session: https://claude.ai/code/session_016inyJ2gaJQiyMZsWtjva3X
- OnCancelKeyPress only suppressed the default SIGINT action while a
  turn was running or in JSON mode; idle at the prompt it did nothing,
  so .NET's default action terminated the process outright (exit code
  130) with no "Session ended.", no memory extraction, and no snapshot
  of the in-progress line.
- Ctrl+C is consumed by the terminal's SIGINT/ISIG machinery before it
  ever reaches Console.ReadKey, so CancelKeyPress is the only place
  that ever observes an idle-prompt Ctrl+C — ReplLineReader's own
  ConsoleKey.C case was dead code in every terminal actually tested.
- Every other REPL (and this app's own mid-turn behavior) treats
  Ctrl+C as "abandon the current line/operation," not "quit," so match
  that instead of leaving the two cases inconsistent.
- Cursor movement, backspace, and delete moved one UTF-16 code unit at
  a time, so they could land between the two halves of a surrogate
  pair (any emoji outside the BMP, e.g. 🚀) and split it apart —
  editing near one silently mangled it into replacement characters.
  Added StepBack/StepForward helpers so every move/delete steps a
  full character.
- The hardcoded SlashCommands tab-completion list had drifted from
  the dispatcher: /run, /models, /reasoning, and /snapshot were all
  real, /help-documented commands that Tab could never complete to.
- /paste help said "type EOF to finish" but the actual prompt asks for
  .done or Ctrl+D; found while manually driving the REPL through tmux
- code block panels always expanded to full terminal width regardless
  of content, dwarfing short snippets next to snugly-fit tables; now
  sized to content (still wraps/expands correctly for long lines) and
  shows the fenced language tag in the panel header
- /sessions had no column headers and truncated model ids at 22 chars,
  chopping common longer ids like grok-4-1-fast-reasoning
---
updated-dependencies:
- dependency-name: Microsoft.Agents.AI.OpenAI
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: ModelContextProtocol
  dependency-version: 2.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: OllamaSharp
  dependency-version: 5.4.30
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
….0 (#75)

---
updated-dependencies:
- dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: OpenTelemetry.Instrumentation.Runtime
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: SQLitePCLRaw.bundle_e_sqlite3
  dependency-version: 3.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
updated-dependencies:
- dependency-name: Microsoft.Agents.AI.Workflows
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Scott Stauffer <scott@fuseraft.com>
---
updated-dependencies:
- dependency-name: OpenTelemetry.Instrumentation.Http
  dependency-version: 1.17.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Scott Stauffer <scott@fuseraft.com>
UserConfigStoreLegacyKeyFileTests, FuseraftPathsHomeOverrideTests, and
ReplForkTodoPersistenceTests each set the process-wide FUSERAFT_HOME
env var. xUnit gives each test class its own collection by default
and runs collections in parallel, so these three classes could race:
FuseraftPathsHomeOverrideTests briefly clearing FUSERAFT_HOME to null
could interleave with another class expecting its own override,
making it read the real ~/.fuseraft/config instead of its temp dir.

Group them into one xUnit collection so their tests run sequentially.
Every /exit path (slash command, bare "exit"/"quit", Ctrl+D) now prints
the exact `fuseraft --resume <sessionId>` command after "Session ended."
so the session ID doesn't have to be dug out of /sessions or logs.

Claude-Session: https://claude.ai/code/session_01U9Ytg59a8MuHrTkJ38wQ1E
ReasoningEffort is a pure pass-through — injected verbatim as
"reasoning": {"effort": "..."} and never interpreted by fuseraft — but
/model, /reasoning, and `validate` all rejected anything outside a
hardcoded none/low/medium/high list, blocking newer provider tiers like
"minimal", "xhigh", and "max".

Replace the fixed allow-list with a light sanity check (reject only
values with embedded whitespace, which are unambiguously malformed)
so new provider-specific values work without a CLI update. Update help
text and docs accordingly.

Claude-Session: https://claude.ai/code/session_01U9Ytg59a8MuHrTkJ38wQ1E
---
updated-dependencies:
- dependency-name: OpenTelemetry.Exporter.OpenTelemetryProtocol
  dependency-version: 1.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added .NET Pull requests that update .NET code dependencies Pull requests that update a dependency file labels Aug 24, 2026
@fuseraft fuseraft closed this Aug 25, 2026
@dependabot @github

dependabot Bot commented on behalf of github Aug 25, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/nuget/src/OpenTelemetry.Exporter.OpenTelemetryProtocol-1.18.0 branch August 25, 2026 03:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants