Publish a first release, keep internal links in the tab, and stop the hero stuttering Four fixes to what a visitor sees first. **The changelog was empty because its seed never ran.** The backfill was gated behind `:changelog_backfill_on_boot`, and nothing in any config file ever set it, so the curated entries sat in the code unused from the day they were written. Enabled for dev and prod, and deliberately not for test: it runs off the boot path, and a write that escapes the sandbox is a flaky suite. What it seeds is narrower than what it holds. Every curated entry is anchored to a commit from before this repository's clean-room rewrite, and none of those commits are here -- publishing them would have given the page thirty links resolving to nothing, on a page that tells the reader each entry links to its commit and the diff is readable from there. So the launch is stated once, as v0.0.1, from a commit that exists. The rest are retained for the day that history is grafted in. Found while writing it: `summary` validated to 500 characters into a `varchar(255)` column, so anything between the two passed the changeset and then raised `string_data_right_truncation` from Postgres. That is the only path that writes this table, and it would have failed silently inside the boot task. **Internal links opened new tabs.** The sanitizer gives every link the same isolation attributes, which is right for a link that leaves the site and wrong for one that does not: a reader following our own docs collected a tab per link. Links that stay on the site now stay in the tab. `//host` is still treated as leaving, because it reads as a path and is not one. **The hero animation stuttered.** Two causes, both paint cost. Eight font faces are `font-display: swap` and none were preloaded, so faces arrived after first paint and re-laid-out hero text mid-animation. And the keyframes animated `filter: blur()`, which no compositor can do -- every frame repainted a 5.5rem headline spanning the viewport. The three faces the first paint uses are preloaded, and the animation is opacity and translate only. **Component demos were capped at a reading measure.** The page is what fills the column now and the prose caps itself; a composed surface squeezed into 768px stops demonstrating the proportions it exists to show.
Publish a first release, keep internal links in the tab, and stop the hero stuttering
Deploy story
What this commit did to the running system — joined from the forge receipt chain, the part a commit page elsewhere cannot show.
Not deployed through the forge lane
No push, promotion, build, or deploy receipt references this commit (receipts are scanned over a bounded recent window). Changes shipped by full node replacement carry their proof in the release gate receipt instead.
Changed files
-
modified
assets/css/openagents.css -
modified
config/dev.exs -
modified
config/runtime.exs -
modified
lib/openagents/changelog/backfill.ex -
modified
lib/openagents/changelog/entry.ex -
modified
lib/openagents/markdown.ex -
modified
lib/openagents_web/components/layouts/root.html.heex -
modified
lib/openagents_web/live/components_live.ex -
modified
test/openagents/changelog_test.exs -
modified
test/openagents/markdown_test.exs
Diff
10 files changed, +185 -14
assets/css/openagents.css modified +11 -5
@@ -3967,6 +3967,12 @@
| 3967 | 3967 |
|
| 3968 | 3968 |
|
| 3969 | 3969 |
|
| 3970 |
|
|
| 3971 |
|
|
| 3972 |
|
|
| 3973 |
|
|
| 3974 |
|
|
| 3975 |
|
|
| 3970 | 3976 |
|
| 3971 | 3977 |
|
| 3972 | 3978 |
|
@@ -3977,19 +3983,18 @@
| 3977 | 3983 |
|
| 3978 | 3984 |
|
| 3979 | 3985 |
|
| 3986 |
|
|
| 3987 |
|
|
| 3988 |
|
|
| 3989 |
|
|
| 3980 | 3990 |
|
| 3981 | 3991 |
|
| 3982 | 3992 |
|
| 3983 | 3993 |
|
| 3984 |
|
|
| 3985 |
|
|
| 3986 |
|
|
| 3987 |
|
|
| 3988 | 3994 |
|
| 3989 | 3995 |
|
| 3990 | 3996 |
|
| 3991 | 3997 |
|
| 3992 |
|
|
| 3993 | 3998 |
|
| 3994 | 3999 |
|
| 3995 | 4000 |
|
config/dev.exs modified +4
@@ -2,6 +2,10 @@ import Config
| 2 | 2 |
|
| 3 | 3 |
|
| 4 | 4 |
|
| 5 |
|
|
| 6 |
|
|
| 7 |
|
|
| 8 |
|
|
| 5 | 9 |
|
| 6 | 10 |
|
| 7 | 11 |
|
config/runtime.exs modified +7
@@ -96,6 +96,13 @@ if config_env() == :dev do
| 96 | 96 |
|
| 97 | 97 |
|
| 98 | 98 |
|
| 99 |
|
|
| 100 |
|
|
| 101 |
|
|
| 102 |
|
|
| 103 |
|
|
| 104 |
|
|
| 105 |
|
|
| 99 | 106 |
|
| 100 | 107 |
|
| 101 | 108 |
|
lib/openagents/changelog/backfill.ex modified +39 -3
@@ -33,7 +33,7 @@ defmodule OpenAgents.Changelog.Backfill do
| 33 | 33 |
|
| 34 | 34 |
|
| 35 | 35 |
|
| 36 |
|
|
| 36 |
|
|
| 37 | 37 |
|
| 38 | 38 |
|
| 39 | 39 |
|
@@ -41,8 +41,44 @@ defmodule OpenAgents.Changelog.Backfill do
| 41 | 41 |
|
| 42 | 42 |
|
| 43 | 43 |
|
| 44 |
|
|
| 45 |
|
|
| 44 |
|
|
| 45 |
|
|
| 46 |
|
|
| 47 |
|
|
| 48 |
|
|
| 49 |
|
|
| 50 |
|
|
| 51 |
|
|
| 52 |
|
|
| 53 |
|
|
| 54 |
|
|
| 55 |
|
|
| 56 |
|
|
| 57 |
|
|
| 58 |
|
|
| 59 |
|
|
| 60 |
|
|
| 61 |
|
|
| 62 |
|
|
| 63 |
|
|
| 64 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 68 |
|
|
| 69 |
|
|
| 70 |
|
|
| 71 |
|
|
| 72 |
|
|
| 73 |
|
|
| 74 |
|
|
| 75 |
|
|
| 76 |
|
|
| 77 |
|
|
| 78 |
|
|
| 79 |
|
|
| 80 |
|
|
| 81 |
|
|
| 46 | 82 |
|
| 47 | 83 |
|
| 48 | 84 |
|
lib/openagents/changelog/entry.ex modified +5 -1
@@ -62,7 +62,11 @@ defmodule OpenAgents.Changelog.Entry do
| 62 | 62 |
|
| 63 | 63 |
|
| 64 | 64 |
|
| 65 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 68 |
|
|
| 69 |
|
|
| 66 | 70 |
|
| 67 | 71 |
|
| 68 | 72 |
|
lib/openagents/markdown.ex modified +13
@@ -58,6 +58,18 @@ defmodule OpenAgents.Markdown do
| 58 | 58 |
|
| 59 | 59 |
|
| 60 | 60 |
|
| 61 |
|
|
| 62 |
|
|
| 63 |
|
|
| 64 |
|
|
| 65 |
|
|
| 66 |
|
|
| 67 |
|
|
| 68 |
|
|
| 69 |
|
|
| 70 |
|
|
| 71 |
|
|
| 72 |
|
|
| 61 | 73 |
|
| 62 | 74 |
|
| 63 | 75 |
|
@@ -86,6 +98,7 @@ defmodule OpenAgents.Markdown do
| 86 | 98 |
|
| 87 | 99 |
|
| 88 | 100 |
|
| 101 |
|
|
| 89 | 102 |
|
| 90 | 103 |
|
| 91 | 104 |
|
lib/openagents_web/components/layouts/root.html.heex modified +31
@@ -12,6 +12,37 @@
| 12 | 12 |
|
| 13 | 13 |
|
| 14 | 14 |
|
| 15 |
|
|
| 16 |
|
|
| 17 |
|
|
| 18 |
|
|
| 19 |
|
|
| 20 |
|
|
| 21 |
|
|
| 22 |
|
|
| 23 |
|
|
| 24 |
|
|
| 25 |
|
|
| 26 |
|
|
| 27 |
|
|
| 28 |
|
|
| 29 |
|
|
| 30 |
|
|
| 31 |
|
|
| 32 |
|
|
| 33 |
|
|
| 34 |
|
|
| 35 |
|
|
| 36 |
|
|
| 37 |
|
|
| 38 |
|
|
| 39 |
|
|
| 40 |
|
|
| 41 |
|
|
| 42 |
|
|
| 43 |
|
|
| 44 |
|
|
| 45 |
|
|
| 15 | 46 |
|
| 16 | 47 |
|
| 17 | 48 |
|
lib/openagents_web/live/components_live.ex modified +7 -3
@@ -410,7 +410,7 @@ defmodule OpenAgentsWeb.ComponentsLive do
| 410 | 410 |
|
| 411 | 411 |
|
| 412 | 412 |
|
| 413 |
|
|
| 413 |
|
|
| 414 | 414 |
|
| 415 | 415 |
|
| 416 | 416 |
|
@@ -423,7 +423,7 @@ defmodule OpenAgentsWeb.ComponentsLive do
| 423 | 423 |
|
| 424 | 424 |
|
| 425 | 425 |
|
| 426 |
|
|
| 426 |
|
|
| 427 | 427 |
|
| 428 | 428 |
|
| 429 | 429 |
|
@@ -440,7 +440,11 @@ defmodule OpenAgentsWeb.ComponentsLive do
| 440 | 440 |
|
| 441 | 441 |
|
| 442 | 442 |
|
| 443 |
|
|
| 443 |
|
|
| 444 |
|
|
| 445 |
|
|
| 446 |
|
|
| 447 |
|
|
| 444 | 448 |
|
| 445 | 449 |
|
| 446 | 450 |
|
test/openagents/changelog_test.exs modified +45 -2
@@ -225,11 +225,11 @@ defmodule OpenAgents.ChangelogTest do
| 225 | 225 |
|
| 226 | 226 |
|
| 227 | 227 |
|
| 228 |
|
|
| 228 |
|
|
| 229 | 229 |
|
| 230 | 230 |
|
| 231 | 231 |
|
| 232 |
|
|
| 232 |
|
|
| 233 | 233 |
|
| 234 | 234 |
|
| 235 | 235 |
|
@@ -239,5 +239,48 @@ defmodule OpenAgents.ChangelogTest do
| 239 | 239 |
|
| 240 | 240 |
|
| 241 | 241 |
|
| 242 |
|
|
| 243 |
|
|
| 244 |
|
|
| 245 |
|
|
| 246 |
|
|
| 247 |
|
|
| 248 |
|
|
| 249 |
|
|
| 250 |
|
|
| 251 |
|
|
| 252 |
|
|
| 253 |
|
|
| 254 |
|
|
| 255 |
|
|
| 256 |
|
|
| 257 |
|
|
| 258 |
|
|
| 259 |
|
|
| 260 |
|
|
| 261 |
|
|
| 262 |
|
|
| 263 |
|
|
| 264 |
|
|
| 265 |
|
|
| 266 |
|
|
| 267 |
|
|
| 268 |
|
|
| 269 |
|
|
| 270 |
|
|
| 271 |
|
|
| 272 |
|
|
| 273 |
|
|
| 274 |
|
|
| 275 |
|
|
| 276 |
|
|
| 277 |
|
|
| 278 |
|
|
| 279 |
|
|
| 280 |
|
|
| 281 |
|
|
| 282 |
|
|
| 283 |
|
|
| 284 |
|
|
| 242 | 285 |
|
| 243 | 286 |
|
test/openagents/markdown_test.exs modified +23
@@ -109,6 +109,29 @@ defmodule OpenAgents.MarkdownTest do
| 109 | 109 |
|
| 110 | 110 |
|
| 111 | 111 |
|
| 112 |
|
|
| 113 |
|
|
| 114 |
|
|
| 115 |
|
|
| 116 |
|
|
| 117 |
|
|
| 118 |
|
|
| 119 |
|
|
| 120 |
|
|
| 121 |
|
|
| 122 |
|
|
| 123 |
|
|
| 124 |
|
|
| 125 |
|
|
| 126 |
|
|
| 127 |
|
|
| 128 |
|
|
| 129 |
|
|
| 130 |
|
|
| 131 |
|
|
| 132 |
|
|
| 133 |
|
|
| 134 |
|
|
| 112 | 135 |
|
| 113 | 136 |
|
| 114 | 137 |
|