CI builds on disks of its own for the app's build output and Gradle's cache (refs #28) bd1d3ad70c70
The workspace disk has room for the checkout and 512 MiB: with Glance the test job's coverage reports filled it (run #1645, no space left on device). /src/app/build (8 GiB) and /src/.gradle (2 GiB) are ephemeral disks in the test and release jobs.
// The workspace has room for the checkout and a little more: the app's
41
+
// build output and Gradle's project cache get disks of their own.
42
+
mount {
43
+
source "ephemeral://disk"
44
+
target "/src/app/build"
45
+
size "8GiB"
46
+
}
47
+
mount {
48
+
source "ephemeral://disk"
49
+
target "/src/.gradle"
50
+
size "2GiB"
51
+
}
40
52
exec "bash" "scripts/ci.sh"
41
53
output {
42
54
artifact "junit" {
…
42 unchanged lines
85
97
size "20GiB"
86
98
cache "rust-core-target"
87
99
key "rust-core/Cargo.lock"
100
+
}
101
+
// The workspace has room for the checkout and a little more: the app's
102
+
// build output and Gradle's project cache get disks of their own.
103
+
mount {
104
+
source "ephemeral://disk"
105
+
target "/src/app/build"
106
+
size "8GiB"
107
+
}
108
+
mount {
109
+
source "ephemeral://disk"
110
+
target "/src/.gradle"
111
+
size "2GiB"
88
112
}
89
113
secret "android-keystore" {
90
114
mount-path "/run/secrets/android-keystore"
…
18 unchanged lines
modifiedCHANGELOG.md+1−1
…
1 unchanged lines
2
2
3
3
## 0.1.0 (2026-10-28)
4
4
5
-
- **The release's secrets checked in seconds (#7):** `oh run start --job release-check` runs `scripts/release-check.sh` with no build: the keystore's SHA-256 and the entry its password opens (to compare with the keystore you hold), that the key `oxygenhub` opens with that password as signing needs, and that Firebase's settings are whole JSON; never a key, a password or the settings. The release job runs the same check first, and moves the signed APK into `dist/` rather than copying it (the build leavesthejob's disknearlyfull).
5
+
- **The release's secrets checked in seconds (#7):** `oh run start --job release-check` runs `scripts/release-check.sh` with no build: the keystore's SHA-256 and the entry its password opens (to compare with the keystore you hold), that the key `oxygenhub` opens with that password as signing needs, and that Firebase's settings are whole JSON; never a key, a password or the settings. The release job runs the same check first, and moves the signed APK into `dist/` rather than copying it. CI's test and release jobs build on disks of their own for the app's build outputandGradle's project cache,asthe workspace only has room for the checkout.
6
6
- **The hub's living backgrounds (#23):** the website's backdrops come to the phone, the same Rust scenes (copied from OxygenHub's crates/backdrop by scripts/sync-backdrop.sh) stepped in rust-core and drawn by the app. Sign-in has the OxygenHub mark, which answers a finger; the dashboard has Your sky, your repositories and their last 30 days of pushes, proposals, issues, releases and runs, each mark a real event (OxygenHub's `GET /user/sky`; a hub without it shows the quiet field), drawing near your finger and naming the repository it rests by, behind cards it shows through. Live runs and jobs pulse; empty and error screens have the quiet field the hub's error pages have; a screen opened slides in a little from the side it leads to, and goes back the way it came. A repository's screen opens on a band of its own sky, its last 30 days as its pages on the hub draw them (OxygenHub's `GET /repos/OWNER/NAME/sky`; shown only when the hub gives it). As on the web, drawing slows 3 s after the last touch and stops after 2 minutes, and it holds still with the system's animations off or battery saver on.
7
7
- **Assign issues from the phone (#4):** an issue's Assignees action shows who it is assigned to, each removable, with Assign me and a field for anyone's username; saved as the whole set (triage access on the hub).
8
8
- **Approve, reject and expedite runs (#5):** a run's job that waits for a person shows Approve and Reject (its approval rules on the hub decide who may), and a live run has Expedite, which asks why it is urgent (a maintainer's, within the owner's cap). Needs OxygenHub 0.9.11 (the job's `approval` and the expedite route).