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


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Terbium-135" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Terbium-135
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/type1fool" rel="nofollow">@type1fool</a> Thx for this library and the nice documentation you wrote! Which came handy as a popup window during editing.<br>
Also <a class="mention" href="/u/hermanverschooten" rel="nofollow">@Hermanverschooten</a> Your blog post was very helpful. Adding passkey support to an existing phoenix application was not too difficult.</p>
<p>I have older hardware keys I’d like to use which (I guess) don’t support being used  as a passkey device.</p>
<p>I already lowered the requirement regarding the <code>user_verification</code> from <code>required</code> to <code>preferred</code> but that’s not enough.<br>
The control flow is different since the user name somehow has to be given to the component.</p>
<p>Without any offense, just saying:<br>
If the library is only supporting passkeys perhaps rename it.<br>
I like: PasskeyLiveComponent</p>
<p>Passkeys have a great momentum right now. Keep up the good work!</p>
<p>With best regards</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="348279" 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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/42">Post #41</a>
	                </div>
	            </div>
              <div id="likers-container-348279" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348279"
                     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 #41"></div>
  </section>
</div>
    <div class="postbit" id="348293" data-post-id="348293">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you for the feedback, <a class="mention" href="/u/terbium-135" rel="nofollow">@Terbium-135</a>!</p>
<blockquote>
<p>I have older hardware keys I’d like to use which (I guess) don’t support being used as a passkey device.</p>
</blockquote>
<p>With some modification, it should be possible to use hardware keys, a Yubikey for example with the package. The Javascript is currently hardcoded to only accept “platform” credentials, effectively meaning Passkeys. See line 44 below:</p>
<p><a href="https://github.com/liveshowy/webauthn_components/blob/9fb31f26cff2f8b13f5f7c93f38993649781dcce/priv/static/registration_hook.js#L44" class="onebox" target="_blank" rel="noopener nofollow ugc">https://github.com/liveshowy/webauthn_components/blob/9fb31f26cff2f8b13f5f7c93f38993649781dcce/priv/static/registration_hook.js#L44</a></p>
<p>I could make this configurable so that developers could opt into supporting non-platform credentials. There may be other parameters that would need to be configurable, so I will do a bit of research when I have time. In the meantime, I created issue <a href="https://github.com/liveshowy/webauthn_components/issues/87" rel="noopener nofollow ugc">#87</a> for this enhancement. If you can’t wait, you could fork the repo and/or open a PR to make this change.</p>
<hr>
<blockquote>
<p>Without any offense, just saying:<br>
If the library is only supporting passkeys perhaps rename it.<br>
I like: PasskeyLiveComponent</p>
</blockquote>
<p>No offense taken. The package has already been renamed once, from <code>webauthn_live_component</code> to <code>webauthn_components</code>. While the first goal was to make Passkey support easy for LiveView developers, support for other types of credentials should be possible with the same package. We wouldn’t want to have separate packages for Passkeys, USB keys, Bluetooth, and so on. The way to accomplish broader support is to increase control over registration parameters so that devs can tailor authentication options based on their business requirements and user preferences.</p>
<p>Another concern is that there is a growing amount of content referencing the package by name. Renaming the package may lead to more confusion, not less. Regardless, I appreciate your thoughtfulness. <img src="https://forum.elixirforum.com/images/emoji/apple/heart_decoration.png?v=15" title=":heart_decoration:" class="emoji" alt=":heart_decoration:" 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="348293" 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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/43">Post #42</a>
	                </div>
	            </div>
              <div id="likers-container-348293" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="348293"
                     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 #42"></div>
  </section>
</div>
    <div class="postbit" id="370016" data-post-id="370016">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/type1fool" rel="nofollow">@type1fool</a> I have been looking for a Hex package that supports  Passkeys for Phoenix applications.  Thanks so much for making this happen.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370016" 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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-370016" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370016"
                     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 #43"></div>
  </section>
</div>
    <div class="postbit" id="370017" data-post-id="370017">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey <a class="mention" href="/u/conradwt" rel="nofollow">@conradwt</a>, thank you for the shout out! Much appreciated!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="370017" 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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-370017" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="370017"
                     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 #44"></div>
  </section>
</div>
    <div class="postbit" id="371705" data-post-id="371705">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-371705-project-update-1" class="anchor" href="#p-371705-project-update-1" aria-label="Heading link" rel="nofollow"></a>Project Update</h1>
