@oxy.so/bloom 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/docs/glass.mdx CHANGED
@@ -138,3 +138,18 @@ Gate: `src/theme/__tests__/chrome-glass.test.ts`, which pins the two floors to t
138
138
  An island also mounts a `ControlSurface` with `material: 'glass'`, so controls inside it paint flush. That is the material's rule rather than a preference: a translucent pane inside a translucent pane composites two alphas and two blurs for one pane's worth of depth, and on Android the second blur is not available at all.
139
139
 
140
140
  Internal (`glass/` is not a published subpath). It is reached through `ButtonGroup`'s `glass` variant and `PageHeader`'s floating presentation.
141
+
142
+ ### On a device: tint, and no blur
143
+
144
+ Measured on a **Pixel 8a** over a hard 10dp stripe pattern, sampling the same rows inside a chrome island and on the bare stripes beside it:
145
+
146
+ | backdrop stripe | bare | inside the island |
147
+ | --- | --- | --- |
148
+ | white | 255 | 254 |
149
+ | black | 0 | 210 |
150
+
151
+ The backdrop contributes **44 of 255** — the pane is translucent — and the stripe **edge stays sharp**, where a blur would smear a 26px transition. That is the Android behaviour this file describes: `expo-blur` is asked for no blur method, so it paints its tint and nothing else. Nothing in `logcat` asked for one or reported a crash.
152
+
153
+ The composite works out at ≈**0.83** opacity against the web pane's 0.72 plus sheen. The difference is `expo-blur`'s own tint — one `intensity` drives it together with the radius and a caller cannot decline it — which is the platform gap `GLASS_BLUR_INTENSITY` documents, appearing exactly where it said it would.
154
+
155
+ The ramp `PageHeader` draws over the same material was checked for the `stopColor` alpha trap at the same time: **0 achromatic rows of 311** in both modes, so the hue survives the SVG renderer.
@@ -215,7 +215,52 @@ And the island fill in light mode is the card fill over a near-white page — th
215
215
 
216
216
  ![The islands over a photograph, title held back](./page-header-islands-photo.png)
217
217
 
218
- **Not verified on a device.** Every number above is Chrome on Linux. iOS and Android have not been run for this change: the material is `expo-blur` on both and is unchanged from the `GlassSurface` the library already shipped, but the geometry, the safe-area padding, the top-edge claim and the scroll linkage have only been exercised in jest and in a browser. Android additionally paints **no blur at all** here, by the design described above, so what a device would show is the tint, the hairline, the sheen and the rim.
218
+ ### Android, on a device
219
+
220
+ Run on a **Pixel 8a** (Android, `akita`) through Expo Go SDK 56, against the
221
+ **published** `@oxy.so/bloom@3.0.0` from npm rather than a local build — which is
222
+ what makes it a consumer's result rather than a rehearsal of one.
223
+
224
+ | property | result |
225
+ | --- | --- |
226
+ | the edge ramp, light | rgb(231,224,231) → rgb(29,59,83), travelled **202** of 255 |
227
+ | the edge ramp, dark | rgb(18,17,22) → rgb(29,59,83), travelled **61** of 255 |
228
+ | no horizontal cut | largest single-row step **1**, monotonic, in both modes |
229
+ | the ramp is CHROMATIC | **0 achromatic rows of 311**, in both modes |
230
+ | a matched `scrimColor` | travelled **1** over its own page colour |
231
+ | the island is translucent | the back capsule reads 244 over the page, **215** over a photograph |
232
+ | the island does NOT blur | see below |
233
+
234
+ The third row is the one worth having. `react-native-svg` reads `stopColor` for
235
+ its RGB and **discards any alpha inside it**, which once painted an Android pane
236
+ as a white-to-black wipe with R=G=B on every row while every gate stayed green
237
+ (the mechanism is on `GLASS_SHEEN` in `theme/glass-colors.ts`). Counting
238
+ achromatic rows is the direct refutation, and there are none: the ramp carries
239
+ the page's hue all the way down.
240
+
241
+ **No blur, measured rather than asserted.** Over a hard 10dp stripe pattern,
242
+ sampled at the same rows inside the back capsule and on the bare stripes beside
243
+ it:
244
+
245
+ | backdrop stripe | bare | inside the island |
246
+ | --- | --- | --- |
247
+ | white | 255 | **254** |
248
+ | black | 0 | **210** |
249
+
250
+ Two things follow. The backdrop contributes **44 of 255** — about 17%, so the
251
+ pane really is translucent. And the stripe EDGE stays sharp inside the island: a
252
+ blur would smear a 26px transition, and there is none. That is tint only, which
253
+ is the documented Android behaviour, and nothing in `logcat` asked for a blur
254
+ method or reported a crash across five screens in both modes.
255
+
256
+ The native pane is slightly more opaque than the web one (≈0.83 against 0.72),
257
+ and that is `expo-blur`'s own tint, which one `intensity` drives together with
258
+ the radius and which a caller cannot decline — the difference
259
+ `GLASS_BLUR_INTENSITY` documents, showing up where it said it would.
260
+
261
+ **iOS is still not verified on a device.** The material is `expo-blur` there
262
+ too and unchanged from the `GlassSurface` the library already shipped, but
263
+ nothing in this change has been run on an iPhone.
219
264
 
220
265
  ## Not included
221
266
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxy.so/bloom",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "packageManager": "bun@1.3.14",
5
5
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
6
6
  "main": "lib/commonjs/index.js",