Add student_loans to account filter types - #125

Open
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781
Open

Add student_loans to account filter types#125
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781

Conversation

@JonnyMethodFI

Copy link
Copy Markdown

Summary

  • Adds student_loans (plural) to AccountFiltersAccountTypes in Opal types
  • Keeps existing student_loan (singular) entry intact
  • Matches AccountLiabilityTypes naming and mirrors the same change in the Python SDK

Linear

Resolves SUPP-1781

Test plan

  • Verify student_loans is accepted as a valid account filter type
  • Verify existing student_loan filter still works

Adds student_loans (plural) alongside existing student_loan to match
AccountLiabilityTypes. Mirrors the same change in the Python SDK.
Resolves SUPP-1781
JonnyMethodFIand others added 15 commits May 11, 2026 10:09
…rsal_account
API now returns these fields on payment responses. Adds them to the
IPayment interface and updates test assertions to include them.
- Add consent_status to IAccount interface
- Add rpps to IMerchantProviderIds interface
- Update Account tests for consent_status, subscriptions, and
available_subscriptions fields on ACH accounts
- Update Account product list test to not break on new product types
- Update Account balance/payoff/update list tests for flexible assertions
- Update Merchant tests for rpps provider_id and name changes
- Update Entity product test for manual_connect status change
API does not return payment_instrument on newly created accounts.
Switch to property-based assertions instead of deep equality.
Add back comprehensive field-by-field assertions that were
previously replaced with property checks. Only change from
master is echoing new API fields (consent_status, subscriptions,
rpps, payment_instrument) from responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Echo liability.name from response (API returns 'Chase Credit Card')
- Remove payment_instrument from liability create expected (not in response)
- Handle payment_instrument.* sub-product keys dynamically in products test
- Increase awaitResults retries to 50 and mocha timeout to 300s for payoff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Try awaitResults polling, but if it times out, fall back to a plain
retrieve and validate structural fields with flexible status. When
status is completed, assert all expected values. This keeps full
coverage when the test env completes in time, and avoids false
failures when it doesn't.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same pattern as payoff/updates: try polling, fall back to flexible
status check on timeout. Assert full values when completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back per_diem_amount, closed_at, last_payment_date,
next_payment_due_date, next_payment_minimum_amount, interest rates,
available_credit, usage_pattern, and data_as_of assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jmdelcarmen
jmdelcarmen removed their request for review May 14, 2026 14:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JonnyMethodFI
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add student_loans to account filter types - #125

Open
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781
Open

Add student_loans to account filter types#125
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781

Conversation

@JonnyMethodFI

Copy link
Copy Markdown

Summary

  • Adds student_loans (plural) to AccountFiltersAccountTypes in Opal types
  • Keeps existing student_loan (singular) entry intact
  • Matches AccountLiabilityTypes naming and mirrors the same change in the Python SDK

Linear

Resolves SUPP-1781

Test plan

  • Verify student_loans is accepted as a valid account filter type
  • Verify existing student_loan filter still works

