# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 674
# self = https://watcher.sour.is?uri=https://twtxt.net/user/justamoment/twtxt.txt&offset=74
# next = https://watcher.sour.is?uri=https://twtxt.net/user/justamoment/twtxt.txt&offset=174
@prologic Cool, I'll check it out this weekend.
@prologic Nice option, I have tried it before but didn't understand from the description what it does, now it's a huge difference, I'll stick with the Flat.

Is it available from the API?
@novaburst Nice, did you draw it yourself? With what?

At first glance looks like vector art.
@ullarah I check twtxt just now but it seems the way to go, the js code in the article feels a bit excessive to me.

A simple class added to the post that have more than X lines should be enough.

And by just nullifying the max-height with none or initial should do the job, or even better having a read-more class that add the max-height and show the button, it would be even cleaner.
Hello everyone, I'm back with another update for the #pwa!
I finally planned out how the app will be built.

First I'll clean the project structure to be standalone and not as a theme, then I will work on every part separately, trying to be contained to let everyone try it out fast.

For the API I'll be using this as a reference, @prologic help me if there's anything missing there apart from what we already said (bookmark, etc.)

The first part will be the Discover view with no auth.
@mutefall Nice.
@ullarah Now I see the lightbox, nice and animated, amazing! 🤩
@ullarah Oh, I see! No worries 👍
@ullarah Ok? I think I'm missing something, you're talking about the lightbox?
@screem Yeah, but it should be better for the rest of the week.
@novaburst What caught my eye when looking for clients before yarn was actually txtweet.

It felt simpler to hack and adapt to me, might be a good reference.
@screem The Good, the Bad and the Ugly for me. 😎😢🙃
@novaburst Wow! Thank you for referencing my twt in your blog! 😄

I'm always been a fan of tiny and minimal tools, usually a quick glance is enough for me to understand if something is in my style.

Before replying to you I actually checked the source code of pass as a reference and was welcomed with walls of text that felt pretty unappealing to me.
@mutefall You're welcome!

Just go with black tea and you'll be fine! ✌️
@novaburst You call it an actually boring password manager yet It's really inspiring on how much you can strip down and still have something so versatile that you'll actually use as an alternative over pass. 😲
@mutefall I don't drink coffee at all, yet other people still call me a developer. 🥸

Anyway, here the app i mentioned: DriveDroid
@novaburst I see, I was looking at something for encrypting with a simple password without anything else.

Maybe i should be making my own tool too, it was in my plans anyway.
@prologic Yeah, I saw gopass and the android client too but I don't like the fact that I have to take around a gpg key, I prefer having something deterministic of easily replicable even without the original at hand.
@novaburst Did you fork it from pass or is something completely different? I was thinking of building one myself for a while now.

@ullarah Keepass is pretty nice but I prefer a plain text system like pass.

I don't even keep my own passwords written anywhere, I just need to remember the username, that's why I thought of using a stateless approach AND a password manager for the others accounts.
@ullarah Nice, take care of the API too! 👍
@novaburst I too have to keep track of lot on accounts, I use an org-mode file to know where I have which account.

I even have to keep track of other people's accounts too, luckily only for storage purpose, since they can't understand the importance of remembering their own passwords, I can count to over 140 in total. 😭
@prologic Sure, I'll be working on the project plan and data layer in the meantime. 💪
@prologic Having everything under one endpoint is better for other integration too I think.

I'm missing endpoints because I didn't see them under the spec page, I should check the repo then, I'm also missing the response structure, but I can directly look it up later when working on the API.
@prologic Perfect! 👍

I'll have to rework the layout a bit to let everyone work with my setup then, I'll of course put the instructions to my workflow in the Readme.
@prologic Nice, I'll look at it when working on the app.
@prologic Hope to be!

Just understand better how you browse, do you use a dedicated app or plugin or you simply zoom in the page with the native zooming?
@prologic Ok! 👌

