Skip to content

fix/batch-2026-03-28 - #78

Merged
thomasluizon merged 1 commit into
mainfrom
fix/batch-2026-03-28
Mar 28, 2026
Merged

fix/batch-2026-03-28#78
thomasluizon merged 1 commit into
mainfrom
fix/batch-2026-03-28

Conversation

@thomasluizon

Copy link
Copy Markdown
Owner

Combined Changes

This PR bundles the following worktree branches:

  • feature/flexible-skip-logic (1 commit) - Flexible habit skip records log with Value=0 and reduces period target instead of advancing DueDate past window

Changes

  • Habit.SkipFlexible() creates a HabitLog with Value=0
  • HabitScheduleService subtracts skips from period target
  • GetHabitScheduleQuery returns adjusted flexibleTarget
  • Skip commands (single, bulk, AI chat) use new approach for flexible habits
  • Metrics/retrospective exclude skip logs from calculations
  • Fixed pre-existing bug in BulkSkipHabitsTool (used AdvanceDueDate instead of AdvanceDueDatePastWindow)

Test Plan

  • Skip a flexible habit (e.g. 3x/week), verify target reduces to 2
  • Skip all remaining, verify habit disappears from schedule
  • Log + skip in same window, verify counts are correct
  • Verify non-flexible habits still use AdvanceDueDate
  • Verify metrics exclude skip logs from streaks

🤖 Generated with Claude Code

… target

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@thomasluizon
thomasluizon merged commit 709c7d6 into main Mar 28, 2026
2 checks passed
@thomasluizon
thomasluizon deleted the fix/batch-2026-03-28 branch March 28, 2026 14:56
thomasluizon added a commit that referenced this pull request Jun 4, 2026
…on (#78)

Consolidate the duplicated 2x2 (interval x isBrazil) price-ID switches from
CreateCheckoutCommandHandler and GetPlansQueryHandler behind a single IPriceResolver
seam, so the mapping lives in exactly one place. Add fail-fast startup validation
(StripeSettings.ValidatePriceIds) wired into ValidateOrbitSecuritySettings so the API
refuses to boot when any of the four BRL/USD monthly/yearly price IDs is blank. Add unit
tests for the resolver and the validation, plus BR and non-BR integration tests covering
checkout price resolution and plans currency end-to-end with a faked IBillingService.

Refs thomasluizon/orbit-ui-mobile#78

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
thomasluizon added a commit that referenced this pull request Jun 4, 2026
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
thomasluizon added a commit that referenced this pull request Jun 5, 2026
…on (#78)

Consolidate the duplicated 2x2 (interval x isBrazil) price-ID switches from
CreateCheckoutCommandHandler and GetPlansQueryHandler behind a single IPriceResolver
seam, so the mapping lives in exactly one place. Add fail-fast startup validation
(StripeSettings.ValidatePriceIds) wired into ValidateOrbitSecuritySettings so the API
refuses to boot when any of the four BRL/USD monthly/yearly price IDs is blank. Add unit
tests for the resolver and the validation, plus BR and non-BR integration tests covering
checkout price resolution and plans currency end-to-end with a faked IBillingService.

Refs thomasluizon/orbit-ui-mobile#78

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
thomasluizon added a commit that referenced this pull request Jun 5, 2026
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
thomasluizon added a commit that referenced this pull request Jun 5, 2026
…on (#78) (#177)

* refactor(api): consolidate Stripe price resolution + startup validation (#78)

Consolidate the duplicated 2x2 (interval x isBrazil) price-ID switches from
CreateCheckoutCommandHandler and GetPlansQueryHandler behind a single IPriceResolver
seam, so the mapping lives in exactly one place. Add fail-fast startup validation
(StripeSettings.ValidatePriceIds) wired into ValidateOrbitSecuritySettings so the API
refuses to boot when any of the four BRL/USD monthly/yearly price IDs is blank. Add unit
tests for the resolver and the validation, plus BR and non-BR integration tests covering
checkout price resolution and plans currency end-to-end with a faked IBillingService.

Refs thomasluizon/orbit-ui-mobile#78

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(api): exempt local Development from Stripe price-ID validation (#78)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to 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