···11The zlib License
2233-Copyright (c) 2025 Jakub Suder
33+Copyright (c) 2026 Jakub Suder
4455This software is provided 'as-is', without any express or implied
66warranty. In no event will the authors be held liable for any damages
+2-5
README.md
···44444545## Running
46464747-You can access Skythread at:
4848-4949-- [skythread.mackuba.eu](https://skythread.mackuba.eu) โ new version rewritten in Svelte
5050-- [blue.mackuba.eu/skythread](https://blue.mackuba.eu/skythread/) โ old stable version in vanilla JS
4747+You can access the public Skythread site at [skythread.mackuba.eu](https://skythread.mackuba.eu).
51485249You can also download a zipped copy of this repo or clone it and use it locally โ just open the `index.html` at the root of the project, no need to start any servers!
5350···59566057## Credits
61586262-Copyright ยฉ 2025 [Kuba Suder](https://mackuba.eu) (<a href="https://bsky.app/profile/mackuba.eu">@mackuba.eu</a> on Bluesky). Licensed under [zlib license](https://choosealicense.com/licenses/zlib/) (permissive, similar to MIT).
5959+Copyright ยฉ 2026 [Kuba Suder](https://mackuba.eu) (<a href="https://bsky.app/profile/did:plc:oio4hkxaop4ao4wz2pp3f4cr">@mackuba.eu</a> on Bluesky). Licensed under [zlib license](https://choosealicense.com/licenses/zlib/) (permissive, similar to MIT).
63606461Pull requests, bug reports and suggestions are welcome :)
···167167 async loadHiddenReplies(post: Post): Promise<(json | null)[]> {
168168 let expectedReplyURIs = await constellationAPI.getReplies(post.uri);
169169 let missingReplyURIs = expectedReplyURIs.filter(r => !post.replies.some(x => x.uri === r));
170170+171171+ missingReplyURIs.sort((a, b) => {
172172+ let arkey = a.split('/').at(-1)!
173173+ let brkey = b.split('/').at(-1)!
174174+ return arkey.localeCompare(brkey);
175175+ });
176176+170177 let promises = missingReplyURIs.map(uri => this.loadThreadByAtURI(uri));
171178 let responses = await Promise.allSettled(promises);
172179
+1-1
src/components/LoginDialog.svelte
···7979 {#if loginInfoVisible}
8080 <div class="info-box">
8181 <p>Skythread doesn't support OAuth yet. For now, you need to use an "app password" here, which you can generate in the Bluesky app settings.</p>
8282- <p>The password you enter here is only passed to the Bluesky API (PDS) and isn't saved anywhere. The returned access token is only stored in your browser's local storage. You can see the complete source code of this app <a href="http://tangled.org/@mackuba.eu/skythread" target="_blank">on Tangled</a>.</p>
8282+ <p>The password you enter here is only passed to the Bluesky API (PDS) and isn't saved anywhere. The returned access token is only stored in your browser's local storage. You can see the complete source code of this app <a href="http://tangled.org/mackuba.eu/skythread" target="_blank">on Tangled</a>.</p>
8383 </div>
8484 {/if}
8585