Library flutter_esc_pos_utils mengirim ESC a (align) di tengah
baris
pada generator.row(), menyebabkan kolom right-aligned tercetak di
baris baru. Ganti semua row() campuran left+right alignment
dengan
text() + _padRow() (manual space padding 32 char) agar tidak ada
perintah ESC a di tengah baris.
- Tambah helper _padRow(left, right) untuk padding 32 karakter
- Item: deskripsi 1 baris (width 12), qty×price + total 1 baris
- Subtotal, TOTAL, BAYAR, KEMBALI/TIP, KURANG: text() + _padRow()
Multi-Grup Sumber & UI:
- Model ReceiptGroup: satu struk bisa punya banyak grup sumber (
revenue)
- Tombol "Tambah Sumber" dengan dashed border (max 10 grup)
- Hapus label "Dari:" di SourceAccountSelector (chip saja)
- Default 1 grup kosong di ReceiptProvider constructor &
_resetState
Akun Tujuan ke Config:
- Pindah DestinationAccountSelector dari receipt body ke Config
screen
- Persist & load via SharedPreferences (permanen, tidak di-reset)
- Dropdown auto-load dari cache/mirror saat buka Config
- Tombol "Sinkronisasi Manual" sekarang simpan ke mirror &
refresh dropdown
Batch Send via SubmissionTask:
- Model SubmissionTask: konteks per-grup (group/tip +
destination + date)
- TransactionSubmissionDialog refactor: terima
List<SubmissionTask>
- Helper buildTasksFromReceipt &
buildTasksFromAllUnsubmittedReceipts
- LocalReceiptsScreen: tombol "Kirim Semua Nota" + post-process
status
Bug Fix:
- copyWith sentinel pattern: field nullable (tipSourceAccount,
destinationAccount, fireflyUrl, accessToken) kini bisa di-set
ke null
- Tip dapat dibersihkan dengan "Batal Tip" & reset antar
transaksi
- Hapus tombol "Muat Akun" (redundan dgn Sinkronisasi Manual)
Lainnya:
- Date picker untuk tanggal transaksi
- Font courier prime caching via CourierStyles
- Perf: compute() untuk decode image, cancel stream bluetooth,
fix rebuild loop
- External link: <queries> AndroidManifest + skip canLaunchUrl
- Layout cetak: hapus Ke:, sederhanakan separator grup, hapus
TIP: TIDAK
- Hapus TransactionLinksScreen, ganti inline copy/open di popup
This commit removes the confusing default account mapping feature and implements a more reliable offline-first account mirroring system. The changes include:
BREAKING CHANGES:
- Remove all default account mapping functionality (saveDefaultAccount, getDefaultAccount, etc.)
- Simplify account selection to use direct account choice instead of default mapping
FEATURES:
- Implement account mirroring system that stores all FireFly III accounts locally
- Add offline-first approach: server accounts > mirrored accounts > fallback
- Automatic account sync when connection is available
- Manual sync capability in config screen
- Enhanced offline reliability - app works completely without server connection
IMPROVEMENTS:
- Faster startup times using local account cache
- More predictable account selection behavior
- Reduced confusion about which accounts are being used
- Better error handling for offline scenarios
- Simplified architecture without complex default mapping logic
• Replace StrukTextGenerator with EscPosPrintService to support image printing
• Add loading indicator during print process to prevent UI freeze
• Fix Uint8List type issues for printer compatibility
• Improve error handling with proper state management
• Users can now print selected store logo on thermal receipts
- Menambahkan pengecekan koneksi Bluetooth real-time untuk memastikan status koneksi akurat
- Memperbaiki tombol 'Cetak Struk' untuk menggunakan pengecekan koneksi yang benar
- Menambahkan mekanisme koneksi ulang otomatis jika printer terputus
- Meningkatkan fungsi pencetakan dengan penanganan error yang lebih baik dan percobaan ulang
- Menambahkan logging detail di plugin Bluetooth Print (Java) untuk debugging
- Menyesuaikan format struk untuk kompatibilitas printer termal
- Menghapus file yang tidak digunakan (printer_setup_screen.dart, settings_screen.dart)
- Menambahkan fitur WebView untuk menampilkan transaksi Firefly III