diff options
| author | 2025-12-10 19:43:33 +0100 | |
|---|---|---|
| committer | 2025-12-10 19:43:33 +0100 | |
| commit | eafdeafbba578f365c36709942eba980175b2ca8 (patch) | |
| tree | fa014d797503570015b171e1ddb3e1e6d06ae986 | |
| parent | 74cdeac3210d3a09addd1aec5cee1bfe144cb163 (diff) | |
| download | macaw-eafdeafbba578f365c36709942eba980175b2ca8.tar.gz macaw-eafdeafbba578f365c36709942eba980175b2ca8.tar.bz2 macaw-eafdeafbba578f365c36709942eba980175b2ca8.zip | |
| -rw-r--r-- | notes/README.md | 9 | ||||
| -rw-r--r-- | notes/components.md | 67 | ||||
| -rw-r--r-- | notes/icons.md | 23 | ||||
| -rw-r--r-- | notes/ideas.md | 107 |
4 files changed, 206 insertions, 0 deletions
diff --git a/notes/README.md b/notes/README.md new file mode 100644 index 0000000..76a4853 --- /dev/null +++ b/notes/README.md @@ -0,0 +1,9 @@ +# macaw + +a modern GUI xmpp client + + + +## roadmap + +[roadmap](https://llama.blos.sm/share/4W3SPj27jbtAkogpxFHFpptL7XttFkvP8ht6IloZ/auth?view=kanban) diff --git a/notes/components.md b/notes/components.md new file mode 100644 index 0000000..0c3c2f3 --- /dev/null +++ b/notes/components.md @@ -0,0 +1,67 @@ +# components + +## basic building blocks? + +- button +- search box (1 line) +- bubble selections/tab bar (for filters) +- pop-up menu +- text input box +- pop-up/overlay +- selectable +- switches +- tooltip (for when hover over icon and need description text) +- dialog +- image +- slider +- checkbox +- radio +- image +- menu bar + +## components + +- log in menu (for first time connection) +- error toast +- user info, click for menu to set status, switch accounts +- profile icon (3 styles: user, guild, group) +- contact list +- contact list item +- pinnable shortcuts bar +- chats list (configurable: what's included, ordering, filtering, preview length) + - dms + - groups + - guilds +- chats list item +- message view +- user list (for group chats, channels) +- scrollable menu +- separated navigation bar (to put in contacts, guilds, spaces) +- settings page (not very customizable) + - profile settings/customisation + - keymap settings + - privacy settings +- contact pop-up +- contact profile +- dm info/settings +- group chat info/settings +- keyboard hints +- notification inbox (for pings/mentions, pending messages) +- pop-in sidebar +- debug console window (for showing logs, and both showing incoming raw xmpp stanzas and sending raw xmpp stanzas) +- service discovery +- command execution + +## temporary + +- message + +## later + +- video widget +- animated images +- 3d model viewer (lol why not) +- everything to do with voice and video +- reactions +- stuff to do with gifs, voice messages, etc. + diff --git a/notes/icons.md b/notes/icons.md new file mode 100644 index 0000000..d882da2 --- /dev/null +++ b/notes/icons.md @@ -0,0 +1,23 @@ +# icons + +- [x] online +- [x] away +- [x] dnd +- [x] xa +- [x] person +- [ ] settings +- [x] sending +- [x] failure +- [x] sent tick +- [x] delivered two ticks +- [x] new message +- [x] heart +- [x] message bubble +- [x] reply +- [x] forward +- [x] attachment +- [ ] (re)send (up arrow) +- [ ] mobile phone +- [ ] default avatar +- [ ] call +- [ ] add diff --git a/notes/ideas.md b/notes/ideas.md new file mode 100644 index 0000000..de60fbe --- /dev/null +++ b/notes/ideas.md @@ -0,0 +1,107 @@ +# ideas + +this document is full of ideas in no order but all eventually to be implemented + +- e2ee + - default omemo and no mam for 1to1 and private group chats + - default archiving and no e2ee for guilds and public group chats + - configurable between e2e and no archiving or no e2e and archiving at any point + - the default is omemo 2, but can also choose worse omemo for contacts who do not use the client + - intention to either implement mls or omemo post quantum for later +- moving of xmpp accounts, download of account data from server +- threads in different windows, threads menu, select thread separately under person in chat list + - configure if threaded messages come under the main chat or not + - threads visible under right-click menu on chat + - can pin threads to sidebar too +- proper oauth +- guilds + - voice channels + - video streaming + - broadcast rooms +- request encrypted message sync between devices (chat and global level) and with particular contacts (on a chat level) e.g. to recover chat history +- xep for deciding upon mutual chat settings (what version of omemo is being used, chat background, deleting messages, etc) +- message deletion explanation and warnings + - notify if user has logged in with a client that does not support message deletion +- social features + - can check in (let circles of your contacts know where you are or are planning to be irl) + - bubble map/venn diagram grouping people by activity and location both irl and online + - open to meet/chat broadcast + - detailed mood/status + - some kind of away message system +- pass the aux + - when on call, can start an aux session to share application audio in high quality, and pass around with audio status shared (track etc.) in call. +- (when mobile is good): proper location sharing map +- theme parts + - main application style (component styles) done through setting variables to do with components + - may include assets for borders, backgrounds, etc. + - icon themes + - app icon + - emoji + - status icons + - general icons (e.g. call button, send message, etc) + - menu bar icons + - sound theme + - message style, html and css templates + - much later: main application layout, done through editing an xml file with a custom schema +- adium+-level themeability + - ichat theme as an example... + - window layout customisation as part of theme? +- media chat features: + - investigate whether it is worth encrypting all media chats using dtls-srtp + - ichat photo booth video chat filters + - webcam settings on a per-camera basis + - crop, exposure, focus, white balance, etc. settings + - mirroring in preview + - ability for multiple cameras and streams per person, i.e. for video of desk and of face, stream desktop, desktop audio and mic audio all at same time + even more if needed + - display status of chat, if sfu, if p2p, etc. +- posting-like channels designed for proper broadcast, with commenting (like telegram) +- importing and management of chat history + - perhaps splitting chat history editing into a separate application? +- in-app sticker/emoji creator/publisher +- disappearing messages (with proper disclaimers, notify when contract is broken and somebody joins with a client that doesn't support them, etc., maybe when enabled, don't use message bodies, so clients that don't support them don't store them. or instead send like a 'this message was sent with the expectation it would be deleted, but your client doesn't support this', like omemo) +- spaces, for organising guilds and chats together (like folders) +- chat tabs/split views (select window, open chat. right click, open in new tab, new panel or new window, etc.). can enable or disable for advanced view. ability to maximize and fullscreen chat panels. +- broadcasting status as looking for game/chat +- broadcast/connect music streaming +- advanced transports to different networks like irc, discord, whatsapp and telegram (access to hosted versions of which would be premium feature potentially) +- broadcast your profile's theme: fonts, sounds, colors and padding etc +- profile badges (including supporter tag, but also allowing custom badges from guilds, friends, etc. some kind of system to add badges sent to you from others to your profile, or automatically through guild menus) + - as an extension, clans/clan tags? +- greylisting +- vouches as an anti-spam measure +- fallback/backup servers through friends + - xmpp accounts more like relays? +- composable moderation + - subscriptions to labelers (like bsky) +- advanced privacy settings + - allow certain profile information to only be seen by certain people, in certain contexts + - how open your inbox is +- profile styling/customization + - profile colors, fonts, background, profile border, effects - just custom css basically + - message styling? + - per channel/guild styling and privacy settings +- guild/channel-level styling +- pinned messages + - mam extension for non-e2e channels +- non-e2e channels rely on mam first and foremost to save client storage +- polls +- server admin menu +- (this one is so stupid) caw button, akin to a poke feature, as a way to nudge if people are available to hang out, or to announce you are available to hang out (can configure who, in this case, would be notified) +- live encrypted location sharing (requires mobile app) +- (taler) payments +- consider research of encryption of private server-side user data such as roster, settings, etc. (would require changing how things such as presence work) +- media hashing +- possible guild formats: + - guild at guild.example.org, channels at example@guild.example.org, users at guild.example.org/user and example@guild.example.org/user + - guilds at guild@guilds.example.org, channels at guild#channel@guilds.example.org or channel#guild@guilds.example.org or #channel%guild@guilds.example.org + - guilds as a special type of mix channel, guild@mix.example.org, rest of channels at channel@mix.example.org + - guilds at guild@guilds.example.org, channels at channel@mix.example.org (probably won't work) +- maybe guilds should be split from spaces + - guilds as guild.example.org, query items and get channels channel@guild.example.org. easy shared permissions and roles. just an extended mix service, so people can still join channels individually. only annoying in terms of creating new guilds now requires dns and tls annoyances, but could maybe have a fallback by either using a different format, or specifying a node in the disco things(?). i guess people could just put wildcards as like *.guilds.example.org too. + - spaces as spaces.example.org, or just as a pubsub item in a particular namespace, so people can have private (or public) spaces organising channels, guilds and people together. +- proper rtl, ttb and bbt text rendering which switches depending on xml message language. +- xmpp as a desktop service +- xmpp gateways forwarding other xmpp accounts +- streaming features + - watch videos together + - minigame apps in calls |
