Live-update the global issue list on out-of-band writes The repository-scoped issue list re-reads whenever its repository's issues move; the global /issues workspace rendered one mount-time snapshot, so an issue filed through the API appeared only after a manual reload. A global issues topic now carries every repository's change announcement, the workspace subscribes to it in mount, and each announcement re-reads the current page through this viewer's own authorization — the same readable_by predicate as the initial load — so a private issue can never surface for a viewer who cannot read it. Bursts coalesce: each change re-arms a single 250 ms timer and only the last fires a re-read. Tests run with zero debounce and refresh synchronously on the change message.
Live-update the global issue list on out-of-band writes
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
lib/openagents/repositories.ex -
modified
lib/openagents_web/live/issue_workspace_live.ex -
modified
test/openagents_web/live/issue_workspace_live_test.exs
Diff
3 files changed, +111 -0
lib/openagents/repositories.ex modified +12
@@ -842,6 +842,8 @@ defmodule OpenAgents.Repositories do
| 842 | 842 |
|
| 843 | 843 |
|
| 844 | 844 |
|
| 845 |
|
|
| 846 |
|
|
| 845 | 847 |
|
| 846 | 848 |
|
| 847 | 849 |
|
@@ -861,10 +863,20 @@ defmodule OpenAgents.Repositories do
| 861 | 863 |
|
| 862 | 864 |
|
| 863 | 865 |
|
| 866 |
|
|
| 867 |
|
|
| 868 |
|
|
| 869 |
|
|
| 870 |
|
|
| 871 |
|
|
| 864 | 872 |
|
| 865 | 873 |
|
| 866 | 874 |
|
| 867 | 875 |
|
| 876 |
|
|
| 877 |
|
|
| 878 |
|
|
| 879 |
|
|
| 868 | 880 |
|
| 869 | 881 |
|
| 870 | 882 |
|
lib/openagents_web/live/issue_workspace_live.ex modified +48
@@ -58,16 +58,64 @@ defmodule OpenAgentsWeb.IssueWorkspaceLive do
| 58 | 58 |
|
| 59 | 59 |
|
| 60 | 60 |
|
| 61 |
|
|
| 62 |
|
|
| 61 | 63 |
|
| 62 | 64 |
|
| 63 | 65 |
|
| 64 | 66 |
|
| 67 |
|
|
| 65 | 68 |
|
| 66 | 69 |
|
| 67 | 70 |
|
| 68 | 71 |
|
| 69 | 72 |
|
| 70 | 73 |
|
| 74 |
|
|
| 75 |
|
|
| 76 |
|
|
| 77 |
|
|
| 78 |
|
|
| 79 |
|
|
| 80 |
|
|
| 81 |
|
|
| 82 |
|
|
| 83 |
|
|
| 84 |
|
|
| 85 |
|
|
| 86 |
|
|
| 87 |
|
|
| 88 |
|
|
| 89 |
|
|
| 90 |
|
|
| 91 |
|
|
| 92 |
|
|
| 93 |
|
|
| 94 |
|
|
| 95 |
|
|
| 96 |
|
|
| 97 |
|
|
| 98 |
|
|
| 99 |
|
|
| 100 |
|
|
| 101 |
|
|
| 102 |
|
|
| 103 |
|
|
| 104 |
|
|
| 105 |
|
|
| 106 |
|
|
| 107 |
|
|
| 108 |
|
|
| 109 |
|
|
| 110 |
|
|
| 111 |
|
|
| 112 |
|
|
| 113 |
|
|
| 114 |
|
|
| 115 |
|
|
| 116 |
|
|
| 117 |
|
|
| 118 |
|
|
| 71 | 119 |
|
| 72 | 120 |
|
| 73 | 121 |
|
test/openagents_web/live/issue_workspace_live_test.exs modified +51
@@ -207,4 +207,55 @@ defmodule OpenAgentsWeb.IssueWorkspaceLiveTest do
| 207 | 207 |
|
| 208 | 208 |
|
| 209 | 209 |
|
| 210 |
|
|
| 211 |
|
|
| 212 |
|
|
| 213 |
|
|
| 214 |
|
|
| 215 |
|
|
| 216 |
|
|
| 217 |
|
|
| 218 |
|
|
| 219 |
|
|
| 220 |
|
|
| 221 |
|
|
| 222 |
|
|
| 223 |
|
|
| 224 |
|
|
| 225 |
|
|
| 226 |
|
|
| 227 |
|
|
| 228 |
|
|
| 229 |
|
|
| 230 |
|
|
| 231 |
|
|
| 232 |
|
|
| 233 |
|
|
| 234 |
|
|
| 235 |
|
|
| 236 |
|
|
| 237 |
|
|
| 238 |
|
|
| 239 |
|
|
| 240 |
|
|
| 241 |
|
|
| 242 |
|
|
| 243 |
|
|
| 244 |
|
|
| 245 |
|
|
| 246 |
|
|
| 247 |
|
|
| 248 |
|
|
| 249 |
|
|
| 250 |
|
|
| 251 |
|
|
| 252 |
|
|
| 253 |
|
|
| 254 |
|
|
| 255 |
|
|
| 256 |
|
|
| 257 |
|
|
| 258 |
|
|
| 259 |
|
|
| 260 |
|
|
| 210 | 261 |
|