Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
8654838
Add email verification for user registration
vieiralucas Jan 25, 2026
87eb831
Fix clippy warnings for conditional code paths
vieiralucas Jan 25, 2026
2ebaf32
Fix clippy warnings in e2e-tests module
vieiralucas Jan 25, 2026
38931ed
Fix unused imports in e2e-tests
vieiralucas Jan 25, 2026
1ef185e
Fix test imports to use super:: path
vieiralucas Jan 25, 2026
0a859cf
Make get_verification_code_from_email async to avoid nested runtime
vieiralucas Jan 25, 2026
933803a
Run cargo fmt
vieiralucas Jan 25, 2026
6c7d8e1
Fix web app compilation errors: clone values and fix type conversion
vieiralucas Jan 25, 2026
0cd5a81
Address Cubic code review feedback for email verification
vieiralucas Jan 25, 2026
2c58773
Ignore root-level .sqlx directory in gitignore
vieiralucas Jan 25, 2026
dabc537
Fix mark_user_verified test to use unverified user flow
vieiralucas Jan 25, 2026
8e84b90
Remove session artifacts
vieiralucas Jan 25, 2026
ede0db6
Remove unused mailin-embedded dependency
vieiralucas Jan 25, 2026
97191b0
Fix invite token placeholder to match test expectations
vieiralucas Jan 25, 2026
0de34d3
Add DATABASE_URL to web-e2e test environment
vieiralucas Jan 25, 2026
ae4970e
Increase operator sync timeout in e2e test to debug CI failure
vieiralucas Jan 25, 2026
210b3b9
Fix web-e2e tests for email verification flow
vieiralucas Jan 25, 2026
c7300b6
Fix join-verification tests with ambiguous locators
vieiralucas Jan 25, 2026
d7832a4
Address Cubic re-review feedback
vieiralucas Jan 25, 2026
2f4251f
Fix minor issues from Cubic review
vieiralucas Jan 25, 2026
2a3c4c9
Address Cubic re-review feedback (round 4)
vieiralucas Jan 25, 2026
7aafacf
Update CLAUDE.md with detailed Cubic review workflow
vieiralucas Jan 25, 2026
ebd5bf7
Fix auth.rs email-before-store and verification-setup grpcWebUrl
vieiralucas Jan 25, 2026
f7eb1f9
Hash verification codes with Argon2id for zero-knowledge storage
vieiralucas Jan 25, 2026
d9e309a
Fix Cubic review issues: update comments and error handling
vieiralucas Jan 25, 2026
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
11 changes: 11 additions & 0 deletions .github/workflows/e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ jobs:
ports:
- 5433:5432

# MailHog - Mock SMTP server for email verification tests
mailhog:
image: mailhog/mailhog:v1.0.1
ports:
- 1025:1025 # SMTP
- 8025:8025 # Web UI / API

steps:
- uses: actions/checkout@v4

Expand Down Expand Up @@ -66,3 +73,7 @@ jobs:
cargo test --package e2e-tests --locked
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5433/postgres
# MailHog configuration for email verification tests
MAILHOG_HOST: 127.0.0.1
MAILHOG_SMTP_PORT: 1025
MAILHOG_API_PORT: 8025
31 changes: 31 additions & 0 deletions .github/workflows/web-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,24 @@ jobs:
cd apps/zopp-web
npx playwright install chromium --with-deps

- name: Start MailHog
run: |
docker run -d \
--name mailhog \
--network host \
mailhog/mailhog:v1.0.1
# Wait for MailHog to be ready
for i in {1..30}; do
if curl -sf http://localhost:8025/api/v2/messages > /dev/null 2>&1; then
echo "MailHog is ready"
exit 0
fi
echo "Waiting for MailHog... ($i/30)"
sleep 1
done
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
echo "ERROR: MailHog failed to become ready"
exit 1

- name: Start zopp-server
run: |
./target/debug/zopp-server serve --health-addr 0.0.0.0:8081 &
Expand All @@ -70,6 +88,14 @@ jobs:
echo "Waiting for server... ($i/30)"
sleep 1
done
env:
# Email verification settings for MailHog
ZOPP_EMAIL_VERIFICATION_REQUIRED: "true"
ZOPP_EMAIL_PROVIDER: smtp
SMTP_HOST: 127.0.0.1
SMTP_PORT: "1025"
SMTP_USE_TLS: "false"
ZOPP_EMAIL_FROM: test@zopp.local