I can't say much about the theme decision but I think who choose that should know that the NEED JavaScript if they want to change it back and to see anything in the first place, that also means that we need an API for selecting the theme for the #pwa too.

For mitigate the risks we should have a noscript tag with a description and a static link or action to revert the decision, it can be tested via lynx or any other cli browsers, I can't help there for now through.
@prologic Yes, thanks you.

For now I'll try to use what we have already, the API in dev.twtxt.net seems to cover most actions, the only APIs that are missing are one for reporting and the actions on twts (mute, bookmark, etc.) and one with the metadata of the pod too, (version, branch, references, etc.).

I'm not real time by nature 🥴 so I think working with issues and yarn should be enough for now.
@prologic Just did yesterday. ✌️
@prologic I see, thank you for explaining your experience with UIs.

I'll try to make it so it doesn't get in the way as you described. 👌
@mutefall Yes, i mentioned USB and SD cards because they are what I use for installing nowadays I also have a TinyCore Linux on a old 512Mb SD card with persistence that works flawlessly as a recovery OS.

With my old phone I even used an app to install the live CD and writable in my phone using an app for Android rooted devices to use as a portable recovery or persistent USB hub, I don't remember the name but I can look it up if you. want.
Alright! Finally got everything set up to start working on the #pwa! 💪💪💪

I'll be working only on the #pwa repo and I've set a local proxy on a throwaway docker instance of yarnd as a local backend.

First will be to get all the API mapped and then I'll try to get everything to work with less graphics elements as i can at first. 🙃

For the rest I'll write down a quick list of the next steps to do as soon as I can.

Meanwhile feel free to give any suggestions/proposal/alternative on the UI or any questions/request for the project. 😜
@mutefall Thats right!

Maybe installing it in dual boot or on a usb drive or sd card, can help you set up on the hardware part.
@ullarah My suspect was right, the fix is:


dialog {
        flex-direction: column;
}


But this put the texts on two lines, it can be fixed by wrapping them with a plain div or span to convert them to a single child in the flexbox container.

I should make an account soon so i can help directly and start with the pwa too... 😐
@mutefall So you're using NixOS now? Me too! 😉

I made the switch by setting it up first in VirtualBox, then copied the configuration.nix and used it directly on a new install on my actual PC, the transition wasn't much trouble either.
@david That's right, I'll keep that in mind.

I'll rely on you on looking for issues while working on the app. 👍
@prologic Do you mean mouse over as interactions or what exactly?

To me hovers are mostly for visual feedback.

I too find them bothersome when they cover half screen with weird popups from mega menus for example.
@ullarah When on my PC I'll check it out too.

At first glance is the direction of the elements, is it made with flexbox? In that case it must be the flex direction.
@prologic Since we're in topic I would like to ask about the accessibility part for the pwa, I looked at the documentation of the polythene library and it seems well covered on that part, are there any particular additions that might be useful?

Usually there's not much request at my office so I just focus on having the application decently organized on the HTML structure and allowing a good keyboard navigation but not much else.
@ullarah It's amazing! I have a friend who is into building with LEGO and have an entire room filled with miniature and not so miniatures. 😉
@prologic Don't worry, leave it to us. 😜
@prologic The label get crushed on the right side of the image when opened.

I can't help right now, but I'll give a quick look once I'm on my PC later.
@prologic I'm not sure, but this is the best I found on a quick search: PeerChat, if I remember correctly OwnCloud offer a chat plugin which is self hosted too.

Fun fact: I thought of making an app like that for fun just two days ago while chatting with a friend, never started since I didn't really needed and was more of a toy project though. 😄
@mutefall Nice!

Waiting some more feedback from others.

Meanwhile I'll be planning the app feature tree to manage the work.
#pwa
@thecanine Yeah, I tried playing around for some variety, the first one is my favorite too, let's see if someone else have any other idea.
And here the mockups for the profile.

