@itsericwoodward@itsericwoodward.com Why hear? Iāll just put it up at https://twtxt.app now shall I? Itās good enough IMO that itās already working quite well. The challenging parts now is to figure out a good set of default publishing connectors to support? š¤
tt. But then, in the message tree, I spot another missed typo. My process is then to go to my twtxt.txt and fix it by hand. However, I still have to clean up tt's cache. This is rather tidious:
Getting the vim key bindings to work for focus switching in this modal dialog took me forever. Only cursors and (Shift+)Tab are supported out of the box. I absolutely understand that, itās fine. I installed an input handler on the dialog, but the focus always stayed the same.
After two wasted hours, I was in despair to copy the tview.Modal into my own code base. Of course, I had to fix all the private tview field accesses first. But even installing the input handler directly on the buttons themselves did not work. Even though, the handler was definitely executed, the focus did not shift. Forcing redraws as a last resort also did not work.
Looking through all the messy chained input handling, I eventually stumbled across another place in the tview.Form, which is internally used by tview.Modal. This messed around with app focus receptions and input handlers. This gave me the idea to make the tview.Application refocus my modal dialog after I told the modal dialog which button to select. And would you look at that, this did the trick! I havenāt completely figured out what is going on exactly, but I could get rid of my Modal clone again.
I always go through hell with focus handling in tview. Each and every time. It just does not feel natural to me. Complete brainfuck to wrap my head around. The Urwid API felt sooo much more refined, it never was an issue. It just works. In fact, I cannot think of any other TUI library that has remotely the same pain level when it comes to focusing widgets as tview.
Now Iām curious how movwin deals with that. ;-)
Belhod! I present Swag ā Build offline-first web apps in pure Go and HTML.
@prologic@twtxt.net Wow, thanks everyone for the kind words! š
In answer to @movq@www.uninformativ.de and @bender@twtxt.net: Iām sorry, itās just the default camera app on my Samsung Galaxy S23 phone with the āPortraitā mode turned on. Itās a trick I learned from my wife, who used to work for a dog daycare and took pics of doggos for their FB page. It works well for humans, too. š
Iām thinking about making a simple flash card / spaced repetition app of some type. And I mean simple.
Typing this on stock Android 9 with the bootloader unlocked and Google apps disabled.
Deleted the Google Maps iPhone app. It started giving āUnsupported linkā errors when clicking its own links. They still work in a browser
Looking at Moji, an Emoji-only Chat App ?~L~X https://thenewleafjournal.com/b/DxJ
Adicionada funcionalidade First Blood na app ctf, incluindo novo rank na app e website.
@bender@twtxt.net both, but neither directly. I know every workaround there is, including those used by developers, to test apps, while working on them. However if āsideloadingā becomes so tedious, even the more technical users, cannot be bothered to do it, competing appstores and independent developers, not wanting to send their money and ID to Google, loose users at such rate, they likely wonāt be able to justify continuing to maintain their projects, people like me rely on.
Hiked up to čå°ę¹ today, and then took a side path which was craggy and empty. Heard creaking bamboo, and several äŗč²é³„ thanks to the Merlin app
@kiwu@twtxt.net Lately⦠A native mobile app for Salty.im š
š Looking for other interested folks to continue to evolve the development of Salty.im š Iāve been hard⢠at work on the v2 branch and @doesnm.p.psf.lt@doesnm.p.psf.lt has been incredibly helpful so far. Be great ot have a few more folks to join us, some of the v2 highlights include:
- Double Ratchet by default.
- Group Chat (sender/client fan-out for now)
- Much better TUI with background agent.
- Mobile App coming soon⢠(iOS in progress, Android next, same codebase)
App ctf atualizada para gerar ranking no formato html, disponĆvel no site do Vaporhole.
App ctf atualizada para suportar todas as opções como parâmetros.
Discovered the Ghostty terminal app today, so Iāve set it up for accessing my OpenBSD VPS 8-)
App menu do Vaporhole atualizada com funcionalidades para admins gerirem mensagens de notice, + help.
Itch.io Outdated TOTP 2FA App Recommendations ?~L~X https://thenewleafjournal.com/b/Dsk
Iām trying to implement configurable key bindings in tt. Boy, is parsing the key names into tcell.EventKeys a horrible thing. This type consists of three information:
- maybe a predefined compound key sequence, like Ctrl+A
- maybe some modifiers, such as Shift, Ctrl, etc.
- maybe a rune if neither modifiers are present nor a predefined compound key exists
Itās hardcoded usage results in code like this:
func (t *TreeView[T]) InputHandler() func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
return t.WrapInputHandler(func(event *tcell.EventKey, setFocus func(p tview.Primitive)) {
switch event.Key() {
case tcell.KeyUp:
t.moveUp()
case tcell.KeyDown:
t.moveDown()
case tcell.KeyHome:
t.moveTop()
case tcell.KeyEnd:
t.moveBottom()
case tcell.KeyCtrlE:
t.moveScrollOffsetDown()
case tcell.KeyCtrlY:
t.moveScrollOffsetUp()
case tcell.KeyTab, tcell.KeyBacktab:
if t.finished != nil {
t.finished(event.Key())
}
case tcell.KeyRune:
if event.Modifiers() == tcell.ModNone {
switch event.Rune() {
case 'k':
t.moveUp()
case 'j':
t.moveDown()
case 'g':
t.moveTop()
case 'G':
t.moveBottom()
}
}
}
})
}
This data structure is just awful to handle and especially initialize in my opinion. Some compound tcell.Keys are mapped to human-readable names in tcell.KeyNames. However, these names always use - to join modifiers, e.g. resulting in Ctrl-A, whereas tcell.EventKey.Name() produces +-delimited strings, e.g. Ctrl+A. Gnaarf, why this asymmetry!? O_o
I just checked k9s and theyāre extending tcell.KeyNames with their own tcell.Key definitions like crazy: https://github.com/derailed/k9s/blob/master/internal/ui/key.go Then, they convert an original tcell.EventKey to tcell.Key: https://github.com/derailed/k9s/blob/b53f3091ca2d9ab963913b0d5e59376aea3f3e51/internal/ui/app.go#L287 This must be used when actually handling keyboard input: https://github.com/derailed/k9s/blob/e55083ba271eed6fc4014674890f70c5ed6c70e0/internal/ui/tree.go#L101
This seems to be much nicer to use. However, I fear this will break eventually. And itās more fragile in general, because itās rather easy to forget the conversion or one can get confused whether a certain key at hand is now an original tcell.Key coming from the library or an āextendedā one.
I will see if I can find some other programs that provide configurable tcell key bindings.
Iām writing through Lagrange in my Secureblue with Cosmic! This GUI app rocks
@shinyoukai@neko.laidback.moe Do we now need ad filters in twtxt clients, too? O_o I hope not! Personally, I cannot stand the āSent with my crappy $phone/$appā e-mail footers.
But congrats on your client. :-)
iāve learned a lot of lessons from writing my notes app, gonna apply this to bbycll and refactor the code to make it way more legible cause my custom templating system is only kind of a giant mess
@prologic@twtxt.net my translator says conversations. An Jabber Droid app comes to mind.
@shinyoukai@neko.laidback.moe what app is that?
@prologic@twtxt.net The periodic blacklists updates will be done automatically in the background, as for the different processing mechanisms (rules, collections of rules, remediation ā¦etc) you just install/add the pre-made ones from the hub and call it a day, theyāll get periodic updates when needed. But you could easily create and add your own in case you want to block or white-list a specific behavior
since there are quite literally no note taking apps that work for me, iāve began writing my own! to get started real quick i adapted the core part of bbycllās backend and it works so nicely ā which speaks volumes to the quality of the code! should really break it out into a custom framework. iām also realizing how easy it would be to get bbycll v1 readyā¦but this is probably more important since itāll allow me to get my life in order ^^ā
To everyone previously asking, what my (and other developers) endless complaining about Google, to both every EU body, with a form on their website and every relevant team at Google accomplishedā¦
WE FUCKING WON!!!
āWhile security is crucial, weāve also heard from developers and power users who have a higher risk tolerance and want the ability to download unverified apps.ā
-source
I was also able to work with my new webhost, to bring back āš.fr.toā - everyones favorite vanity redirect domain, for my site, Googles changes to SSL warnings in Chrome, killed at the beginning of this year.
The lesson: I NEED TO COMPLAIN MORE
MicroCTI https://ucti.app/
Android shopping list apps disappointed me too many times, so I went back to writing these lists by hand a while ago.
Hereās whatās more fun: Write them in Vim and then print them on the dotmatrix printer. š„³
And, because I can, I use my own font for that, i.e. ImageMagick renders an image file and then a little tool converts that to ESC/P so I can dump it to /dev/usb/lp0.
(I have so much scrap paper from mail spam lying around that I donāt feel too bad about this. All these sheets would go straight to the bin otherwise.)