<p>TLDR: This project needs a new maintainer.</p>
<h2><a name="p-371705-a-brief-personal-history-2" class="anchor" href="#p-371705-a-brief-personal-history-2" aria-label="Heading link" rel="nofollow"></a>A Brief Personal History</h2>
<p>Since I released this package almost three years ago, I have enjoyed the process of learning about Passkeys and creating tools that could be used in my favorite web framework. When I started seriously pursuing a career in software development, web security was surfacing in headlines with increasing frequency. The Snowden leaks, stolen government laptops with personally identifiable information, unprotected data repositories, the pace of credential thefts - all these stories made the prospect of this career even more intimidating than it already was.</p>
<p>So, security has always been front of mind for me. When employers, clients, and users use the applications we create, we have a responsibility to protect their data with all of the tools at hand. We also have a responsibility to push for and adopt better tools. This is why WebauthnComponents was created. The first W3 spec for the WebAuthn spec <a href="https://www.w3.org/TR/2019/REC-webauthn-1-20190304/" rel="noopener nofollow ugc">dates back to 2019</a> with iterations <a href="https://w3c.github.io/webauthn/" rel="noopener nofollow ugc">continuing in the years since</a>.</p>
<p>What makes Passkeys interesting is that it’s a rare security mechanism that is actually user-friendly. Multifactor authentication via SMS, Email, OTP codes were vulnerable to interception, and hardware devices would likely never get mass adoption. By integrating devices, operating systems, and cloud accounts Passkeys made a specialist-oriented technology much more palatable for people who may never need to understand the implementation details.</p>
<h2><a name="p-371705-passkeys-take-flight-3" class="anchor" href="#p-371705-passkeys-take-flight-3" aria-label="Heading link" rel="nofollow"></a>Passkeys Take Flight</h2>
<p>This project started as an experiment to see if I could understand the WebAuthn API and add support for Phoenix LiveView applications. Did I mention it’s my favorite framework?</p>
<p>Over the summer of 2022, I spent most of my spare time learning the API and writing code that would eventually be released at ElixirConf the same year. This was the first time I had deeply read a W3 spec after needing more information than MDN docs provided.</p>
<p>There were several skills I picked up in the course of building WebauthnComponents:</p>
<ul>
<li>Digesting W3 specs</li>
<li>Building <a href="https://github.com/liveshowy/webauthn_components/blob/main/webauthn_flows.md" rel="noopener nofollow ugc">Mermaid sequence graphs</a></li>
<li>Creating stateful LiveComponents</li>
<li>Marshaling data between clients, components, LiveViews, contexts, and the database</li>
<li>Releasing a package</li>
<li>Supporting the community</li>
</ul>
<h2><a name="p-371705-the-cost-of-coasting-4" class="anchor" href="#p-371705-the-cost-of-coasting-4" aria-label="Heading link" rel="nofollow"></a>The Cost of Coasting</h2>
<p>To varying degrees, I feel confident in those skills. The conversations in this thread and the contributions in the repo are good indicators that this was time well spent.</p>
<p>However, that last skill, <em>supporting the community</em>, is where I have the least confidence now. The list of issues and PRs may be relatively short, but the amount time they require is not. At least, it is not an amount of time I have now. There are a few reasons I have less time to carry this project forward, but the one I’ll share here is that I started a new role in April which is both thrilling and consuming as an engineer. I hope to share more in the future, but for now I can say I have less mental and temporal bandwidth than I did in the past.</p>
<p>As a result, issues and pull requests have languished in the repo this year. The fact that they exist is a reward in itself. They mean that you and others like you have taken time to use the package, report problems, investigate the code, and share contributions.</p>
<p>One cost is that I am further from the initial problem than I was three years ago. Passkeys will continue to roll out to more and more services, and the world will benefit. However, I am no longer in an environment where Passkeys are a useful component. This means I spend very little time with the technology other than as an end user. That makes maintaining the package more difficult than I expected.</p>
<h2><a name="p-371705-whats-next-5" class="anchor" href="#p-371705-whats-next-5" aria-label="Heading link" rel="nofollow"></a>What’s Next</h2>
<p>All of this is to say I am looking for a new maintainer or group of maintainers to adopt WebauthnComponents. I have put this off for a bit because it is important to get it right. Although it may not have the broad impact of the <a href="https://www.wired.com/story/jia-tan-xz-backdoor/" rel="noopener nofollow ugc">XZ debacle</a>, a bad actor could still do significant damage by compromising a package responsible for creating web credentials.</p>
<p>Instead of hunting for a new maintainer, I decided to post here. The community can play an important role in vetting and encouraging whoever takes up ownership of this project.</p>
<h2><a name="p-371705-the-plan-6" class="anchor" href="#p-371705-the-plan-6" aria-label="Heading link" rel="nofollow"></a>The Plan</h2>
<p>My expectations for this process are:</p>
<div class="md-table">
<table>
<thead>
<tr>
<th>Duration</th>
<th>Task</th>
</tr>
</thead>
<tbody>
<tr>
<td>TBD</td>
<td>Nominations</td>
</tr>
<tr>
<td>TBD</td>
<td>Decision</td>
</tr>
<tr>
<td>1-3 months</td>
<td>Onboarding &amp; collaboration</td>
</tr>
<tr>
<td>1 month</td>
<td>Handoff</td>
</tr>
</tbody>
</table>
</div><h3><a name="p-371705-nominations-7" class="anchor" href="#p-371705-nominations-7" aria-label="Heading link" rel="nofollow"></a>Nominations</h3>
<p>Feel free to discuss this project with the people you know in DMs, at conferences (ahem ElixirConf), and in this thread. Keep in mind <strong>this is a place for encouragement</strong>.</p>
<h3><a name="p-371705-onboarding-collaboration-8" class="anchor" href="#p-371705-onboarding-collaboration-8" aria-label="Heading link" rel="nofollow"></a>Onboarding &amp; Collaboration</h3>
<p>I will coordinate with the new maintainer(s) via direct communication asynchronously and through scheduled calls as needed. If you become a maintainer of WebauthnComponents, I will do everything I can to set you up for success. Rest assured this project has not required a tremendous amount of time since its initial release. That may change as it becomes more widely used.</p>
<p>The length of this phase depends largely on schedules, which can be complicated to align during holiday season.</p>
<h3><a name="p-371705-handoff-9" class="anchor" href="#p-371705-handoff-9" aria-label="Heading link" rel="nofollow"></a>Handoff</h3>
<p>During this phase, I will step back from contributions. We will determine in more detail what level of involvement to expect, and I will be available for reviews and discussions.</p>
<h2><a name="p-371705-gratitude-10" class="anchor" href="#p-371705-gratitude-10" aria-label="Heading link" rel="nofollow"></a>Gratitude</h2>
<p>Thank you to everyone who has spent time with WebauthnComponents. I hope to see this work carried forward and improved in ways I couldn’t even imagine. Here’s to the future!</p>
<h2><a name="p-371705-relevant-links-11" class="anchor" href="#p-371705-relevant-links-11" aria-label="Heading link" rel="nofollow"></a>Relevant Links</h2>
<ul>
<li><a href="https://github.com/liveshowy/webauthn_components/graphs/contributors" rel="noopener nofollow ugc">Contributors</a></li>
<li><a href="https://github.com/liveshowy/webauthn_components/issues" rel="noopener nofollow ugc">Issues</a></li>
<li><a href="https://github.com/liveshowy/webauthn_components/pulls" rel="noopener nofollow ugc">Pull Requests</a></li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="371705" data-batch-url="/posts/batch_likers">
                        6
                      </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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-371705" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="371705"
                     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 #45"></div>
  </section>