Three versions here too:
- A large version
- A smaller version
- A compact but more linear version + links as chips to make them smaller and more "clickable"

Feedback appreciated here too!
#pwa

Profile mockups
@thecanine Going pure black with a light border should do the job, on the other too.
Here I come with another mockup!

This time the feed/post layout, with three ideas:
- Focus on content
- Standard card with padding
- Flat full width post (with or without a card, not sure yet)

Hope to hear some feedback from you!
#pwa

Feed/post mockups
@thecanine Yeah, if something is missing, me, you and everyone else can add anything they might need.

It's true that it shares data with chrome since it IS chrome even if installed.

Using Cordova should fill the need of physically separate the app from the browser plus adding an API for native interactions and having more control on the output generated.

Still, the first step is to have the app working. 😜
@thecanine I'm more of a circle fan, but everything can be done, it could be a custom option.

Your concerns about switching to a webapp are not much to worry about if the PWA is made correctly, Here an example i made when building my ParcelJS setup for my office, if you select "Install App" from the tab options it will install like a normal app.

Also AppsGeyser simply wrap with a frame your website, a PWAs is not made that way.

To learn more on PWAs check this out.
@carsten Everyone has it's pain that can't get free from...

Just don't use them in personal projects! (btw i used Inkscape for mine).
@carsten Yeah. I already know of it, but I think it's dangerous if used without thinking.

I prefer doing a simple sketch by hand or stylized (like the one I shared) to avoid getting used to a style and then getting stuck to it on any iteration.

To me mockups should be to plan and understand how a pure interface works best and nothing more.

I compare designing then as playing with index cards, you shuffle them, fold them and overlap them.

This is something that those tools never helped me do easily.
@prologic Hope to see it soon. 😁
@prologic Nice. Yeah, let's focus on that.

I also recall Google offering a section dedicated to publishing pure PWAs directly in the Play store but I'm not sure if it's still there.

And also being a PWA could open the possibility of an iOS version too, I don't own any Apple devices so can't help there. 😎
@prologic Ooh. 😲

I didn't know about the plan to replace Goryon, how do you manage to compile it for Play store and the others?
@ullarah On simplicity I meant. 🙃
@ullarah I first noticed on my phone on Chrome then on PC the issue was still there on Chromium on Linux.

I should expand on my definition of flexibility:

Regarding CSS, the general rules on CSS often seems complex but once I started using Suit CSS on plain projects (or BEM if you prefer) and CSS Modules with bundlers plus dropping any kind of framework, the only limitations became how CSS worked natively.

I also started using CSS Flexbox and CSS Grid for anything on layouts and all my problems vanished.

I also use CSS over JS for most of my interfaces, instead of replacing a section I just hide or move it with CSS allowing me to change many parts by just switching a simple class.
@prologic Maybe having some kind of _feature tree_ could help in defining how the project is structured?
@prologic Thanks, glad to help! 👍

I have a soft spot for CSS for it's simplicity and flexibility.

I'm not much of a UX/UI expert but I love searching for design and concepts and sometimes end up putting together fun ideas just for building something that "looks/feels nice". 😎
@carsten Yeah, I looked up at a bunch of Twitter UI redesigns on Behance and Dribbble to understand how they tried to "improve" the app and took what felt nice to me for the #pwa

For me an ergonomic interface is very important and keeping in mind the various ways to use a touchscreen + the desktop interface, I kept the possibility of having multiple layouts to switch to the user's liking.
Here some mockups for the app layout and navigation, a bit better this time!

What do you guys think?
#pwa

App layout mockups
@carsten I checked it too, seems that it has a m.request that use the old XMLHttpRequest but expose a fetch style API by wrapping it in a Promise.

Here the doc page for reference
@ullarah Fantastic, It feels so comfy!

Just one issue i noticed, on mobile the first button .replyBtn have the ::after element under the icon pushing the label.
Example