Adds student_loans (plural) alongside existing student_loan to match
AccountLiabilityTypes. Mirrors the same change in the Python SDK.
Resolves SUPP-1781
JonnyMethodFIand others added 15 commits May 11, 2026 10:09
…rsal_account
API now returns these fields on payment responses. Adds them to the
IPayment interface and updates test assertions to include them.
- Add consent_status to IAccount interface
- Add rpps to IMerchantProviderIds interface
- Update Account tests for consent_status, subscriptions, and
available_subscriptions fields on ACH accounts
- Update Account product list test to not break on new product types
- Update Account balance/payoff/update list tests for flexible assertions
- Update Merchant tests for rpps provider_id and name changes
- Update Entity product test for manual_connect status change
API does not return payment_instrument on newly created accounts.
Switch to property-based assertions instead of deep equality.
Add back comprehensive field-by-field assertions that were
previously replaced with property checks. Only change from
master is echoing new API fields (consent_status, subscriptions,
rpps, payment_instrument) from responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Echo liability.name from response (API returns 'Chase Credit Card')
- Remove payment_instrument from liability create expected (not in response)
- Handle payment_instrument.* sub-product keys dynamically in products test
- Increase awaitResults retries to 50 and mocha timeout to 300s for payoff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Try awaitResults polling, but if it times out, fall back to a plain
retrieve and validate structural fields with flexible status. When
status is completed, assert all expected values. This keeps full
coverage when the test env completes in time, and avoids false
failures when it doesn't.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same pattern as payoff/updates: try polling, fall back to flexible
status check on timeout. Assert full values when completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back per_diem_amount, closed_at, last_payment_date,
next_payment_due_date, next_payment_minimum_amount, interest rates,
available_credit, usage_pattern, and data_as_of assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jmdelcarmen
jmdelcarmen removed their request for review May 14, 2026 14:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JonnyMethodFI
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add student_loans to account filter types - #125

Open
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781
Open

Add student_loans to account filter types#125
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781

Conversation

@JonnyMethodFI

Copy link
Copy Markdown

Summary

  • Adds student_loans (plural) to AccountFiltersAccountTypes in Opal types
  • Keeps existing student_loan (singular) entry intact
  • Matches AccountLiabilityTypes naming and mirrors the same change in the Python SDK

Linear

Resolves SUPP-1781

Test plan

  • Verify student_loans is accepted as a valid account filter type
  • Verify existing student_loan filter still works

Adds student_loans (plural) alongside existing student_loan to match
AccountLiabilityTypes. Mirrors the same change in the Python SDK.
Resolves SUPP-1781
JonnyMethodFIand others added 15 commits May 11, 2026 10:09
…rsal_account
API now returns these fields on payment responses. Adds them to the
IPayment interface and updates test assertions to include them.
- Add consent_status to IAccount interface
- Add rpps to IMerchantProviderIds interface
- Update Account tests for consent_status, subscriptions, and
available_subscriptions fields on ACH accounts
- Update Account product list test to not break on new product types
- Update Account balance/payoff/update list tests for flexible assertions
- Update Merchant tests for rpps provider_id and name changes
- Update Entity product test for manual_connect status change
API does not return payment_instrument on newly created accounts.
Switch to property-based assertions instead of deep equality.
Add back comprehensive field-by-field assertions that were
previously replaced with property checks. Only change from
master is echoing new API fields (consent_status, subscriptions,
rpps, payment_instrument) from responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Echo liability.name from response (API returns 'Chase Credit Card')
- Remove payment_instrument from liability create expected (not in response)
- Handle payment_instrument.* sub-product keys dynamically in products test
- Increase awaitResults retries to 50 and mocha timeout to 300s for payoff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Try awaitResults polling, but if it times out, fall back to a plain
retrieve and validate structural fields with flexible status. When
status is completed, assert all expected values. This keeps full
coverage when the test env completes in time, and avoids false
failures when it doesn't.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same pattern as payoff/updates: try polling, fall back to flexible
status check on timeout. Assert full values when completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back per_diem_amount, closed_at, last_payment_date,
next_payment_due_date, next_payment_minimum_amount, interest rates,
available_credit, usage_pattern, and data_as_of assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jmdelcarmen
jmdelcarmen removed their request for review May 14, 2026 14:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JonnyMethodFI
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add student_loans to account filter types - #125

Open
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781
Open

Add student_loans to account filter types#125
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781

Conversation

@JonnyMethodFI

Copy link
Copy Markdown

Summary

  • Adds student_loans (plural) to AccountFiltersAccountTypes in Opal types
  • Keeps existing student_loan (singular) entry intact
  • Matches AccountLiabilityTypes naming and mirrors the same change in the Python SDK

Linear

Resolves SUPP-1781

Test plan

  • Verify student_loans is accepted as a valid account filter type
  • Verify existing student_loan filter still works