</div>
    <div class="postbit" id="372573" data-post-id="372573">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi Owen!</p>
<p>First of all congrats for the great work you’ve achieved with WebauthnComponents. As the author of Wax, I’ve been following your work and that is some really great work. It’s also great that you’ve moved on to new demanding projects that you like.</p>
<p>Hopefully we’ll find some new maintainers. I’d add that I’d be glad to assist as well any developer joining the WebauthnComponents project, as much as I can (although, like Owen, I’m pretty busy).</p>
<p>Not long ago I was asked about using Wax/WebauthnComponents in Elixir vs <a href="https://github.com/kanidm/webauthn-rs" rel="noopener nofollow ugc">Rust’s WebAuthn implementation</a>. An interesting fact is that they have 32 contributors, while Wax + WebauthnComponents have only a handful of active contributors. IMO what it means is that WebauthnComponents is a great project for anyone joining the Elixir community, willing to have an impact and ready to give a bit of time to it! If you’re interested, consider applying to Owen’s proposal!</p>
<p><a class="mention" href="/u/type1fool" rel="nofollow">@type1fool</a> I have a honest question: when you started working on this project, Phoenix components were in their infancy and colocated hooks and other niceties didn’t exist. Therefore, a LiveComponent was the way to go. Do you believe that nowadays, a plain, stateless Phoenix components (with a bit of colocated JS) would be sufficient to implement WebAuthn modules? What would be the pros/cons? (A REST API would probably be needed I guess.)</p>
<blockquote>
<p>Although it may not have the broad impact of the <a href="https://www.wired.com/story/jia-tan-xz-backdoor/" rel="noopener nofollow ugc">XZ debacle</a>, a bad actor could still do significant damage by compromising a package responsible for creating web credentials.</p>
</blockquote>
<p>This would actually be a primary target, because WebAuthn can be used in demanding security environments (with attestation), although the size of the Elixir ecosystem mitigates this issue. I, for instance, refused a PR for Wax not long ago that would have, I think, introduced a critical security issue (but I have no evidence at all this was a malicious intent). I just think it would be nice, in the current geopolitical context, to have maintainers from different blocs <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"> On my side, I’ll continue to maintain Wax (which is more or less finished), desperately waiting for someone to review all of it <img src="https://forum.elixirforum.com/images/emoji/apple/grin.png?v=15" title=":grin:" class="emoji" alt=":grin:" loading="lazy" width="20" height="20"> as written in the <a href="https://github.com/tanguilp/wax?tab=readme-ov-file#project-status" rel="noopener nofollow ugc">README</a>:</p>
<blockquote>
<p>This library has <strong>not</strong> be reviewed by independent security / FIDO2 specialists - use it at your own risks or blindly trust its author!</p>
</blockquote>
<p>Cheers!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372573" 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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/47">Post #46</a>
	                </div>
	            </div>
              <div id="likers-container-372573" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372573"
                     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 #46"></div>
  </section>
