Skip to content

Inspector 批:属性行钻石键 + 媒体 Source 检查器 + 截帧入库#187

Merged
appergb merged 1 commit into
mainfrom
feat/inspector-batch
Jul 3, 2026
Merged

Inspector 批:属性行钻石键 + 媒体 Source 检查器 + 截帧入库#187
appergb merged 1 commit into
mainfrom
feat/inspector-batch

Conversation

@appergb

@appergb appergb commented Jul 2, 2026

Copy link
Copy Markdown
Owner

①六个动画属性行的关键帧簇(播放头处钻石压/删 + 前后跳转,绝对帧纯助手,禁用/填充规则 1:1 上游)②媒体资产 Source 态(状态优先级 marquee>clip>asset>project;文件字段与格式化 1:1;GenerationInput 已按域模型贯通、条件渲染——现全为 None,生成落地即亮)③截帧改入素材库(上游只导入不落盘;时间线合成/视频页解码双路径,同用户导入管线+重命名+入当前文件夹)。已知小瑕疵已文档化(previewMediaId 不随片段选择清空)。门禁:workspace 1519 + web 394 全绿。

…-to-library

Three Inspector-domain gaps vs upstream InspectorView / MediaLibrary:

- Per-row keyframe cluster (InspectorView.swift:529-563): every animatable row
  (Position/Scale/Rotation/Opacity/Crop/Volume) gains diamond stamp-toggle
  (filled + accent when a keyframe exists AT the playhead; click stamps/removes)
  and prev/next chevrons seeking to neighboring keyframes; disabled at 0.4
  opacity when the playhead is outside the clip (half-open contains). Pure
  keyframeNav.ts returns ABSOLUTE frames (kf.frame + clip.startFrame; strict
  </>, max/min — upstream EditorViewModel+Keyframes.swift:11-21). 8 tests.
  Position/Crop render one cluster per property (upstream parity; OpenTake
  splits them into multiple field rows).
- Media-asset "Source" inspector (InspectorView.swift:49-56 state priority
  marquee > clip > mediaAsset > project; :924-946 file fields): identity header
  + File section (type/dimensions/duration/size/path with upstream's exact
  show-conditions and H:MM:SS + ByteCountFormatter-style formatting via pure
  mediaFormat.ts, 8 tests). Generated/Prompt/References render CONDITIONALLY on
  manifest generation_input — the domain type already existed 1:1
  (opentake-domain media.rs:115) and is now plumbed through MediaItemDto; every
  current construction site sets None (generate_* still stubbed) so the
  sections light up when generation lands. MediaItemDto also gains file_size.
- Capture frame -> media LIBRARY (EditorViewModel+MediaLibrary.swift:306-390):
  replaces the PNG download (upstream imports, never saves to disk); new
  capture_frame_to_media command composites (timeline tab) or decodes the
  source frame (video tab, upstream :95 shows the button on both) -> PNG ->
  import_one (same path as user import) -> "<name> <frame>" rename -> current
  panel folder. Silent like upstream.

Known nit (documented): previewMediaId isn't cleared on clip selection, so
Source can reappear after deselecting a clip; kept surgical.

Gates: fmt/clippy -D warnings clean; cargo test --workspace 1519; pnpm build
clean; pnpm test 394 (+16).
@appergb appergb merged commit 0472a4e into main Jul 3, 2026
2 checks passed
@appergb appergb deleted the feat/inspector-batch branch July 3, 2026 01:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant