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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                    <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 Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>This can be done with a module attribute as well.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">@all_attributes [:foo, :bar, :baz]


...


accept @all_attributes -- [:bar, :baz]
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="321250" 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/ash-3-0-teasers/61857/32">Post #31</a>
	                </div>
	            </div>
              <div id="likers-container-321250" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="321250"
                     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 #31"></div>
  </section>
</div>
    <div class="postbit" id="321251" data-post-id="321251">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                    <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 Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We had an option called <code>reject</code> that did this, but that is being removed in 3.0 for the sake of clarity.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="321251" 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/ash-3-0-teasers/61857/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-321251" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="321251"
                     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 #32"></div>
  </section>
</div>
    <div class="postbit" id="321678" data-post-id="321678">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Ash-Core-Team" data-username="zachdaniel" data-post="9" data-topic="61857">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/48/31980_2.png" class="avatar"> zachdaniel:</div>
<blockquote>
<h2><code>domain</code> option to <code>use Ash.Resource</code></h2>
<p>When creating a resource, you pass the <code>domain</code> option. For example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyApp.Accounts.User do
  use Ash.Resource,
    domain: MyApp.Accounts
end
</code></pre>
<p>This static configuration can be used in various places where you would have previously had to specify an <code>api</code>. For example, you no longer need to specify <code>define_for</code> in the <code>code_interface</code> block.</p>
</blockquote>
</aside>
<p>I have a doubt about this: I’m trying this out in Ash 2.20.3 (using <code>api</code> instead), and indeed it works when removing <code>define_for</code>, but another place I’d expect this to work is to avoid defining the <code>api</code> option for cross-domain/api relationships, but if I remove the <code>api</code> option Ash complains about it being missing.</p>
<p>Is this intended, a bug or an Ash 2.x limitation?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="321678" 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/ash-3-0-teasers/61857/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-321678" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="321678"
                     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 #33"></div>
  </section>
</div>
    <div class="postbit" id="321725" data-post-id="321725">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                    <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 Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>In 3.0 this will not be necessary.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="321725" 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/ash-3-0-teasers/61857/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-321725" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="321725"
                     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 #34"></div>
  </section>
</div>
    <div class="postbit" id="322317" data-post-id="322317">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                    <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 Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-322317-ash-30-teaser-6-a-cherry-on-top-1" class="anchor" href="#p-322317-ash-30-teaser-6-a-cherry-on-top-1" aria-label="Heading link" rel="nofollow"></a>Ash 3.0 Teaser <span class="hashtag-raw">#6:</span> A cherry on top</h1>
<p>This will be the final teaser before the 3.0 release candidates come out!</p>
<h2><a name="p-322317-ashtotenant-2" class="anchor" href="#p-322317-ashtotenant-2" aria-label="Heading link" rel="nofollow"></a>Ash.ToTenant</h2>
<p>A common case is to have a tenant represented by a resource, like <code>%Organization{}</code> or <code>%Tenant{}</code>, but a tenant is always identified by a simple value, like a string or an integer. Because of this, there is often code that looks like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Ash.Changeset.for_update(%Record{}, tenant: "org_#{org.id}")
</code></pre>
<p>There is also complexity when you have a mix of multi tenancy strategies, like if one resource uses schema-based multi tenancy, and the rest use attribute. The <code>Ash.ToTenant</code> protocol simplifies this, and allows you to use the same tenant everywhere, but have a different derived tenant value. Here is an example of how you might use it:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># in Organization resource

defimpl Ash.ToTenant do
  def to_tenant(resource, %MyApp.Accounts.Organization{id: id}) do
    if Ash.Resource.Info.data_layer(resource) == AshPostgres.DataLayer
      &amp;&amp; Ash.Resource.Info.multitenancy_strategy(resource) == :context do
      "org_#{id}"
    else
      id
    end
  end