- name: Create Envoy config for CI
run: |
Expand Down Expand Up @@ -99,6 +125,10 @@ jobs:
npx playwright test --reporter=list
env:
CI: true
# MailHog API for verification code retrieval
MAILHOG_API_URL: http://localhost:8025/api/v2
# Database URL for creating test invites
DATABASE_URL: sqlite://${{ github.workspace }}/zopp.db

- name: Upload test results
uses: actions/upload-artifact@v4
Expand All @@ -112,4 +142,5 @@ jobs:
if: always()
run: |
docker stop envoy || true
docker stop mailhog || true
pkill -f zopp-server || true
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ apps/zopp-web/test-results/
*.db-*

# .sqlx/ directories are committed per-backend for offline compile checks
# Ignore root-level .sqlx (created by workspace-wide sqlx prepare, should not be committed)
/.sqlx

# Documentation build output
docs/build/
Expand Down
40 changes: 32 additions & 8 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -287,12 +287,32 @@ When creating PRs and working through CI:
1. **Create the PR**: Use `gh pr create` with a clear title and description
2. **Monitor CI**: Watch for CI check results
- **Ignore docker builds** - they are slow and not required for most PRs
- Focus on: clippy, tests, fmt checks
3. **Wait for Cubic review**: Cubic is an AI code reviewer that runs automatically
- Address any comments Cubic makes
- Iterate until Cubic has no further comments
- Re-run CI after making changes
4. **Repeat until green**: Keep iterating until CI passes and Cubic is satisfied
- Focus on: clippy, tests, fmt checks, E2E tests, web-e2e tests
3. **Work with Cubic reviews**: Cubic is an AI code reviewer that does two types of reviews:
- **Incremental reviews**: Automatically triggered on each push, reviews only changed files
- **Full reviews**: Triggered by tagging `@cubic-dev-ai` in a PR comment

### Cubic Review Workflow

1. **Initial full review**: When PR is created, Cubic does a full review of all changes
2. **Address issues**: Fix any issues Cubic identifies, commit and push
3. **Incremental review**: Cubic automatically reviews only the new changes (not the whole PR)
- Check the CI check output: "AI review completed with X review. Y issues found across Z files (changes from recent commits)"
- If issues found in the incremental review, fix them and push again
- If 0 issues found, your fixes are good - but this only covers the recent changes
4. **Request full re-review**: Once incremental reviews pass, comment `@cubic-dev-ai Please do a full re-review of the PR.`
5. **Wait for full review**: The full re-review examines the entire PR again and may find new issues
6. **Iterate**: Repeat steps 2-5 until full review passes with 0 issues or only acceptable minor issues
7. **Merge**: Only merge after the full re-review completes successfully - never merge while it's pending

### Reading Cubic Results

- **CI Check**: Look at the "cubic-dev-ai / cubic · AI code reviewer" check for quick status
- **Review comments**: Cubic posts detailed issues as PR review comments
- **Addressed marker**: When you fix an issue, Cubic edits its comment to show "✅ Addressed in <commit>" - check if comments are marked as addressed rather than waiting for a new review
- **Outdated comments**: GitHub may mark comments as "outdated" if the code changed - these can often be ignored
- **Confidence score**: Higher is better (5/5 means high confidence the code is good)
- **Priority levels**: P1 (critical), P2 (important), P3 (minor) - always fix P1/P2

Example workflow:
```bash
Expand All @@ -308,8 +328,12 @@ gh pr create --title "Add my feature" --body "Description..."
# Monitor CI (ignore docker builds)
gh pr checks

# If Cubic comments, address them and push again
# Repeat until all checks pass
# Check Cubic's initial review, fix issues, push
# Cubic does incremental review automatically
# When incremental shows 0 issues, request full re-review:
gh pr comment --body "@cubic-dev-ai Please do a full re-review of the PR."

# Repeat until all checks pass and Cubic is satisfied
```

## Important Notes
Expand Down
Loading
Loading