Add feature batch 2, subscription/recurring sync, smooth charts, and app icon
- Implement subscriptions view with bidirectional recurring transaction sync - Add cascade delete/pause/resume between subscriptions and recurring - Fix foreign key constraints when deleting recurring transactions - Add cross-view instant refresh via callback pattern - Replace Bezier chart smoothing with Fritsch-Carlson monotone Hermite interpolation - Smooth budget sparklines using shared monotone_subdivide function - Add vertical spacing to budget rows - Add app icon (receipt on GNOME blue) in all sizes for desktop, web, and AppImage - Add calendar, credit cards, forecast, goals, insights, and wishlist views - Add date picker, numpad, quick-add, category combo, and edit dialog components - Add import/export for CSV, JSON, OFX, QIF formats - Add NLP transaction parsing, OCR receipt scanning, expression evaluator - Add notification support, Sankey chart, tray icon - Add demo data seeder with full DB wipe - Expand database schema with subscriptions, goals, credit cards, and more
This commit is contained in:
@@ -24,9 +24,14 @@ cp target/release/outlay-gtk AppDir/usr/bin/
|
||||
cp outlay-gtk/data/io.github.outlay.desktop AppDir/
|
||||
cp outlay-gtk/data/io.github.outlay.desktop AppDir/usr/share/applications/
|
||||
|
||||
# Copy icon
|
||||
# Copy app icon
|
||||
cp outlay-gtk/data/icons/hicolor/scalable/apps/io.github.outlay.svg AppDir/usr/share/icons/hicolor/scalable/apps/
|
||||
|
||||
# Copy Tabler action icons
|
||||
mkdir -p AppDir/usr/share/icons/hicolor/scalable/actions
|
||||
cp outlay-gtk/data/icons/hicolor/scalable/actions/outlay-*.svg AppDir/usr/share/icons/hicolor/scalable/actions/
|
||||
cp outlay-gtk/data/icons/hicolor/scalable/actions/tabler-*.svg AppDir/usr/share/icons/hicolor/scalable/actions/
|
||||
|
||||
# Copy GSettings schema
|
||||
cp outlay-gtk/data/io.github.outlay.gschema.xml AppDir/usr/share/glib-2.0/schemas/
|
||||
glib-compile-schemas AppDir/usr/share/glib-2.0/schemas/
|
||||
@@ -38,6 +43,42 @@ if [ -d "$FONT_DIR" ]; then
|
||||
echo "==> Bundled Liberation Sans fonts"
|
||||
fi
|
||||
|
||||
# Bundle JetBrains Mono fonts (needed for amount display)
|
||||
mkdir -p AppDir/usr/share/fonts
|
||||
cp outlay-gtk/data/fonts/*.ttf AppDir/usr/share/fonts/
|
||||
echo "==> Bundled JetBrains Mono fonts"
|
||||
|
||||
# Bundle tesseract OCR (needed for receipt amount detection)
|
||||
TESSERACT_BIN="$(command -v tesseract 2>/dev/null || true)"
|
||||
if [ -n "$TESSERACT_BIN" ]; then
|
||||
cp "$TESSERACT_BIN" AppDir/usr/bin/tesseract
|
||||
# Bundle tessdata (English trained data)
|
||||
mkdir -p AppDir/usr/bin/tessdata
|
||||
TESSDATA_DIR=""
|
||||
for candidate in /usr/share/tesseract-ocr/5/tessdata /usr/share/tesseract-ocr/4.00/tessdata /usr/share/tessdata /usr/local/share/tessdata; do
|
||||
if [ -f "$candidate/eng.traineddata" ]; then
|
||||
TESSDATA_DIR="$candidate"
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [ -n "$TESSDATA_DIR" ]; then
|
||||
cp "$TESSDATA_DIR/eng.traineddata" AppDir/usr/bin/tessdata/
|
||||
echo "==> Bundled tesseract + eng.traineddata"
|
||||
else
|
||||
echo "==> WARNING: tesseract found but eng.traineddata not found - OCR may not work"
|
||||
fi
|
||||
# Bundle tesseract's shared library dependencies
|
||||
for lib in $(ldd "$TESSERACT_BIN" 2>/dev/null | grep -oP '/\S+\.so\S*' | grep -v '^/lib'); do
|
||||
if [ -f "$lib" ]; then
|
||||
mkdir -p AppDir/usr/lib
|
||||
cp -n "$lib" AppDir/usr/lib/ 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "==> WARNING: tesseract not found - OCR will not be available in AppImage"
|
||||
echo " Install with: sudo apt install tesseract-ocr"
|
||||
fi
|
||||
|
||||
# Download linuxdeploy if not present
|
||||
LINUXDEPLOY="linuxdeploy-x86_64.AppImage"
|
||||
if [ ! -f "$LINUXDEPLOY" ]; then
|
||||
|
||||
Reference in New Issue
Block a user