@zvava@twtxt.net CORS is our worst enemy. š„·
I too had the same issue being a browser-based request, so the only solution is using a proxy.
For testing (and real personal use) I rely on this one https://corsproxy.io/.
In my client, I first check if the source allows me to fetch it without issues first and fallback to prefixing with a proxy if it gives an error.
For security reasons the client donāt give you a readable error for CORS, so you must use a catch-all for that, if it fails again with the proxy you can deal with any other errors it throws as you normally would (preferably outside of the fetch function).
After the fetching responded, I store the response.url
value to fetch it again for updates without having to do extra calls (you can store it verbatim or as a flag to be able to change the proxy later).
Here an extract of my code:
export async function fetchWithProxy(url, proxy=null) {
return await fetch(url).catch(err => {
if (!proxy) throw err;
return fetch(`${proxy}${encodeURIComponent(url)}`);
});
}
// Using it with
const res = await fetchWithProxy('https://twtxt.net/user/zvava/twtxt.txt', 'https://corsproxy.io/?');
// Get the working url (direct or through proxy)
const fetchingURL = res.url;
// Get the twtxt feed content (or handle errors)
const text = await res.text();
I also plan to allow the user to define a custom proxy field, I like the solution used by Delta.chat in their android app, where you can define the URL format with a variable https://my-proxy?$TWTXT_URL
since it allows you to define with more freedom any proxy without a prefix format.
If the idea of using a third-party proxy is not to the user liking they can use a self-hosted solution like cors-anywhere
or build their own (with twtxt it should just be a GET).
@alexonit@twtxt.alessandrocutolo.it i tried making a webapp initially but i didnāt even get into the initial stages of testing because no one sets the Access-Control-Allow-Origin
header, so i just jumped into building a backend instead. did you find away around this limitation? :o
@bender@twtxt.net Well see thatās just what the freakān tests say about me haha š¤£
immigration and multiculturalism
What about it? I grew up in a multicultural country.
Test.
And I need to make something absolutely clear as well here. Twtxt was completely and utterly dead back in {Aug 2020](https://yarn.social/about.html) when I came across the spec and its simplicity and realised the lost opportunity. Since then weāve continued to grow a small but thriving community. The extensions weāve built over time have stood and lasted the test of time for the past ~5 years. We need not break things too badly, because what we have today and was designed years ago actually works quite well⢠(despite some flaws).
@bender@twtxt.net A renewed vision test might be a good idea for some people. š I mean, it is kind of curious that you get this license as a young person and then it lasts a lifetime, without any further tests. As long as you donāt screw up really bad, it remains valid ā¦
@bender@twtxt.net Thanks for asking!
So, Iāve been working on 2 main twtxt-related projects.
The first is small Node / express application that serves up a twtxt file while allowing its owner to add twts to it (or edit it outright), and Iāve been testing it on my site since the night I made that post. Itās still very much an MVP, and Iāve been intermittently adding features, improving security, and streamlining the code, with an eye to release it after I get an MVP done of project #2 (the reader).
But thatās where Iāve been struggling. The idea seems simple enough - another Node / express app (this one with a Vite-powered front-end) that reads a public twtxt file, parses the āfollowā list, grabs (and parses) those twtxt files, and then creates a river of twts out of the result. The pieces work fine in seclusion (and with dummy data), but I keep running into weird issues when reading real-live twtxt files, so some twts come through, while others get lost in the ether. Iāll figure it out eventually, but for now, Iāve been spending far more time than I anticipated just trying to get it to work end-to-end.
On top of it, the 2 projects wound up turning into 4 (so far), as Iāve been spinning out little libraries to use across both apps (like https://jsr.io/@itsericwoodward/fluent-dom-esm, and a forthcoming twtxt helper library).
In the end, Iām hoping to have project 1 (the editor) into beta by the end of October, and project 2 (the reader) into beta sometime after that, but weāll see.
I hope this has satisfied your curiosity, but if youād like to know more, please reach out!
@bender@twtxt.net Thanks for asking!
So, Iāve been working on 2 main twtxt-related projects.
The first is small Node / express application that serves up a twtxt file while allowing its owner to add twts to it (or edit it outright), and Iāve been testing it on my site since the night I made that post. Itās still very much an MVP, and Iāve been intermittently adding features, improving security, and streamlining the code, with an eye to release it after I get an MVP done of project #2 (the reader).
But thatās where Iāve been struggling. The idea seems simple enough - another Node / express app (this one with a Vite-powered front-end) that reads a public twtxt file, parses the āfollowā list, grabs (and parses) those twtxt files, and then creates a river of twts out of the result. The pieces work fine in seclusion (and with dummy data), but I keep running into weird issues when reading real-live twtxt files, so some twts come through, while others get lost in the ether. Iāll figure it out eventually, but for now, Iāve been spending far more time than I anticipated just trying to get it to work end-to-end.
On top of it, the 2 projects wound up turning into 4 (so far), as Iāve been spinning out little libraries to use across both apps (like https://jsr.io/@itsericwoodward/fluent-dom-esm, and a forthcoming twtxt helper library).
In the end, Iām hoping to have project 1 (the editor) into beta by the end of October, and project 2 (the reader) into beta sometime after that, but weāll see.
I hope this has satisfied your curiosity, but if youād like to know more, please reach out!
@movq@www.uninformativ.de better than in the US. Our lasts only 10 years, and you need to go through the vision test, and, of course, pay). Recently they added a little gold star denoting āreal IDā compliance, and we had to pay $10 to get the old one replacedāout of the regular renew āscheduleā.
In here it is all about control, and money.
Hello everyone! š
After a long while away, Iām back on twtxt with this new feed.
Some of you might remember me as justamoment@twtxt.net
, that was a test account I made for trying things out, but I ended up keeping it more than planned.
I also tried other social platforms in search of a place that felt right for me.
In the end twtxt was the one that ticked all of my boxes:
- Slow social: it act more like a feed reader and I really appreciate that thereās no flood of content that I canāt keep up with.
- No server needed: I absolutely love to have total control over my content, I tend to avoid having moving parts that might break, plus you can put your feed under version control and itās all backed up.
- Ownership: I can put my feed anywhere I want and nobody can decide if I can access it or not.
- For hackers: a single .txt file allows me to join a community, how cool is that!
This is why I decided to build my own twtxt client, one that allows you to decide how the feed is presented on your āinstanceā.
Itās still in the making but Iāll try to share a bit of it once I defined how things should work.
Coincidentally, I discovered that @itsericwoodward@itsericwoodward.com and @zvava@twtxt.net were also building a twtxt client, seems like twtxt is set to grow!
nick
s? i remember reading somewhere whitespace should not be allowed, but i don't see it in the spec on twtxt.dev ā in fact, are there any other resources on twtxt extensions outside of twtxt.dev?
@zvava@twtxt.net @movq@www.uninformativ.de Iām not entirely sure about the spaces, but maybe they were omitted to simplify parsing of mentions in the form of @<nick url>
. If the next token after the @<nick
does not look like a URL, itās not a mention but regular text. This is just wild guessing, though.
Looking at the regex and tests in the original twtxt reference implementation seems to confirm that theory in the sense as it relies on whitespace as the delimiter:
https://lyse.isobeef.org/tmp/screenshot-2025-09-17-21-30-25.png
Another thing about nicks is that the original twtxt reference implementation converts nicks to all lowercase:
https://lyse.isobeef.org/tmp/screenshot-2025-09-17-21-20-39.png
You probably know this already, the original twtxt file format specification can be found here: https://twtxt.readthedocs.io/en/latest/user/twtxtfile.html
As for extensions, I donāt know of anything outside of twtxt.dev that has actually been (partially) implemented. However, there is also the issue tracker of the official reference implementation. You might wanna dig through that. For example, there is an alternative suggestions of multiline messages: https://github.com/buckket/twtxt/issues/157
I corrupted my SQLite test database with sed -i s/⦠$(find ā¦)
. Clearly, I found too many files. Thatās the signal to go to bed.
remote.json | 3.4MiB
i hope testing this doesnāt get me ip banned from Everything
[2025/09/11 12:56:01.816] ā please set config.host
when trying to run "bbycll". How to bypass that tiny hurdle?
@bender@twtxt.net ty for attempting to test, though, it means a lot! lmk if u find any more silly things i need to clarify or fix :> be prepared for everything breaking during beta :p
[2025/09/11 12:56:01.816] ā please set config.host
when trying to run "bbycll". How to bypass that tiny hurdle?
@bender@twtxt.net as the host (eg twtxt.net
) determines the canonical url of the instance in generated feed url
metadata as well as every hash of every post made on the instance internally, i added this error message to make sure people donāt accidentally set up their instance on localhost
:p for testing i set it to localhost:31212
and protocols to ["http"]
, itās a recent addition that could definitely do with documenting in the getting started section
@zvava@twtxt.net wow, this is a full change, and looking very, very, very good! I am ready to test it. š
test reply please ignore
test edit please ignore
test post please ignore
@lyse@lyse.isobeef.org Didnāt know that, either. š The one guy even tried to test this theory with a Polaroid? And āconfirmedā it? What the heck. š„“
Iāve got a prototype of my hardcopy simulator going. Iām typing on the keyboard and the ādisplayā goes to the printer:
https://movq.de/v/56feb53912/s.png
https://movq.de/v/235c1eabac/MVI_8810.MOV.mp4
The biiiiiiiiiig problem is that the print head and plastic cover make it impossible to see whatās currently being printed, because this is not a typewriter. This means: In order to see what I just entered, I have to feed the paper back and forth and back and forth ⦠itās not ideal.
I got that idea of moving back/forth from Drew DeVault, who ā as it turned out ā did something similar a few years back. (I tried hard to read as little as possible of his blog post, because figuring things out myself is more fun. But that could mean I missed a great idea here or there.)
But hey, at least this is running on my Pentium 133 on SuSE Linux 6.4, printer connected with a parallel cable. š
(Also, yes, you can see the printouts of earlier tests and, yes, I used ed(1)
wrong at one point. 𤪠And ls
insisted on using colors ā¦)
@bender@twtxt.net I think itās actually a new XEP proposal ( https://xmpp.org/extensions/xep-0084.html#proto-info ), but itās still a bit unclear. Sorry for the late and vague response, Iām still trying to test it and see what itās even about, didnāt yet find a server, that supports it.
@aelaraji@aelaraji.com I use Alt+.
all the time, itās great. š
FWIW, another thing I often use is !!
to recall the entire previous command line:
$ find -iname '*foo*'
./This is a foo file.txt
$ cat "$(!!)"
cat "$(find -iname '*foo*')"
This is just a test.
Yep!
Or:
$ ls -al subdir
ls: cannot open directory 'subdir': Permission denied
$ sudo !!
sudo ls -al subdir
total 0
drwx------ 2 root root 60 Jun 20 19:39 .
drwx------ 7 jess jess 360 Jun 20 19:39 ..
-rw-r--r-- 1 root root 0 Jun 20 19:39 nothing-to-see
testing with a new meme
yo letās test this shit, looks promising
@prologic@twtxt.net Mosaic (2.7) works fine, I maintain that package in the AUR and test my website regularly. š
@movq@www.uninformativ.de yes, I think:
<!--[if !IE]><!-->
<link rel="stylesheet" href="../simplicity.cssā>
<!--<![endif]-->
Should work, but I havenāt tested it.
@bender@twtxt.net Hereās a short-list:
- Simple, minimal syntaxāmaster the core in hours, not months.
- CSP-style concurrency (goroutines & channels)āsafe, scalable parallelism.
- Blazing-fast compiler & single-binary deploysāzero runtime dependencies.
- Rich stdlib & built-in tooling (gofmt, go test, modules).
- No heavy frameworks or hidden magicāunlike Java/C++/Python overhead.
Anyone want to help me alpha/beta test the new WAF Iām building? Itās a Caddy module. š¤
Z
for UTC +00:00
- is that allowed in your specs?
Regarding url =
I would suggest to only allow one and the maybe add url_old =
or url_alt =
!?
I'm still not a fan of a DM feature, even thou it helps that i have now been split out into a separate feed file. Instead if would suggest a contact =
field for where people can put an email or other id/link for an established chat protocol like signal or matrix.
Why are we testing, or playing with, an alternate non-fully-compatible feed format within the same feed that we use daily?
yarnd
.
Hopefully I havenāt missed or messed anything upu š
* 101f3eb0 - (HEAD -> main) Fix a bunch of UX to do with following/unfollowing, bookmarking and unbookmarking (3 seconds ago) <James Mills>
Testing UI/UX is hard⢠š
@lyse@lyse.isobeef.org You are of course right! 𤣠There are some low level components that can and should be unit tested for sure! š
@prologic@twtxt.net To clarify, from my observations on how the system behaves, it feels like that. This doesnāt make it any better, I know. Sorry mate! I never claimed that testing is always easy, but in my experience it sure does help cutting down regressions. But to each their own, no worries. The diagram is all Greek to me. Anyway.
@bender@twtxt.net True.
Iām not even being facetious here either. Iād llove to see you āunit testsā this:
@lyse@lyse.isobeef.org Well you are being slightly rude 𤪠Sure you could write unit tests for this, but in practise testing emergent properties and behaviors of a system is actually a lot harder than you might realize. But Iām happy to always be proven wrong š
@kat@yarn.girlonthemoon.xyz Iāve almost fixed this btw š¤ Just testing it thoroughly and polihsing the code. In case youāre curious, I do this style of development called āObservability Driven Developmentā (ODD) whereby I make observations of the system via metrics and internal observations and adjust the systemās overall behavior to the desired outcome š
@andros@twtxt.andros.dev I set up a test feed here:
https://www.uninformativ.de/texudus.txt
I made some preliminary adjustments to my client so that it can work with the different threading model. (And I totally get the concerns, this can be quite a bit of work. Especially in a large code base like Yarn.)
test can anyone see this pls reply if u can
@kat@yarn.girlonthemoon.xyz Donāt be nervous, I make sure I test the shit⢠out of things before anyone else does š¤£
gah iāve been so busy working on love4eva! TL;DR i switched image backends from the test/dev only module i was using to the S3 one, but with a catch - iām not using S3 or cloud shit!!! i instead got it to work with minio, so itās a middle ground between self hosting the image uploads & being compatible with the highly efficient S3 module. iām super happy with it :)
i posted a patreon update that details the changes more: https://www.patreon.com/posts/i-am-now-working-127687614
that post says i didnāt update my guide yet but i actually did like right after i made that post lol so you can CTRL+F
for minio stuff there!
Hello @Yarn.social@yarn.social š (testing something)
We havet an AI assistant at work, new version came out today ānearby restaurant recommendationsā mentioned. Gotta try that!
Ask it where I can get a burger, knowing thereās 3 spots that had it on the menu, AI says thereās none. Ask it to list all the restaurants nearby it can check⦠it knows 3, of the 10 or so around, but 1/3, even has a burger, on the menu.
Ask it to list the whole menu at restaurant 1: it hallucinates random meals, none of which they had (I ate there).
Restaurant 2 (the one most people go to, so they must have at least tested it with this one): it lists the soup of the day and ¾ meals available. Incomplete, but better than false.
Restaurant 3: it says āfoodā and gives a general description of food. You have to be fucking kidding me!
āBuT cAnInE, tHe A(G)i ReVoLuTiOn Is NoWā
The standing power throw is out as new Army fitness test goes āsex-neutralā
Comments ā Read more
@prologic@twtxt.net In few weeks for sure, I have a couple of features in mind that I would like to implement (DM extension for example but Iāll ask for permission to @arne@uplegger.eu to use his PoC or ask him to contribute to twtxtory directly)
This is just a testā¦
@test_dont_fetch@aelaraji.com Letās raise another from the dead! āFacio, Voco, Ferreā š§ šŖ #ForScience
Just a test!
Torvalds states the obvious: file systems should be case-sensitive
Apparently, the Bcachefs people are having problems with case-folding, and Linus Torvalds himself is not happy about it. Torvalds holds the only right opinion in this matter, which is that filesystems should obviously be case-sensitive. Case-insensitive names are horribly wrong, and you shouldnāt have done them at all. The problem wasnāt the lack of testing, the problem was implementing it in the fir ⦠ā Read more
TacOS: an x86_64 UNIX-like OS from scratch
TacOS is a UNIX-like kernel which is able to run DOOM, among various other smaller userspace programs. It has things like a VFS, scheduler, TempFS, devices, context switching, virtual memory management, physical page frame allocation, and a port of Doom. It runs both on real hardware (tested on my laptop) and in the Qemu emulator. ā« TacOS GitHub page TacOS ā great name ā is written in C, and explicitly a hobby and toy project. The codeās licensed ⦠ā Read more
@xuu@txt.sour.is or @kat@yarn.girlonthemoon.xyz Do either of you have time this weekend to test upgrading your pod to the new cacher
branch? š¤ It is recommended you take a full backup of you pod beforehand, just in case. Keen to get this branch merged and to cut a new release finally after >2 years š¤£