feat(bank-connect): DOM scraping pipeline with embedded panel - #1
Merged
Conversation
…ency key Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…potency - Add update_run_stats() to BankConnectRepository (thin wrapper over update_run) - Add ImportResult struct to bank_connect commands - Add import_scraped_transactions_inner() helper: maps ScrapedTransactionBatch to NewActivity records (DEPOSIT/WITHDRAWAL), deduplicates via idempotency_key, updates run stats, emits import-complete and new-account-created events - Add import_scraped_transactions Tauri command wrapping the inner helper - Wire command in lib.rs invoke_handler Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Add bank_progress and bank_transactions as Tauri commands so bank automation scripts can invoke them via window.__TAURI__.invoke(). bank_transactions spawns an async import task and emits an error progress event on failure. Update all 6 bank scripts from raw __TAURI_INTERNALS__.ipc.postMessage to proper invoke() calls. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Adds WebviewBounds struct and three new Tauri commands: open_bank_panel,
close_bank_panel, and resize_bank_panel. Uses separate-window fallback
(WebviewWindowBuilder) since Tauri v2 add_child() requires the unstable
feature flag not enabled in this project. Panel windows use the label
prefix "bank-panel-{key}" to distinguish from standalone bank windows.
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
…ccount modal Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
- Use mounted-guard + Promise.all pattern in event listener useEffect to prevent leaks on fast unmount - Add activeBankKey state alongside activeBankRef so conditional render is reactive - Replace NewAccountInfo local interface with imported NewAccountCreatedPayload in new-accounts-modal - Narrow BankProgressPayload.level with toLogLevel() instead of unsafe as-cast - Add TODO comment for adaptCallback/adaptUnlisten de-dup with events.ts Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Node.js webstorage intercepts localStorage when window is defined but localStorage.getItem is not a real function, crashing form-schemas.test.ts at module load time. Add typeof guards before the module-level getItem call. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ScrapedTransaction/ScrapedAccountmodels with idempotency key support andimport_scraped_transactionsTauri commandfind_or_create_bank_accounthelper andrun_idpropagationbank_transactionsIPC event into the import pipeline; addopen/close/resize_bank_panelcommandsTest Plan
cargo check --workspacepassescargo test -p wealthfolio-core bank_connectpasses (3 tests)pnpm type-checkpassespnpm test --runpasses (322/322)