Skip to content

Versions 4.0+#

These are all the changelogs for stable releases of hikari-miru (version 4.0.0 to present).

v4.1.1#

  • Set View.message if a hikari.Message is passed to Client.start_view()'s bind_to=.

v4.1.0#

  • Add the ability to specify view items as classvars, similarly to modals
  • Add the ability to pass the title to the modal as a class argument
  • Fix miru.ext.menu.Menu.build_response_async() ignoring the ephemeral= kwarg.
  • Fix items created with decorators always having the same custom_ids, even when randomly generated.
  • Fix NavigatorView default buttons being added when items= is specified.
  • Remove accidental typing_extensions import in miru.ext.nav.

v4.0.0#

This is a major breaking release, adding REST bot support, dependency injection, removing global state from the library, and generally cleaning up old mistakes and weirdness that accumulated over the past 2 years.

Tip

If you already have an application that depends on v3 of miru, see the migration guide. Alternatively, you may keep using v3 if you do not have a need for the newly added features.

  • BREAKING: Raised the minimum supported Python version to 3.10 or greater.
  • BREAKING: Change all @miru decorators to take Context as their first argument and the item (button/select etc..) as their second.
  • BREAKING: Seperate link buttons out of miru.Button as miru.LinkButton.
  • BREAKING: Remove miru.install(). Use miru.Client instead.
  • BREAKING: Remove View.start() and Modal.start(). Use Client.start_view() and Client.start_modal() respectively instead.
  • BREAKING: Remove NavigatorView.send(). Use NavigatorView.build_response() instead and send the builder.
  • BREAKING: Remove Modal.send(). Use Modal.build_response() instead and send the builder.
  • BREAKING: Remove Menu.send(). Use Menu.build_response() instead and send the builder.
  • BREAKING: Remove miru.ModalInteractionCreateEvent and miru.ComponentInteractionCreateEvent. Use the unhandled interaction hooks instead.
  • BREAKING: Made ViewItem.callback only accept positional arguments. This is to allow renaming the context variable's name when overriding it in subclasses. This should not affect most people.
  • BREAKING: Move miru.Context to miru.abc.Context.
  • BREAKING: Move miru.SelectBase to miru.abc.SelectBase.
  • DEPRECATION: Passing buttons= to ext.nav.NavigatorView() constructor. Use the newly added items= instead. The buttons= argument will be removed in v4.2.0.

  • Add miru.Client. The client manages the state of all currently running views & modals & routes interactions to them.

  • Add RESTBot support. Simply pass a RESTBot to miru.Client when initializing it.
  • Add first-class support for dependency injection. This allows to better manage state across the library, along with adding better compatibility to arc and Tanjun via Client.from_arc() and Client.from_tanjun() classmethods respectively.
  • Add the ability to configure autodefer at the item level for views. If an item does not specify autodefer, the view's setting will be used.
  • Add the ability to configure if the autodefer should be ephemeral, along with it's response type through AutodeferOptions.
  • Stabilize Context.issued_response. This property returns a boolean that is True if the underlying interaction has already received an initial response.
  • Add response builders for entire responses from views or modals.
  • Add Context.respond_with_builder().
  • Add @Client.set_unhandled_component_interaction_hook and @Client.set_unhandled_modal_interaction_hook. These are called when an interaction is received that is not handled by any running modal or view.
  • Add miru.abc.InteractiveViewItem for all view items that have callbacks. This includes all current miru.abc.ViewItem except miru.LinkButton.