end
</code></pre>
<h2><a name="p-322317-sensitive-calculations-aggregates-3" class="anchor" href="#p-322317-sensitive-calculations-aggregates-3" aria-label="Heading link" rel="nofollow"></a>Sensitive Calculations &amp; Aggregates</h2>
<p>In the same way that you could specify attributes as <code>sensitive?: true</code>, you can now specify calculations and aggregates as sensitive. These will be redacted when inspecting records, and will also be redacted when inspecting filters inside of queries.</p>
<h2><a name="p-322317-code-interfaces-support-atomic-bulk-actions-4" class="anchor" href="#p-322317-code-interfaces-support-atomic-bulk-actions-4" aria-label="Heading link" rel="nofollow"></a>Code interfaces support atomic &amp; bulk actions</h2>
<p>In 2.0, you need to look up a record before you can update or destroy it, unless you change your code to use <code>YourApi.bulk_update</code> or <code>YourApi.bulk_destroy</code> (in 3.0, <code>Ash.bulk_update</code> and <code>Ash.bulk_destroy</code>). This can be quite verbose. For example, let’s say you have the id of a thing, and you want to update it. The most idiomatic way would have been something like this:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">MyApp.Blog.Post
|&gt; Ash.get!(id)
|&gt; Post.archive!()
</code></pre>
<p>Or alternatively, you could have opted not to use the code interface, and used <code>Ash.bulk_update</code>. For example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">MyApp.Blog.Post
|&gt; Ash.Query.filter(id == ^id)
|&gt; Ash.bulk_update(:archive, %{....})
</code></pre>
<p>But then you don’t get to use your nicely defined code interface, which acts like a context function which fills the role of a context function in Phoenix.</p>
<p>In Ash 3.0, code interfaces have been updated to support bulk operations, which makes cases like the above much more seamless!</p>
<p>For updates/destroys, you can pass identifiers, queries, and lists/streams of inputs directly instead of a record or a changeset. From here on, we’ll also be using code interface functions defined on our domain instead of our resources, which is the recommended way in 3.0. See previous teasers for more.</p>
<h3><a name="p-322317-updatedestroy-examples-5" class="anchor" href="#p-322317-updatedestroy-examples-5" aria-label="Heading link" rel="nofollow"></a>Update/Destroy examples:</h3>
<pre data-code-wrap="elixir"><code class="lang-elixir"># If the action can be done atomically (i.e without looking up the record), it will be. 
# Otherwise, we will look up the record and update it.
# =&gt; MyApp.Blog.archive_post!(post.id)

# queries can be provided, which will return an `Ash.BulkResult`
Post
|&gt; Ash.Query.filter(author_id == ^author_id)
|&gt; MyApp.Blog.archive_post!()
# =&gt; %Ash.BulkResult{}

# lists of records can also be provided, also returning an `Ash.BulkResult`