overbite app from gopher.floodgap.com
Jāen avais un poil marre dāĆ©couter les mĆŖmes playlists locales et la [ā¦] š https://yom.li/notes/20251031154234 š https://apps.gnome.org/fr/Shortwave/
Le fait que une IA exĆ©cute un certain programme informatique que aucun [ā¦] š https://yom.li/notes/20251026151911 š https://bsky.app/profile/laelith.fr/post/3m3z4gpyezk2q
@movq@www.uninformativ.de Yeah, this is similar to my 2025 GWM Cannon Ute (truck) that we recently bought. It has this app called the āGWM Appā that lets you view various health/stats of the vehicle, open/close the door, locks, control the A/C etc, all from your Mobile Phone. ā But⦠Guess what?! :D It has a goddamn fucking SIM card in the head unit (dash) somewhere that once you āconsentā and agree it signs up to some god knows what local cellular service and all that wonderul functionality is controlled by, guess what⦠A fucking goddamn CLOUD service! da actual flying fuck is wrong with these people?! ā Are we some of the only people in the world that realize how fucking dumb all this Internet-connect shit⢠really is?
After taking most of the year off from role-playing, Iāve got 3 one-shots coming up in the next month, all of which need some tweaking before I can run them (as do my homebrew rules).
Plus thereās a ābuild a gameā code challenge at work, a pair of media boxes I need to rebuild, a pair of dead machines I need to diagnose, and Iād like to (eventually) get my twtxt apps to a āreleasableā state.
So many projects, so little (free) timeā¦
I noticed Google put out this article: https://android-developers.googleblog.com/2025/09/lets-talk-security-answering-your-top.html itās very current day Google, but the comments under the YouTube video are pretty on point and I saw a few familiar faces there. There is also, unexpectedly, ways to contact Google.
First a form for āteachers, students, and hobbyistsā, that I filled politely, as someone who falls under their hobbyist category. It can be filled both anonymously, or with an e-mail attached, to be contacted by them (I chose the second option).
Also a general feedback and questions form, that I was not as polite in and used to send them the following message:
I have already provided some feedback, in the teacher, student and hobbyists form/questionaire, as well as an open letter Iāve recently sent to the European Commission digital markets act team, as I do believe your proposal might not even be legal, given the fact it puts privacy-focused alternative app stores at risk (https://f-droid.org/cs/2025/09/29/google-developer-registration-decree.html) and it was proposed this early, after Google lost in court to Epic Games, over similar monopoly concerns. Why should we trust Google to be the only authority for all developer signatures, right after the European courts labeled it a gatekeeper?
Assuming this gets passed, despite justified developer backlash and at best questionable legality, can you give us any guarantees, this will not be used to target legal malware-free mods, or user privacy enhancing patchers, like the ones used for applying the ReVanced patches? I have made a few mods myself, but I am in no way associated with the ReVanced team. I just share many peoples concerns, Google Chrome has been conveniently stripped of its manifest v2 support, that made many privacy protecting extensions possible and now youāre conveniently asking for the government IDs, of all the developers, who maintain these kinds of privacy protections (be it patches, or alternative open-source apps) on Android.
use lagrange mobile app or Kristall software at pc, than search with kennedy or TLGS Gemini ,keyword : āMaskuga Treasureā that have portal to Gemini,Gopher,nex,spartans,finger & www World,
@bender@twtxt.net To add some context, Iām not one to write open letters often, nor do I expect to become some kind of martyr, the European Union will unite over, to fight Google.
However Google did loose to Epic Games in European courts, that determined Google maintains a monopoly over its Play Store, restricting competition and developers choices. And pretty much right after courts determined this, Google gives them the middle finger and proposes changes, that would destroy F-droid - the biggest and really the only competing app store, thatās actually competing and not just taking the apps from Googles Play Store and passing them on.
There are many more qualified and likable parties, who already reached out to them, with these concerns, I just think itās important everyone impacted by this, politely contacts them too, to convey this is not just some niche non-issue, a few IT nerds made up.
@movq@www.uninformativ.de I submitted it via the form on their website (https://digital-markets-act.ec.europa.eu/contact-dma-team_en) and got the following response:
Dear citizen,
Thank you for contacting us and sharing your concerns regarding the impact of Googleās plans to introduce a developer verification process on Android. We appreciate that you have chosen to contact us, as we welcome feedback from interested parties.
As you may be aware, the Digital Markets Act (āDMAā) obliges gatekeepers like Google to effectively allow the distribution of apps on their operating system through third party app stores or the web. At the same time, the DMA also permits Google to introduce strictly necessary and proportionate measures to ensure that third-party software apps or app stores do not endanger the integrity of the hardware or operating system or to enable end users to effectively protect security.
We have taken note of your concerns and, while we cannot comment on ongoing dialogue with gatekeepers, these considerations will form part of our assessment of the justifications for the verification process provided by Google.
Kind regards,
The DMA Team
I keep getting this email occadionally:
Your iCloud storage is almost full
Now for various reasons, I donāt want my children to be using iCloud to store data, files, photos or any of the sort. Theyāre free to use iMessages, and other Apple services like the App Store, etc, but not storage.
So Iāve set about blocking iCloud Storage API(s) via AdGuard Home tonight as well as ensuring that my local network (client users) cannot bypass DNS policies and get out other sneaky ways, because some applications will just use other DNS servers, or DOH or DOT.
I have so many apps on my phone that I need a Find My Find My app
My open letter, to the European Commission digital markets act team:
Hello,
I am joining other developers, concerned about Googles new plan, to approve every app and effectively destroy most of the competing 3rd party stores this way. The biggest one of these alternative stores, most known for their focus on user and developer privacy, already states, this would make it impossible for them to operate: https://f-droid.org/cs/2025/09/29/google-developer-registration-decree.html
Even communities like the XDA forum, where new developers are often introduced to the world of Android development, would likely be strongly impacted, as making, publishing and installing Android apps is made less accessible.
I am not just writing on their behalf, I run a small website myself (https://thecanine.ueuo.com/), that both provides legal modifications, for some android apps - for example adding an amoled dark theme, to the most popular XMPP chat client for Android, or increasing one of Androids keyboard apps height. This all comes after Googles previous changes to the Android operating system, that prevent users from installing old apps (old to Google, can mean only a couple of months, without an update - https://developer.android.com/google/play/requirements/target-sdk and the target version gets increased every year). I rely on apps developed by a single developer, even for things like making the pixel art presented on my website and sideloading as a way to make these apps work, before developers can catch up to Googleās new requirements - if Google is allowed to slowly kill these options, us digital artists will soon lose the tools we need to create digital art.
@zvava@twtxt.net @bender@twtxt.net At first I added it without thinking when planning the possible fields based on other UIs I was researching.
I was about to discard it but after thinking about it a bit I noticed that the services allowing to have a separated nick and display_name could unlock some good uses.
For example some added context or at-a-glance information like pronouns or statuses (like Artist [Accepting commissions] or App Name (v2.5)) while other used a more readable version of the nick (blog.domain.com became Person Name's Blog).
Of course it is absolutely optional and it can be safely ignored, but with my vision of being able to build more that a pure twtxt clients, giving it a first-class support just like the other known fields felt right to me.
@movq@www.uninformativ.de So damn true.
I have a friend that might lock himself out of his home if thereās a power outage while I keep removing apps and devices from my daily lives instead.
I recently switched from all the todo apps I used to sticky notes on my monitors and a pocket notebook for sketching and quick notes.
Hello again everyone! A little update on my twtxt client.
I think itās finally shaping a bit better now, but⦠āļø
As Iām trying to put all the parts together, I decided to build multiple parallel UIs, to ensure I donāt accidentally create a structure that is more rigid than planned.
I already decided on a UI that I would want to use for myself, it would be inspired by moshidon, misskey and some other āsocial feedsā mock-ups I found on dribbble.
I also plan on building a raw HTML version (for anyone wanting to do a full DIY client).
I would love to get any suggestions of what you would like to see (and possibly use) as a client, by sharing a link, app/website name or even a sketch made by you on paper.
I think Iāll pick a third and maybe a fourth design to build together with the two already mentioned.
For reference, the screens I think of providing are (some might be optional or conditionally/manually hidable):
- Global / personal timeline screen
- Profile screen (with timeline)
- Thread screen
- Notifications screen or popup (both valid)
- DM list & chat screens (still planning, might come later)
- Settings screen (itāll probably be a hard coded form, but better mention it)
- Publish / edit post screen or popup (still analysing some use cases, as some āenginesā might not have direct publishing support)
I also plan on adding two optional metadata fields:
display_name: To show a human readable alternative for a nick, it fallback tonickif not defined
banner: Using the same format asavatarbut the image expected is wider, inspired by other socials around
I also plan on supporting any metadata provided, including a dynamically parsable regex rule format for those extra fields, this should allow anyone to build new clients that donāt limit themselves to just the social aspect of twtxt, hoping to see unique ways of using twtxt! š¤
Okay, I give up. The āshopping listā app⢠on my phone broke for no reason whatsoever, there wasnāt even an update. Iām going back to pen and paper.
So smart, would be great to sneak in as an easter egg in a app.
@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).
@prologic@twtxt.net Donāt worry about it!
I also getting angry thinking how this Chat Control crap will escalate to.
Iām already thinking of countermeasures and self-hosted alternatives, while searching lists of affected apps and services to replace/drop in the worst scenario (and probably devices).
@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!