Adds student_loans (plural) alongside existing student_loan to match
AccountLiabilityTypes. Mirrors the same change in the Python SDK.
Resolves SUPP-1781
JonnyMethodFIand others added 15 commits May 11, 2026 10:09
…rsal_account
API now returns these fields on payment responses. Adds them to the
IPayment interface and updates test assertions to include them.
- Add consent_status to IAccount interface
- Add rpps to IMerchantProviderIds interface
- Update Account tests for consent_status, subscriptions, and
available_subscriptions fields on ACH accounts
- Update Account product list test to not break on new product types
- Update Account balance/payoff/update list tests for flexible assertions
- Update Merchant tests for rpps provider_id and name changes
- Update Entity product test for manual_connect status change
API does not return payment_instrument on newly created accounts.
Switch to property-based assertions instead of deep equality.
Add back comprehensive field-by-field assertions that were
previously replaced with property checks. Only change from
master is echoing new API fields (consent_status, subscriptions,
rpps, payment_instrument) from responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Echo liability.name from response (API returns 'Chase Credit Card')
- Remove payment_instrument from liability create expected (not in response)
- Handle payment_instrument.* sub-product keys dynamically in products test
- Increase awaitResults retries to 50 and mocha timeout to 300s for payoff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Try awaitResults polling, but if it times out, fall back to a plain
retrieve and validate structural fields with flexible status. When
status is completed, assert all expected values. This keeps full
coverage when the test env completes in time, and avoids false
failures when it doesn't.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same pattern as payoff/updates: try polling, fall back to flexible
status check on timeout. Assert full values when completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back per_diem_amount, closed_at, last_payment_date,
next_payment_due_date, next_payment_minimum_amount, interest rates,
available_credit, usage_pattern, and data_as_of assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jmdelcarmen
jmdelcarmen removed their request for review May 14, 2026 14:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JonnyMethodFI
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add student_loans to account filter types - #125

Open
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781
Open

Add student_loans to account filter types#125
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781

Conversation

@JonnyMethodFI

Copy link
Copy Markdown

Summary

  • Adds student_loans (plural) to AccountFiltersAccountTypes in Opal types
  • Keeps existing student_loan (singular) entry intact
  • Matches AccountLiabilityTypes naming and mirrors the same change in the Python SDK

Linear

Resolves SUPP-1781

Test plan

  • Verify student_loans is accepted as a valid account filter type
  • Verify existing student_loan filter still works

Adds student_loans (plural) alongside existing student_loan to match
AccountLiabilityTypes. Mirrors the same change in the Python SDK.
Resolves SUPP-1781
JonnyMethodFIand others added 15 commits May 11, 2026 10:09
…rsal_account
API now returns these fields on payment responses. Adds them to the
IPayment interface and updates test assertions to include them.
- Add consent_status to IAccount interface
- Add rpps to IMerchantProviderIds interface
- Update Account tests for consent_status, subscriptions, and
available_subscriptions fields on ACH accounts
- Update Account product list test to not break on new product types
- Update Account balance/payoff/update list tests for flexible assertions
- Update Merchant tests for rpps provider_id and name changes
- Update Entity product test for manual_connect status change
API does not return payment_instrument on newly created accounts.
Switch to property-based assertions instead of deep equality.
Add back comprehensive field-by-field assertions that were
previously replaced with property checks. Only change from
master is echoing new API fields (consent_status, subscriptions,
rpps, payment_instrument) from responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Echo liability.name from response (API returns 'Chase Credit Card')
- Remove payment_instrument from liability create expected (not in response)
- Handle payment_instrument.* sub-product keys dynamically in products test
- Increase awaitResults retries to 50 and mocha timeout to 300s for payoff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Try awaitResults polling, but if it times out, fall back to a plain
retrieve and validate structural fields with flexible status. When
status is completed, assert all expected values. This keeps full
coverage when the test env completes in time, and avoids false
failures when it doesn't.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same pattern as payoff/updates: try polling, fall back to flexible
status check on timeout. Assert full values when completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back per_diem_amount, closed_at, last_payment_date,
next_payment_due_date, next_payment_minimum_amount, interest rates,
available_credit, usage_pattern, and data_as_of assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jmdelcarmen
jmdelcarmen removed their request for review May 14, 2026 14:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JonnyMethodFI
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add student_loans to account filter types - #125

