gabriel / muse public
fix patch dev #2 / 100
AI Agent gabriel · 22 days ago · Aug 9, 2026 · Diff

fix: previous merge commit for task/video-timeline-vid1 omitted the actual timeline plugin files — stage and commit them for real

sha256:d1452b610bf408173d1044f8fb81a56440f9d34d9978419d437d098628d25d7a sha
+297 ~1 symbols
19 changed · 1156 in snapshot files
sha256:a4a11ca218c0fb12560050033892e9fadcf14079eb02c7d42f1884d4889cfb5f snapshot
+297
symbols added
~1
symbol modified
19
files changed
1156
files in snapshot
0
dead code introduced
Semantic Changes 298 symbols
~ muse/plugins/timeline/__init__.py .py 3 symbols added
+ __all__ variable variable __all__ L5–5
+ TimelinePlugin import import TimelinePlugin L3–3
+ plugin import import plugin L3–3
~ muse/plugins/timeline/_otio_bridge.py .py 56 symbols added
+ BridgeError class class BridgeError L56–57
+ _KNOWN_SCHEMA_PREFIXES variable variable _KNOWN_SCHEMA_PREFIXES L37–53
+ _VOLATILE_METADATA_KEYS variable variable _VOLATILE_METADATA_KEYS L33–35
+ _canonicalize_metadata function function _canonicalize_metadata L137–145
+ _check_schema function function _check_schema L80–85
+ _exact_int function function _exact_int L103–113
+ _parse_audio_lane function function _parse_audio_lane L473–502
+ _parse_caption function function _parse_caption L281–297
+ _parse_clip function function _parse_clip L341–404
+ _parse_effect function function _parse_effect L240–261
+ _parse_external_reference function function _parse_external_reference L173–201
+ _parse_gap function function _parse_gap L322–338
+ _parse_keyframe function function _parse_keyframe L224–237
+ _parse_marker function function _parse_marker L264–278
+ _parse_media_reference function function _parse_media_reference L204–221
+ _parse_rate function function _parse_rate L88–100
+ _parse_rational_time function function _parse_rational_time L116–120
+ _parse_sequence function function _parse_sequence L505–581
+ _parse_time_range function function _parse_time_range L123–134
+ _parse_track function function _parse_track L437–470
+ _parse_track_items function function _parse_track_items L407–428
+ _parse_transition function function _parse_transition L300–319
+ _project_key_from function function _project_key_from L584–590
+ _relativise_url function function _relativise_url L148–170
+ _schema_version function function _schema_version L67–77
+ _track_kind function function _track_kind L431–434
+ AudioLane import import AudioLane L11–11
+ Caption import import Caption L11–11
+ Clip import import Clip L11–11
+ Effect import import Effect L11–11
+ ExternalReference import import ExternalReference L11–11
+ Gap import import Gap L11–11
+ JsonObject import import JsonObject L9–9
+ JsonValue import import JsonValue L9–9
+ Keyframe import import Keyframe L11–11
+ Literal import import Literal L7–7
+ Marker import import Marker L11–11
+ Metadata import import Metadata L11–11
+ Project import import Project L11–11
+ RationalRate import import RationalRate L31–31
+ RationalTime import import RationalTime L31–31
+ Sequence import import Sequence L11–11
+ SourceMedia import import SourceMedia L11–11
+ TimeRange import import TimeRange L31–31
+ Track import import Track L11–11
+ TrackItem import import TrackItem L11–11
+ Transition import import Transition L11–11
+ annotations import import annotations L3–3
+ json import import json L5–5
+ load_json_file import import load_json_file L9–9
+ media_content_id import import media_content_id L11–11
+ meta_get import import meta_get L11–11
+ pathlib import import pathlib L6–6
+ stringify_metadata_value import import stringify_metadata_value L11–11
+ load_otio_json function function load_otio_json L60–64
+ parse_otio_to_project function function parse_otio_to_project L593–635
~ muse/plugins/timeline/entity.py .py 47 symbols added
+ AudioLane class class AudioLane L156–164
+ Caption class class Caption L107–111
+ Clip class class Clip L121–130
+ ColorMetadata class class ColorMetadata L51–57
+ Effect class class Effect L89–94
+ ExternalReference class class ExternalReference L42–47
+ Gap class class Gap L115–117
+ IdentifiedClip class class IdentifiedClip L190–193
+ IdentifiedProject class class IdentifiedProject L212–215
+ IdentifiedSequence class class IdentifiedSequence L205–208
+ IdentifiedTrack class class IdentifiedTrack L197–201
+ Keyframe class class Keyframe L81–85
+ Marker class class Marker L98–103
+ Metadata variable variable Metadata L18–18
+ MetadataValue variable variable MetadataValue L17–17
+ Project class class Project L180–186
+ RenderCacheMetadata class class RenderCacheMetadata L72–77
+ Sequence class class Sequence L168–176
+ SourceMedia class class SourceMedia L61–68
+ Track class class Track L145–152
+ TrackItem variable variable TrackItem L141–141
+ Transition class class Transition L134–138
+ _clip_fingerprint function function _clip_fingerprint L269–274
+ _metadata_dict function function _metadata_dict L364–365
+ assign_clip_occurrences function function assign_clip_occurrences L277–292
+ assign_identities function function assign_identities L295–361
+ canonical_metadata function function canonical_metadata L28–29
+ canonical_time_range function function canonical_time_range L32–38
+ clip_identity function function clip_identity L252–266
+ JsonObject import import JsonObject L9–9
+ JsonValue import import JsonValue L9–9
+ Literal import import Literal L7–7
+ RationalTime import import RationalTime L11–11
+ TimeRange import import TimeRange L11–11
+ annotations import import annotations L3–3
+ canonical_rational_time import import canonical_rational_time L11–11
+ content_hash import import content_hash L9–9
+ dataclass class import dataclass L6–6
+ json import import json L5–5
+ media_content_id function function media_content_id L218–229
+ meta_get function function meta_get L21–25
+ project_canonical_dict function function project_canonical_dict L368–428
+ project_content_id function function project_content_id L431–432
+ project_identity function function project_identity L232–233
+ sequence_identity function function sequence_identity L236–239
+ stringify_metadata_value function function stringify_metadata_value L435–441
+ track_identity function function track_identity L242–249
~ muse/plugins/timeline/manifest.py .py 25 symbols added
+ TimelineClipEntry class class TimelineClipEntry L22–26
+ TimelineManifest class class TimelineManifest L51–56
+ TimelineProjectEntry class class TimelineProjectEntry L44–48
+ TimelineSequenceEntry class class TimelineSequenceEntry L37–41
+ TimelineTrackEntry class class TimelineTrackEntry L29–34
+ _ProjectMap variable variable _ProjectMap L17–17
+ _SequenceMap variable variable _SequenceMap L18–18
+ _TrackMap variable variable _TrackMap L19–19
+ _manifest_files function function _manifest_files L125–133
+ _timeline_manifests_dir function function _timeline_manifests_dir L59–60
+ build_timeline_manifest function function build_timeline_manifest L63–108
+ IdentifiedProject import import IdentifiedProject L13–13
+ JsonObject import import JsonObject L11–11
+ Literal import import Literal L8–8
+ Manifest import import Manifest L11–11
+ TypedDict import import TypedDict L8–8
+ __version__ import import __version__ L10–10
+ annotations import import annotations L3–3
+ json import import json L5–5
+ load_json_file import import load_json_file L11–11
+ logging import import logging L6–6
+ pathlib import import pathlib L7–7
+ logger variable variable logger L15–15
+ read_timeline_manifest function function read_timeline_manifest L136–158
+ write_timeline_manifest function function write_timeline_manifest L111–122
~ muse/plugins/timeline/plugin.py .py 40 symbols added
+ TimelinePlugin class class TimelinePlugin L40–246
+ apply method method apply L161–162
+ diff method method diff L101–108
+ drift method method drift L151–159
+ merge method method merge L110–149
+ schema method method schema L164–246
+ snapshot method method snapshot L43–99
+ _DOMAIN_TAG variable variable _DOMAIN_TAG L36–36
+ _OTIO_SUFFIX variable variable _OTIO_SUFFIX L37–37
+ __all__ variable variable __all__ L251–251
+ BridgeError import import BridgeError L32–32
+ DimensionSpec import import DimensionSpec L11–11
+ DomainSchema import import DomainSchema L11–11
+ DriftReport import import DriftReport L21–21
+ IdentifiedProject import import IdentifiedProject L33–33
+ LiveState import import LiveState L21–21
+ Manifest import import Manifest L20–20
+ MapSchema import import MapSchema L11–11
+ MergeResult import import MergeResult L21–21
+ MuseDomainPlugin import import MuseDomainPlugin L21–21
+ SequenceSchema import import SequenceSchema L11–11
+ SetSchema import import SetSchema L11–11
+ SnapshotManifest import import SnapshotManifest L21–21
+ StateDelta import import StateDelta L21–21
+ StateSnapshot import import StateSnapshot L21–21
+ StructuredDelta import import StructuredDelta L21–21
+ TreeSchema import import TreeSchema L11–11
+ __version__ import import __version__ L9–9
+ _stat import import _stat L7–7
+ annotations import import annotations L3–3
+ assign_identities import import assign_identities L33–33
+ build_timeline_manifest import import build_timeline_manifest L34–34
+ load_cache import import load_cache L19–19
+ load_otio_json import import load_otio_json L32–32
+ os import import os L5–5
+ parse_otio_to_project import import parse_otio_to_project L32–32
+ pathlib import import pathlib L6–6
+ project_content_id import import project_content_id L33–33
+ snapshot_diff import import snapshot_diff L10–10
+ plugin variable variable plugin L249–249
+ RationalRate class class RationalRate L70–103
+ __post_init__ method method __post_init__ L76–84
+ __str__ method method __str__ L100–103
+ from_float method method from_float L87–98
+ RationalTime class class RationalTime L107–225
+ __eq__ method method __eq__ L173–178
+ __ge__ method method __ge__ L191–192
+ __gt__ method method __gt__ L188–189
+ __hash__ method method __hash__ L194–196
+ __le__ method method __le__ L185–186
+ __lt__ method method __lt__ L180–183
+ from_frames method method from_frames L114–115
+ from_timecode method method from_timecode L118–161
+ is_identical method method is_identical L198–199
+ rescaled_to method method rescaled_to L166–171
+ to_fraction_seconds method method to_fraction_seconds L163–164
+ to_frames method method to_frames L201–202
+ to_timecode method method to_timecode L204–225
+ TimeRange class class TimeRange L229–261
+ __post_init__ method method __post_init__ L235–237
+ contains method method contains L254–255
+ end_time_exclusive method method end_time_exclusive L240–242
+ end_time_inclusive method method end_time_inclusive L244–252
+ overlaps method method overlaps L257–261
+ _DROP_FRAME_RATES variable variable _DROP_FRAME_RATES L18–20
+ _NTSC_FLOAT_TABLE variable variable _NTSC_FLOAT_TABLE L10–16
+ _drop_frame_nominal function function _drop_frame_nominal L23–26
+ _drop_frame_timecode_from_frames function function _drop_frame_timecode_from_frames L47–66
+ _drop_per_minute function function _drop_per_minute L29–30
+ _frames_from_drop_frame_timecode function function _frames_from_drop_frame_timecode L33–44
+ _time_from_fraction function function _time_from_fraction L264–269
+ canonical_rational_time function function canonical_rational_time L272–275
+ Fraction import import Fraction L7–7
+ annotations import import annotations L3–3
+ dataclass class import dataclass L6–6
+ math import import math L5–5
~ tests/test_timeline_plugin.py .py 62 symbols added
+ FIXTURES variable variable FIXTURES L30–30
+ GOLDEN variable variable GOLDEN L31–31
+ TestVID01Protocol class class TestVID01Protocol L51–64
+ test_plugin_satisfies_protocol method method test_plugin_satisfies_protocol L52–53
+ test_registered_active method method test_registered_active L61–64
+ test_schema_valid method method test_schema_valid L55–59
+ TestVID07OtioBridge class class TestVID07OtioBridge L67–87
+ test_single_track_parse method method test_single_track_parse L68–78
+ test_unknown_schema_version_raises method method test_unknown_schema_version_raises L80–87
+ TestVID08Determinism class class TestVID08Determinism L90–108
+ test_reformatted_identical_hash method method test_reformatted_identical_hash L96–108
+ test_snapshot_twice_identical method method test_snapshot_twice_identical L91–94
+ TestVID09ClipIdentityExcludesTimelineStart class class TestVID09ClipIdentityExcludesTimelineStart L111–160
+ test_trim_source_changes_clip_id method method test_trim_source_changes_clip_id L139–160
+ test_widen_gap_preserves_clip_ids method method test_widen_gap_preserves_clip_ids L112–137
+ TestVID10TrackIdentity class class TestVID10TrackIdentity L163–212
+ test_edit_clip_preserves_track_id method method test_edit_clip_preserves_track_id L188–212
+ test_reorder_swaps_track_ids method method test_reorder_swaps_track_ids L164–186
+ TestVID11PositionalTiebreaker class class TestVID11PositionalTiebreaker L215–254
+ test_identical_shots_distinct_ids method method test_identical_shots_distinct_ids L216–225
+ test_stable_across_resnapshot method method test_stable_across_resnapshot L227–231
+ test_trim_leaves_identical_set method method test_trim_leaves_identical_set L233–254
+ TestVID12GoldenSingleTrack class class TestVID12GoldenSingleTrack L271–279
+ test_matches_golden method method test_matches_golden L272–279
+ TestVID13GoldenMultiTrack class class TestVID13GoldenMultiTrack L282–291
+ test_matches_golden method method test_matches_golden L283–291
+ TestVID14Security class class TestVID14Security L294–353
+ test_no_media_bytes_in_objects method method test_no_media_bytes_in_objects L340–353
+ test_offline_media_deterministic method method test_offline_media_deterministic L295–305
+ test_path_traversal_rejected method method test_path_traversal_rejected L307–338
+ _build_manifest function function _build_manifest L257–268
+ fixture_repo function function fixture_repo L40–48
+ BridgeError import import BridgeError L15–15
+ Clip import import Clip L16–16
+ DomainSchema import import DomainSchema L11–11
+ Gap import import Gap L16–16
+ JsonObject import import JsonObject L12–12
+ MuseDomainPlugin import import MuseDomainPlugin L13–13
+ RationalRate import import RationalRate L28–28
+ RationalTime import import RationalTime L28–28
+ SnapshotManifest import import SnapshotManifest L13–13
+ TimeRange import import TimeRange L28–28
+ TimelinePlugin import import TimelinePlugin L27–27
+ annotations import import annotations L3–3
+ assign_clip_occurrences import import assign_clip_occurrences L16–16
+ assign_identities import import assign_identities L16–16
+ build_timeline_manifest import import build_timeline_manifest L26–26
+ clip_identity import import clip_identity L16–16
+ content_hash import import content_hash L12–12
+ json import import json L5–5
+ load_otio_json import import load_otio_json L15–15
+ parse_otio_to_project import import parse_otio_to_project L15–15
+ pathlib import import pathlib L6–6
+ plugin import import plugin L27–27
+ project_content_id import import project_content_id L16–16
+ pytest import import pytest L9–9
+ registered_domains import import registered_domains L14–14
+ resolve_plugin_by_domain import import resolve_plugin_by_domain L14–14
+ sequence_identity import import sequence_identity L16–16
+ shutil import import shutil L7–7
+ track_identity import import track_identity L16–16
+ timeline_plugin function function timeline_plugin L35–36
~ tests/test_timeline_rational_time.py .py 27 symbols added
+ TestVID02RationalRate class class TestVID02RationalRate L12–29
+ test_ntsc_table method method test_ntsc_table L23–25
+ test_reduction method method test_reduction L13–15
+ test_rejects_non_positive method method test_rejects_non_positive L17–21
+ test_rejects_undeclared_fractional method method test_rejects_undeclared_fractional L27–29
+ TestVID03RationalTimeEquality class class TestVID03RationalTimeEquality L32–58
+ test_equal_instant_different_rate method method test_equal_instant_different_rate L33–36
+ test_hash_equal_instant method method test_hash_equal_instant L49–52
+ test_is_identical method method test_is_identical L43–47
+ test_no_float_in_arithmetic method method test_no_float_in_arithmetic L54–58
+ test_ordering method method test_ordering L38–41
+ TestVID04TimecodeNonDrop class class TestVID04TimecodeNonDrop L61–73
+ test_round_trip method method test_round_trip L69–73
+ TestVID05DropFrame class class TestVID05DropFrame L76–86
+ test_2997_drop_frame_separator method method test_2997_drop_frame_separator L77–80
+ test_2997_round_trip_anchor method method test_2997_round_trip_anchor L82–86
+ TestVID06TimeRange class class TestVID06TimeRange L89–115
+ test_duration_non_negative method method test_duration_non_negative L112–115
+ test_end_time_exclusive method method test_end_time_exclusive L106–110
+ test_half_open_contains method method test_half_open_contains L90–98
+ test_overlaps_boundary method method test_overlaps_boundary L100–104
+ RationalRate import import RationalRate L9–9
+ RationalTime import import RationalTime L9–9
+ TimeRange import import TimeRange L9–9
+ annotations import import annotations L3–3
+ math import import math L5–5
+ pytest import import pytest L7–7
~ .museignore .museignore
~ muse/plugins/registry.py .py 1 symbol added, 1 symbol modified
+ TimelinePlugin import import TimelinePlugin L28–28
Files Changed
+17 ~2
1156 in snapshot

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:d1452b610bf408173d1044f8fb81a56440f9d34d9978419d437d098628d25d7a --body "your comment"