Commit Graph

58 Commits

Author SHA1 Message Date
Tom Boullay f6ac71dad2 refactor: tighten upload and viewer contracts 2026-05-13 17:50:26 +02:00
Tom Boullay 30ff9826dc feat: add model hierarchy panel 2026-05-13 17:41:54 +02:00
Tom Boullay 606df93b69 fix: harden upload resilience and contracts 2026-05-12 23:49:30 +02:00
Tom Boullay 101af23418 docs: clean upload documentation 2026-05-12 23:48:47 +02:00
Tom Boullay 498765db61 refactor: clean upload pipeline and restore draco delivery 2026-04-29 16:29:32 +02:00
Tom Boullay 097b8f6486 docs: document texture collision handling 2026-04-28 16:03:04 +02:00
Tom Boullay a7155547c5 fix: preserve colliding exported texture variants 2026-04-28 16:02:15 +02:00
Tom Boullay 41e04002b8 fix: normalize exported texture filenames 2026-04-28 15:51:15 +02:00
Tom Boullay 497b0853c5 Update README.md 2026-04-28 00:17:45 +02:00
Tom Boullay 9dc0232e4a fix: validate texture asset names server-side 2026-04-28 00:17:28 +02:00
Tom Boullay 2679d29ab4 update: fix readme + add license 2026-04-27 23:57:12 +02:00
Tom Boullay dddecbb11c chore: prepare v1.0.0 release 2026-04-27 23:43:16 +02:00
Tom Boullay 31c05a35fc fix: canonicalize asset families 2026-04-27 23:35:43 +02:00
Tom Boullay fa77c484f9 fix: enforce asset naming convention 2026-04-27 23:29:47 +02:00
Tom Boullay b084c0e20e fix: batch Git LFS uploads 2026-04-27 23:17:56 +02:00
Tom Boullay 799e61c92e chore: add upload timing logs 2026-04-27 23:11:16 +02:00
Tom Boullay 5556364601 fix: resolve gltf companion assets reliably 2026-04-27 23:01:29 +02:00
Tom Boullay aeb0832409 chore: remove stale comments 2026-04-27 17:22:53 +02:00
Tom Boullay 382b28103e fix: avoid hiding remote lookup errors 2026-04-27 17:22:26 +02:00
Tom Boullay fd586f4185 refactor: strengthen upload boundary types 2026-04-27 17:21:44 +02:00
Tom Boullay d049318a73 refactor: consolidate upload helpers 2026-04-27 17:20:54 +02:00
Tom Boullay 43cf48cc7d chore: remove legacy blender compression path 2026-04-27 17:20:13 +02:00
Tom Boullay 473fa0f6e1 fix: apply opacity maps in preview 2026-04-27 17:19:21 +02:00
Tom Boullay 2a7be1dd52 style: align model stats helper 2026-04-27 17:12:11 +02:00
Tom Boullay 77bdb7748b docs: document model stats helper 2026-04-27 17:10:18 +02:00
Tom Boullay d9c47c16eb feat: add model stats helper to viewer 2026-04-27 17:04:38 +02:00
Tom Boullay 3244b70bbf feat: support opacity maps in gltf preview 2026-04-27 14:47:36 +02:00
Tom Boullay 4c3a687ff8 fix: support gltf uploads with local preview 2026-04-27 11:07:16 +02:00
Tom Boullay 078e687e86 style: improve verification button state 2026-04-24 17:53:24 +02:00
Tom Boullay 04ad0b136b style: emphasize upload progress message 2026-04-24 17:51:35 +02:00
Tom Boullay 71bcf2b36d refactor: stage uploads before drive and git delivery 2026-04-24 17:41:38 +02:00
Tom Boullay 53c4c0ed60 fix: prevent duplicate uploads and group asset commits 2026-04-24 16:58:49 +02:00
Tom Boullay fe8a6f0f54 refactor: simplify upload UI and enforce glb-only preview 2026-04-24 16:40:55 +02:00
Tom Boullay 944959fc22 refactor: simplify upload rules and remove destination flow 2026-04-24 16:23:02 +02:00
Tom Boullay 61a0146545 update: drag and drop + compression des textures 2026-04-24 15:37:45 +02:00
Tom Boullay 8bbc0dc0eb fix: push files via Git LFS instead of raw blobs
Binary files (.glb, .gltf, .png, .jpg, .jpeg, .webp) were pushed as raw
Git blobs via Octokit, bypassing Git LFS. This caused LFS-tracked repos
to see all files as modified after git pull, requiring spurious commits.

