178 Commits

Author SHA1 Message Date
hobokenchicken 60edc0b5b4 fix: Windows build — use cmd shell to avoid PowerShell execution policy
Release Desktop Apps / build-windows (push) Failing after 3h22m14s
Release Desktop Apps / build-linux (push) Has been cancelled
Release Desktop Apps / release (push) Has been cancelled
v0.2.1
2026-07-07 19:19:55 +00:00
hobokenchicken 836bcd8b8d fix: use powershell instead of pwsh for Windows runner
Release Desktop Apps / build-windows (push) Failing after 3h0m34s
Release Desktop Apps / build-linux (push) Has been cancelled
Release Desktop Apps / release (push) Has been cancelled
v0.1.2
2026-07-07 19:18:33 +00:00
hobokenchicken 8fd649356c fix: windows build — use pwsh instead of bash for Rust install 2026-07-07 19:17:42 +00:00
hobokenchicken 4a02d054cc fix: release workflow for Gitea Actions (runner labels + gitea-release-action)
Release Desktop Apps / build-windows (push) Failing after 3h0m44s
Release Desktop Apps / build-linux (push) Has been cancelled
Release Desktop Apps / release (push) Has been cancelled
v0.2.0
2026-07-07 14:19:22 -04:00
hobokenchicken dbd4de8e61 bump: desktop app v0.2.0, build all Linux bundles (appimage, deb, rpm) 2026-07-07 10:20:27 -04:00
hobokenchicken a0bb229173 fix: DMs now show full date+time like channels [DD.MM.YYYY @ HH:MM]
Release Desktop Apps / build-windows (push) Failing after 3h0m23s
Release Desktop Apps / build-linux (push) Has been cancelled
Release Desktop Apps / release (push) Has been cancelled
2026-07-07 14:01:27 +00:00
hobokenchicken c86c602294 change upload limit from 25MB to 1GB 2026-07-07 13:43:41 +00:00
hobokenchicken aa39b6a5be feat: read indicator — NEW divider line between read and unread messages 2026-07-06 19:41:19 +00:00
hobokenchicken 8cf1e91b2b ci: Gitea Actions release workflow for Linux + Windows desktop builds
Triggers on v* tags. Builds AppImage/deb/rpm on Linux runner,
MSI/NSIS on Windows runner, then creates a release with all assets.
Requires self-hosted runners registered in Gitea Actions.
2026-07-06 14:48:59 -04:00
hobokenchicken f068e15398 build: add build-tauri target (NO_STRIP=true for Arch) 2026-07-06 14:32:16 -04:00
hobokenchicken 559d17d1f2 feat: Tauri desktop app scaffold
- src-tauri/ with Rust backend, Cargo.toml, main.rs, lib.rs
- tauri.conf.json: Linux deb bundle with webkit2gtk deps
- package.json: added tauri script
- Build on a machine with Rust: cd web && npm run tauri build
2026-07-06 18:07:34 +00:00
hobokenchicken ea72050202 docs: add formatting toolbar, DM kaomoji/GIFs, last-channel restore to features list 2026-07-06 14:04:48 -04:00
hobokenchicken 88194b17c4 feat: unread markers for channels and DMs
- Read states store: smarter hasUnread compares against latest message
- ConversationList: orange dot + bold name for unread DMs
- DMChat: auto-mark-read when viewing conversation
- WS handler: mark DM read on new message while active+focused
2026-07-06 17:56:19 +00:00
hobokenchicken 2b45b11ea8 fix: screenshare rendering, voice panel layout, SW cache bust with git SHA
- VideoGrid: add screen share track display with proper sizing
- participantToVoice: detect ScreenShare + ScreenShareAudio tracks
- VoicePanel: flex layout, no scroll, tiles dynamically fill space
- VoiceChannel: show screen/camera icons in participant list
- vite.config: inject git SHA into SW CACHE_VERSION on build
2026-07-06 17:49:17 +00:00
hobokenchicken b3b5ff495d fix: DM message ordering, consolidate input toolbar, add rich text/WYSIWYG, file upload with drag-drop
- Fix DM backend ListMessages to use DESC + reverse (match channel handler)
- Remove spurious .reverse() from frontend message/conversation stores
- Create shared MessageInput component with Slack-style single toolbar row
- Add file upload via + button with progress bar and drag-and-drop
- Add markdown/rich text toggle with full WYSIWYG block formatting
  (lists, blockquotes, links, headings, code blocks)
