- 06 Sep, 2026 4 commits
-
-
Phạm Quang Bảo authored
- Replace custom ImageNext component with next/image across all home page components - Add img.youtube.com and news.vccihcm.vn to Next.js image remote patterns - Implement onError fallback handlers for Image components - Update border-radius values from 18-28px to consistent 14-16px across components - Remove unused CardNews and CardEvent components - Replace "Xem tất cả" text links with ChevronRight icons - Adjust spacing and alignment in section headers (items-start →
-
Phạm Quang Bảo authored
- Remove sharp@0.34.5 dependency and related lock file entries - Delete /api/seo-image endpoint for server-side image processing - Replace toSeoImageUrl with toAbsoluteSeoImageUrl for direct absolute URL resolution - Remove host validation and fallback logic from SEO image handling - Simplify buildDynamicPostHref to only normalize path without query parameters - Remove id and categoryId query parameters from article URLs in
-
Phạm Quang Bảo authored
- Add sharp@0.34.5 dependency for server-side image processing - Create /api/seo-image endpoint to resize og:images to 1200x630 JPEG - Replace toOptimizedSeoImageUrl with toSeoImageUrl routing through custom endpoint - Implement host validation to prevent open proxy abuse (allow vcci-hcm.org.vn, vccihcm.vn) - Add automatic fallback to /thumbnail.png when source image fails - Set aggressive caching headers (max-age=86400, s-maxage=2592000) - Support both absolute
-
Phạm Quang Bảo authored
- Replace getRandomFallbackImage() with getFallbackImage(index) for deterministic fallback images - Reduce advertisement count from 3 to 2 in News section - Reduce sidebar advertisements from 5 to 3 in ArticleDetailPage - Add image validation and optimization for SEO metadata - Implement toOptimizedSeoImageUrl() to serve optimized images via Next.js image optimizer - Add isRemoteImageValid() to verify remote image
-
- 04 Sep, 2026 13 commits
-
-
Phạm Quang Bảo authored
-
Phạm Quang Bảo authored
-
Phạm Quang Bảo authored
Refactor/generate api and fix fallback img See merge request !116
-
Phạm Quang Bảo authored
Merge branch 'refactor/generate_api_and_fix_fallback_img' of https://gitlab.meu-solutions.com/vanhoangit/vcci-news into refactor/generate_api_and_fix_fallback_img
-
Phạm Quang Bảo authored
-
Phạm Quang Bảo authored
fix build See merge request !114
-
Phạm Quang Bảo authored
# Conflicts: # .docker/build.Dockerfile
-
Phạm Quang Bảo authored
-
Phạm Quang Bảo authored
a See merge request !113
-
Phạm Quang Bảo authored
-
Phạm Quang Bảo authored
# Conflicts: # orval.config.ts
-
Phạm Quang Bảo authored
-
- 28 Aug, 2026 8 commits
- 25 Aug, 2026 5 commits
-
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
Jodit sends files as files[0], files[1], ... (from filesVariableName(i) returning `files[${i}]`), not files[] as previously assumed. The buildData callback only matched "files[]" so the actual file field was passed through as-is, triggering MulterError: Unexpected field because backend multer.single("file") only accepts a field named "file". Fix buildData to: - Match files[0], files[1], ... pattern and convert first file to "file" - Drop extra files (multer.single only accepts one) - Drop Jodit-internal fields (source, extension, mimetype) backend ignores Generated with [Devin](https://devin.ai) Co-Authored-By:Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
-
- 24 Aug, 2026 6 commits
-
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
The Jodit uploader was posting to /files but the backend route is /api/v1.0/file/upload (auto-mounted from controllers/api/v1.0/file/ upload.ts). This caused a 404 when uploading images from the editor. Generated with [Devin](https://devin.ai) Co-Authored-By:
Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
Use JoditEditor's editorRef callback to attach the native paste listener to the correct HTMLElement (jodit.editor) instead of casting the IJodit instance to HTMLElement, which caused "t.addEventListener is not a function" runtime error. Also resolve uploaded image URLs via resolveUploadUrl so previews render inside the editor, and ignore the Windows reserved-name "nul" file. Generated with [Devin](https://devin.ai) Co-Authored-By:
Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
-
- 21 Aug, 2026 2 commits
-
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
-
- 13 Aug, 2026 2 commits
-
-
Lê Bảo Hồng Đức authored
-
Lê Bảo Hồng Đức authored
-