# -*- mode: org; -*-

* 0.9.9.6-pre

** Breaking changes

- The models =claude-3-7-sonnet-20250219=, =claude-3-5-sonnet-20241022=,
  =claude-3-5-sonnet-20240620=, =claude-3-5-haiku-20241022=,
  =claude-3-opus-20240229= and =claude-3-haiku-20240307= have been
  removed from the default list of Anthropic models.  These models are
  either deprecated or no longer available.

- The models =gemini-3.1-flash-lite-preview= and =gemini-3-pro-preview=
  have been removed from the default list of Gemini models.  These
  models are no longer available.

- The minimum required version of the =transient= package is now 0.7.8.

- ~gptel-temperaure~ now defaults to nil, meaning the API's default
  value will be used.  This is because some backends don't support
  providing the temperature, those that do don't agree on the scale and
  what a temperature of 1 means.

- Due to the introduction of ~gptel-system-prompt~ (see below), opening
  a text/markdown gptel chat file before loading gptel can cause an
  error.  To fix this, please ensure that gptel is loaded before opening
  any saved text/markdown chat files.  This only needs to be done once.

- ~gptel-menu~'s option to redirect a response to a gptel buffer (the
  "g" option) now works differently.  The prompt is inserted into the
  gptel buffer as before, but the request is sent /from the gptel
  buffer/, with the full context of the conversation.  Before now, the
  gptel buffer only served as the destination for the response, and the
  query was sent without any context.

  This means that you can continue a conversation in any gptel
  buffer from anywhere in Emacs without having to switch to it first.

** New models and backends

- Bedrock backend: Add support for =claude-opus-4-7= and
  =claude-opus-4-8=.

- Anthropic backend: Add support for =claude-opus-4-8= and
  =claude-fable-5=.

- GitHub Copilot backend: Add support for =gemini-3.5-flash=,
  =claude-opus-4.8= and =claude-fable-5=.

- Gemini backend: Add support for =gemini-3.5-flash=,
  =gemini-3.1-flash-lite= and deprecate the preview version.

** New features and UI changes

- You can now set gptel's system prompt directly via
  ~gptel-system-prompt~.  Previously this required setting an internal
  gptel variable (~gptel--system-message~, now obsolete), or defining a
  mapping in ~gptel-directives~ and picking from the list interactively.

- OpenAI subscription support: gptel now supports authentication with
  OpenAI ChatGPT Plus/Pro accounts.  This allows using the ChatGPT Codex
  endpoint without an API key.  See =gptel-make-openai-oauth= and the
  README for details.

- When running ~gptel-rewrite~, reasoning text was previously always
  completely omitted from the response.  This was required to avoid
  mixing with the final, rewritten text, but it meant there was no way
  to examine the reasoning stream.

  Now reasoning text is retained and redirected to another buffer if --
  and only if -- ~gptel-include-reasoning~ is a string denoting a buffer
  name.

** Notable bug fixes

- Improved error messages: Curl request failures now include more
  diagnostic information.

- Fix bounds issues when using the gptel transient menu with =evil-mode=
  visual selections.

- Fix org-mode parsing issues involving =tab-width= when sending
  queries.

* 0.9.9.5 2026-05-03

** Breaking changes

- gptel's default ChatGPT backend has been removed. ~gptel-backend~ and
  ~gptel-model~ now default to =nil=, and there are no registered
  backends out of the box.  However gptel remains usable without
  configuration: if ~gptel-send~ is called without a backend set, the
  ChatGPT backend is created on the fly and used.

- ~gptel-track-media~ affects gptel's link handling in all Org and
  Markdown buffers, not just chat buffers that have ~gptel-mode~ turned
  on.  When calling ~gptel-send~ with ~gptel-track-media~ turned on, and
  the buffer is in Org or Markdown mode, links to supported file types
  will be followed by gptel and included with the request.  Previously
...
...