It seems to fix if you use:

.replyBtn .ti {
    white-space: pre;
}
@prologic I'm trying to get the navigation right first, I'll be sketching a couple more before starting on the code. #pwa
No time to code yet but started playing around.
Mockup
@caesar Yeah, I'll probably be making some kind of toy project in Go to test it out and see how it fit me when empty handed. 😏
@prologic Yeah, I was planning to try it myself in the future, there's seems to be lot of other Python developers that made the switch for the same reason.

I prefer working on the frontend the most, but I'll surely get my hands on it sooner or later. 😎
@prologic No problem! 👍

I can understand your reasoning and i know the pure syntax is not the only part involved when developing in general.

I guess when a programming language changes a lot it's much harder to adapt and break habits.

Having a clear idea of what you expect from your code and language is a lifesaver when working with many people, ever more in open source projects like yarn.

Keep it up! 💪😎
@ullarah I'll try! ✌️
@prologic I can agree on JSX and similar but I must say that arrow functions, classes and so on are quite nice once you get used to them.

I too ended up wanting less and less but exactly for that reason I really enjoy those new stuff the platform offers natively.

Anyway, I'll keep your style as much as I can. 👍
@prologic Understandable. 😉

Then I'll try to make my best to make something nice. 😎

One last question, is it okay to go with standard fetch for API calls or you're planning to use twt.js?

The repo seems archived though.
@prologic Great, I'll check out the PWA first then!👍

While MithrilJS is a good library I find if wasted when not used with JSX, you can probably enhance the syntax by using htm for the templating if you want to keep it light or use the renderer of esbuild directly.

In my projects I usually use uhtml, it's a simple to use and blazing fast templating library, It doesn't even use the Shadow DOM the usual JSX rely on, you should try it for your next project. 😜
@prologic The PWA setup is a bit confusing to me, can you explain how to run it?

I can see that you're using the templating in the html but i'm lost on how it bind with the backend.

My usual PWA setup is entirely separated from the backend.

I also worked a lot with NodeJS too and now i'm working on creating a bundle-less setup that is light and easy to use and don't need any tooling at all except for a static server and a browser.
@prologic Ok, i'm not used to docker so i need to set it up for working on it.

I never used MithrilJS but it seems to be the usual JSX style of DOM structure.
@prologic Then creating bots to automate that is the next step. 😎
@prologic Okay, I'll check it out! 👍

Sadly, I don't know Go Lang though, so my help is limited to the HTML/JS parts. 😁

I can probably contribute the most on the pwa repo.
@screem Maybe considering the rest of the apps you're trying to make will help in the decision.
@screem The demo looks good, the iframe seems a bit zoomed in though.

The idea of using JS to create the layout can be just a pure element.innerHTML = 'HTML' with functions to split the parts or pages easily.

It's only a way of doing things, just work the way you want. 👍
@ullarah This happens to me when i work on other people CSS or when i have to use some kind of CSS framework.

I now work exclusively framework-less both in my CSS and JS in all my projects.
@prologic That's still amazing! 👍

If I can help on the UI/UX then sure!

Except the post box reference the rest is already pretty simple and nice.

A first point I can make is to show a reference of the thread like when you fork in the post box below, that would already make it clear you're replying there and not globally.
@mckinley That's windows 98 looks fun.😄

Yeah, working with targets might be good too.

I usually avoid them since it messes up the history but if I understood @screem 's intentions he planning to make the entire desktop?

With the target you can take it further and do a map on everything like:

#start-menu
#browser_tab-1
#browser_tab-2
#program-1
#program-1_settings
#file-manager
#file-manager_download


But this works only for single view screens.

But damn.... this project is making me itching for building something fun myself. 🥴
@prologic Oh. too bad, I haven't noticed.

Actually, I had a bit of trouble understanding where a post will go to at first so I spinned a yarn locally with the docker image to try on two accounts created on the spot there to see how it behaved to avoid making mistakes here.

