Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,10 @@ frontend/dist
# NOTE: `frontend/src` was previously listed here, which silently excluded the entire frontend
# source tree from new commits. The existing files stayed tracked only because they were added
# before the rule. Removed deliberately — see CHANGELOG.

# Playwright MCP session cache -- console logs + page snapshots regenerated on every
# browser-automation run, never project content.
.playwright-mcp/

# macOS Finder metadata.
.DS_Store
4 changes: 0 additions & 4 deletions .playwright-mcp/console-2026-09-06T16-25-54-975Z.log

This file was deleted.

1 change: 0 additions & 1 deletion .playwright-mcp/console-2026-09-06T16-26-36-860Z.log

This file was deleted.

3 changes: 0 additions & 3 deletions .playwright-mcp/console-2026-09-06T16-29-13-176Z.log

This file was deleted.

3 changes: 0 additions & 3 deletions .playwright-mcp/console-2026-09-06T16-30-37-945Z.log

This file was deleted.

1 change: 0 additions & 1 deletion .playwright-mcp/console-2026-09-06T16-44-21-999Z.log

This file was deleted.

26 changes: 0 additions & 26 deletions .playwright-mcp/page-2026-09-06T16-25-56-687Z.yml

This file was deleted.

21 changes: 0 additions & 21 deletions .playwright-mcp/page-2026-09-06T16-26-11-791Z.yml

This file was deleted.

29 changes: 0 additions & 29 deletions .playwright-mcp/page-2026-09-06T16-26-24-613Z.yml

This file was deleted.

2 changes: 0 additions & 2 deletions .playwright-mcp/page-2026-09-06T16-26-37-243Z.yml

This file was deleted.

33 changes: 0 additions & 33 deletions .playwright-mcp/page-2026-09-06T16-27-25-675Z.yml

This file was deleted.

18 changes: 0 additions & 18 deletions .playwright-mcp/page-2026-09-06T16-27-43-136Z.yml

This file was deleted.

2 changes: 0 additions & 2 deletions .playwright-mcp/page-2026-09-06T16-29-17-030Z.yml

This file was deleted.

2 changes: 0 additions & 2 deletions .playwright-mcp/page-2026-09-06T16-30-40-682Z.yml

This file was deleted.

47 changes: 0 additions & 47 deletions .playwright-mcp/page-2026-09-06T16-31-08-410Z.yml

This file was deleted.

2 changes: 0 additions & 2 deletions .playwright-mcp/page-2026-09-06T16-44-22-809Z.yml

This file was deleted.

50 changes: 0 additions & 50 deletions .playwright-mcp/page-2026-09-06T16-44-32-784Z.yml

This file was deleted.

9 changes: 8 additions & 1 deletion backend/app/services/identity/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,11 @@ def totp_provisioning_uri(secret: str, email: str) -> str:


def verify_totp(secret: str, code: str) -> bool:
return pyotp.TOTP(secret).verify(code)
"""`valid_window=1` accepts the current 30-second window plus one on either side (RFC 6238's
recommended tolerance for clock drift and network latency) -- the library's own default,
`valid_window=0`, has zero tolerance and rejects a genuinely correct code whenever the
login-then-verify round trip crosses a window boundary. Real network jitter can trigger that,
which is what surfaced as a nondeterministic CI failure in
`test_mfa_enroll_reset_rejects_the_wrong_password` (passed on the identical code an hour
earlier)."""
return pyotp.TOTP(secret).verify(code, valid_window=1)
4 changes: 2 additions & 2 deletions frontend/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ export default defineConfig({
server: {
proxy: {
'/api': {
target: 'http://localhost:5001',
target: 'http://localhost:5000',
changeOrigin: true,
},
'/health': {
target: 'http://localhost:5001',
target: 'http://localhost:5000',
changeOrigin: true,
},
},
Expand Down
Loading