* feat: add conversations, desktop (Tauri), and offline sync Major new features: - conversations module: Slack-like channels, threads, reactions, pins - Tauri desktop app with local SQLite for offline-first operation - Hybrid logical clock sync engine with conflict resolution - DB provider abstraction (D1/Tauri/memory) with React context Conversations: - Text/voice/announcement channels with categories - Message threads, reactions, attachments, pinning - Real-time presence and typing indicators - Full-text search across messages Desktop (Tauri): - Local SQLite database with sync to cloud D1 - Offline mutation queue with automatic replay - Window management and keyboard shortcuts - Desktop shell with offline banner Sync infrastructure: - Vector clock implementation for causality tracking - Last-write-wins with semantic conflict resolution - Delta sync via checkpoints for bandwidth efficiency - Comprehensive test coverage Also adds e2e test setup with Playwright and CI workflows for desktop releases. * fix(tests): sync engine test schema and checkpoint logic - Add missing process_after column and sync_tombstone table to test schemas - Fix checkpoint update to save cursor even when records array is empty - Revert claude-code-review.yml workflow changes to match main --------- Co-authored-by: Nicholai <nicholaivogelfilms@gmail.com>
24 lines
1.0 KiB
Bash
24 lines
1.0 KiB
Bash
#!/bin/bash
|
|
# Generate placeholder PNG icons from SVG using ImageMagick if available
|
|
# Falls back to creating minimal placeholder files
|
|
|
|
if command -v convert &> /dev/null; then
|
|
convert icon.svg icon.png
|
|
convert icon.svg -resize 32x32 32x32.png
|
|
convert icon.svg -resize 128x128 128x128.png
|
|
convert icon.svg -resize 256x256 128x128@2x.png
|
|
convert icon.svg -resize 512x512 icon.icns 2>/dev/null || cp icon.png icon.icns
|
|
convert icon.svg -resize 256x256 icon.ico 2>/dev/null || cp icon.png icon.ico
|
|
echo "Icons generated with ImageMagick"
|
|
else
|
|
echo "ImageMagick not found - creating placeholder icon files"
|
|
# Create minimal placeholder files (1x1 blue pixel)
|
|
echo "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAADklEQVRYR+3BAQ0AAADCoPdPbQ43oAAA" | base64 -d > icon.png 2>/dev/null || touch icon.png
|
|
cp icon.png 32x32.png
|
|
cp icon.png 128x128.png
|
|
cp icon.png "128x128@2x.png"
|
|
cp icon.png icon.icns
|
|
cp icon.png icon.ico
|
|
echo "Placeholder icons created - replace with proper icons before release"
|
|
fi
|