You are browsing as a guest. Sign up (or log in) to start making projects!

Fossim

  • 26 Devlogs
  • 49 Total hours

Instant messaging app for open-source projects built on GitHub Discussions - no new accounts needed!

Open comments for this post

1h 5m 39s logged

it’s all finishing touches in the client now!

added support for minimising the app to the system tray when closed as well as a settings menu to control the behaviour

pretty much just need to add some networked services like an update checker and statistics collection, write a readme and faq, and add a docker build for the backend

0

Loading discussion…

0
6
Open comments for this post

39m 19s logged

alright, as hinted before, Fossim now sends system notifications! (and of course i made sure it doesn’t send notifs when the channel is focussed and you’re actively chatting)

(weird icon and name will be fixed when the app is properly installed (i hope))

0

Loading discussion…

0
3
Open comments for this post

1h 52m 15s logged

comments referencing github items are now real links to make coordinating PRs and issues way easier (as well as linking to other discussions, although they don’t open in fossim)

I also added a notif level setting which will be useful now as I’m about to implement system notifications, and you might not want a system notification for every thread in every community

this is amidst some other UI/UX improvements like better error messages, automatic reconnection etc

0

Loading discussion…

0
3
Open comments for this post

2h 23m 27s logged

with all the architectural stuff done, I’m working on all the cosmetic finishing touches

community list now also shows the total unread notifs of all the community’s channels

community config allows specifying name, icon and banner so that you can customise your community

I even added a button to sponsor the community’s owner if the repository has funding links attached!

0

Loading discussion…

0
2
Open comments for this post

3h 13m 49s logged

so, I’m back a little while later, and the app now shows unread message counters, not only incrementing while the app is open but also synchronising with the backend so that you can see how many messages have come in even when the app was closed.

this required me to set up a database in the backend for tracking sequential message counters for each channel that the client can then subtract from its own records, I learnt some database stuff and also some stuff about making bulk HTTP requests, since I didn’t want to make a request per channel

0

Loading discussion…

0
2
Open comments for this post

3h 45m 13s logged

alright, here we go!

it was a lot of work (nearly 4h as you can see), but the Fossim client can now receive and handle every type of live update that the backend can receive from the GitHub webhook.

this means that when others send, edit or delete messages, or a new channel or thread is created or an existing one edited, deleted, locked or unlocked, the client receives the update in real time.

now it feels more like an instant messenger :)

what’s left: showing notifications for unread messages, including finding some way to remember last read message and fetch how many new messages once the client restarts

0

Loading discussion…

0
3
Open comments for this post

1h 56m 44s logged

worked my way through GitHub docs and figured out how to implement a webhook delivery handler, including verifying the secret, then implemented connecting to websocket channels for each community which get forwarded all the relevant webhook messages

all that’ll be left now is to incorporate these updates into the frontend which shouldn’t be too hard

0

Loading discussion…

0
3
Open comments for this post

46m 1s logged

I added replying to messages that don’t already have a reply thread last night and I’ve just added reacting and unreacting, which completes all the basic message functions 🎉

0

Loading discussion…

0
2
Open comments for this post

34m 2s logged

you can now edit messages
basically i’m speedrunning all the basic actions so that i can work on notifications which will be a huge task

0

Loading discussion…

0
5
Open comments for this post

1h 24m 26s logged

you can now delete comments and replies, including proper handling of GitHub’s very weird logic flow for deleting comments that have replies - they get replaced with ghost comments until all of their replies are deleted - just an empty body without so much as an explanation
(two windows here to demonstrate the modal and also the fact that the button appears on comment hover)

0

Loading discussion…

0
4
Open comments for this post

1h 28m 36s logged

wow! you can now send messages from a delightfully previewable text box

in other news, I improved the experience switching between communities, added highlighting for the active channel, fixed a performance problem and fixed a hang when loading an empty channel

0

Loading discussion…

0
5
Open comments for this post

1h 22m logged

you can now view full reply threads to every top-level message, including pagination (it loads 100 messages at a time)

0

Loading discussion…

0
4
Open comments for this post

5h 12m 35s logged