Now the bot uploads binaries to the LFS server via the Batch API and
stores LFS pointer files in the Git tree. Also fixes getRemoteFolder()
to read the real file size from LFS pointers instead of the pointer size.
2026-04-15 09:38:05 +02:00
Tom Boullay 616eb26206 fix: add curl to Docker image for Coolify healthcheck 2026-04-14 18:41:54 +02:00
Tom Boullay 78f4aa83e0 refactor: full codebase audit — extract modules, fix type safety, clean dead code
- Extract API helpers from UploadZone into lib/upload-api.ts (FormData builder, checkFolderDiffs, uploadDrive, uploadGit)
- Extract upload orchestration into hooks/useUploadOrchestrator.ts (UploadZone: 489 → 162 lines)
- Extract file diff classification into lib/diff-files.ts (from git route)
- Extract shared SVG icons into components/ui/icons.tsx (7 icons, 0 duplication)
- Extract shared modal wrapper into components/ui/Modal.tsx + ModalActions
- Extract DriveStatusLine sub-component from FolderCard
- Fix checkFolderDiffs silently swallowing auth/network errors (now throws)
- Fix type safety: remove as never casts, add isHttpError type guard, use discriminated union for validateFolder
- Fix nextcloud: cache getConfig, add max bound to findNextVersion, optimize mkdirRecursive (skip PROPFIND)
- Fix drive route: remove req.clone(), extend parseMultiUpload to return extra fields
- Fix commit message: model shown as unchanged with ↔️ on updates (not falsely marked as modified)
- Clean dead code: unused folderExists import, FileStatus/DriveStatus exports, ParsedFile.textureName, getConfig basePath
- Add security headers in next.config.ts (HSTS, X-Content-Type-Options, X-Frame-Options, etc.)
- Update README with new project structure
2026-04-14 17:19:10 +02:00
Tom Boullay 110d64ec33 fix: some bugs 2026-04-14 16:57:23 +02:00
Tom Boullay 3a7a5e2eea upadte: clean code + add next cloud 2026-04-14 16:21:37 +02:00
Tom Boullay 3adcf9d30e fix: skip model size comparison in diff check (Blender compression changes size)
Models are always re-pushed server-side since Draco compression changes
the file size, making client/remote size comparison unreliable.
Textures are still compared by size (not compressed, reliable).
Client-side diff now only flags models as 'new' if absent from remote,
and never as 'changed' (server handles the actual push decision).
2026-04-14 14:48:59 +02:00
Tom Boullay 91eaa5d186 fix: replace SHA comparison with file size for LFS compatibility + add NoChangesModal
Git LFS stores pointer files whose SHA differs from the actual blob SHA,
causing false-positive diffs on every upload. Switching to file size
comparison resolves this for LFS-enabled repos.

Also replaces the inline error message with a dedicated NoChangesModal
when no differences are detected, offering cancel (reset) or modify
(close modal) actions.
2026-04-14 14:39:19 +02:00
Tom Boullay f9e15d5e1f fin du refactp 2026-04-14 14:27:50 +02:00
Tom Boullay e9ae6ffc41 debut refacto 2026-04-14 14:18:40 +02:00
Tom Boullay ab9685b6ee upatde: dockerfile init blender 2026-04-14 14:06:04 +02:00
Tom Boullay 2b3d02e489 update: add gestion erreur si dossier est existant 2026-04-14 13:26:49 +02:00
Tom Boullay c795082ca4 fix: one commit 2026-04-14 12:17:06 +02:00
Tom Boullay 76d9c21929 upatde: add docker for coolify 2026-04-14 11:18:53 +02:00
Tom Boullay 0a3d159bad update: remove docker 2026-04-14 10:54:43 +02:00
Tom Boullay 58826ac98a Update layout.tsx 2026-04-05 12:45:51 +02:00