<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="352886" data-post-id="352886">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>I know this is controversial but we are doing real HTTP in the tests, as there are multiple layers and ways to mock each of them, at some point we decided it was simpler to test the real thing. This is for a custom HTTP client so it must do HTTP properly and this allows to not depend on a particular library such as Req.</p>
<p>That being said I doubt we will move from req anytime soon and our <code>mock_http_server</code> is also an abstraction that could leverage the test features of Req, but this has to be setup properly. It’s on my list though.</p>
<p>Today I just need a quick fix.</p>
<p><em>edit for</em> <a class="mention" href="/u/eiji" rel="nofollow">@Eiji</a></p>
<p>I found a lot of people who cleary reject the idea of performing an actual http call during the tests, more so if you also start the test http server from the test (which we do, we never actually call a 3rd party server), especially when alternative solutions are possible like with Req. This is what I mean by controversial, I don’t personally think it’s <em>bad</em>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="352886" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-352886" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="352886"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #22"></div>
  </section>
</div>
    <div class="postbit" id="352889" data-post-id="352889">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="lud" data-post="23" data-topic="59146">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/48/14382_2.png" class="avatar"> lud:</div>
<blockquote>
<p>I know this is controversial but we are doing real HTTP in the tests</p>
</blockquote>
</aside>
<p>Just to clarify …</p>
<p>It’s not controversial at all. Simply good thing done improperly can cause tests to fail. There are cases when you have to make sure that your app correctly handles 3rd-party server response and in such case you simply cache everything and put into <code>git</code> history. This way you have fast and not failing tests and “real” (but cached) replies.</p>
<p>When the server updates it’s API you simply remove cached files and run tests again once and commit changed cache. This way tests do not fail for example if said server is overloaded and therefore responding too late.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="352889" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-352889" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="352889"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #23"></div>
  </section>
</div>
    <div class="postbit" id="352897" data-post-id="352897">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="wojtekmach" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/wojtekmach/120/999_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  wojtekmach
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Hex Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>I know this is controversial but we are doing real HTTP in the tests</p>
</blockquote>
<p>To me, not controversial at all. I use the following very very often:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">{:ok, pid} =
  Bandit.start_link(
    plug: fn conn, _ -&gt; Plug.Conn.send_resp(conn, 200, "ok") end,
    port: 0
  )
{:ok, {_ip, port}} = ThousandIsland.listener_info(pid)
url = "http://localhost:#{port}"
</code></pre>
<p>This is the 80% <a href="https://hex.pm/packages/bypass" rel="nofollow">Bypass</a> I most commonly need. <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> In fact I’d like to be able to use Req.Test mocks backed by Bandit somehow, if that makes sense, but I couldn’t find the right API. Apologies for hijacking the topic, I’ll bow out now but if it piques anyones interest I’m happy to talk through it further elsewhere.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="352897" data-batch-url="/posts/batch_likers">
                        8
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-352897" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="352897"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #24"></div>
  </section>
</div>
    <div class="postbit" id="352899" data-post-id="352899">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Yes this is the core of what we have currently!</p>
<blockquote>
<p>but I couldn’t find the right API</p>
</blockquote>
<p>What is missing beyond what you showed there ?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="352899" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-352899" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="352899"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #25"></div>
  </section>
</div>
    <div class="postbit" id="352933" data-post-id="352933">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mtrudel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mtrudel/120/28190_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mtrudel
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Bandit</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="lud" data-post="21" data-topic="59146">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/48/14382_2.png" class="avatar"> lud:</div>
<blockquote>
<p>With the last update of Bandit, this returns a 500 error instead.</p>
</blockquote>
</aside>
<p>It’s returning an error because you’re not using the Plug API correctly; the contract is clear that your Plug MUST return a <code>Plug.Conn</code> struct with a set response in order to be valid, and by exiting out of the Plug, you’re not doing that. This is coming to light for you in the 1.6.x release train since we’ve been focusing on tightening up error handling at this exact boundary (previously, we were rather loose on this which is why you weren’t seeing any errors, even if you were doing something unsupported). But what you’re seeing is 100% expected behaviour. There’s an error in your plug implementation, which is obviously server-side, and so is a 5xx series error.</p>
<p>In terms of what you’re attempting to do, there’s nothing explicit in the Plug API that allows you to force the connection closed. Strictly speaking, the Plug API is 1:1 with <em>requests</em> inside a connection (such as keepalive requests within a long-lived HTTP connection, or streams within an HTTP/2 connection). The ‘correct’ way to do this (at least in HTTP/1) is found in <a href="https://www.rfc-editor.org/rfc/rfc9112.html#section-9.3" rel="noopener nofollow ugc">RFC9112§9.3</a>, and is for the server to send a <code>connection: close</code>  header in its response, to which the client should then close the connection on its side.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="352933" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-352933" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="352933"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #26"></div>
  </section>
</div>
    <div class="postbit" id="352996" data-post-id="352996">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I know, I know, it’s not a valid plug. As I described I am not testing a plug implementation here, but a HTTP client.</p>
<p>I’m looking for a way to make the server crash while in the middle of serving the request, just by using the data from the conn. Killing the owner seems to work fine. So I am obviously expecting that code to return an error.</p>
<p>The behaviour I’m trying to mimic (remote server crashing) is not sending <code>connection: close</code> headers, so i’m not sure it would be a good test here, but I may try.</p>
<p>Thank you.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="352996" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-352996" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="352996"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #27"></div>
  </section>
</div>
    <div class="postbit" id="353260" data-post-id="353260">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mtrudel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mtrudel/120/28190_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mtrudel
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Bandit</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>The behaviour I’m trying to mimic (remote server crashing) is not sending connection: close headers, so i’m not sure it would be a good test here, but I may try.</p>
</blockquote>
<p>Ah! That’s an oversight on Bandit’s part (RFC9112§9.6 says we should be sending that header before closing the connection if possible, and it’s easily possible to do so).</p>
<p>Just added this behaviour to Bandit, if you want to test against <code>main</code>!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="353260" data-batch-url="/posts/batch_likers">
                        8
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-353260" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="353260"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #28"></div>
  </section>
</div>
    <div class="postbit" id="369948" data-post-id="369948">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hello again <a class="mention" href="/u/mtrudel" rel="nofollow">@mtrudel</a> , I have a question regarding <code>Plug.Conn.send_chunked</code> and <code>Plug.Conn.chunk</code> with Bandit.</p>
<p>Is there any guarantee that when the <code>Plug.Conn.chunk(conn, foo)</code> call returns, the HTTP/TCP layer confirms that the client did receive the data? Or can the connection close after the function returns but before the client has fetched the whole chunk?</p>
<p>This is for SSE streams, I want to know if when I just sent a chunk, I can consider it received by the client.</p>
<p>Thank you.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="369948" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-369948" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="369948"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #29"></div>
  </section>
</div>
    <div class="postbit" id="370078" data-post-id="370078">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="mtrudel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/mtrudel/120/28190_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  mtrudel
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Bandit</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><code>Plug.Conn.chunk(conn, foo)</code> is guaranteed to have called ThousandIsland.Socket.send/2 in both HTTP/1 and 2 cases, and that in turn is guaranteed to have called the underlying <code>gen_tcp</code> / <code>ssl</code> <code>send/2</code> function, but none of this makes any guarantee that the client has received the data (there’s nothing in either protocol that provides for positive acknowledgement  by the client). The contract of <code>gen_tcp</code> and <code>ssl</code>’s send functions is synchronous on <em>send</em>, but not necessarily on reception by the remote end.</p>
<p>All that being said, if you <em>really</em> need mission critical acknowledgement of delivery, you need to model it yourself on top of HTTP. But, if what you’re asking is ‘can I shut down my connection once i’ve called <code>send</code> and be confident that I’ve done all I can do/need to do for the client to receive messages in the common case’, the answer is yes, the <code>chunk</code> call is safe in that regard.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370078" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-370078" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370078"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #30"></div>
  </section>
</div>
    <div class="postbit" id="370097" data-post-id="370097">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Alright, very clear, thank you!</p>
<p>What I’m trying to achieve is resumability for MCP servers. A GenServer will keep messages sent to an event source (SSE) to a remote client connexion that can be faulty and disconnect at any time.</p>
<p>I need to know when I can safely delete the messages from memory, that is, know when I can assume they were delivered.</p>
<p>According to what you say, only application layer acks can solve that problem, but they are not part of the protocol. (there is a resume stream action but it does not cover most cases).</p>
<p>It is not mission critical so I guess waiting 1 minute after calling <code>chunk</code> should be <em>good enough</em>.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370097" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/bandit-a-pure-elixir-http-server-for-plug-websock-applications/59146/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-370097" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370097"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>