Even when replying on threads I was confused that replying forked with another ID and I couldn't see it when replying below, I ended up copying manually the current thread id to be sure.😣
@prologic Maybe having the post box contextual could help? If you are in a thread it will be posting there.

Plus adding a simple label above the post box or in the post button that says "Post in (#THREAD)" or "Reply to @USER" , ecc. can help the UX?
@screem I looked for an article that explains how to do tabs with radio buttons.

Here the post
@screem The selector ~ pick elements that are _aside_ from each other.
Here an example from w3school

Also if you use a label with a for="input-id" for the radio input you can put the tab whenever you want on the page and not care too much on the content location.

Whenever way you go with just make sure to have fun. 👍
@screem You're welcome! 🤗

I think using CSS Grids and Flexbox will help you quite a bit on the layout, you can put everything together with 60% less divs.

An advice I can give you about JavaScript is that you can consider using it in two ways, for making things interactive (the usual use) _or_ to purely construct layouts and interfaces (to simplify and split the html).

If you learn CSS well and try to use JavaScript only for the minimum interactions you need you can put together apps with little code that can possibly break and can build enterprise level web apps that will run butter smooth even on potatoes. 😎
@apex Amazing! 😎

Probably splitting between _read_ and _write_ can be a good solution to have you app ready faster, but that's just my idea.

Please don't bother rushing things, take your time and make what you would like to use.

The best works are the one you make for yourself. ✌️
@prologic That's right!

Probably the decentralized approach is the best for connecting with who you care and the worse to torment users with ads and other strange things. 😄

Hope to see more in the future.
@prologic But still, it's kinda sad that most platforms meant to connect people are designed just to earn money or slowly becomes like that once they grow and the owners change plans or someone else aquire them for that reason.

I guess the niche projects are the one that can manage to keep being what they where intended for.

Maybe designing them so it's impossible to make profit is the way to go?

Not sure myself 🤔
@screem So nice!

I'm also a fan of squeezing CSS to the limit on my projects, did you do it with CSS Grid layout?

For the content in the browser you cound put an iframe and switch the url to show the pages and, if you prefer to go to the CSS route instead of JavaScript, you can have an iframe per tab and switch them by creating a tabbed interface with some radio button and using the sibling selector .tab-a:checked ~ .content-a { display: block; }.
@prologic That's one of the reasons I never had any kind of social account before Yarn.social (except LinkedIn for work 😏).

I immediately log out on any site when I'm done using it and always go incognito for everything so the most pages won't have a recollection of my activity on them.

Also, I think you should add Medium to the list. 🙃
@prologic Nice!
This is probably what I need.

@apex I would like to try it, even if it's just for reading, is it available anywhere? I don't know where to look for it.
@prologic That's ok, no problem 👌 thank you regardless.
@prologic Thanks a lot! 😃
@prologic True, can't remember how many times I destroyed my production environment at work (half joke... 🤷‍♂️)
@prologic Sadly i didn't find anything about any other Android client.

It's just my preference anyway, I can get by with a simple client via Termux if I really need to.

Maybe I could whip something up with a Telegram bot running on my PC to push new posts whenever it's reachable.

I'll try playing around regardless. 😎👍
@prologic Just while replying to you earlier 😭
@carsten Sure! I'll try to get sucked in! 🌪️
@prologic Yeah, thanks!

Actually, I was thinking of going manual but I wanted to have something at least read-only natively on Android for just the static txt files but I haven't found any other client other than Goryon, so i tried it for @justamoment (the username origin 😉).

I also considered spinning a pod myself but I would like to expose only the txt and keep the rest private, probably a basic auth on nginx could do the job, but still, I would greatly prefer to keep everything static.
@prologic Hi! 👋

I was checking twtxt for a while and ended up registering out of curiosity.

I'll stay around for while I guess 😜.