Commit Graph
29 Commits
Author SHA1 Message Date
tiennm99 e289d34da3 docs: translate README and references to Vietnamese
Translate README.md and docs/references.md to Vietnamese, matching the
language of the application's own interface.

Use the official terminology from Công văn 1239/BGDĐT 2025 for the three
question types instead of a literal rendering of the English.

Left unchanged: UI button labels quoted in the usage steps, every file
path and filename, external resource titles, and technical terms that are
normally kept in English.
2026-07-26 00:44:50 +07:00
tiennm99 938027e8ef chore: remove dependabot version-update config 2026-07-25 14:14:10 +07:00
tiennm99 2e53cec50e build(deps): bump next, react, tailwind, papaparse and pin patched transitive deps
- next 16.2.6 -> 16.2.9, eslint-config-next 16.2.6 -> 16.2.9
- react/react-dom -> 19.2.7, papaparse -> 5.5.4, tailwindcss/@tailwindcss/postcss -> 4.3.2
- add pnpm overrides for js-yaml (>=4.2.0), postcss (>=8.5.10), @babel/core (>=7.29.6 <8) to clear security advisories
- disable react-hooks/set-state-in-effect rule newly enforced by eslint-config-next 16.2.9
2026-07-17 17:57:23 +07:00
tiennm99andGitHub 5c91ac96f9 fix(lint): pin eslint ^9 for eslint-config-next@16 compat; replace removed next lint (#18)
- Downgrade eslint ^10 → ^9 (eslint-config-next@16 requires eslint >=9)
- Replace `next lint` script with `eslint .` (next lint removed in Next 16)
- Rewrite eslint.config.mjs to use native flat config API (defineConfig +
  eslint-config-next/core-web-vitals direct import) instead of FlatCompat
  bridge which triggers a circular-structure JSON crash with eslint-config-next@16
- Remove @eslint/eslintrc devDep (no longer needed with native flat config)
- Fix pnpm-workspace.yaml allowBuilds placeholders → true
2026-05-23 23:58:33 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fb93483ec4 build(deps-dev): bump eslint-config-next from 15.3.5 to 16.2.6 (#15)
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 15.3.5 to 16.2.6.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v16.2.6/packages/eslint-config-next)

---
updated-dependencies:
- dependency-name: eslint-config-next
  dependency-version: 16.2.6
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:22:33 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
68d00a3360 build(deps): bump next from 16.1.5 to 16.2.6 (#12)
Bumps [next](https://github.com/vercel/next.js) from 16.1.5 to 16.2.6.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.1.5...v16.2.6)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.6
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:19:13 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
8e5d3c3ff0 build(deps-dev): bump eslint from 9.39.4 to 10.4.0 (#16)
Bumps [eslint](https://github.com/eslint/eslint) from 9.39.4 to 10.4.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.39.4...v10.4.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.4.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:19:09 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e72f703634 build(deps): bump next in the minor-and-patch group across 1 directory (#14)
Bumps the minor-and-patch group with 1 update in the / directory: [next](https://github.com/vercel/next.js).


Updates `next` from 16.1.5 to 16.2.6
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v16.1.5...v16.2.6)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.2.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: minor-and-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-23 18:04:00 +07:00
tiennm99andGitHub d9b1e8e415 chore: drop inapplicable dependabot ecosystems (#17) 2026-05-23 11:08:57 +07:00
tiennm99andGitHub eb87b7f480 chore: add dependabot config (#13) 2026-05-23 10:49:05 +07:00
tiennm99 6666b1a228 chore: migrate from npm to pnpm
Replace package-lock.json with pnpm-lock.yaml, add packageManager field,
and convert README instructional npm commands to pnpm equivalents.
2026-05-13 10:20:21 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7e6f6f2bfb build(deps-dev): bump tar from 7.4.3 to 7.5.7 (#8)
Bumps [tar](https://github.com/isaacs/node-tar) from 7.4.3 to 7.5.7.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.4.3...v7.5.7)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:35:12 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c17a62c7b2 build(deps-dev): bump js-yaml from 4.1.0 to 4.1.1 (#2)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.0 to 4.1.1.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/4.1.0...4.1.1)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:29 +07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f6d6febf47 build(deps): bump next from 15.3.5 to 16.1.5 (#7)
Bumps [next](https://github.com/vercel/next.js) from 15.3.5 to 16.1.5.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/compare/v15.3.5...v16.1.5)

---
updated-dependencies:
- dependency-name: next
  dependency-version: 16.1.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-07 13:33:25 +07:00
tiennm99 e95ec82d2f rename sheet template, remove completed plans and stale reports 2026-04-16 17:06:04 +07:00
tiennm99 f98ee22f84 feat: improve OMR detection with contour-based sheet detection and robust fill measurement
- Replace corner marker detection with contour-based sheet boundary detection
  using findContours + approxPolyDP to find the largest rectangle
- Add corner marker detection as fallback (extracted to corner-marker-fallback.js)
- Switch bubble fill measurement from mean intensity to Otsu threshold + countNonZero
  for better robustness against uneven lighting
- Remove 2-degree skew threshold — always apply perspective correction when 4 corners found
- Calibrate SHEET_LAYOUT ratios to match real CV1239 template measurements
- Add references doc with OMR tutorial and repository links
2026-04-16 17:03:02 +07:00
tiennm99 e1fc43ba3a feat: add accuracy improvements, session management, analytics, and error handling
- Image resize (>2000px), adaptive fill threshold, blur/quality pre-check
- Manual answer correction UI with confidence highlighting and live scoring
- Session-based workflow with IndexedDB persistence and localStorage migration
- Per-question item analysis, score distribution histogram, print CSS
- CSV answer key import, session export/import (.chambai.json)
- Extract detection pipeline to standalone module, add error boundary
2026-04-13 18:23:25 +07:00
tiennm99 be8521f1ad feat: fix critical bugs, correct detection pipeline, and improve UX
- Fix localStorage race condition in UploadPage (setTimeout -> ref-based)
- Fix useState misused as useEffect in ImageThumbnail (memory leak)
- Add IndexedDB store for debug images (prevents localStorage overflow)
- Correct SHEET_LAYOUT coordinates to match CV1239/BGDDT 2025 answer sheet
- Move exam code detection from x:0.45 to x:0.82 (correct position)
- Rewrite Phan III for multi-character answers (sign, decimal, digits)
- Add perspective correction via warpPerspective (skew > 2deg)
- Lift shared state to page.jsx (eliminates localStorage sync bugs)
- Add navigation guards (disable Upload without config, Results without data)
- Add step-completion indicators (checkmarks) on navigation tabs
- Add keyboard navigation for Phan I (type A/B/C/D to auto-advance)
- Add paste-from-spreadsheet for Phan I answer keys
- Move Save/Reset to sticky bottom bar in ConfigurationPage
- Add class statistics panel (mean, median, distribution histogram)
- Translate debug visualization legend to Vietnamese
- Extract components: phan-i-answer-grid, student-detail-modal, statistics
2026-04-13 09:21:13 +07:00
tiennm99 87642bdea9 refactor: convert TypeScript to JavaScript with JSDoc type annotations
Remove TypeScript from the project and convert all .ts/.tsx files to
.js/.jsx. Add JSDoc @typedef and @param annotations to all lib functions
for type checking via jsconfig.json checkJs. Delete tsconfig.json and
src/types/ directory, replace with src/lib/types.js JSDoc definitions.
2026-04-12 23:35:33 +07:00
tiennm99 611a199945 plan: TypeScript to JavaScript conversion
Add implementation plan with 5 phases for removing TypeScript
and converting all .ts/.tsx files to .js/.jsx.
2026-04-12 22:53:13 +07:00
tiennm99 2df2906513 remove claude local settings from git tracking 2026-04-12 20:18:40 +07:00
tiennm99 93603581e5 refactor: modularize image processing and improve Vietnamese THPT answer sheet detection
- Split 1152-line ImageProcessor into 7 focused modules under src/lib/ and src/types/
- Fix bubble grid to match Vietnamese THPT layout (Công văn 1239/BGDĐT 2025): 8-digit student ID, 4-digit exam code, proportional section positioning
- Replace hardcoded pixel positions with relative positioning anchored to corner markers
- Add weighted scoring (Phần I: 0.25pts, Phần II: 0.25pts/sub-option with partial credit, Phần III: 0.5pts) with configurable weights
- Replace window global callback hack with useRef-based resolver in UploadPage
- Add image thumbnails, real progress bar, inline status messages (replacing alert())
- Add sortable/filterable results table with score color badges and search
- Extract shared types to eliminate 3x duplication across components
- Remove CLAHE/bilateralFilter (unavailable in opencv.js browser) for reliable preprocessing
2026-04-12 20:16:53 +07:00
tiennm99 8aa2084f82 refactor: use root folder instead 2025-07-10 21:31:13 +07:00
tiennm99 6060ab9b17 Improve bubble detection with confidence visualization
Enhanced the image preprocessing pipeline using CLAHE and bilateral filtering for better bubble detection. Updated the bubble fill confidence calculation to use Gaussian blur and variance checks, and lowered detection thresholds for improved sensitivity. Added visual confidence indicators and logging for debugging, and adjusted debug visualization to reflect confidence levels.
2025-07-08 23:41:41 +07:00
tiennm99 e497376bcc feat: debug image processing 2025-07-08 23:19:51 +07:00
tiennm99 3a47c9850a feat: update image processing 2025-07-08 22:38:10 +07:00
tiennm99 a01daea8d5 feat: update image processor logic 2025-07-08 20:53:13 +07:00
tiennm99 355a3a0b11 feat: init 2025-07-07 23:11:31 +07:00
Tien Nguyen MinhandGitHub ae3aac2edb Initial commit 2025-07-07 22:07:22 +07:00