98 Commits
3.1a ... master

Author SHA1 Message Date
3f6b87623d Add license button 2025-09-02 19:40:35 +01:00
d3bffcef81 Finalize join bookmarks button, fix now playing button and make messages containing a single emoji bigger 2025-09-02 19:25:54 +01:00
53367e5982 Add MPRIS player grabbing to Delta menu 2025-09-02 14:47:39 +01:00
b765e8f11c lol 2025-09-02 13:21:40 +01:00
969199b0d7 lol 2025-09-02 13:20:46 +01:00
5b0072a488 lol 2025-09-02 13:17:59 +01:00
636df591b8 dep info 2025-09-02 13:15:13 +01:00
d4433a20ed Merge branch 'master' of https://forge.sunglocto.net/sunglocto/pi-im 2025-09-02 09:55:13 +01:00
80489d1877 some changes 2025-09-02 09:55:04 +01:00
713bde2d23 Merge pull request 'meow' (#18) from nyx/pi-im:nyx-patch-1 into master
Reviewed-on: #18
Reviewed-by: sunglocto <sunglocto@protonmail.com>
2025-09-02 08:53:59 +00:00
nyx
ffd6023ae2 meow 2025-09-02 08:52:23 +00:00
003a156c50 performance 2025-09-02 09:27:20 +01:00
402383f516 Add experimental and very buggy reply text 2025-09-02 09:26:10 +01:00
c0d19e4335 Reset module tracking, in order to fix emojis 2025-09-02 08:18:02 +01:00
853bed70e7 Add experimental functionality to join bookmarks 2025-09-01 20:05:06 +01:00
21564cc70e Fix capitalization of pi 2025-09-01 14:51:38 +01:00
f9ac50392e +netbsd support 2025-09-01 14:48:34 +01:00
fa11b3ee87 Add bookmark join button 2025-08-31 17:58:05 +01:00
7eabb0c30e Bump all dependencies 2025-08-31 15:58:17 +01:00
1da705a1b0 Update oasisSdk and apply breaking changes 2025-08-31 15:53:00 +01:00
5988eead04 fix logo in readme 2025-08-28 08:53:09 +01:00
2fd5f48334 Remove all workflows 2025-08-27 12:03:22 +01:00
d2b9f9843f Some changes
Some checks failed
build for freebsd / build (push) Has been cancelled
build Linux / build (push) Has been cancelled
build for macos / build (push) Has been cancelled
build for windows / build (push) Has been cancelled
2025-08-27 12:02:38 +01:00
65e4e3380c Update README.md
Some checks failed
build for freebsd / build (push) Has been cancelled
build Linux / build (push) Has been cancelled
build for macos / build (push) Has been cancelled
build for windows / build (push) Has been cancelled
2025-08-27 11:01:36 +00:00
8e58139fcb Update README.md
Some checks failed
build for freebsd / build (push) Has been cancelled
build Linux / build (push) Has been cancelled
build for macos / build (push) Has been cancelled
build for windows / build (push) Has been cancelled
2025-08-27 11:00:27 +00:00
sunglocto
50caef2f39 Update README.md 2025-08-19 08:50:06 +00:00
4b64de882d Add more information to README 2025-08-18 09:38:43 +01:00
dfaf56a330 Merge branch 'master' of https://github.com/sunglocto/pi-im 2025-08-16 10:57:41 +01:00
02f6adad02 Fix message XML popup 2025-08-16 10:57:36 +01:00
sunglocto
a6285b0d8a Update README.md 2025-08-12 11:04:53 +00:00
6267a4a072 Attempt to fix freebsd workflow 2025-08-12 11:57:32 +01:00
ac5d0aa2bf Attempt to fix freebsd workflow 2025-08-12 11:50:20 +01:00
c20f77ce0f Attempt to fix freebsd workflow 2025-08-12 11:42:31 +01:00
59ef99f200 Attempt to fix freebsd workflow 2025-08-12 11:36:27 +01:00
56797b92eb Attempt to fix freebsd workflow 2025-08-12 11:29:17 +01:00
e391ea9ad6 Attempt to fix freebsd workflow 2025-08-12 11:23:02 +01:00
a02a043808 Attempt to fix freebsd workflow 2025-08-12 11:15:48 +01:00
bd34df424b Add 2 more workflows (hopefully they work) 2025-08-12 11:06:53 +01:00
efa801b393 Revert youtube embed attempt 2025-08-12 11:03:25 +01:00
f65cf4a17d Merge branch 'master' of https://github.com/sunglocto/pi-im 2025-08-12 10:55:24 +01:00
7e8ceb2b2a Attempt to add YouTube embed handling, revise .webp support, support corrections in 1:1 DMs, and a whole load of other changes. Also bump version number to 3i and begin Indev phase 2025-08-12 10:55:15 +01:00
6ab9dd8ff8 Attempt to add YouTube embed handling, revise .webp support, support corrections in 1:1 DMs, and a whole load of other changes. Also bump version number to 3i and begin Indev phase 2025-08-12 10:55:00 +01:00
sunglocto
91881439a4 Update README.md 2025-08-10 12:40:45 +00:00
sunglocto
2972c86641 Update README.md - Add "Windows" screenshot 2025-08-10 12:36:27 +00:00
e5f391edfd add windows ci (which literally nobody will use) 2025-08-10 10:13:54 +01:00
4390763985 Add the ability to join rooms, as well as join 1:1 DMs inside the app 2025-08-10 09:50:24 +01:00
0e713ab417 Attempt to add loading wheel 2025-08-10 07:15:36 +01:00
sunglocto
a8b1160711 Delete emoji.go 2025-08-09 21:48:07 +00:00
187d8e750d Add the ability to join rooms 2025-08-09 22:45:39 +01:00
0578e6fafc idk 2025-08-09 18:10:32 +01:00
3571e5fad8 add ability to view readers of a message 2025-08-09 14:31:26 +01:00
7ed560e45d Update dependencies and add warning to Hot Fuck button 2025-08-09 10:07:05 +01:00
sunglocto
1f353ae258 Merge pull request #14 from 88572/master
Fix spelling and casing in one comment
2025-08-09 08:22:37 +01:00
sunglocto
f22cfb56c0 Merge pull request #12 from jjj333-p/patch-1
make /me parsing more efficient
2025-08-09 08:22:09 +01:00
sunglocto
f85caccbac Merge pull request #13 from jjj333-p/patch-2
make pointless loops no longer pointless
2025-08-09 08:21:22 +01:00
Nyx
09370be81a Fix spelling too 2025-08-08 20:46:36 -05:00
Nyx
c7664e6b96 fix: fix casing in comment 2025-08-08 20:45:48 -05:00
Joseph (Joe) Winkie
3aa619dd92 make pointless loops no longer pointless 2025-08-08 15:44:40 -10:00
Joseph (Joe) Winkie
dfc0b1088d make /me parsing more efficient
- only split once
- slicing a slice in go is efficient https://g.co/gemini/share/15cb7d25e6f3
2025-08-08 15:26:12 -10:00
147f10fe66 Merge branch 'master' of https://github.com/sunglocto/pi-im 2025-08-08 19:13:05 +01:00
4f0fe5cac7 Update all dependencies 2025-08-08 19:12:59 +01:00
sunglocto
4ae8efba21 Update README.md 2025-08-08 16:12:43 +00:00
sunglocto
35c4e76e0b Update README.md 2025-08-08 16:10:26 +00:00
sunglocto
3eee204bbf Update README.md 2025-08-08 16:08:19 +00:00
sunglocto
59d93da428 Update README.md 2025-08-08 16:07:17 +00:00
829438a3a5 lel 2025-08-08 11:24:36 +01:00
6c3195b029 Merge branch 'master' of https://github.com/sunglocto/pi-im 2025-08-08 10:26:21 +01:00
5b5d4656aa Put all greek letters in alphabetical order and capitalize them, except for Pi for obvious reasons 2025-08-08 10:26:14 +01:00
sunglocto
3afa1e7e38 Update README.md 2025-08-08 07:59:19 +00:00
ece04e1c36 Fix artifacts which broke due to renamed application name 2025-08-07 23:27:11 +01:00
52e38e7e66 Format code 2025-08-07 23:12:40 +01:00
59d83cb185 Add identicons 2025-08-07 23:11:56 +01:00
4015107de0 Continue last commit 2025-08-07 22:29:40 +01:00
150f42bc58 Begin seperation of XMPP and UI 2025-08-07 21:53:28 +01:00
3d6f835d4f Add Delta menu 2025-08-07 21:13:56 +01:00
922bc1d7cf Some changes 2025-08-07 11:50:50 +01:00
a61d3090e1 Disable all mardown support in preparation for a better solution 2025-08-07 06:50:23 +01:00
215839d833 Change name to pi-im everywhere 2025-08-07 06:43:09 +01:00
d7264e91f7 Change name to pi-im everywhere 2025-08-07 06:42:59 +01:00
sunglocto
93d3bb20d2 Add more testimonials 2025-08-06 21:05:15 +00:00
181b91edb4 dont send a message if entry is empty - Fixes #7 2025-08-06 21:59:49 +01:00
ca6bda7950 Do not show unknown state - Fixes #5 2025-08-06 21:39:27 +01:00
14cda04e06 i am an idiot 2025-08-06 20:04:14 +01:00
47d93ffe0e Fix 1:1 dms, move pi.xml to ~/.config/fyne/pi-ism/Documents/pi.xml (or other location) to decrease platform dependency, add support for corrections, and re-enable classic history along with a bunch of other changes 2025-08-06 19:32:37 +01:00
3c84dd7702 format code 2025-08-06 11:00:22 +01:00
dcc3baaf02 Merge branch 'master' of https://github.com/sunglocto/pi 2025-08-06 10:55:14 +01:00
362930c5d5 Fix file uploads, and allow using Shift+Enter keybind to send a message 2025-08-06 10:55:06 +01:00
sunglocto
c6bd18ef9c Update README.md 2025-08-06 09:29:30 +00:00
9f57d6688b General code changes + new pane 2025-08-06 10:27:27 +01:00
13d6041711 Add extra information + fix grammar mistake in readme 2025-08-06 00:22:32 +01:00
d1521c9704 funny 2025-08-06 00:16:50 +01:00
20888a4e60 artifacts attempt no.1 2025-08-06 00:12:17 +01:00
e4300d9282 funky 2025-08-06 00:07:54 +01:00
12e4a064d6 idk 2025-08-05 23:54:14 +01:00
2190896442 Edit README.md and bump deps so hopefully CI will work 2025-08-05 23:52:35 +01:00
d1e67df750 Idfk read the commits 2025-08-05 21:00:16 +01:00
e15a6424bb Fully remove all JSON support 2025-08-05 17:49:29 +01:00
64d1c420a2 Format code 2025-08-05 16:32:55 +01:00
8 changed files with 5232 additions and 461 deletions

View File

@@ -1,30 +0,0 @@
# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
name: Go
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.24'
- name: Install X11 dependencies
run: sudo apt-get update && sudo apt-get install -y libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxxf86vm-dev
- name: Build
run: go build -v ./...
- name: Test
run: go test -v ./...

2
.gitignore vendored
View File

@@ -26,7 +26,7 @@ go.work.sum
# env file
.env
pi.json
pi.xml
pi
# Editor/IDE
# .idea/

218
README.md
View File

@@ -1,16 +1,17 @@
<center>
<img src="https://github.com/sunglocto/pi/blob/255bc3749c089e3945871ddf19dd17d14a83f9ff/pi.png">
<img width="100" height="100" src="https://forge.sunglocto.net/sunglocto/pi-im/raw/branch/master/pi.png">
</center>
<img alt="Pi screenshot" src="https://github.com/user-attachments/assets/9e2d9209-6ad5-4f22-94d0-4cc18c835372" />
# π
[![Go](https://github.com/sunglocto/pi/actions/workflows/go.yml/badge.svg)](https://github.com/sunglocto/pi/actions/workflows/go.yml)
## the XMPP client from hell
> it's 10% code. 20% ai
Experimental and extremely weird XMPP client made with Go. No solicitors.
Experimental and extremely weird XMPP client written in Go. No solicitors.
pi is currently pre-pre-pre-pre alpha software which you should not use right now.
pi is currently pre-pre-pre-pre alpha software which you should not use as your primary XMPP client.
pi uses [Fyne](https://fyne.io) for the frontend and uses the [Oasis SDK](https://github.com/jjj333-p/oasis-sdk) for XMPP functionality.
pi uses [Fyne](https://fyne.io) for the frontend and uses the [Oasis SDK](https://github.com/jjj333-p/oasis-sdk) by [Joseph Winkie](https://pain.agency) for XMPP functionality.
pi is an extremely opinionated client. It aims to have as little extra windows as possible, instead using alt-menus to perform many of the actions you'd see in a typical client.
@@ -20,35 +21,34 @@ pi is an extremely opinionated client. It aims to have as little extra windows a
When you launch pi, you will be greeted with a create account screen. You will then be able to enter your XMPP account details and then relaunch the application to log in.
If you want to add MUCs or DMs, you must configure the program. Here is the general idea:
If you want to add MUCs or DMs, you must configure the program by editing the pi.xml file. Here is an example configuration:
```json
{
"Login": {
"Host": "example.com:5222",
"User": "user@example.com",
"Password": "123456",
"DisplayName": "user",
"NoTLS": false,
"StartTLS": true,
"Mucs": [
"room1@group.example.com",
"room2@group.example.com"
]
},
"DMs": [
"mike@example.com",
"louis@example.com"
],
"Notifications": false
}
```xml
<piConfig>
<Login>
<Host>example.com:5222</Host>
<User>user@example.com</User>
<Password>123456789</Password>
<DisplayName>sunglocto</DisplayName>
<TLSoff>false</TLSoff>
<StartTLS>true</StartTLS>
<MucsToJoin>room1@muc.example.com</MucsToJoin>
<MucsToJoin>room2@muc.example.com</MucsToJoin>
</Login>
<Notifications>true</Notifications>
<DMs>person1@example.com</DMs>
</piConfig>
```
Edit this file as necessary.
The file is usually located at, on GNU/Linux systems:
```
~/.config/fyne/pi-im/Documents/pi.xml
```
This will be changed eventually, likely before a 3b release.
Currently joining and saving DM tabs is not supported, nor is getting avatars, reactions, encryption of media embed.
Currently joining and saving DM tabs is not supported, nor is getting avatars, reactions or encryption.
As of writing, pi supports basic message sending and receiving, replies and file upload.
As of writing, pi supports basic message sending and receiving, replies, file upload and corrections.
## να χτίσω
@@ -56,32 +56,160 @@ As of writing, pi supports basic message sending and receiving, replies and file
To build pi, you will need the latest version of Go, at least 1.21. You can grab it [here](https://go.dev).
The build instructions are very simple. Simply clone the repo, fetch the repositories and build the program:
You must have a C compiler on your system also present. This will be the case for virtually all PC operating systems except Windows.
Here is a summary of the commands you would need to use to build and run the program:
The build instructions are very simple. Simply clone the repo, fetch the repositories and build the program.
Here is a summary of the commands you would need to use:
```bash
git clone https://github.com/sunglocto/pi
cd pi
git clone https://forge.sunglocto.net/sunglocto/pi-im
cd pi-im
go mod tidy
go build .
vim pi.json
./pi
./pi-im
```
> Uh, Windows???
Eventually. Don't count on it.
Windows requires more steps to setup, specifically you need an MSYS2 environment. As per [the Fyne documentation](https://docs.fyne.io/started/)
Static executable snapshots are also provided for GNU/Linux systems.
## χρήση
(usage)
The MSYS2 platform is the recommended approach for working on Windows. Proceed as follows:
TODO
Install MSYS2 from msys2.org
Once installed do not use the MSYS terminal that opens
Open “MSYS2 MinGW 64-bit” from the start menu
# επιπλέον
Execute the following commands (if asked for install options be sure to choose “all”):
$ pacman -Syu
$ pacman -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-go
You will need to add ~/Go/bin to your $PATH, for MSYS2 you can paste the following command into your terminal:
$ echo "export PATH=\$PATH:~/Go/bin" >> ~/.bashrc
For the compiler to work on other terminals you will need to set up the windows %PATH% variable to find these tools. Go to the “Edit the system environment variables” control panel, tap “Advanced” and add “C:\msys64\mingw64\bin” to the Path list.
<img alt="image" src="https://github.com/user-attachments/assets/5a6c188f-e890-4398-856c-e88f5804e9d2" />
pi has been tested on FreeBSD and NetBSD with no issues. Please read their respective Wiki entries.
Static executable snapshots are also provided for GNU/Linux systems on every new version.
## Wayland
On BSD and Linux systems, you may want to build an executable for Wayland only, meaning it will not run through XWayland. This will increase performance and also allow drag-on-drop functionality. Most Wayland setups can run X11 apps, but no X11 setup can run Wayland apps. Because of this, all executables are shipped for use with X11. This may change in the future, but if you want to build for Wayland, it's as simple as the commands above, but just adding a `wayland` tag to the build command.
A Wayland-only executable will also substantially decrease the level of screen tearing and lag.
```bash
git clone https://forge.sunglocto.net/sunglocto/pi-im
cd pi-im
go mod tidy
go build -tags wayland .
./pi-im
```
## εγκατάσταση
(installation)
pi currently has no consolidated way of installing it. There is an [Arch User Repository package available](https://aur.archlinux.org/pi-im), which is maintained by [snit](https://isekai.rocks/~snit).
## υποστήριξη
(support)
You can file an issue and explain the problem you are having.
If you would like a more instant method of communication, join the [pi XMPP room.](xmpp:pi@room.sunglocto.net?join)
## εξαρτήσεις
(dependencies)
### Running
Pi will require no additional dependencies to run on MacOS and Windows systems.
On other *NIX systems, `dbus` is needed for notification support, but is not required.
If your system has an X11 or Wayland setup, Pi will most likely work without issues.
Pi does not require GTK, Qt or any other graphical layout.
### Compiling
In general, you need Go, a C compiler and graphical libraries.
*This information is from the [the Fyne documentation.](https://docs.fyne.io/started) Windows and MacOS users are heavily reccomended to simply use pre-compiled binaries, due a more complex set of dependencies.*
Linux systems:
Debian, Ubuntu and Raspberry Pi OS: `sudo apt-get install golang gcc libgl1-mesa-dev xorg-dev libxkbcommon-dev`
Fedora: `sudo dnf install golang golang-misc gcc libXcursor-devel libXrandr-devel mesa-libGL-devel libXi-devel libXinerama-devel libXxf86vm-devel libxkbcommon-devel wayland-devel`
Arch Linux: `sudo pacman -S go xorg-server-devel libxcursor libxrandr libxinerama libxi libxkbcommon`
Solus: `sudo eopkg it -c system.devel golang mesalib-devel libxrandr-devel libxcursor-devel libxi-devel libxinerama-devel libxkbcommon-devel`
openSUSE: `sudo zypper install go gcc libXcursor-devel libXrandr-devel Mesa-libGL-devel libXi-devel libXinerama-devel libXxf86vm-devel libxkbcommon-devel`
Void Linux: `sudo xbps-install -S go base-devel xorg-server-devel libXrandr-devel libXcursor-devel libXinerama-devel libXxf86vm-devel libxkbcommon-devel wayland-devel`
Alpine Linux: `sudo apk add go gcc libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev linux-headers mesa-dev libxkbcommon-dev wayland-dev``
NixOS: `nix-shell -p libGL pkg-config xorg.libX11.dev xorg.libXcursor xorg.libXi xorg.libXinerama xorg.libXrandr xorg.libXxf86vm libxkbcommon wayland`
BSD systems:
FreeBSD: `sudo pkg install go gcc xorg pkgconf`
OpenBSD: `sudo pkg_add go`
NetBSD: `sudo pkgin install go pkgconf`
## αρμονία
(compatibility)
pi will run on the following operating systems:
- Windows 10 and up
- Most modern GNU/Linux installations
- FreeBSD
- NetBSD
- OpenBSD
- MacOS
pi has experimental support for the following operating system:
- Android [1]
pi most likely will **not** run on the following operating systems:
- 32-bit systems
- iOS
- ARM systems
If you use pi on a specific operating system and it does not work, file an issue and describe the problem you have having.
## μαρτυρίες
(testimonials)
From fellow insane and schizophrenic XMPP users:
> anyways this is your "just IM" client things ig.
> this looks like shit
> fyne is the best UI toolkit (sarcastic)
> i am going to explode you
> pi devstream when
<img width="361" height="66" alt="image" src="https://github.com/user-attachments/assets/5a926f6b-1005-4795-a6ef-4e0538bb4d5a" />
<img width="316" height="73" alt="image" src="https://github.com/user-attachments/assets/52309c60-8110-43eb-9c45-56c9cfd82cc4" />
## επιπλέον
(extra)
Pi version numbers are the digits of Pi followed by a letter indicating the phase of development the program is in.
pi version numbers are the digits of Pi followed by a letter indicating the phase of development the program is in.
For example, the version string:
@@ -91,6 +219,8 @@ Is the third version produced in the alpha phase.
The digits of Pi will reset back to `3` when moving to a new phase.
If the number gets too long, it will reset to one digit of 2π. Once that gets to long, it will be digits of 3π and etc.
If the number gets too long, it will reset to one digit of 2π. Once that gets too long, it will be digits of 3π and etc.
Named after [Psi](https://github.com/psi-im/psi).
[1] Android is not a supported platform, however it's possible to compile and run pi for it. If you want to become suicidal, you can go for it, but pi is a primarily PC-oriented client. There are multiple mobile clients that already exist which will give you a substantially better experience.

4016
credits.go Normal file

File diff suppressed because it is too large Load Diff

45
go.mod
View File

@@ -1,19 +1,20 @@
module pi
module pi-im
go 1.24.5
go 1.24.6
require (
fyne.io/fyne/v2 v2.6.2
fyne.io/x/fyne v0.0.0-20250418202416-58a230ad1acb
github.com/mbaklor/fyne-catppuccin v0.0.2
fyne.io/fyne/v2 v2.6.3
fyne.io/x/fyne v0.0.0-20250827163406-39fd826f385e
github.com/makeworld-the-better-one/go-isemoji v1.3.0
github.com/rrivera/identicon v0.0.0-20240116195454-d5ba35832c0d
github.com/shreve/musicwand v0.0.1
mellium.im/xmpp v0.22.0
pain.agency/oasis-sdk v0.0.0-20250805052243-df6be3f9f629
pain.agency/oasis-sdk v0.0.0-20250831105702-85385dca3a95
)
require (
fyne.io/systray v1.11.0 // indirect
github.com/BurntSushi/toml v1.5.0 // indirect
github.com/catppuccin/go v0.3.0 // indirect
github.com/BurntSushi/toml v1.4.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/fredbi/uri v1.1.0 // indirect
github.com/fsnotify/fsnotify v1.9.0 // indirect
@@ -22,30 +23,30 @@ require (
github.com/fyne-io/image v0.1.1 // indirect
github.com/fyne-io/oksvg v0.1.0 // indirect
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 // indirect
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20250301202403-da16c1255728 // indirect
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a // indirect
github.com/go-text/render v0.2.0 // indirect
github.com/go-text/typesetting v0.3.0 // indirect
github.com/go-text/typesetting v0.2.1 // indirect
github.com/godbus/dbus/v5 v5.1.0 // indirect
github.com/hack-pad/go-indexeddb v0.3.2 // indirect
github.com/hack-pad/safejs v0.1.1 // indirect
github.com/hack-pad/safejs v0.1.0 // indirect
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade // indirect
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 // indirect
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
github.com/nicksnyder/go-i18n/v2 v2.6.0 // indirect
github.com/nicksnyder/go-i18n/v2 v2.5.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/rymdport/portal v0.4.2 // indirect
github.com/rymdport/portal v0.4.1 // indirect
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c // indirect
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef // indirect
github.com/stretchr/testify v1.10.0 // indirect
github.com/yuin/goldmark v1.7.13 // indirect
golang.org/x/crypto v0.40.0 // indirect
golang.org/x/image v0.29.0 // indirect
golang.org/x/mod v0.26.0 // indirect
golang.org/x/net v0.42.0 // indirect
golang.org/x/sync v0.16.0 // indirect
golang.org/x/sys v0.34.0 // indirect
golang.org/x/text v0.27.0 // indirect
golang.org/x/tools v0.35.0 // indirect
github.com/yuin/goldmark v1.7.8 // indirect
golang.org/x/crypto v0.36.0 // indirect
golang.org/x/image v0.24.0 // indirect
golang.org/x/mod v0.21.0 // indirect
golang.org/x/net v0.37.0 // indirect
golang.org/x/sync v0.12.0 // indirect
golang.org/x/sys v0.31.0 // indirect
golang.org/x/text v0.23.0 // indirect
golang.org/x/tools v0.25.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
mellium.im/reader v0.1.0 // indirect
mellium.im/sasl v0.3.2 // indirect

96
go.sum
View File

@@ -1,13 +1,14 @@
fyne.io/fyne/v2 v2.6.2 h1:RPgwmXWn+EuP/TKwO7w5p73ILVC26qHD9j3CZUZNwgM=
fyne.io/fyne/v2 v2.6.2/go.mod h1:9IJ8uWgzfcMossFoUkLiOrUIEtaDvF4nML114WiCtXU=
fyne.io/fyne/v2 v2.6.3 h1:cvtM2KHeRuH+WhtHiA63z5wJVBkQ9+Ay0UMl9PxFHyA=
fyne.io/fyne/v2 v2.6.3/go.mod h1:NGSurpRElVoI1G3h+ab2df3O5KLGh1CGbsMMcX0bPIs=
fyne.io/systray v1.11.0 h1:D9HISlxSkx+jHSniMBR6fCFOUjk1x/OOOJLa9lJYAKg=
fyne.io/systray v1.11.0/go.mod h1:RVwqP9nYMo7h5zViCBHri2FgjXF7H2cub7MAq4NSoLs=
fyne.io/x/fyne v0.0.0-20250418202416-58a230ad1acb h1:2BazNmb/kwgqRdvE9L+NgW8sfoWGn3iy1Ox8R4+CSmc=
fyne.io/x/fyne v0.0.0-20250418202416-58a230ad1acb/go.mod h1:u3LF1EkElytjOT8OHxft16trctGndF9qpsoH6YIDOUU=
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/catppuccin/go v0.3.0 h1:d+0/YicIq+hSTo5oPuRi5kOpqkVA5tAsU6dNhvRu+aY=
github.com/catppuccin/go v0.3.0/go.mod h1:8IHJuMGaUUjQM82qBrGNBv7LFq6JI3NnQCF6MOlZjpc=
fyne.io/x/fyne v0.0.0-20250827163406-39fd826f385e h1:oJM+HGkpSuq1J+JqUq/jo7KPrKj2K2/VIZlyus04w3Y=
fyne.io/x/fyne v0.0.0-20250827163406-39fd826f385e/go.mod h1:u3LF1EkElytjOT8OHxft16trctGndF9qpsoH6YIDOUU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g=
@@ -26,71 +27,82 @@ github.com/fyne-io/oksvg v0.1.0 h1:7EUKk3HV3Y2E+qypp3nWqMXD7mum0hCw2KEGhI1fnBw=
github.com/fyne-io/oksvg v0.1.0/go.mod h1:dJ9oEkPiWhnTFNCmRgEze+YNprJF7YRbpjgpWS4kzoI=
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71 h1:5BVwOaUSBTlVZowGO6VZGw2H/zl9nrd3eCZfYV+NfQA=
github.com/go-gl/gl v0.0.0-20231021071112-07e5d0ea2e71/go.mod h1:9YTyiznxEY1fVinfM7RvRcjRHbw2xLBJ3AAGIT0I4Nw=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20250301202403-da16c1255728 h1:RkGhqHxEVAvPM0/R+8g7XRwQnHatO0KAuVcwHo8q9W8=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20250301202403-da16c1255728/go.mod h1:SyRD8YfuKk+ZXlDqYiqe1qMSqjNgtHzBTG810KUagMc=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a h1:vxnBhFDDT+xzxf1jTJKMKZw3H0swfWk9RpWbBbDK5+0=
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20240506104042-037f3cc74f2a/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-text/render v0.2.0 h1:LBYoTmp5jYiJ4NPqDc2pz17MLmA3wHw1dZSVGcOdeAc=
github.com/go-text/render v0.2.0/go.mod h1:CkiqfukRGKJA5vZZISkjSYrcdtgKQWRa2HIzvwNN5SU=
github.com/go-text/typesetting v0.3.0 h1:OWCgYpp8njoxSRpwrdd1bQOxdjOXDj9Rqart9ML4iF4=
github.com/go-text/typesetting v0.3.0/go.mod h1:qjZLkhRgOEYMhU9eHBr3AR4sfnGJvOXNLt8yRAySFuY=
github.com/go-text/typesetting v0.2.1 h1:x0jMOGyO3d1qFAPI0j4GSsh7M0Q3Ypjzr4+CEVg82V8=
github.com/go-text/typesetting v0.2.1/go.mod h1:mTOxEwasOFpAMBjEQDhdWRckoLLeI/+qrQeBCTGEt6M=
github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066 h1:qCuYC+94v2xrb1PoS4NIDe7DGYtLnU2wWiQe9a1B1c0=
github.com/go-text/typesetting-utils v0.0.0-20241103174707-87a29e9e6066/go.mod h1:DDxDdQEnB70R8owOx3LVpEFvpMK9eeH1o2r0yZhFI9o=
github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd h1:1FjCyPC+syAzJ5/2S8fqdZK1R22vvA0J7JZKcuOIQ7Y=
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
github.com/hack-pad/go-indexeddb v0.3.2 h1:DTqeJJYc1usa45Q5r52t01KhvlSN02+Oq+tQbSBI91A=
github.com/hack-pad/go-indexeddb v0.3.2/go.mod h1:QvfTevpDVlkfomY498LhstjwbPW6QC4VC/lxYb0Kom0=
github.com/hack-pad/safejs v0.1.1 h1:d5qPO0iQ7h2oVtpzGnLExE+Wn9AtytxIfltcS2b9KD8=
github.com/hack-pad/safejs v0.1.1/go.mod h1:HdS+bKF1NrE72VoXZeWzxFOVQVUSqZJAG0xNCnb+Tio=
github.com/hack-pad/safejs v0.1.0 h1:qPS6vjreAqh2amUqj4WNG1zIw7qlRQJ9K10eDKMCnE8=
github.com/hack-pad/safejs v0.1.0/go.mod h1:HdS+bKF1NrE72VoXZeWzxFOVQVUSqZJAG0xNCnb+Tio=
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade h1:FmusiCI1wHw+XQbvL9M+1r/C3SPqKrmBaIOYwVfQoDE=
github.com/jeandeaual/go-locale v0.0.0-20250612000132-0ef82f21eade/go.mod h1:ZDXo8KHryOWSIqnsb/CiDq7hQUYryCgdVnxbj8tDG7o=
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25 h1:YLvr1eE6cdCqjOe972w/cYF+FjW34v27+9Vo5106B4M=
github.com/jsummers/gobmp v0.0.0-20230614200233-a9de23ed2e25/go.mod h1:kLgvv7o6UM+0QSf0QjAse3wReFDsb9qbZJdfexWlrQw=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/mbaklor/fyne-catppuccin v0.0.2 h1:yMNnYkmFwjKJkFQvCd1uNKZDs07ZC85wTkedTIGcViE=
github.com/mbaklor/fyne-catppuccin v0.0.2/go.mod h1:ZBIy4dV1yMj+7oEaZYkXm5OfYESmXuPWwNcuUmD1Njo=
github.com/makeworld-the-better-one/go-isemoji v1.3.0 h1:vrxfd0W0Xs8t7BnIYXkvSK7m+GDk/0x1ClXPbWjQ5A0=
github.com/makeworld-the-better-one/go-isemoji v1.3.0/go.mod h1:FBjkPl9rr0G4vlZCc+Mr+QcnOfGCTbGWYW8/1sp06I0=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/nicksnyder/go-i18n/v2 v2.6.0 h1:C/m2NNWNiTB6SK4Ao8df5EWm3JETSTIGNXBpMJTxzxQ=
github.com/nicksnyder/go-i18n/v2 v2.6.0/go.mod h1:88sRqr0C6OPyJn0/KRNaEz1uWorjxIKP7rUUcvycecE=
github.com/nicksnyder/go-i18n/v2 v2.5.1 h1:IxtPxYsR9Gp60cGXjfuR/llTqV8aYMsC472zD0D1vHk=
github.com/nicksnyder/go-i18n/v2 v2.5.1/go.mod h1:DrhgsSDZxoAfvVrBVLXoxZn/pN5TXqaDbq7ju94viiQ=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA=
github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/rymdport/portal v0.4.2 h1:7jKRSemwlTyVHHrTGgQg7gmNPJs88xkbKcIL3NlcmSU=
github.com/rymdport/portal v0.4.2/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4=
github.com/rrivera/identicon v0.0.0-20240116195454-d5ba35832c0d h1:l3+2LWCbVxn5itfvXAfH9n4YL9jh8l1g5zcncbIc1cs=
github.com/rrivera/identicon v0.0.0-20240116195454-d5ba35832c0d/go.mod h1:TbpErkob6SY7cyozRVSGoB3OlO2qOAgVN8O3KAJ4fMI=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/rymdport/portal v0.4.1 h1:2dnZhjf5uEaeDjeF/yBIeeRo6pNI2QAKm7kq1w/kbnA=
github.com/rymdport/portal v0.4.1/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4=
github.com/shreve/musicwand v0.0.1 h1:uF1GDmk6b9xZPAGJU3iWBSqKruyVeyVs/cqM6YzaJ3k=
github.com/shreve/musicwand v0.0.1/go.mod h1:y7oBkMLTfGmpIxoKQFwXlzWLtffcQIpX/1no+iNPxwQ=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c h1:km8GpoQut05eY3GiYWEedbTT0qnSxrCjsVbb7yKY1KE=
github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c/go.mod h1:cNQ3dwVJtS5Hmnjxy6AgTPd0Inb3pW05ftPSX7NZO7Q=
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef h1:Ch6Q+AZUxDBCVqdkI8FSpFyZDtCVBc2VmejdNrm5rRQ=
github.com/srwiley/rasterx v0.0.0-20220730225603-2ab79fcdd4ef/go.mod h1:nXTWP6+gD5+LUJ8krVhhoeHjvHTutPxMYl5SvkcnJNE=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/yuin/goldmark v1.7.13 h1:GPddIs617DnBLFFVJFgpo1aBfe/4xcvMc3SB5t/D0pA=
github.com/yuin/goldmark v1.7.13/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
golang.org/x/image v0.29.0 h1:HcdsyR4Gsuys/Axh0rDEmlBmB68rW1U9BUdB3UVHsas=
golang.org/x/image v0.29.0/go.mod h1:RVJROnf3SLK8d26OW91j4FrIHGbsJ8QnbEocVTOWQDA=
golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg=
golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ=
golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs=
golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0=
golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw=
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
github.com/yuin/goldmark v1.7.8 h1:iERMLn0/QJeHFhxSt3p6PeN9mGnvIKSpG9YYorDMnic=
github.com/yuin/goldmark v1.7.8/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
golang.org/x/image v0.24.0 h1:AN7zRgVsbvmTfNyqIbbOraYL8mSwcKncEj8ofjgzcMQ=
golang.org/x/image v0.24.0/go.mod h1:4b/ITuLfqYq1hqZcjofwctIhi7sZh2WaCjvsBNjjya8=
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE=
golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
mellium.im/reader v0.1.0 h1:UUEMev16gdvaxxZC7fC08j7IzuDKh310nB6BlwnxTww=
@@ -101,5 +113,5 @@ mellium.im/xmlstream v0.15.4 h1:gLKxcWl4rLMUpKgtzrTBvr4OexPeO/edYus+uK3F6ZI=
mellium.im/xmlstream v0.15.4/go.mod h1:yXaCW2++fmVO4L9piKVkyLDqnCmictVYF7FDQW8prb4=
mellium.im/xmpp v0.22.0 h1:UthQVSwEAr7SNrmyc90c2ykGpVHxjn/3yw8Ey4+Im8s=
mellium.im/xmpp v0.22.0/go.mod h1:WSjq12nhREFD88Vy/0WD6Q8inE8t6a8w7QjzwivWitw=
pain.agency/oasis-sdk v0.0.0-20250805052243-df6be3f9f629 h1:NE+Z2HQzc77nw7l7DsSDSi0x9l+YfLfXBYerK+GsPrQ=
pain.agency/oasis-sdk v0.0.0-20250805052243-df6be3f9f629/go.mod h1:eyvDgfpHo+9bdB/AkMEMZ3ETeoSONTULVx9X4w9kGAU=
pain.agency/oasis-sdk v0.0.0-20250831105702-85385dca3a95 h1:BcB7/hnMnQIU+pERvQRGFMt9i0/o8XCnHbK1kYG3/K4=
pain.agency/oasis-sdk v0.0.0-20250831105702-85385dca3a95/go.mod h1:eyvDgfpHo+9bdB/AkMEMZ3ETeoSONTULVx9X4w9kGAU=

1274
main.go

File diff suppressed because it is too large Load Diff

12
piloadinggif.go Normal file

File diff suppressed because one or more lines are too long