Skip to content

Animate Code OSS details-content keyword sizes #754

Description

@wieslawsoltes

Merged checkpoint — 20 September 2026

PR #755 merged this issue to WebScene main at 974e04f0cb298454ac926f0ef88ad104f3cda70d from focused implementation e099eef286f54937107846dc82aee70df2dc8f77. It adds the unchanged Code OSS ::details-content 0 ↔ auto keyword-size and opacity transitions, retained/clipped close paint, exact transition-list parsing, inherited interpolate-size: allow-keywords, interruption/reversal, reduced-motion cancellation, teardown, and lazy owner runtime allocation without per-frame selector/cascade work.

Focused native and WPT candidate gates are committed. They were intentionally not executed under the current fast-implementation directive; all PR and post-merge jobs were canceled after merge. Product visual/performance acceptance remains in #259 and the epic's cumulative gates.

Parent epic: #235

Related owners: #237 (pseudo matching/invalidation), #242 (transition/frame scheduling), #241 (retained paint)

Proven Code OSS gap

Unchanged Code OSS 645f29c uses two ::details-content transition groups in chat.css for completed responses and checkpoint file changes:

  • interpolate-size: allow-keywords on the owning details;
  • block-size: 0 plus opacity: 0 while closed;
  • block-size: auto plus opacity: 1 while open;
  • block-size 180ms, opacity 140ms, and content-visibility 180ms allow-discrete;
  • reduced-motion overrides that set transition: none.

PR #739 implemented the static ::details-content layout and retained paint subset. It intentionally left keyword-size animation timing, discrete content visibility, interruption, and compositing here. The current result snaps disclosure content open and closed instead of matching the authored Code OSS motion.

Implementation scope

  • retain and cascade interpolate-size: allow-keywords for the exact supported owner/pseudo path;
  • retain pseudo transition longhands/shorthand for block-size, opacity, and content-visibility with per-list timing/behavior alignment;
  • resolve auto against one intrinsic expanded-content measurement per transition generation;
  • animate the pseudo used block size and opacity from the host clock without per-frame selector matching or cascade;
  • defer closed content visibility to the correct discrete boundary and expose normal computed values;
  • support open/close interruption, reversal, zero duration, negative delay, reduced motion, stylesheet mutation, removal/reinsertion, navigation, and teardown;
  • keep the static Implement static Code OSS details content #739 behavior unchanged when no transition is admitted;
  • do not create an alternate DOM subtree or application-specific CSS.

Performance and quality gates

  • browser/native contract for both unchanged Code OSS rule shapes, deterministic initial/mid/end geometry and opacity, discrete visibility, cancellation, reversal, reduced motion, and nested content;
  • exact retained-scene ordering/clip/opacity checks and unchanged summary activation behavior;
  • 256 unrelated details nodes allocate no pseudo animation runtime and request no frames;
  • one active disclosure performs zero per-frame selector/cascade work and only the affected layout/scene publication work;
  • 100 open/close and remove/reinsert cycles return runtime, retained nodes, frame demand, and memory to the warmed baseline;
  • fixed caps for transition records/events and fail-closed invalid timing/value handling;
  • focused Linux native SDK, native document, and precompiled JavaScript gates before merge;
  • unchanged Code OSS Chat disclosure geometry/pixel comparison remains the product acceptance gate under Establish Chromium/AppScene visual and geometry regression gates for unchanged Code OSS #259.

Dependency/order

Start from merged #739 and merged #749 so the implementation reuses the current transition timing, allow-discrete, lifecycle, and host-clock machinery. Keep the focused PR separate from the open consolidation #76.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestvscode-oss/plannedPlanned for the AppScene/WebScene VS Code OSS integration

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions