diff --git a/composer.lock b/composer.lock index d17f7ab..586e575 100644 --- a/composer.lock +++ b/composer.lock @@ -2721,12 +2721,12 @@ "source": { "type": "git", "url": "https://github.com/NativePHP/mobile-air.git", - "reference": "557de018ee518d2e347c61a5e223a8564065a422" + "reference": "2189e72363ea00965c17d35d8b127a2ae77093ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/NativePHP/mobile-air/zipball/557de018ee518d2e347c61a5e223a8564065a422", - "reference": "557de018ee518d2e347c61a5e223a8564065a422", + "url": "https://api.github.com/repos/NativePHP/mobile-air/zipball/2189e72363ea00965c17d35d8b127a2ae77093ad", + "reference": "2189e72363ea00965c17d35d8b127a2ae77093ad", "shasum": "" }, "require": { @@ -2837,7 +2837,7 @@ "source": "https://github.com/NativePHP/mobile-air/tree/main", "issues": "https://github.com/NativePHP/mobile-air/issues" }, - "time": "2026-10-22T22:56:03+00:00" + "time": "2026-10-24T01:35:48+00:00" }, { "name": "nativephp/mobile-browser", @@ -3065,12 +3065,12 @@ "source": { "type": "git", "url": "https://github.com/NativePHP/mobile-ui.git", - "reference": "b2a8b2ab5979fb217424210740a5aaca268f295d" + "reference": "0abe5d24dc6c8749ac27a651c66f6b8154459d61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/NativePHP/mobile-ui/zipball/b2a8b2ab5979fb217424210740a5aaca268f295d", - "reference": "b2a8b2ab5979fb217424210740a5aaca268f295d", + "url": "https://api.github.com/repos/NativePHP/mobile-ui/zipball/0abe5d24dc6c8749ac27a651c66f6b8154459d61", + "reference": "0abe5d24dc6c8749ac27a651c66f6b8154459d61", "shasum": "" }, "require": { @@ -3130,7 +3130,7 @@ "url": "https://nativephp.com/sponsor" } ], - "time": "2026-10-22T19:20:50+00:00" + "time": "2026-10-24T01:25:19+00:00" }, { "name": "nesbot/carbon", diff --git a/resources/views/native/partials/commit-body.blade.php b/resources/views/native/partials/commit-body.blade.php index 43b9764..7b628cf 100644 --- a/resources/views/native/partials/commit-body.blade.php +++ b/resources/views/native/partials/commit-body.blade.php @@ -4,10 +4,9 @@ The runs inside a paragraph sit flush left with no blank lines between them on purpose: under whitespace-pre-wrap any whitespace between those tags would print. Each line ends in a tag or a directive, whose newline PHP drops. - A standalone /dev/null is the wordmark, in semibold with tighter tracking like the web's. The web outlines its - middle slash in lane-0; EDGE text runs can't stroke a glyph, so that slash is solid lane-0 instead, in the regular - weight, which is nearer the outline's thin lines than a solid semibold slash or a faded one. iOS breaks lines - after a slash, so a word joiner (U+2060) after each one keeps the wordmark on one line. It never breaks before a + A standalone /dev/null is the wordmark, in semibold with tighter tracking like the web's, its middle slash a + hollow lane-0 outline. text-outline's 1pt is the web's max(1px, 0.035em) at body sizes. iOS breaks lines after a + slash, so a word joiner (U+2060) after each one keeps the wordmark on one line. It never breaks before a slash, even after a space, so a zero-width space (U+200B) after a space lets the line break there as a browser would; without it, a few wordmarks in a row can't wrap at all. VoiceOver skips both and still reads "/dev/null". @@ -44,7 +43,7 @@ @elseif ($run->isWordmark) @php($afterSpace = $loop->index > 0 && ctype_space(substr($block->runs[$loop->index - 1]->text, -1))) -@if ($afterSpace)​@endif/⁠dev⁠null +@if ($afterSpace)​@endif/⁠dev⁠null @else @endif diff --git a/tests/Feature/Screens/LogTest.php b/tests/Feature/Screens/LogTest.php index b8f164a..3e0d08a 100644 --- a/tests/Feature/Screens/LogTest.php +++ b/tests/Feature/Screens/LogTest.php @@ -205,7 +205,7 @@ ]); }); -it('draws a standalone /dev/null as the wordmark: semibold, tight, its middle slash regular in lane-0, held on one line', function () { +it('draws a standalone /dev/null as the wordmark: semibold, tight, its middle slash a lane-0 outline, held on one line', function () { Http::fake(['devnull.test/*' => Http::response(pageJson([commitJson(['body' => 'Piped to /dev/null, not /dev/nullable (/dev/null)'])]))]); $screen = Native::visit('/log'); @@ -218,7 +218,7 @@ ["/\u{2060}dev", '/', "\u{2060}null"], ]) ->and($wordmarks[0]['props'])->toMatchArray(['font_name' => 'semibold', 'font_weight' => 5]) - ->and($slash)->toMatchArray(['font_name' => 'default', 'font_weight' => 3]) + ->and($slash)->toMatchArray(['text_outline' => 1.0])->not->toHaveKey('font_name') ->and(strtolower($slash['color']))->toBe(strtolower(config('native-ui.theme.light.lane-0'))) ->and(strtolower($slash['dark_color']))->toBe(strtolower(config('native-ui.theme.dark.lane-0'))); });