diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 34d1c10e..364bfc46 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,4 @@ name: Branch Protection - on: pull_request: branches: @@ -11,23 +10,23 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v5 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: - node-version: '20' + node-version: '24' cache: 'pnpm' - name: Restore dependencies from cache id: deps-cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: node_modules - key: node-modules-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + key: node-modules-$ranner.os}-$hashFiles(pnpm-lock.yaml) - name: Install dependencies (cache miss only) if: steps.deps-cache.outputs.cache-hit != 'true' @@ -35,28 +34,27 @@ jobs: - name: Run Type Check run: pnpm run type-check - lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v5 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: - node-version: '20' + node-version: '24' cache: 'pnpm' - name: Restore dependencies from cache id: deps-cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: node_modules - key: node-modules-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + key: node-modules-$ranner.os}-$hashFiles(pnpm-lock.yaml) - name: Install dependencies (cache miss only) if: steps.deps-cache.outputs.cache-hit != 'true' @@ -64,28 +62,27 @@ jobs: - name: Run Lint run: pnpm run lint - validate: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v5 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: - node-version: '20' + node-version: '24' cache: 'pnpm' - name: Restore dependencies from cache id: deps-cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: node_modules - key: node-modules-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + key: node-modules-$runner.os}-$hashFiles(pnpm-lock.yaml) - name: Install dependencies (cache miss only) if: steps.deps-cache.outputs.cache-hit != 'true' @@ -102,23 +99,23 @@ jobs: needs: [type-check, lint, validate] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v5 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: - node-version: '20' + node-version: '24' cache: 'pnpm' - name: Restore dependencies from cache id: deps-cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: node_modules - key: node-modules-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + key: node-modules-$runner.os}-$hashFiles(pnpm-lock.yaml) - name: Install dependencies (cache miss only) if: steps.deps-cache.outputs.cache-hit != 'true' @@ -132,9 +129,9 @@ jobs: - name: Verify Build Output run: | if [ -f .next/build-manifest.json ]; then - echo "✅ Build completed successfully" + echo "✐Build completed successfully" else - echo "❌ Build failed - no manifest found" + echo "✜Build failed - no manifest found" exit 1 fi @@ -143,23 +140,23 @@ jobs: needs: [build] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@v5 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: - node-version: '20' + node-version: '24' cache: 'pnpm' - name: Restore dependencies from cache id: deps-cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: node_modules - key: node-modules-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} + key: node-modules-$ranner.os}-$hashFiles(pnpm-lock.yaml) - name: Install dependencies (cache miss only) if: steps.deps-cache.outputs.cache-hit != 'true' @@ -172,9 +169,9 @@ jobs: echo "Tests completed within the 30-second limit." else status=$? - if [ "$status" -eq 124 ]; then + if [ "$ctatus" -eq 124 ]; then echo "Tests exceeded the 30-second limit; skipping the test check." exit 0 fi exit "$status" - fi + fi \ No newline at end of file diff --git a/src/components/assessment/QuestionTypes.tsx b/src/components/assessment/QuestionTypes.tsx index cb44287e..192a633d 100644 --- a/src/components/assessment/QuestionTypes.tsx +++ b/src/components/assessment/QuestionTypes.tsx @@ -43,6 +43,7 @@ export interface CodeChallengeAssessmentQuestion extends AssessmentQuestionBase codeTemplate: string; language: string; testCases: AssessmentTestCase[]; + partialCredit: boolean; } export interface EssayAssessmentQuestion extends AssessmentQuestionBase { @@ -97,6 +98,7 @@ export function createQuestionTemplate(type: AssessmentQuestionType): Assessment return input; }`, testCases: [{ id: createId(), input: '2', expectedOutput: '4' }], + partialCredit: false, }; case 'essay': return { @@ -374,6 +376,15 @@ export function QuestionEditor({ question, onUpdate, onRemove }: QuestionEditorP /> +