mwbot 0.5.0-alpha.2

A MediaWiki bot framework
Documentation
## 0.5.0-alpha.2 / 2023-02-01
* Improve rendering of documentation on docs.rs.

## 0.5.0-alpha.1 / 2023-01-31
* Add support for file uploads ([T319098]https://phabricator.wikimedia.org/T319098).
* [BREAKING] Upgrade `mwapi_errors` to 0.3.0-alpha.1

## 0.4.5 / 2023-01-30
* In `mwbot::init_logging()`, remove unnecessary log directives that prevent overrides.

## 0.4.4 / 2023-01-22
* Add basic tracing-subscriber wrapper, `mwbot::init_logging()` ([T319100]https://phabricator.wikimedia.org/T319100).
* Add a generator for list=allpages
* Add `Page.id()` to get a page's database ID.

## 0.4.3 / 2022-10-14
Note: 0.4.2 was never released because of an accident.

* Add a builder for programmatically creating `Bot` instances.

## 0.4.1 / 2022-10-01
* Git repository moved to [Wikimedia GitLab]https://gitlab.wikimedia.org/repos/mwbot-rs/mwbot.
* Issue tracking moved to [Wikimedia Phabricator]https://phabricator.wikimedia.org/project/profile/6182/.

## 0.4.0 / 2022-09-19
* Expose a `Page`'s underlying `mwtitle::Title`.
* Increase MSRV to 1.60.

## 0.4.0-alpha.3 / 2022-05-01
* Check `{{nobots}}` against the page's current wikitext, not what we plan on
  saving. Fixes [#10]https://gitlab.com/mwbot-rs/mwbot/-/issues/10.
* [BREAKING] Use `u64` for all revision ID fields. Fixes [#56]https://gitlab.com/mwbot-rs/mwbot/-/issues/56.
* [BREAKING] Once information about a Page has been fetched, it will always
  return information corresponding to the same revision ID (think immutable).
  To get up-to-date information, create a new Page instance. Notably,
  `Page.save()` will return a new Page instance on success.

## 0.4.0-alpha.2 / 2022-01-06
* Stop re-exporting mwapi_responses crate, it never worked.
* `Page.redirect_target()` now preloads page metadata.
* [BREAKING] Update mwapi_errors to 0.2.0-alpha.2
* [BREAKING] Update mwtitle to 0.2.0-alpha.1

## 0.4.0-alpha.1 / 2021-12-25
* Add `Bot::query_response()` bridge for the `mwapi_responses` crate.
  Fixes [#32]https://gitlab.com/mwbot-rs/mwbot/-/issues/32.
* [BREAKING] Use `tracing` instead of `log`. Fixes [#6]https://gitlab.com/mwbot-rs/mwbot/-/issues/6.
* Add recursive category member page generator.
* [BREAKING] Rename `Bot::get_page()` to `page()`, which now returns
  `Result<Page>` and uses the new `mwtitle` crate for local validation.
* [BREAKING] Rename `Bot::get_html()` to `html()`, which now returns an
  `ImmutableWikicode` to make it easier to write multi-threaded programs.
* [BREAKING] Rename `Bot::get_api()` and `get_parsoid()` to `api()` and
  `parsoid()` respectively.
* [BREAKING] Drop `get_` prefix from most `Page` methods.
* Page information (existence, redirect status) is lazy-loaded and cached.
  Fixes [#17]https://gitlab.com/mwbot-rs/mwbot/-/issues/17.
* Overhaul generators, which now preload basic page information. They are also
  less likely to panic.
* Add `Page::is_category()` and `is_file()`.
* [BREAKING] `EditResponse.newtimestamp` is now `Option<Timestamp>` instead of
  a `Option<String>`.
* [BREAKING] `Bot::query_response()` has been removed, it is now part of the
  `mwapi` crate can be used with `bot.api().query_response(...)`.
* Implement edit conflict detection for wikitext based edits. It should also be
  more robust for Parsoid/HTML based edits.
* [BREAKING] The `parsoid` and `responses` re-exports now export the entire
  crate instead of just the prelude.

## 0.3.3 / 2021-12-16
* Fix fields on EditResponse type

## 0.3.2 / 2021-11-21
* Fix accidental inversion of mark_as_bot option.
* Avoid having a `parsoid::Wikicode` in scope over an await.

## 0.3.1 / 2021-11-19
* Fix panic when dealing with invalid titles. Fixes [#33]https://gitlab.com/mwbot-rs/mwbot/-/issues/33.
* Fix {{nobots}} implementation.

## 0.3.0 / 2021-11-14
* An `oauth2_token` can be used in `mwbot.toml` for authentication. This is
  preferred over a bot password because it doesn't require an explit login
  request. Fixes [#8]https://gitlab.com/mwbot-rs/mwbot/-/issues/8.
* Add `mwbot.toml` option to ignore {{nobots}} named `respect_nobots`.
* Overhaul how pages are saved. Generally it is now:
  `page.save(code, &SaveOptions::summary("edit summary")).await?`. A `String`
  of wikitext can also be used. More options like whether to mark the edit
  as bot or change tags to add can be controlled via the new `SaveOptions`.
  Fixes [#18]https://gitlab.com/mwbot-rs/mwbot/-/issues/18.
  * The prep_saving_ functions have been removed.
* Legacy errors from action=edit will now return Error::UnknownSaveFailure.
  Fixes [#9]https://gitlab.com/mwbot-rs/mwbot/-/issues/9.
* Add generators to get all pages in a category and that use a template.
  Fixes [#22]https://gitlab.com/mwbot-rs/mwbot/-/issues/22.

## 0.3.0-alpha.7 / 2021-11-07
* Reuse `mwapi`'s HTTP client for `parsoid`. Requires 0.6.1 of `parsoid`.
* Add `Page::get_redirect_target()` to get a page's redirect target.
* Check file permissions on `mwbot.toml` are not obviously misconfigured. It
  will error if the file is world readable, and in some cases, group readable.
  Fixes [#5]https://gitlab.com/mwbot-rs/mwbot/-/issues/5.
* Normalize username used in User-agent header.

## 0.3.0-alpha.6 / 2021-11-01
* Require ^0.6 of `parsoid`.

## 0.3.0-alpha.5 / 2021-11-01
* Require `tokio` ^1.8.0 for functionality used in the edit throttle.
* Remove `Page::new()`, `Bot::get_page()` must be used instead.
* Require a minimum of Rust 1.56.

## 0.3.0-alpha.4 / 2021-10-21
* Overhaul how edits work
  * Require edits to be prepared before they can be saved. This allows for
    setting different flags/parameters when saving the edit.
  * Implement an edit throttle, which defaults to 6 edits/minute.
  * Allow setting `mark_as_bot` and `save_delay` in mwbot.toml under an
   `[edit]` section.
* Have Bot implement `Clone` and `Debug`.

## 0.3.0-alpha.3 / 2021-10-18
* Add `Page::save_wikitext()`
* Use new `mwapi_errors` crate for the Error type. Errors from `Bot::from_*`
  functions implement a new `ConfigError`.

## 0.3.0-alpha.2 / 2021-10-14
* Make authentication optional
* Implement specific error types instead of `anyhow::Error`.
* Implement `{{nobots}}` support.

## 0.3.0-alpha.1 / 2021-10-13
* Initial alpha release