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
/>
+