| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(parsers): add Siket Bank parser (#717) (#724) * feat(parsers): add Siket Bank parser (#717) Closes #717 Claude-Session: https://claude.ai/code/session_017JdBDF1AncNhc76a4EnTuZ * test(parsers): add DLT-sender + factory-routing coverage for Siket (#717) Addresses Greptile: adds handle-checks for the SIKET / AB-SIKET-S DLT sender forms and a BankParserFactory dispatch test. Claude-Session: https://claude.ai/code/session_017JdBDF1AncNhc76a4EnTuZ | 11 天前 | |
feat: integrate LiteRT-LM for on-device LLM inference and update database schema to version 36 - Added support for LiteRT-LM in the build configuration and updated dependencies. - Introduced a new database schema version 36, removing the CategoryBudgetLimitEntity and its DAO, and implementing auto-migrations. - Updated ProGuard rules to accommodate LiteRT-LM. - Modified LLM service implementation to utilize LiteRT-LM for conversation management. - Adjusted model download configurations and added GPU acceleration support in the AndroidManifest. - Enhanced the LlmRepository to streamline message handling and conversation management. | 5 个月前 | |
Combined changes fixing various bugs (#220) * add my changes (#2) * feat(parser): improved PNB bank SMS parsing * feat(parser): add IMPS reference and account extraction for PNB and South Indian Bank - PNBBankParser: add patterns for 'a/c no XX340' account format, 'debited for Rs' amount, and 'IMPS Ref no' reference - SouthIndianBankParser: fix IMPS reference extraction for 'Info: IMPS/PUNB/123456789012/' format, improve merchant extraction - Add test cases for IMPS transfer messages * Better parallelization reader (#3) * fix: refactor and update optimizedsmsreaderworker Now 2 to 3X faster reading and more maintainable code fix: warnings fixed fix: ETA fixed * fix: missing import * feat: upgrade to foojay as suggested by android studio * upgrade to agp 9.0.1 * feat: set default SMS scan period to all time * fix: show the reference number not sms sender in reference part of trasnaction screen * fix: further fixes to pnb bank parser to handle a edge case tx where a de3bit is form one acc and send to another as a expense/transfer to a 3rd party acc via imps * fix: Rewrite GPayPdfParser to handle GPay PDF extraction format PDF text extraction splits each transaction across multiple lines (date, year, time each on their own line; date appears *before* the `Paid to` anchor). The original single-regex + `SimpleDateFormat` approach couldn't handle this. Key changes: - Replace `SimpleDateFormat` with manual 3-part date assembly (`01 Sep,` + `2025` + `03:02 PM`) - Add pre-anchor line buffer so date lines aren't discarded before block assignment - Fix `Received from` blocks losing their amount by rejecting `Paid to Bank NNNN` (ends with 4 digits) as a transaction anchor - Replace fragile last4/bank extraction with `(.+\D)(\d{4})$` covering both `Paid by` and `Paid to` account lines - Tag each line by semantic type; use anchor-based windowing instead of string splitting * update to latest gradle * update workflows to use best jdk for this gradle ver * fix: address Greptile review issues — parserCache race, unsafe cast, dead code, GPay anchor heuristic, buildDir deprecation - Replace HashMap with ConcurrentHashMap for parserCache to fix data race on Dispatchers.Default (computeIfAbsent is thread-safe) - Fix ruleCache type from Map<TransactionType, List<*>> to Map<TransactionType, List<TransactionRule>>, removing unsafe cast - Remove dead shouldSaveBalance variable (every branch returned true) - Use accountLineRegex in isTransactionAnchor instead of 4-digit heuristic to avoid dropping merchants whose name ends in digits - Revert buildDir to layout.buildDirectory.dir() (provider-based API) * fix: address second Greptile review — amountRegex regression, FederalBank stale subscriptions, ring data race - GPayPdfParser: change amountRegex [₹Rs.\s]* to [₹Rs.\s]+ so the year line (e.g. "2025") no longer matches as a transaction amount - FederalBank: add isRecent guard to parseFutureDebit branch, preventing stale subscriptions from old messages during all-time scans - ProcessingStats: replace LongArray ring buffer with AtomicLongArray to eliminate concurrent-write data race from parallel parser coroutines * fix: address third Greptile review — GPay buffer, PNB merchant truncation, FederalBank comment - GPayPdfParser: reset inBlock=false after saving each block so the pre-anchor date buffer repopulates for transactions 2+ - PNBBankParser: change towardsPattern from [^\s]+ to .+? to capture multi-word merchant names (e.g. 'Google Pay' instead of 'Google') - FederalBank: add comment explaining intentional isRecent-only guard (old isFuturePayment check is unnecessary with smsScanAllTime=true) * fix: address fourth Greptile review — jvmToolchain version, PNB super fallbacks - parser-core: jvmToolchain(25) → jvmToolchain(21) to match CI JDK 21 - PNBBankParser: restore super.extractAccountLast4() as final fallback - PNBBankParser: restore super.extractReference() with PNB guard to avoid matching '-PNB' suffix while still catching other base patterns * fix: use bank-keyword regex for GPay anchor detection to avoid false negatives Add bankAccountLineRegex that only matches account lines containing Bank/Card/A/c keywords before the 4-digit suffix. This correctly classifies 'Paid to South Indian Bank 1234' as an account line while allowing 'Paid to Store 2024' as a transaction anchor. * style: clean up dead code, duplicate KDoc, and amountRegex comment - Remove dead inBlock=false assignment in splitIntoBlocks (immediately overwritten by inBlock=true — no code reads it in between) - Merge duplicate KDoc blocks on ProcessingStats into single comment - Clarify amountRegex currency-prefix requirement in comment * fix: first-run-only full scan + HDFC balance-update fallthrough - Remove scanAllTime from needsFullScan check: first run still scans all time (10yr or window), but subsequent runs go incremental regardless of the scanAllTime preference - HDFC: return null after failed parseBalanceUpdate to prevent fallthrough to eMandate/futureDebit/regular transaction parsing * fix: HDFC balance-update Discard + GPay account regex consistency - Widen checkSubscriptionOrBalance return type to ParseResult? so HDFC unparseable balance updates return Discard instead of null (preventing fallthrough to regular transaction parsing) - GPay extractAccountInfo now uses bankAccountLineRegex matching isTransactionAnchor, preventing merchant lines ending in 4 digits from being misidentified as bank account lines * fix: reconstruct full bank name from bankAccountLineRegex groups bankAccountLineRegex splits 'South Indian Bank' into group 1 ('South Indian') and group 2 ('Bank'). Combine both groups to produce the full bank name for extractAccountInfo. * fix: remove dead accountLineRegex + cache null parser results - Remove unused accountLineRegex (superseded by bankAccountLineRegex) - Wrap parserCache values in ParserHolder so null results from BankParserFactory.getParser are cached and not re-invoked for every unrecognized sender * fix: explicit isDeleted guard, scanAllTime toggle detection, HDFC discard logging - Add comment confirming getTransactionByHash includes soft-deleted rows - Detect scanAllTime toggle via lastScanPeriod==-1 sentinel; toggling 'Scan All Time' on now triggers a full scan on next run - Store -1 as lastScanPeriod when scanAllTime is true - Add warning log for HDFC unparseable balance update discard * fix: per-SMS exception guard, PNB debit pattern symmetry, Federal Bank TODO - Wrap parseSms in try/catch inside parser coroutines so one bad SMS doesn't crash the entire pipeline and drop all remaining messages - Make 'with' optional in PNB debit pattern ('debited Rs. X' and 'debited with Rs. X' both match, matching credit pattern symmetry) - Add TODO for Federal Bank isFuturePayment trade-off * fix: sentinel bug causing infinite full scans when scanAllTime=true Guard scanMonths > lastScanPeriod check with lastScanPeriod >= 0 so the -1 sentinel (all-time mode) doesn't force a full rescan on every background worker run. Also clean up misleading isFuturePayment TODO — the method never existed and old SmsReaderWorker had the same skip-old-messages behaviour. * fix: GPayPdf AM/PM space insertion + final progress report after saver completes - GPayPdfParser: regex normalize now inserts missing space between time and AM/PM ('03:02PM' → '03:02 PM') so SimpleDateFormat with isLenient=false doesn't produce null timestamps. - Progress monitor: add reportProgress(stats) after saver.join() so the final saved count reflects all DB writes, not just the state when processed == total. - Clarify FederalBank future-debit comment (old SmsReaderWorker had no FederalBank handling; this follows the HDFC pattern). * fix issues pointed out by coderabbit * fix: address greptile review for gpay date regex and datastore migration - GPayPdfParser: update timeLineRegex to handle optional seconds so timestamps with seconds don't fallback to current time - UserPreferencesRepository: add datastore migration to ensure existing users aren't subjected to a 10-year background sms rescan on upgrade * fix: address greptile review issues * fix: apply greptile review fixes - GPay regex patterns and HDFC fallthrough * fix: remove accidentally committed test_date.kt * fix: per-action error handling in HDFC onSave; increase DATE_BUFFER_SIZE to 8 * fix: GPayPdfParser fallback for 24-hour times * fix: GPayPdfParser explicit null check for bankName interpolation * fix: revert GPayPdfParser to original anchor detection and account extraction logic * fix: restore GPayPdfParser date parsing from commit cd5c996f * fix: restore gpay parser base and original date parsing * update gradle daemon jvm * fix: address review on pnbbank parser and delete old unused smsreaderworker --------- Co-authored-by: sarim2000 <sarimbleedblue@gmail.com> | 5 个月前 | |
feat: implement account editing functionality in ManageAccountsScreen, allowing users to update bank names and balances with a confirmation dialog | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 11 天前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 9 个月前 |