mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-07-30 15:26:14 +00:00
Compare commits
base: laantungir/routstr-core:c75dee147ab6378bdf2f3c1e22368d668bcfd951
laantungir/routstr-core:main
laantungir/routstr-core:fix/mint-rate-limit-and-fallback
laantungir/routstr-core:add-migration-test
laantungir/routstr-core:fix/payout-safety-pool-lifecycle
laantungir/routstr-core:fix/combined-db-pool-exhaustion
laantungir/routstr-core:model-paths
laantungir/routstr-core:test/issue-639-forwarded-model-id
laantungir/routstr-core:fix/mint-with-revision-fix
laantungir/routstr-core:ppq-auto-topup
laantungir/routstr-core:re-apply-migration
laantungir/routstr-core:fix/xcashu-cost-breakdown-port
laantungir/routstr-core:fix/cashu-token-create-post
laantungir/routstr-core:fix/concurent-requests
laantungir/routstr-core:feat/vulnerability-tests
laantungir/routstr-core:fix/zero-cost-fallback-billing
laantungir/routstr-core:fix/xcashu-cost-breakdown
laantungir/routstr-core:fix/streaming-billing-finalization
laantungir/routstr-core:fix/cashu-reservation-recovery
laantungir/routstr-core:fix/fee-payout-crash-guard
laantungir/routstr-core:fix/propagate-cashu-storage-errors
laantungir/routstr-core:coverage-tests-pr-619
laantungir/routstr-core:fix/retry-cashu-storage-writes
laantungir/routstr-core:fix-overflowing-in-mobile
laantungir/routstr-core:ehbp-proxy-refactor
laantungir/routstr-core:fix/ppq-upstream-inference-cost
laantungir/routstr-core:pr-575-review-fixes
laantungir/routstr-core:refund-sweep-behavior-tests
laantungir/routstr-core:fix-mypy
laantungir/routstr-core:with-price-calculation
laantungir/routstr-core:fix/payout-timeout-reconciliation
laantungir/routstr-core:revert-600-fix/retry-cashu-transaction-storage
laantungir/routstr-core:fix/refund-sweep-test-coverage
laantungir/routstr-core:fix/auto-topup-transaction-audit
laantungir/routstr-core:fix/retry-cashu-storage-idempotent-index
laantungir/routstr-core:fix/admin-withdraw-transaction-audit
laantungir/routstr-core:fix/auto-topup-transaction-recovery
laantungir/routstr-core:fix/admin-withdraw-audit
laantungir/routstr-core:fix/retry-cashu-transaction-storage
laantungir/routstr-core:fix/cost-calculation-breakdown
laantungir/routstr-core:token-storage-and-rate-limit
laantungir/routstr-core:fix-too-low-request-costs
laantungir/routstr-core:fix/provider-scoped-model-overrides
laantungir/routstr-core:enforce-out-token-creation
laantungir/routstr-core:fix-payout
laantungir/routstr-core:remove-require-parameters
laantungir/routstr-core:fix/security-pip-deps
laantungir/routstr-core:update-lock-file
laantungir/routstr-core:pending-request-refund-code
laantungir/routstr-core:fix/refund-race-condition
laantungir/routstr-core:token-error-code
laantungir/routstr-core:bump-version
laantungir/routstr-core:fix/cache-pricing-ui
laantungir/routstr-core:fix/refund-truly-empty-responses
laantungir/routstr-core:refactor-pr575-review
laantungir/routstr-core:add-provider-indentifier
laantungir/routstr-core:sentrystr
laantungir/routstr-core:fix-deepseek-calculation
laantungir/routstr-core:fix/security-npm-deps
laantungir/routstr-core:feat-prune-dead-api-keys
laantungir/routstr-core:fix-reservation-overrun-charge
laantungir/routstr-core:tool-support
laantungir/routstr-core:fix-ratelimit-upstream-error-handling
laantungir/routstr-core:fix-streaming-issue
laantungir/routstr-core:fix/refund-idempotency-durable
laantungir/routstr-core:fix-deepseek-cache-pricing
laantungir/routstr-core:fix-provider-models-view
laantungir/routstr-core:display-balance-correctly
laantungir/routstr-core:caching
laantungir/routstr-core:price-estimation-deepseek
laantungir/routstr-core:deepseek-cache-fix
laantungir/routstr-core:rollback-token-generation-when-request-failed
laantungir/routstr-core:fix/cached-token-overcharge
laantungir/routstr-core:fix-reservation
laantungir/routstr-core:fix-reset-reserve-balance
laantungir/routstr-core:fix-parent-key-leak-to-child-key
laantungir/routstr-core:secure-test-endpoint
laantungir/routstr-core:pr-reactive-correction
laantungir/routstr-core:pr-sse-parser
laantungir/routstr-core:ss-refactoring-multi-providers
laantungir/routstr-core:fix-model-provider-field-response
laantungir/routstr-core:prevent-zero-balance-token
laantungir/routstr-core:add-created-date-to-api-key
laantungir/routstr-core:sse-buffer-refactor
laantungir/routstr-core:wrap-long-log-info
laantungir/routstr-core:test-refund-endpoint-removal
laantungir/routstr-core:add-git-dep
laantungir/routstr-core:fix-compose
laantungir/routstr-core:remove-secp256-dep
laantungir/routstr-core:rip-08-lightning-invoice
laantungir/routstr-core:fix-balance-info
laantungir/routstr-core:tee-fixes
laantungir/routstr-core:selinux-podman-fix
laantungir/routstr-core:fix-value-not-set-issue
laantungir/routstr-core:add-provider-field-to-response
laantungir/routstr-core:sidebar-display-logo
laantungir/routstr-core:enforce-provider-fee-calculation
laantungir/routstr-core:display-correct-version
laantungir/routstr-core:display-official-version
laantungir/routstr-core:reduce-verbose-logs
laantungir/routstr-core:fix-provider-forwarding-upstream
laantungir/routstr-core:fix-swapping
laantungir/routstr-core:do-not-create-empty-token
laantungir/routstr-core:fix-docker-build
laantungir/routstr-core:emulate-claude-token-count
laantungir/routstr-core:enforce-loading-keysets
laantungir/routstr-core:payment-configuration
laantungir/routstr-core:production
laantungir/routstr-core:check-version-crrectly
laantungir/routstr-core:add-cache-token-to-calculation
laantungir/routstr-core:fix/refund-zero-token-responses
laantungir/routstr-core:match-on-forwarded-model-id-not-model-id
laantungir/routstr-core:use-full-image-for-ghci-
laantungir/routstr-core:litellm-integration-for-anthropic-messages-forwarding
laantungir/routstr-core:more-logging-cleanup
laantungir/routstr-core:better-url-request-handling
laantungir/routstr-core:handle-urls-correctly
laantungir/routstr-core:display-running-node-version
laantungir/routstr-core:clean-up-logging
laantungir/routstr-core:litellm
laantungir/routstr-core:dynamic-prices
laantungir/routstr-core:missing-model-pricing
laantungir/routstr-core:admin-token
laantungir/routstr-core:model-refresh
laantungir/routstr-core:fix-field-label
laantungir/routstr-core:bump-release-version
laantungir/routstr-core:fix-revision
laantungir/routstr-core:add-dev-cut
laantungir/routstr-core:fix-concurent-refund-with-adding-token-history
laantungir/routstr-core:fix-response-error-forwarding
laantungir/routstr-core:add-detailed-response
laantungir/routstr-core:fix-test-interface-ui
laantungir/routstr-core:add-detailed-logging
laantungir/routstr-core:add-cost-usage-to-messages-endpoint
laantungir/routstr-core:fix-ppq-model-fetching
laantungir/routstr-core:fix-serializing-broken-chunks
laantungir/routstr-core:check-primary-mint
laantungir/routstr-core:response-id-should-be-set
laantungir/routstr-core:remove-hardcoded-fee
laantungir/routstr-core:apikey-transactions
laantungir/routstr-core:feature/update-deployment-docs
laantungir/routstr-core:price-calculation
laantungir/routstr-core:enforce-price-calculation
laantungir/routstr-core:improve-negative-balance-handling
laantungir/routstr-core:436-update-model-id
laantungir/routstr-core:add-model-id-to-validation-log
laantungir/routstr-core:437-clean-up-logging
laantungir/routstr-core:add-missing-sat-cost-in-x-cashu
laantungir/routstr-core:opencode-display-usage-correctly
laantungir/routstr-core:update-x-cashu-swept-default-to-one-week
laantungir/routstr-core:fix-usage-msat-pricing
laantungir/routstr-core:add-refund-success-log
laantungir/routstr-core:add-missing-messages-endpoint
laantungir/routstr-core:fix-open-claude-cost-calculation
laantungir/routstr-core:fix-reset-refund-while-reserved-balance-not-zero
laantungir/routstr-core:fix-display-api-key-infos
laantungir/routstr-core:simplify-x-cashu-refund
laantungir/routstr-core:otrta
laantungir/routstr-core:fix-x-cashu-message-endpoint
laantungir/routstr-core:fix/models-trailing-slash
laantungir/routstr-core:v0.4.1
laantungir/routstr-core:fix-fee-calculation-for-same-mint
laantungir/routstr-core:v0.4.0
laantungir/routstr-core:fix-linting-issue
laantungir/routstr-core:fix/ui-build-errors
laantungir/routstr-core:v0.4.0-analytics
laantungir/routstr-core:408-fix-swap
laantungir/routstr-core:allow-x-cashu-header
laantungir/routstr-core:cache-x-cashu-tokens
laantungir/routstr-core:enforce-cheapest-model-prices
laantungir/routstr-core:fix-model-name-forwarding
laantungir/routstr-core:add-missing-refund-button
laantungir/routstr-core:fix/routstr-provider-sats-balance
laantungir/routstr-core:fix-admin-routstr-balance-timeout
laantungir/routstr-core:fix/admin-routstr-balance-timeout
laantungir/routstr-core:v0.4.0-ui-update
laantungir/routstr-core:add-routstr-provider
laantungir/routstr-core:fix-cashu-migration-issue
laantungir/routstr-core:ui-update-v0.4.0
laantungir/routstr-core:fix-refund-token
laantungir/routstr-core:fix-negative-reserve
laantungir/routstr-core:fix/cashu-402-not-wrapped
laantungir/routstr-core:fix/skip-auth-preflight-balance
laantungir/routstr-core:split-all
laantungir/routstr-core:feature/zero-downtime-deploy
laantungir/routstr-core:add-cost-details
laantungir/routstr-core:add-cost-details-to-response
laantungir/routstr-core:fix-migration
laantungir/routstr-core:add-reverted-changes
laantungir/routstr-core:fixed-max-cost-discount-bug
laantungir/routstr-core:custom-models-fix
laantungir/routstr-core:child-key-details
laantungir/routstr-core:update-main-doc
laantungir/routstr-core:cors-fix-v0.4.0
laantungir/routstr-core:update-docs
laantungir/routstr-core:fix/azure-kimi-routing-v040-on-v0.4.0
laantungir/routstr-core:fix/azure-kimi-routing-v040
laantungir/routstr-core:fix-azure-deployments
laantungir/routstr-core:fix/azure-remote-model-filter-by-id-v040
laantungir/routstr-core:child-key-expiration
laantungir/routstr-core:v0.3.0
laantungir/routstr-core:fix-pyament-finalization
laantungir/routstr-core:refactor/mainpy-tasks-ui
laantungir/routstr-core:refactor/remove-unused-code
laantungir/routstr-core:refactor/remove-deprecated-admin-html
laantungir/routstr-core:refactor/nostr-discovery
laantungir/routstr-core:no-default-next-public-api-url
laantungir/routstr-core:prevent-payout-race-contition
laantungir/routstr-core:fix-recurring-payout-error
laantungir/routstr-core:missing-delete-button
laantungir/routstr-core:batch-override-models
laantungir/routstr-core:fix-provider-model-pricing
laantungir/routstr-core:fix-multiple-custom-models
laantungir/routstr-core:fix/multi-provider-base-url
laantungir/routstr-core:create-child-key-ui
laantungir/routstr-core:feat/preset-selector-override-modal
laantungir/routstr-core:tiny-docs-fixes
laantungir/routstr-core:fix-readme
laantungir/routstr-core:improved-docs
laantungir/routstr-core:opencode-integ
laantungir/routstr-core:308-multi-mint-topup-refunds
laantungir/routstr-core:provider-fallback
laantungir/routstr-core:reapply-merge-v0.2.2-on-main
laantungir/routstr-core:314-fix-timeout-error
laantungir/routstr-core:the-refactor
laantungir/routstr-core:debug-refund-bug
laantungir/routstr-core:claude-code
laantungir/routstr-core:introduce-child-key
laantungir/routstr-core:ignore-disabled-provider
laantungir/routstr-core:transform-parameters-and-model-ids
laantungir/routstr-core:optimize-price-fetching
laantungir/routstr-core:reset-reserved-balance-on-startup
laantungir/routstr-core:urgent-reserved-balance-fix
laantungir/routstr-core:admin-info
laantungir/routstr-core:update-ui-deps
laantungir/routstr-core:feat/testnut-mock-toggle
laantungir/routstr-core:rm-performance-tests
laantungir/routstr-core:fix-not-enough-inputs-to-melt
laantungir/routstr-core:provider-discovery-default
laantungir/routstr-core:fix-reserved-balance
laantungir/routstr-core:283-timeout
laantungir/routstr-core:282-better-filltering
laantungir/routstr-core:feature/fallback-ui
laantungir/routstr-core:address-warning
laantungir/routstr-core:274-do-not-charge-when-empty-content
laantungir/routstr-core:optimize-streaming-port
laantungir/routstr-core:v0.2.1
laantungir/routstr-core:openai-responses-api
laantungir/routstr-core:cursor-problems
laantungir/routstr-core:force-sats-pricing
laantungir/routstr-core:embedding-with-aliases
laantungir/routstr-core:examples
laantungir/routstr-core:filtered-models
laantungir/routstr-core:embeddings
laantungir/routstr-core:optimize-streaming
laantungir/routstr-core:added-response-api
laantungir/routstr-core:embeddings-integration
laantungir/routstr-core:completion-image-pricing
laantungir/routstr-core:update-cost-calculation
laantungir/routstr-core:cost-calculation
laantungir/routstr-core:mock-upstream-with-testnut-mint
laantungir/routstr-core:remove-flaky-wallet-tests
laantungir/routstr-core:refactor-remove-unused-functions
laantungir/routstr-core:lightning
laantungir/routstr-core:nostr-revenue-stats
laantungir/routstr-core:improve-console-logging
laantungir/routstr-core:model-fetch-issue
laantungir/routstr-core:rm-shaky
laantungir/routstr-core:c/isolate-core-refactor-to-new-branch-gemini-3-pro-preview-b1b7
laantungir/routstr-core:feature/dynamic-settings
laantungir/routstr-core:fix-reserved–balance-race-condition
laantungir/routstr-core:cursor/fix-invalid-token-decoding-error-claude-4.5-sonnet-thinking-6dba
laantungir/routstr-core:fix-display-when-no-model-exists
laantungir/routstr-core:cursor/recreate-branch-with-original-commits-gemini-3-pro-preview-bbe5
laantungir/routstr-core:cursor/recreate-branch-with-original-commits-gpt-5.1-codex-e620
laantungir/routstr-core:unified-logs-stats-proper
laantungir/routstr-core:unify-logs-stats-page
laantungir/routstr-core:cursor/unify-and-enhance-log-search-and-stats-dashboard-gpt-5.1-codex-high-d6f8
laantungir/routstr-core:cursor/fetch-and-fix-dependabot-security-alerts-gemini-3-pro-preview-ac57
laantungir/routstr-core:cursor/fetch-and-fix-dependabot-security-alerts-claude-4.5-sonnet-thinking-c71d
laantungir/routstr-core:unified-logs-and-usage-analytics
laantungir/routstr-core:feature/unified-logging
laantungir/routstr-core:feature/configurable-model-exclusions
laantungir/routstr-core:old-keys-refund-bugfix
laantungir/routstr-core:login-dark-mode
laantungir/routstr-core:node-landingpage-clean
laantungir/routstr-core:node-landingpage
laantungir/routstr-core:ppq-integration
laantungir/routstr-core:rm-cdk-python-binaries
laantungir/routstr-core:cursor/implement-comprehensive-analysis-from-test-suite-86de
laantungir/routstr-core:cursor/implement-comprehensive-analysis-from-test-suite-2e17
laantungir/routstr-core:cursor/implement-comprehensive-analysis-from-test-suite-0c3d
laantungir/routstr-core:cursor/implement-comprehensive-analysis-from-test-suite-757a
laantungir/routstr-core:cursor/add-usage-tracking-dashboard-and-apis-4835
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-df6e
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-82b5
laantungir/routstr-core:add-logs-page
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-a167
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-8c49
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-f120
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-6f04
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-cfdc
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-25a6
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-5b18
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-b341
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-03ff
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-da14
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-fc8b
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-efb9
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-77d0
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-1896
laantungir/routstr-core:cursor/add-usage-tracking-dashboard-and-apis-32d6
laantungir/routstr-core:cursor/onboarding-for-initial-setup-e54e
laantungir/routstr-core:cursor/onboarding-for-initial-setup-55f4
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-70dd
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-c360
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-2e0a
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-3a4f
laantungir/routstr-core:cursor/fetch-and-fix-dependabot-security-alerts-gpt-5.1-codex-high-14a0
laantungir/routstr-core:fix-calculate_usd_max_costs
laantungir/routstr-core:image-usage-calculation
laantungir/routstr-core:update-deps
laantungir/routstr-core:fix/remove-models-from-base-url-output
laantungir/routstr-core:fix-withdrawal-token-persistence
laantungir/routstr-core:fix-coinos-readablestream-error
laantungir/routstr-core:refresh-models
laantungir/routstr-core:mint-url-normalize
laantungir/routstr-core:dev
laantungir/routstr-core:fix-x-cashu-refund
laantungir/routstr-core:v0.4.6-e2ee
laantungir/routstr-core:v0.4.5-e2ee
laantungir/routstr-core:0.4.4
laantungir/routstr-core:v0.4.4.e2ee
laantungir/routstr-core:v0.4.3
laantungir/routstr-core:v0.4.2
laantungir/routstr-core:v0.3.0
laantungir/routstr-core:v0.2.2
laantungir/routstr-core:v0.2.1
laantungir/routstr-core:v0.2.0c
laantungir/routstr-core:v0.2.0
laantungir/routstr-core:v0.1.4
laantungir/routstr-core:v0.1.3
laantungir/routstr-core:v0.1.2
laantungir/routstr-core:v0.1.1
laantungir/routstr-core:v0.1
laantungir/routstr-core:v0.1.0
...
compare: laantungir/routstr-core:fix/zero-cost-fallback-billing
laantungir/routstr-core:fix/mint-rate-limit-and-fallback
laantungir/routstr-core:main
laantungir/routstr-core:add-migration-test
laantungir/routstr-core:fix/payout-safety-pool-lifecycle
laantungir/routstr-core:fix/combined-db-pool-exhaustion
laantungir/routstr-core:model-paths
laantungir/routstr-core:test/issue-639-forwarded-model-id
laantungir/routstr-core:fix/mint-with-revision-fix
laantungir/routstr-core:ppq-auto-topup
laantungir/routstr-core:re-apply-migration
laantungir/routstr-core:fix/xcashu-cost-breakdown-port
laantungir/routstr-core:fix/cashu-token-create-post
laantungir/routstr-core:fix/concurent-requests
laantungir/routstr-core:feat/vulnerability-tests
laantungir/routstr-core:fix/zero-cost-fallback-billing
laantungir/routstr-core:fix/xcashu-cost-breakdown
laantungir/routstr-core:fix/streaming-billing-finalization
laantungir/routstr-core:fix/cashu-reservation-recovery
laantungir/routstr-core:fix/fee-payout-crash-guard
laantungir/routstr-core:fix/propagate-cashu-storage-errors
laantungir/routstr-core:coverage-tests-pr-619
laantungir/routstr-core:fix/retry-cashu-storage-writes
laantungir/routstr-core:fix-overflowing-in-mobile
laantungir/routstr-core:ehbp-proxy-refactor
laantungir/routstr-core:fix/ppq-upstream-inference-cost
laantungir/routstr-core:pr-575-review-fixes
laantungir/routstr-core:refund-sweep-behavior-tests
laantungir/routstr-core:fix-mypy
laantungir/routstr-core:with-price-calculation
laantungir/routstr-core:fix/payout-timeout-reconciliation
laantungir/routstr-core:revert-600-fix/retry-cashu-transaction-storage
laantungir/routstr-core:fix/refund-sweep-test-coverage
laantungir/routstr-core:fix/auto-topup-transaction-audit
laantungir/routstr-core:fix/retry-cashu-storage-idempotent-index
laantungir/routstr-core:fix/admin-withdraw-transaction-audit
laantungir/routstr-core:fix/auto-topup-transaction-recovery
laantungir/routstr-core:fix/admin-withdraw-audit
laantungir/routstr-core:fix/retry-cashu-transaction-storage
laantungir/routstr-core:fix/cost-calculation-breakdown
laantungir/routstr-core:token-storage-and-rate-limit
laantungir/routstr-core:fix-too-low-request-costs
laantungir/routstr-core:fix/provider-scoped-model-overrides
laantungir/routstr-core:enforce-out-token-creation
laantungir/routstr-core:fix-payout
laantungir/routstr-core:remove-require-parameters
laantungir/routstr-core:fix/security-pip-deps
laantungir/routstr-core:update-lock-file
laantungir/routstr-core:pending-request-refund-code
laantungir/routstr-core:fix/refund-race-condition
laantungir/routstr-core:token-error-code
laantungir/routstr-core:bump-version
laantungir/routstr-core:fix/cache-pricing-ui
laantungir/routstr-core:fix/refund-truly-empty-responses
laantungir/routstr-core:refactor-pr575-review
laantungir/routstr-core:add-provider-indentifier
laantungir/routstr-core:sentrystr
laantungir/routstr-core:fix-deepseek-calculation
laantungir/routstr-core:fix/security-npm-deps
laantungir/routstr-core:feat-prune-dead-api-keys
laantungir/routstr-core:fix-reservation-overrun-charge
laantungir/routstr-core:tool-support
laantungir/routstr-core:fix-ratelimit-upstream-error-handling
laantungir/routstr-core:fix-streaming-issue
laantungir/routstr-core:fix/refund-idempotency-durable
laantungir/routstr-core:fix-deepseek-cache-pricing
laantungir/routstr-core:fix-provider-models-view
laantungir/routstr-core:display-balance-correctly
laantungir/routstr-core:caching
laantungir/routstr-core:price-estimation-deepseek
laantungir/routstr-core:deepseek-cache-fix
laantungir/routstr-core:rollback-token-generation-when-request-failed
laantungir/routstr-core:fix/cached-token-overcharge
laantungir/routstr-core:fix-reservation
laantungir/routstr-core:fix-reset-reserve-balance
laantungir/routstr-core:fix-parent-key-leak-to-child-key
laantungir/routstr-core:secure-test-endpoint
laantungir/routstr-core:pr-reactive-correction
laantungir/routstr-core:pr-sse-parser
laantungir/routstr-core:ss-refactoring-multi-providers
laantungir/routstr-core:fix-model-provider-field-response
laantungir/routstr-core:prevent-zero-balance-token
laantungir/routstr-core:add-created-date-to-api-key
laantungir/routstr-core:sse-buffer-refactor
laantungir/routstr-core:wrap-long-log-info
laantungir/routstr-core:test-refund-endpoint-removal
laantungir/routstr-core:add-git-dep
laantungir/routstr-core:fix-compose
laantungir/routstr-core:remove-secp256-dep
laantungir/routstr-core:rip-08-lightning-invoice
laantungir/routstr-core:fix-balance-info
laantungir/routstr-core:tee-fixes
laantungir/routstr-core:selinux-podman-fix
laantungir/routstr-core:fix-value-not-set-issue
laantungir/routstr-core:add-provider-field-to-response
laantungir/routstr-core:sidebar-display-logo
laantungir/routstr-core:enforce-provider-fee-calculation
laantungir/routstr-core:display-correct-version
laantungir/routstr-core:display-official-version
laantungir/routstr-core:reduce-verbose-logs
laantungir/routstr-core:fix-provider-forwarding-upstream
laantungir/routstr-core:fix-swapping
laantungir/routstr-core:do-not-create-empty-token
laantungir/routstr-core:fix-docker-build
laantungir/routstr-core:emulate-claude-token-count
laantungir/routstr-core:enforce-loading-keysets
laantungir/routstr-core:payment-configuration
laantungir/routstr-core:production
laantungir/routstr-core:check-version-crrectly
laantungir/routstr-core:add-cache-token-to-calculation
laantungir/routstr-core:fix/refund-zero-token-responses
laantungir/routstr-core:match-on-forwarded-model-id-not-model-id
laantungir/routstr-core:use-full-image-for-ghci-
laantungir/routstr-core:litellm-integration-for-anthropic-messages-forwarding
laantungir/routstr-core:more-logging-cleanup
laantungir/routstr-core:better-url-request-handling
laantungir/routstr-core:handle-urls-correctly
laantungir/routstr-core:display-running-node-version
laantungir/routstr-core:clean-up-logging
laantungir/routstr-core:litellm
laantungir/routstr-core:dynamic-prices
laantungir/routstr-core:missing-model-pricing
laantungir/routstr-core:admin-token
laantungir/routstr-core:model-refresh
laantungir/routstr-core:fix-field-label
laantungir/routstr-core:bump-release-version
laantungir/routstr-core:fix-revision
laantungir/routstr-core:add-dev-cut
laantungir/routstr-core:fix-concurent-refund-with-adding-token-history
laantungir/routstr-core:fix-response-error-forwarding
laantungir/routstr-core:add-detailed-response
laantungir/routstr-core:fix-test-interface-ui
laantungir/routstr-core:add-detailed-logging
laantungir/routstr-core:add-cost-usage-to-messages-endpoint
laantungir/routstr-core:fix-ppq-model-fetching
laantungir/routstr-core:fix-serializing-broken-chunks
laantungir/routstr-core:check-primary-mint
laantungir/routstr-core:response-id-should-be-set
laantungir/routstr-core:remove-hardcoded-fee
laantungir/routstr-core:apikey-transactions
laantungir/routstr-core:feature/update-deployment-docs
laantungir/routstr-core:price-calculation
laantungir/routstr-core:enforce-price-calculation
laantungir/routstr-core:improve-negative-balance-handling
laantungir/routstr-core:436-update-model-id
laantungir/routstr-core:add-model-id-to-validation-log
laantungir/routstr-core:437-clean-up-logging
laantungir/routstr-core:add-missing-sat-cost-in-x-cashu
laantungir/routstr-core:opencode-display-usage-correctly
laantungir/routstr-core:update-x-cashu-swept-default-to-one-week
laantungir/routstr-core:fix-usage-msat-pricing
laantungir/routstr-core:add-refund-success-log
laantungir/routstr-core:add-missing-messages-endpoint
laantungir/routstr-core:fix-open-claude-cost-calculation
laantungir/routstr-core:fix-reset-refund-while-reserved-balance-not-zero
laantungir/routstr-core:fix-display-api-key-infos
laantungir/routstr-core:simplify-x-cashu-refund
laantungir/routstr-core:otrta
laantungir/routstr-core:fix-x-cashu-message-endpoint
laantungir/routstr-core:fix/models-trailing-slash
laantungir/routstr-core:v0.4.1
laantungir/routstr-core:fix-fee-calculation-for-same-mint
laantungir/routstr-core:v0.4.0
laantungir/routstr-core:fix-linting-issue
laantungir/routstr-core:fix/ui-build-errors
laantungir/routstr-core:v0.4.0-analytics
laantungir/routstr-core:408-fix-swap
laantungir/routstr-core:allow-x-cashu-header
laantungir/routstr-core:cache-x-cashu-tokens
laantungir/routstr-core:enforce-cheapest-model-prices
laantungir/routstr-core:fix-model-name-forwarding
laantungir/routstr-core:add-missing-refund-button
laantungir/routstr-core:fix/routstr-provider-sats-balance
laantungir/routstr-core:fix-admin-routstr-balance-timeout
laantungir/routstr-core:fix/admin-routstr-balance-timeout
laantungir/routstr-core:v0.4.0-ui-update
laantungir/routstr-core:add-routstr-provider
laantungir/routstr-core:fix-cashu-migration-issue
laantungir/routstr-core:ui-update-v0.4.0
laantungir/routstr-core:fix-refund-token
laantungir/routstr-core:fix-negative-reserve
laantungir/routstr-core:fix/cashu-402-not-wrapped
laantungir/routstr-core:fix/skip-auth-preflight-balance
laantungir/routstr-core:split-all
laantungir/routstr-core:feature/zero-downtime-deploy
laantungir/routstr-core:add-cost-details
laantungir/routstr-core:add-cost-details-to-response
laantungir/routstr-core:fix-migration
laantungir/routstr-core:add-reverted-changes
laantungir/routstr-core:fixed-max-cost-discount-bug
laantungir/routstr-core:custom-models-fix
laantungir/routstr-core:child-key-details
laantungir/routstr-core:update-main-doc
laantungir/routstr-core:cors-fix-v0.4.0
laantungir/routstr-core:update-docs
laantungir/routstr-core:fix/azure-kimi-routing-v040-on-v0.4.0
laantungir/routstr-core:fix/azure-kimi-routing-v040
laantungir/routstr-core:fix-azure-deployments
laantungir/routstr-core:fix/azure-remote-model-filter-by-id-v040
laantungir/routstr-core:child-key-expiration
laantungir/routstr-core:v0.3.0
laantungir/routstr-core:fix-pyament-finalization
laantungir/routstr-core:refactor/mainpy-tasks-ui
laantungir/routstr-core:refactor/remove-unused-code
laantungir/routstr-core:refactor/remove-deprecated-admin-html
laantungir/routstr-core:refactor/nostr-discovery
laantungir/routstr-core:no-default-next-public-api-url
laantungir/routstr-core:prevent-payout-race-contition
laantungir/routstr-core:fix-recurring-payout-error
laantungir/routstr-core:missing-delete-button
laantungir/routstr-core:batch-override-models
laantungir/routstr-core:fix-provider-model-pricing
laantungir/routstr-core:fix-multiple-custom-models
laantungir/routstr-core:fix/multi-provider-base-url
laantungir/routstr-core:create-child-key-ui
laantungir/routstr-core:feat/preset-selector-override-modal
laantungir/routstr-core:tiny-docs-fixes
laantungir/routstr-core:fix-readme
laantungir/routstr-core:improved-docs
laantungir/routstr-core:opencode-integ
laantungir/routstr-core:308-multi-mint-topup-refunds
laantungir/routstr-core:provider-fallback
laantungir/routstr-core:reapply-merge-v0.2.2-on-main
laantungir/routstr-core:314-fix-timeout-error
laantungir/routstr-core:the-refactor
laantungir/routstr-core:debug-refund-bug
laantungir/routstr-core:claude-code
laantungir/routstr-core:introduce-child-key
laantungir/routstr-core:ignore-disabled-provider
laantungir/routstr-core:transform-parameters-and-model-ids
laantungir/routstr-core:optimize-price-fetching
laantungir/routstr-core:reset-reserved-balance-on-startup
laantungir/routstr-core:urgent-reserved-balance-fix
laantungir/routstr-core:admin-info
laantungir/routstr-core:update-ui-deps
laantungir/routstr-core:feat/testnut-mock-toggle
laantungir/routstr-core:rm-performance-tests
laantungir/routstr-core:fix-not-enough-inputs-to-melt
laantungir/routstr-core:provider-discovery-default
laantungir/routstr-core:fix-reserved-balance
laantungir/routstr-core:283-timeout
laantungir/routstr-core:282-better-filltering
laantungir/routstr-core:feature/fallback-ui
laantungir/routstr-core:address-warning
laantungir/routstr-core:274-do-not-charge-when-empty-content
laantungir/routstr-core:optimize-streaming-port
laantungir/routstr-core:v0.2.1
laantungir/routstr-core:openai-responses-api
laantungir/routstr-core:cursor-problems
laantungir/routstr-core:force-sats-pricing
laantungir/routstr-core:embedding-with-aliases
laantungir/routstr-core:examples
laantungir/routstr-core:filtered-models
laantungir/routstr-core:embeddings
laantungir/routstr-core:optimize-streaming
laantungir/routstr-core:added-response-api
laantungir/routstr-core:embeddings-integration
laantungir/routstr-core:completion-image-pricing
laantungir/routstr-core:update-cost-calculation
laantungir/routstr-core:cost-calculation
laantungir/routstr-core:mock-upstream-with-testnut-mint
laantungir/routstr-core:remove-flaky-wallet-tests
laantungir/routstr-core:refactor-remove-unused-functions
laantungir/routstr-core:lightning
laantungir/routstr-core:nostr-revenue-stats
laantungir/routstr-core:improve-console-logging
laantungir/routstr-core:model-fetch-issue
laantungir/routstr-core:rm-shaky
laantungir/routstr-core:c/isolate-core-refactor-to-new-branch-gemini-3-pro-preview-b1b7
laantungir/routstr-core:feature/dynamic-settings
laantungir/routstr-core:fix-reserved–balance-race-condition
laantungir/routstr-core:cursor/fix-invalid-token-decoding-error-claude-4.5-sonnet-thinking-6dba
laantungir/routstr-core:fix-display-when-no-model-exists
laantungir/routstr-core:cursor/recreate-branch-with-original-commits-gemini-3-pro-preview-bbe5
laantungir/routstr-core:cursor/recreate-branch-with-original-commits-gpt-5.1-codex-e620
laantungir/routstr-core:unified-logs-stats-proper
laantungir/routstr-core:unify-logs-stats-page
laantungir/routstr-core:cursor/unify-and-enhance-log-search-and-stats-dashboard-gpt-5.1-codex-high-d6f8
laantungir/routstr-core:cursor/fetch-and-fix-dependabot-security-alerts-gemini-3-pro-preview-ac57
laantungir/routstr-core:cursor/fetch-and-fix-dependabot-security-alerts-claude-4.5-sonnet-thinking-c71d
laantungir/routstr-core:unified-logs-and-usage-analytics
laantungir/routstr-core:feature/unified-logging
laantungir/routstr-core:feature/configurable-model-exclusions
laantungir/routstr-core:old-keys-refund-bugfix
laantungir/routstr-core:login-dark-mode
laantungir/routstr-core:node-landingpage-clean
laantungir/routstr-core:node-landingpage
laantungir/routstr-core:ppq-integration
laantungir/routstr-core:rm-cdk-python-binaries
laantungir/routstr-core:cursor/implement-comprehensive-analysis-from-test-suite-86de
laantungir/routstr-core:cursor/implement-comprehensive-analysis-from-test-suite-2e17
laantungir/routstr-core:cursor/implement-comprehensive-analysis-from-test-suite-0c3d
laantungir/routstr-core:cursor/implement-comprehensive-analysis-from-test-suite-757a
laantungir/routstr-core:cursor/add-usage-tracking-dashboard-and-apis-4835
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-df6e
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-82b5
laantungir/routstr-core:add-logs-page
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-a167
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-8c49
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-f120
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-6f04
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-cfdc
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-25a6
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-5b18
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-b341
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-03ff
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-da14
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-fc8b
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-efb9
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-77d0
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-1896
laantungir/routstr-core:cursor/add-usage-tracking-dashboard-and-apis-32d6
laantungir/routstr-core:cursor/onboarding-for-initial-setup-e54e
laantungir/routstr-core:cursor/onboarding-for-initial-setup-55f4
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-70dd
laantungir/routstr-core:cursor/abstract-payment-methods-for-temporary-balance-c360
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-2e0a
laantungir/routstr-core:cursor/analyze-and-report-on-test-suite-effectiveness-3a4f
laantungir/routstr-core:cursor/fetch-and-fix-dependabot-security-alerts-gpt-5.1-codex-high-14a0
laantungir/routstr-core:fix-calculate_usd_max_costs
laantungir/routstr-core:image-usage-calculation
laantungir/routstr-core:update-deps
laantungir/routstr-core:fix/remove-models-from-base-url-output
laantungir/routstr-core:fix-withdrawal-token-persistence
laantungir/routstr-core:fix-coinos-readablestream-error
laantungir/routstr-core:refresh-models
laantungir/routstr-core:mint-url-normalize
laantungir/routstr-core:dev
laantungir/routstr-core:fix-x-cashu-refund
laantungir/routstr-core:v0.4.6-e2ee
laantungir/routstr-core:v0.4.5-e2ee
laantungir/routstr-core:0.4.4
laantungir/routstr-core:v0.4.4.e2ee
laantungir/routstr-core:v0.4.3
laantungir/routstr-core:v0.4.2
laantungir/routstr-core:v0.3.0
laantungir/routstr-core:v0.2.2
laantungir/routstr-core:v0.2.1
laantungir/routstr-core:v0.2.0c
laantungir/routstr-core:v0.2.0
laantungir/routstr-core:v0.1.4
laantungir/routstr-core:v0.1.3
laantungir/routstr-core:v0.1.2
laantungir/routstr-core:v0.1.1
laantungir/routstr-core:v0.1
laantungir/routstr-core:v0.1.0
12
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
a383db5ee8 | test: drop superseded billing regression tests | ||
|
|
6fcad8bcb9 | Merge main into fix/zero-cost-fallback-billing | ||
|
|
701c351ce7 |
fix: eliminate zero-cost billing fallback that gave free inference
When adjust_payment_for_tokens raised during a streaming finalize, the code hardcoded total_msats=0 — giving users free inference and leaking the reserved balance (never released). This was the most critical billing bug still live on main. Changes: - Add _safe_finalize_billing helper that logs at CRITICAL, releases the reserved_balance (atomic clamp-to-zero pattern matching auth.py), and returns a non-zero cost dict using the reserved max_cost as best-effort - Replace all 6 zero-cost fallback sites in base.py: - handle_streaming_chat_completion main finalize - handle_streaming_chat_completion finalize_db_only - handle_streaming_chat_completion finalize_without_usage - handle_streaming_messages_completion main finalize - handle_streaming_messages_completion finalize_db_only - handle_streaming_messages_completion finalize_without_usage - Narrow except clauses from catch-all Exception to specific types (SQLAlchemyError, UpstreamError, OSError) so transient DB hiccups no longer silently result in free service - Log at CRITICAL (was ERROR) so operators are alerted to money leaks - Add 9 functional tests in test_zero_cost_fallback_fix.py covering: non-zero cost return, CRITICAL logging, reserved balance release, child key release, release failure handling, narrow exception types All 5 existing RED tests in test_zero_cost_fallback.py now pass. Full suite: 975 passed, 13 skipped, 0 failures. |
||
|
|
7481ebd8cd | Merge PR #622: fix: retry critical Cashu storage writes | ||
|
|
7be1db8fd9 | Merge PR #621: fix: propagate Cashu storage errors | ||
|
|
4a4443f98f | Merge PR #620: fix: guard fee payouts against crash double-payments | ||
|
|
fecf5b27b8 |
Merge PR #619: test: vulnerability-reproducing RED tests + coverage
# Conflicts: # .gitignore # tests/unit/test_coverage_admin.py # tests/unit/test_coverage_base2.py # tests/unit/test_coverage_payment_helpers.py # tests/unit/test_wallet_money_paths.py |
||
|
|
59bcc3cbbf |
test: add 17 base.py coverage tests (41%→42%)
Tests for previously untested methods: - _extract_upstream_error_message (5 tests): JSON error, text error, empty body - on_upstream_error_redirect (2 tests): 402, 429 status codes - _fold_cache_into_input_tokens (2 tests): no cache, preserves total - get_cached_models / get_cached_model_by_id (2 tests) - get_x_cashu_cost (2 tests): with/without usage data - get_balance / create_account / refresh_models_cache / fetch_models (4 tests) ruff: clean, mypy: clean, 884 pass, 10 RED, 14 skip |
||
|
|
25f75643c2 |
test: add wallet money-path tests, strengthen billing RED tests
- New test_wallet_money_paths.py (10 tests): is_mint_connection_error, classify_redemption_error, store_cashu_transaction success path, get_balance, periodic task structure verification - Fixed test_messages_streaming_no_silent_billing_failure: was (always pass), now properly asserts the silent pass pattern must NOT exist - ruff: all clean, mypy: all clean 10 RED failures (correct), 867 pass, 14 skip |
||
|
|
c68c1936d3 | chore: fix ruff lint issues (29 fixes, 0 remaining) | ||
|
|
49d285571e |
test: rewrite vulnerability tests as RED (assert correct behavior)
Rewrite vulnerability-documenting tests to assert CORRECT behavior so they FAIL against current buggy main. These are TRUE TDD RED tests. RED tests (10 failures — correct, these document live bugs): - test_store_cashu_raises_on_db_failure (DB errors must propagate) - test_retry_wrapper_exists (store_cashu_transaction_with_retry must exist) - test_emergency_refund_no_try_except_pass (must not silently lose tokens) - test_fee_payout_has_crash_guard (must have lock before pay) - test_billing_error_must_not_hardcode_zero_cost (must not give free service) - test_billing_error_must_release_reserved_balance (stuck funds) - test_billing_error_catch_is_too_broad (narrow exception type) - test_billing_error_must_log_critical (CRITICAL not ERROR) New coverage tests (45 pass, zero regressions): - test_coverage_base.py (17 tests): preparers, builders, injectors - test_coverage_admin.py (11 tests): withdraw validation, slugs, auth - test_coverage_proxy.py (13 tests): JSON parsing, model extraction Coverage gains: - middleware.py: 38% → 90% - helpers.py: 52% → 60% - proxy.py: 47% → 51% - admin.py: 35% → 36% Test suite: 857 pass, 10 RED failures, 14 skipped (zero regressions) |
||
|
|
eb108a4a5a |
test: add vulnerability-reproducing and coverage-filling tests
Adds 40 new tests across 5 test files that document critical bugs and fill coverage gaps in the routstr-core codebase: - test_emergency_refund_integrity.py (5 tests): Documents the try/except/pass vulnerability in emergency refund paths (base.py:3643-3653 and base.py:4607-4617) where DB store failures silently lose minted tokens. Verifies store_cashu_transaction catches all exceptions and send_token mints before DB persistence. - test_zero_cost_fallback.py (6 tests): Documents the hardcoded zero-cost fallback (base.py:1012-1030) where exceptions from adjust_payment_for_tokens() result in total_msats=0, giving users free service with permanently reserved balances. - test_db_and_payout_resilience.py (8 tests): Confirms store_cashu_transaction_with_retry was reverted (#600→#604). Documents the fee payout pay-then-reset crash window and wallet caching mechanism. - test_coverage_middleware.py (11 tests): Fills middleware.py coverage gap (was 38%) — tests LoggingMiddleware, _should_log filters, request_id_context, and middleware exports. - test_coverage_payment_helpers.py (10 tests): Fills payment/helpers.py coverage gap (was 52%) — tests check_token_balance, estimate_tokens, create_error_response, and image token calculation helpers. All tests pass against current main (830 passed, 13 skipped). |