</div>
    <div class="postbit" id="372597" data-post-id="372597">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I would be happy to co-maintain the WebAuthn components lib. I’m actively using it and was even working on a PR tonight. I don’t think I have the time to be a sole maintainer.</p>
<p>Edit: My PR fixes (I think) the most recent request mentioned above, about YubiKeys and such (“cross-platform” authenticators). <a class="mention" href="/u/terbium-135" rel="nofollow">@Terbium-135</a> you might find it useful (free QA please?). <a href="https://github.com/liveshowy/webauthn_components/pull/98" class="inline-onebox" rel="noopener nofollow ugc">Support cross-platform by peaceful-james · Pull Request #98 · liveshowy/webauthn_components · GitHub</a></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="372597" data-batch-url="/posts/batch_likers">
                        4
                      </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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/48">Post #47</a>
	                </div>
	            </div>
              <div id="likers-container-372597" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="372597"
                     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 #47"></div>
  </section>
</div>
    <div class="postbit" id="373255" data-post-id="373255">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hey <a class="mention" href="/u/tang" rel="nofollow">@tang</a> !</p>
<p>This means a lot to me. After all, WebauthnComponents wouldn’t exist without Wax. Thank you for maintaining it!</p>
<p>It could be that colocated JS hooks would allow for some streamlining of the code. I haven’t worked with the latest versions of Phoenix and LiveView yet, so I don’t have deep insight on that topic. If Typescript is supported, I could see value in moving the TS code into templates. There is still a <a href="https://github.com/liveshowy/webauthn_components/blob/main/webauthn_flows.md" rel="noopener nofollow ugc">multistep process</a> that needs to be managed, which could mean these remain LiveComponents. Another option may be to use <a href="https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html#on_mount/1" rel="noopener nofollow ugc">on_mount/1</a> to inject message handlers into LiveViews, removing the need for the LiveComponents. It’s an idea I haven’t tested, though.</p>
<p>There is an opportunity to replace the <a href="https://github.com/liveshowy/webauthn_components/blob/main/templates/components/passkeys/token_form.html.heex" rel="noopener nofollow ugc">token_form</a> with a controller, which would allow for exposing a REST API. The form is only there because I hadn’t worked with controllers in a long time and there were CSRF errors that I couldn’t resolve at the time.</p>
<p>Stay vigilant with the PRs! I agree that many eyes are crucial for keeping the community and end users safe.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373255" 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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/49">Post #48</a>
	                </div>
	            </div>
              <div id="likers-container-373255" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373255"
                     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 #48"></div>
  </section>
</div>
    <div class="postbit" id="373257" data-post-id="373257">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>I would be happy to co-maintain the WebAuthn components lib. I’m actively using it and was even working on a PR tonight. I don’t think I have the time to be a sole maintainer.</p>
</blockquote>
<p><img src="https://forum.elixirforum.com/images/emoji/apple/smiling_face_with_sunglasses.png?v=15" title=":smiling_face_with_sunglasses:" class="emoji only-emoji" alt=":smiling_face_with_sunglasses:" loading="lazy" width="20" height="20"></p>
<p>Peaceful James strikes again! This is great to hear. Thank you for your contributions and for offering your support. I will look over the PR when I have some time, hopefully this week.</p>
<p><img src="https://forum.elixirforum.com/images/emoji/apple/victory_hand.png?v=15" title=":victory_hand:" class="emoji only-emoji" alt=":victory_hand:" loading="lazy" width="20" height="20"></p>
<p>Also, shout out to <a class="mention" href="/u/terbium-135" rel="nofollow">@Terbium-135</a> for a very neglected PR to add cross-platform authenticator support. I will take another look when I have a moment to focus on the repo.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="373257" data-batch-url="/posts/batch_likers">
                        4
                      </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/webauthnlivecomponent-passwordless-auth-for-liveview-apps/49941/50">Post #49</a>
	                </div>
	            </div>
              <div id="likers-container-373257" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="373257"
                     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>