5 hours later, and basically all of the requirements of the main-continuity message view have been implemented, including images, lists, links, alerts, reactions and placeholder buttons for opening reply threads!

it even automatically loads more messages as you scroll upwards, but i dont have any long enough channels to demonstrate that (loads 100 messages at a time since that costs the minimum per request in terms of github rate limits)

all that’s left now is taking actions (sending messages, reacting etc), and then getting realtime notifications from the backend

0

Loading discussion…

0
2
Open comments for this post

3h 12m 19s logged

I’m having so much fun :)
I’ve implemented the entire channel and thread list complete with thread pagination, dynamic icons based on locked/answered/answerable status, and a button to leave the community
I also implemented a really satisfying shift, blur and shadow effect when switching between communities
(edit: the issue in the video where the ‘select a community to start collaborating’ message wasn’t shown after leaving the community got fixed immediately after recording)

0

Loading discussion…

0
4
Open comments for this post

2h 16m 51s logged

auto-expanding sidebar drawer for communities you’re in, including a button and popup flow for joining new communities :)
caching from previous step was useful here
next step is listing channels and threads

0

Loading discussion…

0
2
Open comments for this post

1h 54m 47s logged

  1. added double-click to copy and added a loading ring animation to the device flow auth view
  2. added a note to the host confirmation view saying that the app only has limited access to act on your behalf and that in the local app, the access token never needs to be sent to the server
  3. cleaned up the database schema and implemented persisting added communities and obtained access tokens
  4. implemented caching host and client ID requests since those will be frequent in upcoming stuff
0

Loading discussion…

0
3
Open comments for this post

1h 29m 8s logged

github device flow auth 👀
why oh why does device flow auth not work in browsers? I had to do either figure out how to make octokit.js use tauri-plugin-http, do the entire processs from the Rust side, or use the normal oauth web flow
went with do it all from Rust because option 1 and 3 needed rust deps anyway (http plugin for 1, deep link/web server for 3), and option 1 needed figuring out and option 3 leaks the access token to the server unnecessarily

0

Loading discussion…

0
2
Open comments for this post

3h 10m 58s logged

I implemented the necessary utils for making requests to the backend, and used fetching the client ID to test that (screenshot). I backtracked on the implementation and removed tauri-plugin-http as well as removing tauri-plugin-svelte from earlier so that the frontend is entirely self-contained and can be ported to just be a website for those who want that.
on the backend, removing tauri-plugin-http required me to mess around with CORS settings for a while until the browser accepted its responses

0

Loading discussion…

0
3
Open comments for this post

1h 15m 23s logged

I implemented fetching a community’s configured backend host from its repository when you click ‘Join’, then I created a skeleton OAuth explanation and confirmation modal view!

0

Loading discussion…

0
2
Open comments for this post

1h 35m 49s logged

I set up tauri-plugin-svelte for data persistence, then I repurposed the i18n.ts localisation code from one of my other projects so that Fossim has translation support from the very beginning

lastly, I created a skeleton onboarding view where you can input the first community you want to join or join Fossim’s own community as an example

0

Loading discussion…

0
3
Open comments for this post

1h 13m 15s logged

spent forever trying to debug prettier-plugin-tailwindcss which is not how i wanted to spend my evening

turns out it was just a bug and not a misconfiguration (https://github.com/tailwindlabs/prettier-plugin-tailwindcss/issues/464)

this started while i was getting the onboarding working in the application and noticed my classes weren’t being sorted

edit: looks like i uncovered a bug in Deno as well!! installing the insiders channel of prettier-plugin-tailwindcss using Deno resulted in the latest commit being added to package.json but a commit from 2023 actually being installed. had to remove the ^ from the version specifier

0

Loading discussion…

0
3
Open comments for this post

2h 30m 13s logged

  • architecture has been planned out
  • backend and client projects have been fully scaffolded
  • necessary setup steps and permissions for the GitHub App have been determined and documented
  • relevant GitHub APIs and processes have been researched

most of my time was spent planning and researching today, that’s why only 2.5 hours coding

0

Loading discussion…

0
25

Followers

Loading…