{"url":"https://api.github.com/repos/ngx-l402/ngx-l402/releases/362470909","assets_url":"https://api.github.com/repos/ngx-l402/ngx-l402/releases/362470909/assets","upload_url":"https://uploads.github.com/repos/ngx-l402/ngx-l402/releases/362470909/assets{?name,label}","html_url":"https://github.com/ngx-l402/ngx-l402/releases/tag/v1.2.8","id":362470909,"author":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"node_id":"RE_kwDONyrl584Vmt39","tag_name":"v1.2.8","target_commitish":"main","name":"v1.2.8","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-07-30T13:06:22Z","updated_at":"2026-07-30T14:59:16Z","published_at":"2026-07-30T13:53:28Z","assets":[{"url":"https://api.github.com/repos/ngx-l402/ngx-l402/releases/assets/495423942","id":495423942,"node_id":"RA_kwDONyrl584dh5HG","name":"ngx_l402-1.2.8-nginx-1.28.0-linux-x86_64.tar.gz","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/x-gtar","state":"uploaded","size":12616587,"digest":"sha256:91c8a8e5843136a1e8a9769e53c176ea1b8f757543a7da039005df31de4e5bf6","download_count":0,"created_at":"2026-07-30T13:53:40Z","updated_at":"2026-07-30T13:53:41Z","browser_download_url":"https://github.com/ngx-l402/ngx-l402/releases/download/v1.2.8/ngx_l402-1.2.8-nginx-1.28.0-linux-x86_64.tar.gz"},{"url":"https://api.github.com/repos/ngx-l402/ngx-l402/releases/assets/495423648","id":495423648,"node_id":"RA_kwDONyrl584dh5Cg","name":"ngx_l402-1.2.8-nginx-1.28.3-linux-x86_64.tar.gz","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/x-gtar","state":"uploaded","size":12616617,"digest":"sha256:299a5a1132d6c6812cf285e91d5b0db61a9c6bef9f5fb5731c6e29f576bc4b1a","download_count":0,"created_at":"2026-07-30T13:53:27Z","updated_at":"2026-07-30T13:53:27Z","browser_download_url":"https://github.com/ngx-l402/ngx-l402/releases/download/v1.2.8/ngx_l402-1.2.8-nginx-1.28.3-linux-x86_64.tar.gz"},{"url":"https://api.github.com/repos/ngx-l402/ngx-l402/releases/assets/495423717","id":495423717,"node_id":"RA_kwDONyrl584dh5Dl","name":"ngx_l402-1.2.8-nginx-1.29.8-linux-x86_64.tar.gz","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/x-gtar","state":"uploaded","size":12616643,"digest":"sha256:4c6cf33d289b8cfcd1e6e8504520ce6cd3d24744b44a3eefa5e38862e344fc51","download_count":0,"created_at":"2026-07-30T13:53:30Z","updated_at":"2026-07-30T13:53:31Z","browser_download_url":"https://github.com/ngx-l402/ngx-l402/releases/download/v1.2.8/ngx_l402-1.2.8-nginx-1.29.8-linux-x86_64.tar.gz"},{"url":"https://api.github.com/repos/ngx-l402/ngx-l402/releases/assets/495423860","id":495423860,"node_id":"RA_kwDONyrl584dh5F0","name":"ngx_l402-1.2.8-nginx-1.30.3-linux-x86_64.tar.gz","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/x-gtar","state":"uploaded","size":12616637,"digest":"sha256:e3c918b2b6f20cfcd4fbaa3496fe2fdae4ac55dde7c9dd9c50fd2189d90ea55b","download_count":0,"created_at":"2026-07-30T13:53:36Z","updated_at":"2026-07-30T13:53:37Z","browser_download_url":"https://github.com/ngx-l402/ngx-l402/releases/download/v1.2.8/ngx_l402-1.2.8-nginx-1.30.3-linux-x86_64.tar.gz"},{"url":"https://api.github.com/repos/ngx-l402/ngx-l402/releases/assets/495423755","id":495423755,"node_id":"RA_kwDONyrl584dh5EL","name":"ngx_l402-1.2.8-nginx-1.31.2-linux-x86_64.tar.gz","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/x-gtar","state":"uploaded","size":12616623,"digest":"sha256:8ceb2d1afa8ce0c9e6cb5f6364477bb80199f971530c32c1bc5bdac7097e2bbe","download_count":0,"created_at":"2026-07-30T13:53:30Z","updated_at":"2026-07-30T13:53:31Z","browser_download_url":"https://github.com/ngx-l402/ngx-l402/releases/download/v1.2.8/ngx_l402-1.2.8-nginx-1.31.2-linux-x86_64.tar.gz"}],"tarball_url":"https://api.github.com/repos/ngx-l402/ngx-l402/tarball/v1.2.8","zipball_url":"https://api.github.com/repos/ngx-l402/ngx-l402/zipball/v1.2.8","body":"## Reliability\r\n\r\n- Fork-safe initialisation — nginx workers could segfault on startup. State built in the master before `fork()` (Redis pool threads, lock state) isn't valid in workers; the pool is now per-process, the Cashu redemption loop runs in a worker, and config is read before nginx strips the environment. ([#158](https://github.com/ngx-l402/ngx-l402/pull/158)) @DhananjayPurohit\r\n\r\n## Features\r\n\r\n- `l402_realm` directive — scope macaroons to a named realm so tokens issued for one area aren't accepted in another. ([#157](https://github.com/ngx-l402/ngx-l402/pull/157)) @DhananjayPurohit\r\n\r\n## Fixes\r\n\r\n- Return the correct status from the 402 access handler — `send_html_response()` passed through `NGX_OK`, which the access phase treats as \"continue\", so a challenged request could also be proxied upstream and stall until the read timeout. It now finalizes with `NGX_DONE`. Fixes [#147](https://github.com/ngx-l402/ngx-l402/issues/147). ([#148](https://github.com/ngx-l402/ngx-l402/pull/148)) @Rits1272\r\n- Payment page renders fetched content instead of reloading ([#141](https://github.com/ngx-l402/ngx-l402/pull/141)) @DhananjayPurohit\r\n\r\n## CI and docs\r\n\r\n- Publishing now waits for the tests, so a failing run can't move `latest` ([#162](https://github.com/ngx-l402/ngx-l402/pull/162)) @DhananjayPurohit\r\n- `cargo fmt` and `clippy -D warnings` gates ([#152](https://github.com/ngx-l402/ngx-l402/pull/152), [#155](https://github.com/ngx-l402/ngx-l402/pull/155)) @iamthesvn\r\n- Docs fixes after the org migration ([#140](https://github.com/ngx-l402/ngx-l402/pull/140), [#150](https://github.com/ngx-l402/ngx-l402/pull/150), [#160](https://github.com/ngx-l402/ngx-l402/pull/160)) @iamthesvn, ([#142](https://github.com/ngx-l402/ngx-l402/pull/142), [#154](https://github.com/ngx-l402/ngx-l402/pull/154)) @DhananjayPurohit\r\n\r\n## Upgrade\r\n\r\nImages now publish to `ghcr.io/ngx-l402/ngx-l402`. The pre-rename path is a separate package that stopped at 1.2.7, and its `latest` still points there — a pull against the old path succeeds and returns 1.2.7 with no error. Update your image reference:\r\n\r\n```bash\r\ndocker pull ghcr.io/ngx-l402/ngx-l402:1.2.8\r\n```\r\n\r\n**Full changelog:** [v1.2.7...v1.2.8](https://github.com/ngx-l402/ngx-l402/compare/v1.2.7...v1.2.8)","mentions_count":3}