[%Post{}, %Post{}]
|&gt; MyApp.Blog.archive_post!()
# =&gt; %Ash.BulkResult{}
</code></pre>
<h3><a name="p-322317-create-6" class="anchor" href="#p-322317-create-6" aria-label="Heading link" rel="nofollow"></a>Create</h3>
<p>For creates, we detect if the input is a list (and <em>not</em> a keyword list), and opt into bulk create behavior:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># no need for the additional `define ..., bulk?: true`
Blog.create_post!([%{...inputs}, %{...inputs}]
</code></pre>
<p>EDIT: Below was the original section on bulk creates. Feel free to ignore it, but leaving it for posterity. <a class="mention" href="/u/vonagam" rel="nofollow">@vonagam</a> has made a good point in a discussion on discord, there is no reason that we can’t just detect a list of inputs in the <code>input</code> argument, and use that as a bulk create. This allows us not to need the <code>bulk? true</code> option, and they can function the same as the others, adapting their behavior based on the input. For example:</p>
<blockquote>
<p>Create’s don’t take a first argument like updates/destroys, and so a bulk create must be explicitly defined. For example:</p>
</blockquote>
<pre data-code-wrap="elixir"><code class="lang-elixir"># in the domain

resource Post do
  define :create_posts do
    action :create
    bulk? true
end
</code></pre>
<blockquote>
<p>And it can be used like so:</p>
</blockquote>
<pre data-code-wrap="elixir"><code class="lang-elixir">Blog.create_posts!([%{...inputs}, %{...inputs}]
</code></pre>
<h3><a name="p-322317-streaming-reads-7" class="anchor" href="#p-322317-streaming-reads-7" aria-label="Heading link" rel="nofollow"></a>Streaming reads</h3>
<p>You can also now ask read action code interfaces to return streams. Keep in mind that Ash streams are not (yet) based on data-layer-native streams, but rather will use your actions pagination functionality (preferring keyset vs offset pagination). Only the raising version (<code>!</code>) supports the <code>:stream</code> option, because streams can only raise errors, not return them.</p>
<p>For example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">Blog.active_posts!(stream?: true) 
# =&gt; returns a lazily enumerable stream
</code></pre>
<h3><a name="p-322317-the-light-at-the-end-of-the-tunnel-8" class="anchor" href="#p-322317-the-light-at-the-end-of-the-tunnel-8" aria-label="Heading link" rel="nofollow"></a>The light at the end of the tunnel</h3>
<p>3.0 is <em>very</em> close, and I’m so excited! Thanks again to everyone who has been a part of it. For those adventurous folks, the release candidates will be out soon for you to have a play with <img src="https://forum.elixirforum.com/images/emoji/apple/rocket.png?v=15" title=":rocket:" class="emoji" alt=":rocket:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="322317" data-batch-url="/posts/batch_likers">
                        23
                      </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/ash-3-0-teasers/61857/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-322317" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="322317"
                     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 #35"></div>
  </section>
</div>
    <div class="postbit" id="322334" data-post-id="322334">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote group-Ash-Core-Team" data-username="zachdaniel" data-post="30" data-topic="61857">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/48/31980_2.png" class="avatar"> zachdaniel:</div>
<blockquote>
<p>Code Interfaces on domain modules</p>
</blockquote>
</aside>
<p>Quick question about this. Is the idea, in the long term, to only allow calling the resources actions from the code interface in the domain modules or Ash will always support both ways?</p>
<p>Personally I never liked that approach either with Phoenix contexts or now Ash domains, in my experience as soon as you have a more “complex” domain/context, that module starts to become a mess and hard to find what you want. So, for me at least, I would like to keep using code interfaces in resources if possible <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> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="322334" data-batch-url="/posts/batch_likers">
                        3
                      </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/ash-3-0-teasers/61857/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-322334" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="322334"
                     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 #36"></div>
  </section>
</div>
    <div class="postbit" id="322337" data-post-id="322337">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                    <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 Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>They will both be supported. I believe there are separate cases where both are desirable, and that it is also subject to personal taste. The only thing changing is that our recommended approach is to start w/ functions on the domain module, for users who aren’t sure what they want yet.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="322337" data-batch-url="/posts/batch_likers">
                        3
                      </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/ash-3-0-teasers/61857/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-322337" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="322337"
                     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 #37"></div>
  </section>
</div>
    <div class="postbit" id="327116" data-post-id="327116">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>On windows, this issue is still happening with the error "could not compile dependency :picosat_elixir, “mix compile” failed.</p>
<p>How do we tell Ash to use <code>simple_sat</code> instead?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="327116" 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/ash-3-0-teasers/61857/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-327116" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="327116"
                     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 #38"></div>
  </section>
</div>
    <div class="postbit" id="327117" data-post-id="327117">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="zachdaniel" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/zachdaniel/120/31980_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  zachdaniel
                    <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 Ash</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The getting started guide shows how you swap out one dependency for the other. Perhaps you need to <code>mix deps.unlock — clean picosat_elixir</code> ( the dashes didn’t format correctly because I’m on my phone, you’ll want to type it yourself)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="327117" 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/ash-3-0-teasers/61857/40">Post #39</a>
	                </div>
	            </div>
              <div id="likers-container-327117" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="327117"
                     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>