- Add frontend+backend security for file uploads (extension + content-type guards)
2026-07-06 17:33:20 +00:00
hobokenchicken 9512dedec1 feat(chat): add native emoji pickers for chat input and reactions 2026-07-06 13:59:20 +00:00
hobokenchicken 8bbe2a0ff0 fix(dm): remove local append on send to prevent double messages 2026-07-06 13:53:11 +00:00
hobokenchicken c2fb3165f4 fix(dm): add image paste support to DM chat and fix realtime DM updates 2026-07-06 13:44:41 +00:00
hobokenchicken 0c26e2402b feat(chat): support pasting images directly into the chat box 2026-07-06 13:38:02 +00:00
hobokenchicken 88e7faaafb fix(webrtc): fix typescript errors for participant list migration 2026-07-06 13:32:10 +00:00
hobokenchicken 1d37284c25 fix(permissions): wire up MUTE_MEMBERS bitmask and fix member permissions in frontend 2026-07-06 13:27:38 +00:00
hobokenchicken b1b41ca5e1 fix(webrtc): add error handling and ui alerts for background processor initialization 2026-07-06 13:16:01 +00:00
hobokenchicken e10cb22811 fix(webrtc): update CSP to allow background processor wasm and blob execution 2026-07-06 13:14:27 +00:00
hobokenchicken 2631e6ce4a fix(webrtc): fix invalid hook call in device settings modal for bgMode 2026-07-06 13:13:05 +00:00
hobokenchicken 239640975f feat(webrtc): add background blur and virtual background options 2026-07-06 13:08:59 +00:00
hobokenchicken ed408c4044 feat(webrtc): add admin option to mute other participants 2026-07-06 13:04:39 +00:00
hobokenchicken 9aeedb1a53 feat(webrtc): add UI to select audio/video input and output devices 2026-07-06 12:56:27 +00:00
hobokenchicken 59846fc1e4 chore(build): automatically embed git commit hash in version string 2026-07-06 12:52:20 +00:00
hobokenchicken 944ae4074e fix(webrtc): sync participants state when local user publishes tracks 2026-07-06 12:49:14 +00:00
hobokenchicken 549bf842d0 feat(ui): tabulate voice and chat panels to prevent overlapping 2026-07-06 12:47:23 +00:00
hobokenchicken 83c05731ed fix(webrtc): correctly subscribe to remote camera tracks 2026-07-06 12:40:26 +00:00
hobokenchicken 5d8f420882 fix(webrtc): fix VideoGrid reactivity and layout 2026-07-06 12:37:35 +00:00
hobokenchicken 074742ddb4 feat(webrtc): render remote audio tracks and allow camera access 2026-07-06 12:25:40 +00:00
hobokenchicken f9b1e16e3a fix(webrtc): configure external TURN server and update CSP to allow inline scripts 2026-07-06 12:20:53 +00:00
hobokenchicken f9edd8c069 fix(docker): update livekit schema, coturn ports, and proxy keys 2026-07-05 23:59:32 +00:00
hobokenchicken 7e1c0b822b feat: inline markdown formatting toolbar
FormatToolbar component: B I S ` || buttons that wrap selected text
with markdown syntax. Added to both channel and DM input areas.
Keyboard shortcuts: Ctrl+B bold, Ctrl+I italic already work via
browser defaults on the rendered markdown.
2026-07-02 15:58:59 -04:00
hobokenchicken f61b33ff81 feat: GIF picker and kaomoji in DMs
- Added GiphyPicker to DM input area (toggle with [GIF] button)
- Added EmojiPicker/kaomoji to DMs (toggle with [☺] or Ctrl+E)
- GiphyPicker shows above input when toggled
- Kaomoji appends to input text
2026-07-02 15:50:28 -04:00
hobokenchicken ed50815902 feat: restore last active channel on login
- Channel store saves {serverId, channelId} to localStorage on select
- ServerBar restores last server+channel after fetching servers
- Fetches channels for the saved server, then sets the channel if valid
- Gracefully handles missing/deleted servers or channels
2026-07-02 15:44:55 -04:00
hobokenchicken b4e2f97dba docs: push notification setup in README, fix VAPID_SUBJECT example
- .env.example: VAPID_SUBJECT without mailto: prefix (library adds it)
- README: VAPID env vars in table, push notification setup section
- README: add dm/ to project structure, keygen instructions
- README: iOS tap-gesture requirement and Android battery optimization notes
2026-07-02 15:40:18 -04:00
hobokenchicken 53f8c6b2ef fix: remove requireInteraction, bump vibrate for Android
requireInteraction can suppress heads-up delivery on some Android
versions when screen is off. Removed it so the OS can auto-dismiss
after showing the notification.
2026-07-02 15:36:51 -04:00
hobokenchicken d1022d7c2a fix: remove Topic header, add push response logging
- Remove Topic header (causes issues with Apple push service)
- Log push response status codes for debugging
- Log endpoint prefix on errors for identification
- Auto-cleanup 410 (gone) subscriptions on success path too
2026-07-02 15:16:33 -04:00
hobokenchicken 15f9f6ae07 fix: push delivery when app is closed
- TTL 30s -> 86400 (24h): push services were dropping undelivered notifs
- Urgency: high: wakes device from doze/sleep
- Topic: per-user to collapse duplicate pending pushes
- SW push handler: try/catch for malformed payloads, always call waitUntil
- Bump SW cache to v6
2026-07-02 15:11:07 -04:00
hobokenchicken c803991cda fix: iOS push notification prompt
iOS requires user gesture for Notification.requestPermission().
- Added NotificationPrompt banner that shows on permission='default'
- autoSubscribePush only fires when already 'granted' (re-subscribe on restore)
- Banner uses tap handler for permission request (works on iOS)
- Gruvbox themed, dismissible, bottom-center toast
2026-07-02 15:04:31 -04:00
hobokenchicken a502cd8fd4 feat: push notifications for DMs
- DM handler now sends push notifications to other conversation members
- Cleared stale push subscriptions (old broken VAPID keys)
- Auto-subscribe will re-create them on next page load
2026-07-02 14:56:58 -04:00
hobokenchicken a593f04d7f feat: auto-subscribe push on login, better push logging
- Auto-subscribe to push on login, register, and session restore
- Guard against nil db in SendChannelNotification
- Log push send count per channel message
- Bump SW cache to v5
2026-07-02 14:34:02 -04:00
hobokenchicken 6b7dc2addd chore: remove committed keygen binary, gitignore 2026-07-02 14:24:30 -04:00
hobokenchicken 8336ca5d87 fix: use webpush-go's GenerateVAPIDKeys
Old implementation just copied random bytes as the public key (not real EC math).
New cmd/keygen calls the library's proper P-256 key generation.
Removed broken local GenerateVAPIDKeys from push/handlers.go.
2026-07-02 14:24:24 -04:00
hobokenchicken 85f9c21f4c fix: center and fill PWA icons
Trim background, cover-crop to square, center. No more letterboxing.
2026-07-02 14:16:14 -04:00
hobokenchicken 92af2e21b1 feat: safe area insets for Dynamic Island / notch / cutout
viewport-fit=cover already set. Added env(safe-area-inset-*) padding
to outer container so content doesn't hide behind Dynamic Island,
notches, or the home indicator bar.
2026-07-02 14:07:19 -04:00
hobokenchicken 1e22daead3 fix: remove unused activeChannelId variable 2026-07-02 14:00:12 -04:00