Open
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781
Open

Add student_loans to account filter types#125
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781

Conversation

@JonnyMethodFI

Copy link
Copy Markdown

Summary

  • Adds student_loans (plural) to AccountFiltersAccountTypes in Opal types
  • Keeps existing student_loan (singular) entry intact
  • Matches AccountLiabilityTypes naming and mirrors the same change in the Python SDK

Linear

Resolves SUPP-1781

Test plan

  • Verify student_loans is accepted as a valid account filter type
  • Verify existing student_loan filter still works

Adds student_loans (plural) alongside existing student_loan to match
AccountLiabilityTypes. Mirrors the same change in the Python SDK.
Resolves SUPP-1781
JonnyMethodFIand others added 15 commits May 11, 2026 10:09
…rsal_account
API now returns these fields on payment responses. Adds them to the
IPayment interface and updates test assertions to include them.
- Add consent_status to IAccount interface
- Add rpps to IMerchantProviderIds interface
- Update Account tests for consent_status, subscriptions, and
available_subscriptions fields on ACH accounts
- Update Account product list test to not break on new product types
- Update Account balance/payoff/update list tests for flexible assertions
- Update Merchant tests for rpps provider_id and name changes
- Update Entity product test for manual_connect status change
API does not return payment_instrument on newly created accounts.
Switch to property-based assertions instead of deep equality.
Add back comprehensive field-by-field assertions that were
previously replaced with property checks. Only change from
master is echoing new API fields (consent_status, subscriptions,
rpps, payment_instrument) from responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Echo liability.name from response (API returns 'Chase Credit Card')
- Remove payment_instrument from liability create expected (not in response)
- Handle payment_instrument.* sub-product keys dynamically in products test
- Increase awaitResults retries to 50 and mocha timeout to 300s for payoff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Try awaitResults polling, but if it times out, fall back to a plain
retrieve and validate structural fields with flexible status. When
status is completed, assert all expected values. This keeps full
coverage when the test env completes in time, and avoids false
failures when it doesn't.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same pattern as payoff/updates: try polling, fall back to flexible
status check on timeout. Assert full values when completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back per_diem_amount, closed_at, last_payment_date,
next_payment_due_date, next_payment_minimum_amount, interest rates,
available_credit, usage_pattern, and data_as_of assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jmdelcarmen
jmdelcarmen removed their request for review May 14, 2026 14:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JonnyMethodFI
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add student_loans to account filter types - #125

Open
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781
Open

Add student_loans to account filter types#125
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781

Conversation

@JonnyMethodFI

Copy link
Copy Markdown

Summary

  • Adds student_loans (plural) to AccountFiltersAccountTypes in Opal types
  • Keeps existing student_loan (singular) entry intact
  • Matches AccountLiabilityTypes naming and mirrors the same change in the Python SDK

Linear

Resolves SUPP-1781

Test plan

  • Verify student_loans is accepted as a valid account filter type
  • Verify existing student_loan filter still works

