| 1 |
# Changelog |
| 2 |
|
| 3 |
OxygenHub runs at https://oxygenhub.io; each deploy's build is on the About page and at `/api/v1/version`. |
| 4 |
|
| 5 |
## Unreleased |
| 6 |
|
| 7 |
- **A trial GitHub-like look (#74).** `?look=github` on any page turns it on for that browser (a cookie keeps it), and `?look=default` turns it off. It uses Primer colours in light and dark, system fonts, rounded boxes, underline navigation, grey and green buttons, sentence case and pill labels. Nobody else sees it: it is for judging whether that layout reads better. |
| 8 |
|
| 9 |
## 0.2.0 (2026-10-01) |
| 10 |
|
| 11 |
- **One sign-in for oh and oxy (oxygen#47).** `oh auth login` keeps its token in oxy's credential store (`~/.config/oxy/credentials.toml`, or the keyring through `auth.helper`), and `oh` finds tokens there, so `oxy auth login` signs `oh` in too and the reverse. `~/.config/oh/config.toml` now holds only the default hub. Pinned oxygen brings remote bookmarks by name, and clones check out the repository's default bookmark. |
| 12 |
|
| 13 |
- **Device tokens expire, and the approval page says where a request came from (#70).** A token from device sign-in lasts 90 days past its last use; Settings → Tokens shows its expiry, renewed on use. The `/device` page shows when the code was asked for and from which address (the client's, through the proxy when `behind_proxy` is set), and warns to approve only a code you started yourself. `DELETE /api/v1/user/token` revokes the token it is called with, which `oxy auth logout` uses. |
| 14 |
|
| 15 |
- **Device sign-in (#67).** An app gets a token without a pasted secret. It asks `/api/v1/device/code` for a code and shows it; you approve the code at `/device`, signed in with your second factor, choosing what the app may do; its next poll gets the token. `oh auth login` signs in this way; `--token` still takes a token. |
| 16 |
- **Review requests (#68).** The author or a writer asks someone to review under Reviewers on the proposal page, or with `POST .../proposals/{number}/reviewers`. The person asked is notified, and their review answers the request. Every review now tells the author. |
| 17 |
- **Runner scopes (#41, part 2).** A runner serves the whole site, one owner's repositories, or one repository, set when its registration token is made or later on Admin → Runners. It never takes another scope's jobs. |
| 18 |
- **Flow says which subrepos a job lacks (#56).** A job's log starts with each pinned subrepo it was not given (the run's actor cannot read it, or it is not on this hub) instead of failing later on missing files. |
| 19 |
|
| 20 |
## 0.1.0 (2026-09-30) |
| 21 |
|
| 22 |
- **`oh` for Linux, macOS and Windows.** The first downloadable builds of `oh`, OxygenHub from the command line, beside Oxygen's own 0.1.0. A prerelease. |
| 23 |
- **The hub moved to oxygenhub.io,** serving on localhost behind the tunnel. |
| 24 |
- **Proposals** take `feature/…` bookmarks, record who landed them and how, and say how to resolve a conflict. Organisation repositories with two or more members require one sealed approval by default. |
| 25 |
- **A Code button** with the clone command and a zip download. |
| 26 |
- **Release assets** up to the configured limit through the API. |