diff --git a/.github/workflows/crowdsec-integration.yml b/.github/workflows/crowdsec-integration.yml index bc9ef2f4..6ea05b29 100644 --- a/.github/workflows/crowdsec-integration.yml +++ b/.github/workflows/crowdsec-integration.yml @@ -35,7 +35,7 @@ jobs: # Determine the correct image tag based on trigger context # For PRs: pr-{number}-{sha}, For branches: {sanitized-branch}-{sha} - name: Determine image tag - id: image + id: determine-tag env: EVENT: ${{ github.event.workflow_run.event }} REF: ${{ github.event.workflow_run.head_branch }} @@ -101,7 +101,7 @@ jobs: max_attempts: 3 retry_wait_seconds: 10 command: | - IMAGE_NAME="ghcr.io/${{ github.repository_owner }}/charon:${{ steps.image.outputs.tag }}" + IMAGE_NAME="ghcr.io/${{ github.repository_owner }}/charon:${{ steps.determine-tag.outputs.tag }}" echo "Pulling image: $IMAGE_NAME" docker pull "$IMAGE_NAME" docker tag "$IMAGE_NAME" charon:local @@ -113,12 +113,12 @@ jobs: if: steps.pull_image.outcome == 'failure' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SHA: ${{ steps.image.outputs.sha }} + SHA: ${{ steps.determine-tag.outputs.sha }} run: | echo "⚠️ Registry pull failed, falling back to artifact..." # Determine artifact name based on source type - if [[ "${{ steps.image.outputs.source_type }}" == "pr" ]]; then + if [[ "${{ steps.determine-tag.outputs.source_type }}" == "pr" ]]; then PR_NUM=$(echo '${{ toJson(github.event.workflow_run.pull_requests) }}' | jq -r '.[0].number') ARTIFACT_NAME="pr-image-${PR_NUM}" else @@ -142,7 +142,7 @@ jobs: # Validate image freshness by checking SHA label - name: Validate image SHA env: - SHA: ${{ steps.image.outputs.sha }} + SHA: ${{ steps.determine-tag.outputs.sha }} run: | LABEL_SHA=$(docker inspect charon:local --format '{{index .Config.Labels "org.opencontainers.image.revision"}}' | cut -c1-7) echo "Expected SHA: $SHA" diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index fb610835..36c21732 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -54,10 +54,6 @@ on: - firefox - webkit - all - image_tag: - description: 'Docker image tag to test (e.g., pr-123-abc1234, latest)' - required: false - type: string env: NODE_VERSION: '20' diff --git a/.version b/.version index 6b60281a..0ffcf198 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -v0.17.0 +v0.17.1 diff --git a/docs/issues/created/20260204-modal_dropdown_handoff_contract.md b/docs/issues/created/20260204-modal_dropdown_handoff_contract.md index b168345a..7112a565 100644 --- a/docs/issues/created/20260204-modal_dropdown_handoff_contract.md +++ b/docs/issues/created/20260204-modal_dropdown_handoff_contract.md @@ -1,8 +1,8 @@ # Modal Dropdown Fix - Local Environment Handoff Contract -**Date**: 2026-02-04 -**Status**: Implementation Complete - Testing Required -**Environment**: Codespace → Local Development Environment +**Date**: 2026-02-04 +**Status**: Implementation Complete - Testing Required +**Environment**: Codespace → Local Development Environment --- @@ -12,7 +12,7 @@ All 7 P0 critical modal components have been updated with the 3-layer modal architecture: 1. ✅ **ProxyHostForm.tsx** - ACL selector, Security Headers dropdowns fixed -2. ✅ **UsersPage.tsx** - InviteUserModal role/permission dropdowns fixed +2. ✅ **UsersPage.tsx** - InviteUserModal role/permission dropdowns fixed 3. ✅ **UsersPage.tsx** - EditPermissionsModal dropdowns fixed 4. ✅ **Uptime.tsx** - CreateMonitorModal & EditMonitorModal type dropdowns fixed 5. ✅ **RemoteServerForm.tsx** - Provider dropdown fixed @@ -74,7 +74,7 @@ docker-compose -f .docker/compose/docker-compose.yml up -d # Navigate to: http://localhost:8080/proxy-hosts # 1. Click "Add Proxy Host" # 2. Test ACL dropdown - should open and allow selection -# 3. Test Security Headers dropdown - should open and allow selection +# 3. Test Security Headers dropdown - should open and allow selection # 4. Fill form and submit - should work normally # 5. Edit existing proxy host - repeat dropdown tests ``` @@ -82,7 +82,7 @@ docker-compose -f .docker/compose/docker-compose.yml up -d **B. User Management Modals** ```bash # Navigate to: http://localhost:8080/users -# 1. Click "Invite User" +# 1. Click "Invite User" # 2. Test Role dropdown (User/Admin) - should work # 3. Test Permission Mode dropdown - should work # 4. Click existing user "Edit Permissions" @@ -94,7 +94,7 @@ docker-compose -f .docker/compose/docker-compose.yml up -d # Navigate to: http://localhost:8080/uptime # 1. Click "Create Monitor" # 2. Test Monitor Type dropdown (HTTP/TCP) - should work -# 3. Save monitor, then click "Configure" +# 3. Save monitor, then click "Configure" # 4. Test Monitor Type dropdown in edit mode - should work ``` @@ -130,7 +130,7 @@ npx playwright test --grep "dropdown|select|acl|security.headers" --project=chro ```bash # Test in each browser for compatibility npx playwright test tests/integration/proxy-acl-integration.spec.ts --project=chromium -npx playwright test tests/integration/proxy-acl-integration.spec.ts --project=firefox +npx playwright test tests/integration/proxy-acl-integration.spec.ts --project=firefox npx playwright test tests/integration/proxy-acl-integration.spec.ts --project=webkit ``` @@ -152,7 +152,7 @@ npx playwright test tests/integration/proxy-acl-integration.spec.ts --project=we # Frontend type check cd frontend && npm run type-check -# Backend tests (should be unaffected) +# Backend tests (should be unaffected) cd backend && go test ./... # Full test suite @@ -217,7 +217,7 @@ native select dropdown menus from being blocked by modal overlays. Components fixed: - ProxyHostForm: ACL selector and Security Headers dropdowns -- User management: Role and permission mode selection +- User management: Role and permission mode selection - Uptime monitors: Monitor type selection (HTTP/TCP) - Remote servers: Provider selection dropdown - CrowdSec: IP ban duration selection @@ -238,7 +238,7 @@ the UI interface. ### Definition of Done - [ ] Manual testing completed for all 7 components - [ ] All E2E tests passing -- [ ] Cross-browser verification complete +- [ ] Cross-browser verification complete - [ ] No console errors or TypeScript issues - [ ] Code review approved (if applicable) - [ ] Commit message follows conventional format @@ -254,4 +254,4 @@ the UI interface. All implementation work is complete. The modal dropdown z-index fix has been applied comprehensively across all 7 affected components. Testing in the local Docker environment will validate the fix works as designed. -**Next Actions**: Move to local environment, run the testing checklist above, and merge when all success criteria are met. \ No newline at end of file +**Next Actions**: Move to local environment, run the testing checklist above, and merge when all success criteria are met. diff --git a/docs/plans/comprehensive_modal_fix_spec.md b/docs/plans/comprehensive_modal_fix_spec.md index 1c822658..10461180 100644 --- a/docs/plans/comprehensive_modal_fix_spec.md +++ b/docs/plans/comprehensive_modal_fix_spec.md @@ -1,9 +1,9 @@ # Comprehensive Modal Z-Index Fix Plan -**Date**: 2026-02-04 -**Issue**: Widespread modal overlay z-index pattern breaking dropdown interactions -**Scope**: 11 modal components across the application -**Fix Strategy**: Unified 3-layer modal restructuring +**Date**: 2026-02-04 +**Issue**: Widespread modal overlay z-index pattern breaking dropdown interactions +**Scope**: 11 modal components across the application +**Fix Strategy**: Unified 3-layer modal restructuring --- @@ -73,10 +73,10 @@ With the 3-layer pattern: <> {/* Layer 1: Background overlay (z-40) */}
- + {/* Layer 2: Form container (z-50, pointer-events-none) */}