Adds student_loans (plural) alongside existing student_loan to match
AccountLiabilityTypes. Mirrors the same change in the Python SDK.
Resolves SUPP-1781
JonnyMethodFIand others added 15 commits May 11, 2026 10:09
…rsal_account
API now returns these fields on payment responses. Adds them to the
IPayment interface and updates test assertions to include them.
- Add consent_status to IAccount interface
- Add rpps to IMerchantProviderIds interface
- Update Account tests for consent_status, subscriptions, and
available_subscriptions fields on ACH accounts
- Update Account product list test to not break on new product types
- Update Account balance/payoff/update list tests for flexible assertions
- Update Merchant tests for rpps provider_id and name changes
- Update Entity product test for manual_connect status change
API does not return payment_instrument on newly created accounts.
Switch to property-based assertions instead of deep equality.
Add back comprehensive field-by-field assertions that were
previously replaced with property checks. Only change from
master is echoing new API fields (consent_status, subscriptions,
rpps, payment_instrument) from responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Echo liability.name from response (API returns 'Chase Credit Card')
- Remove payment_instrument from liability create expected (not in response)
- Handle payment_instrument.* sub-product keys dynamically in products test
- Increase awaitResults retries to 50 and mocha timeout to 300s for payoff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Try awaitResults polling, but if it times out, fall back to a plain
retrieve and validate structural fields with flexible status. When
status is completed, assert all expected values. This keeps full
coverage when the test env completes in time, and avoids false
failures when it doesn't.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same pattern as payoff/updates: try polling, fall back to flexible
status check on timeout. Assert full values when completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back per_diem_amount, closed_at, last_payment_date,
next_payment_due_date, next_payment_minimum_amount, interest rates,
available_credit, usage_pattern, and data_as_of assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jmdelcarmen
jmdelcarmen removed their request for review May 14, 2026 14:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JonnyMethodFI
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add student_loans to account filter types - #125

Open
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781
Open

Add student_loans to account filter types#125
JonnyMethodFI wants to merge 16 commits into
masterfrom
jonathan/supp-1781

Conversation

@JonnyMethodFI

Copy link
Copy Markdown

Summary

  • Adds student_loans (plural) to AccountFiltersAccountTypes in Opal types
  • Keeps existing student_loan (singular) entry intact
  • Matches AccountLiabilityTypes naming and mirrors the same change in the Python SDK

Linear

Resolves SUPP-1781

Test plan

  • Verify student_loans is accepted as a valid account filter type
  • Verify existing student_loan filter still works

Adds student_loans (plural) alongside existing student_loan to match
AccountLiabilityTypes. Mirrors the same change in the Python SDK.
Resolves SUPP-1781
JonnyMethodFIand others added 15 commits May 11, 2026 10:09
…rsal_account
API now returns these fields on payment responses. Adds them to the
IPayment interface and updates test assertions to include them.
- Add consent_status to IAccount interface
- Add rpps to IMerchantProviderIds interface
- Update Account tests for consent_status, subscriptions, and
available_subscriptions fields on ACH accounts
- Update Account product list test to not break on new product types
- Update Account balance/payoff/update list tests for flexible assertions
- Update Merchant tests for rpps provider_id and name changes
- Update Entity product test for manual_connect status change
API does not return payment_instrument on newly created accounts.
Switch to property-based assertions instead of deep equality.
Add back comprehensive field-by-field assertions that were
previously replaced with property checks. Only change from
master is echoing new API fields (consent_status, subscriptions,
rpps, payment_instrument) from responses.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Echo liability.name from response (API returns 'Chase Credit Card')
- Remove payment_instrument from liability create expected (not in response)
- Handle payment_instrument.* sub-product keys dynamically in products test
- Increase awaitResults retries to 50 and mocha timeout to 300s for payoff
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Try awaitResults polling, but if it times out, fall back to a plain
retrieve and validate structural fields with flexible status. When
status is completed, assert all expected values. This keeps full
coverage when the test env completes in time, and avoids false
failures when it doesn't.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same pattern as payoff/updates: try polling, fall back to flexible
status check on timeout. Assert full values when completed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add back per_diem_amount, closed_at, last_payment_date,
next_payment_due_date, next_payment_minimum_amount, interest rates,
available_credit, usage_pattern, and data_as_of assertions.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@jmdelcarmen
jmdelcarmen removed their request for review May 14, 2026 14:10
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@JonnyMethodFI