Skip to content

v0.1.0-alpha.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Sep 14:52
· 4 commits to main since this release

The surface searchy needs to leave its third-party client. Nothing that
existed moved, so every bot already on tg is unaffected; the version says
0.1.0 rather than 0.0.2 because the additions are notable, and carries
alpha because no bot has yet run on them against live Telegram.

Added

  • Media sends. SendPhoto, SendVideo, SendAudio, SendDocument and
    SendMediaGroup, plus EditMessageMedia and EditMessageReplyMarkup. A file
    is an InputFile, and which of the three shapes it takes decides the request
    on its own: InputFileString for a file_id or an https URL Telegram fetches
    itself, InputFileLocal for a path on the disk of a server started with
    --local, and InputFileUpload for bytes — only the last builds a multipart
    body. A local path sent to Telegram's own endpoint is refused before the
    request, because the failure it would otherwise produce ("wrong file
    identifier") points nowhere near the cause.

  • Inline mode. AnswerInlineQuery, the InlineQuery and
    ChosenInlineResult update kinds, and the two result cards the family uses:
    InlineQueryResultPhoto and InlineQueryResultArticle with
    InputTextMessageContent. Answering with an empty result list is now
    expressible, and results is always sent, because an omitted parameter is a
    400 rather than "nothing found".

  • LinkPreviewOptions as a type, SendTextWithPreview for the one case where a
    bot relays text whose author wanted the preview, and AnswerCallbackQueryURL
    for a button that opens a t.me deep link with no intermediate message.

  • ChatAction* and Chat* constants, so a bot branching on chat type or
    announcing an upload no longer spells the strings out at every call site.

  • InlineKeyboardButton.SwitchInlineQueryCurrentChat. It is a pointer because
    the empty string is the useful value — "open inline search with nothing
    typed" — and omitempty on a plain string would drop exactly that button.

  • editMessageMedia and sendMediaGroup are now probe-safe, so a bot that
    pages a gallery or posts an album can refuse to start on a server that cannot.

    This is why the whole set landed: searchy was the one bot still on a
    third-party library, and it stayed there because tg could not send a photo or
    answer an inline query. Everything above is additive — no existing signature
    moved.

Fixed

  • EditEphemeralMessageText suppresses Telegram's own link preview, which it
    alone among the text sends did not. The About panel every bot is growing
    carries a repository link, so editing one in place rendered a preview card
    under it — in a group, where an ephemeral panel exists precisely to be the
    quiet option. SendEphemeralMessage already did this; the rich sends do not,
    ephemeral or not, which is consistent between them and left alone here.

Changed

  • One versioning and release document for the whole family. docs/versioning.md
    and docs/releases.md are now byte-identical across every Asterfield
    repository apart from two clearly marked sections: this repository's own
    version line, and the surface where a change here breaks something. They spell
    out what each of the three numbers means, what the -alpha.N suffix counts,
    when alpha becomes beta and when it is legitimate to skip to rc or run a
    pre-release in production.
  • Pre-releases are now tagged on dev, not main. Only stable versions are
    tagged on main, on the merge commit from dev, so main answers exactly one
    question: what is in production. The test bot runs dev, the production bot
    runs main. release.yml enforces this and refuses a tag on the wrong branch.
    Earlier pre-releases in this repository were tagged on main under the
    previous rule; they are left as they are.
  • The document is explicit that tg's major number is not a judgement call: Go
    gives it a hard meaning, since a v2 module has a different import path. A
    change that removes or re-signs an exported function is major whatever it
    feels like.

Added

  • release.yml. Every tag from v0.0.1-alpha.1 onward existed and was
    fetchable through the module proxy, but none of them had a GitHub Release, so
    the only way to learn what a bump changed was to open the changelog in another
    tab. The workflow verifies the tag is on main, re-runs gofmt, vet, the race
    suite and govulncheck, and publishes the release from the matching changelog
    section. The module proxy caches a tag permanently on first fetch, which is
    why the branch check runs before anything else.