feat(editor): 동영상 첨부 기능 + teamspace 페이지 fix — 운영에만 있던 미커밋 코드 반영 - #7
Merged
Conversation
This has been running in production since v1.3.1-mote.50 (2026-07-21) but existed nowhere in git. The mote.50 frontend image was built from /srv/shared/app-src/plane while these changes sat uncommitted in the working tree, so the feature shipped without ever being committed. The custom-video/ directory was created five minutes before that build. Confirmed live: the deployed bundle contains videoComponent and video/quicktime. Rebuilding the frontend from origin/mote without this commit would have silently removed the feature from production -- the same way rebuilding the backend cleanly removed ProjectIssueType earlier today. Contents: - packages/editor/src/core/extensions/custom-video/ -- new tiptap node: extension, config, node view, block/uploader components, types, utils. - constants/config.ts: ACCEPTED_VIDEO_MIME_TYPES (mp4, webm, quicktime), matching the backend allowlist recovered in the previous release. - constants/extension.ts + types/extensions.ts: CUSTOM_VIDEO core extension and a "video" entry in TExtensions so it can be feature-flagged off. - extensions/extensions.ts: register CustomVideoExtension unless disabled. - plugins/drop.ts: route a dropped file to insertVideoComponent when its MIME type is a video and the extension is enabled, instead of falling through to the generic attachment path. Recovered from the working tree as-is, not reimplemented. There is no authorship record because it was never committed; it sits alongside otro's GROWTH-144 work from the same period. Verified: every import resolves against this tree, including the three symbols taken from @/hooks/use-file-upload. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Also uncommitted in the mote.50 build tree, and unrelated to video -- kept separate for that reason. The page calls useParams(), which requires a client component. Without the directive a rebuild from origin/mote would fail or ship a broken page. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Linked to Plane Work Item(s) References This comment was auto-generated by Plane |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
/srv/shared/app-src/plane정리의 2단계입니다. PR #6 이 미푸시 커밋을 올렸다면, 이건 아예 커밋된 적도 없는 작업입니다.동영상 첨부 — v1.3.1-mote.50 부터 운영에서 동작 중, git 에는 없음
custom-video/디렉토리 생성 시각이 mote.50 프론트엔드 빌드 5분 전(7/21 17:24 → 17:29)입니다. 그 빌드가 dirty 트리에서 이뤄지면서 커밋 없이 그대로 배포됐습니다.배포된 번들에서
videoComponent와video/quicktime을 확인했습니다 — 지금 운영에서 살아있습니다. 이 커밋 없이 프론트를origin/mote로 재빌드했다면, 오늘 아침 백엔드에서ProjectIssueType이 사라진 것과 똑같은 방식으로 동영상 기능이 조용히 사라졌을 겁니다.내용
custom-video/(7파일, 618줄)constants/config.tsACCEPTED_VIDEO_MIME_TYPES(mp4/webm/quicktime) — PR #5 로 되살린 백엔드 allowlist 와 짝constants/extension.ts,types/extensions.tsCUSTOM_VIDEO등록 +TExtensions에"video"추가(기능 플래그로 끌 수 있게)extensions/extensions.tsCustomVideoExtension등록plugins/drop.tsinsertVideoComponent로재구현이 아니라 작업 트리에서 원문 그대로 가져왔습니다.
teamspace 페이지
"use client"(별도 커밋)동영상과 무관해서 커밋을 분리했습니다.
useParams()를 쓰는 페이지라 client component 지시자가 필요하고, 없으면 재빌드 시 빌드가 깨지거나 페이지가 망가집니다.검증
custom-video/의 모든 import 가 이 트리에서 해소됨 —@/hooks/use-file-upload의useUploader·useDropZone·uploadFirstFileAndInsertRemaining3개 심볼 존재 확인 포함CustomVideoExtensionexport ↔extensions.tsimport 경로 일치,insertVideoComponent커맨드 정의 확인백엔드는
verify-image-source.sh로 이미지 내부/code/plane과 git 트리를 md5 대조할 수 있습니다. 프론트엔드는 번들이 컴파일·미니파이되어 있어 같은 방식이 불가능합니다. 실제로 이 PR 검증 중에도isLoadingProjectLinks(지역 식별자)가 번들에서 안 잡혀 판정이 불가능했습니다 — 문자열 리터럴만 겨우 확인 가능합니다.즉 프론트엔드는 "dirty 트리에서 빌드하지 않는다"는 절차로만 막을 수 있습니다.
다음
이 PR 이 머지되면 배포된 mote.50 프론트엔드의 내용이 전부 git 에 들어옵니다(GROWTH-144 = PR #6, 동영상 = 이 PR,
use client= 이 PR). 그때부터 프론트엔드 재빌드가 안전합니다.관련: PR #4 · #5 · #6, PLANE-78 / PLANE-80
🤖 Generated with Claude Code