Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

iOS 27: `_UIFloatingBarContainerView` still marks content "covered" when the container matches its parent or sits a few points below the viewport top

未关闭
#3,883 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@jonstuebe 已经在做这个了。

开始于 2026年10月22日。

  • #3912 来自 @jonstuebe —— 未关闭

评估

难度
4/5
预计耗时
1-2 天
新手友好度
68/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
ios, react-native, typescript
领域
mobile, testing-qa

调研方向

Start with packages/capture-kit/src/snapshot-occlusion.ts and the tests in snapshot-occlusion-sibling-sized-chrome.test.ts; compare the two snapshot shapes described in the issue with the existing sibling-sized and full-viewport checks. Add coverage for parent-sized containers beside an enclosing branch and containers whose top is within 0–4pt of the viewport top. Done means the new cases pass while the stated non-enclosing and smaller-than-parent cases remain covering.

由索引模型根据 Issue 内容生成。

描述

bug

On iOS 27, taps on normal screen content fail with Ref @eN is covered by another visible element. The node reported as covering is the UIKit floating-bar container (_UIFloatingBarContainerView, type Toolbar, label/identifier Toolbar, hittable: true). This looks like the same family of bugs as #2996 and #3628. The fixes in #3097 and #3162 don't cover the two tree shapes below.

Environment

  • agent-device 0.21.25 (through @e2e-dev/mobile 0.12.0). The captured snapshots below also come out covered with the 0.21.30 occlusion code.
  • iPhone 18 Pro Max simulator, iOS 27.0, Xcode 27.1
  • React Native app (Expo SDK 58). The same build passes on iOS 26.5.

Shape 1: XCTest tree. The container matches its parent, not a sibling.

In the raw tree, the container has a sibling with the same rect, so #3097's sibling-sized exemption would apply. After group pruning, that sibling is gone. The container ends up next to a larger content branch that encloses it:

Other            0,2  440x954         ← content branch (sibling)
Other            0,64 440x892         ← parent
  Toolbar        0,64 440x892         ← _UIFloatingBarContainerView, hittable

No sibling has the same rect, so isSiblingSizedChromeContainer returns false. The container is not full-viewport, so the toolbar is treated as an overlay over the content.

Shape 2: flat / interactive projection. The container is 2pt short of full-viewport.

Application      0,0  440x956   (viewport 440x956)
  Other          0,62 440x2
  ScrollView     0,112 440x782
  ...
  Toolbar        0,2  440x954   role=_UIFloatingBarContainerView
  Toolbar        0,64 440x892   role=_UIFloatingBarContainerView

The 0,2 container misses isFullViewportChromeContainer because its top is 2pt below the viewport top. Our app keeps a 2pt status strip pinned at the top, and the window content starts below it. The container still spans the full width and reaches the bottom of the viewport.

Proposed fix

I have two narrow rules in packages/capture-kit/src/snapshot-occlusion.ts, with 3 new tests in snapshot-occlusion-sibling-sized-chrome.test.ts. All 1013 capture-kit tests pass:

  1. Parent-sized beside an enclosing branch: a tabbar/toolbar/navigationbar container is not an overlay when its rect equals its parent's rect and a sibling of it fully encloses it. The tests also show it still counts as covering when no sibling encloses it, or when it is smaller than its parent.
  2. Viewport footprint tolerance: the full-viewport chrome check accepts a container that matches the viewport's x, width and bottom edge, with its top 0–4pt below the viewport top.

With the same change applied as a local patch to 0.21.25, our suite goes from 1/4 to 4/4 on iOS 27.

Would you like a PR for this? I can open one with the change and the tests.

Snapshots

Both snapshots are from the same screen. App text is replaced with <label> / <identifier> / <value>. Nodes that agent-device marked covered have their hittable: true restored, so this is the input to occlusion, not its output. Run through snapshot-occlusion from 0.21.30, the interactive snapshot marks 18 of 26 nodes covered.

Interactive snapshot (shape 2)
{
 "viewport": {"width":440,"height":956},
 "nodes": [
  {"index":0,"depth":0,"type":"Application","role":"UIApplication","rect":{"x":0,"y":0,"width":440,"height":956},"enabled":true,"hittable":false,"kind":"application","label":"<label>"},
  {"index":1,"parentIndex":0,"depth":1,"type":"Other","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":0,"y":62,"width":440,"height":2},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":2,"parentIndex":0,"depth":1,"type":"StaticText","role":"RCTParagraphComponentView","subrole":"UIView","rect":{"x":16,"y":78,"width":58.333335876464844,"height":20.333335876464844},"enabled":true,"hittable":true,"kind":"text","label":"<label>"},
  {"index":3,"parentIndex":0,"depth":1,"type":"ScrollView","role":"RCTEnhancedScrollView","subrole":"UIScrollView","rect":{"x":0,"y":112,"width":440,"height":782},"enabled":true,"hittable":true,"kind":"scroll-area"},
  {"index":4,"parentIndex":3,"depth":2,"type":"Other","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":0,"y":128,"width":440,"height":16.333328247070312},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":5,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":152.3333339691162,"width":408,"height":64.66667175292969},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":6,"parentIndex":3,"depth":2,"type":"Other","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":0,"y":241,"width":440,"height":16.333343505859375},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":7,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":265.3333339691162,"width":408,"height":46.666656494140625},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":8,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":313.00000190734863,"width":408,"height":46.666656494140625},"enabled":true,"hittable":true,"kind":"cell","label":"<label>","identifier":"<identifier>"},
  {"index":9,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":360.66666984558105,"width":408,"height":46.66668701171875},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":10,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":408.3333339691162,"width":408,"height":46.666656494140625},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":11,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":456.0000057220459,"width":408,"height":46.666656494140625},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":12,"parentIndex":3,"depth":2,"type":"Other","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":0,"y":526.6666564941406,"width":440,"height":16.33331298828125},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":13,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":550.9999904632568,"width":408,"height":46.66668701171875},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":14,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":598.6666584014893,"width":408,"height":46.6666259765625},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":15,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":669.3333129882812,"width":408,"height":46.66668701171875},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":16,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":716.9999809265137,"width":408,"height":64.66668701171875},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":17,"parentIndex":3,"depth":2,"type":"Cell","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":16,"y":782.6666488647461,"width":408,"height":64.6666259765625},"enabled":true,"hittable":true,"kind":"cell","label":"<label>"},
  {"index":18,"parentIndex":3,"depth":2,"type":"Button","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":0,"y":871.3333129882812,"width":440,"height":16.3333740234375},"enabled":true,"hittable":true,"kind":"button","label":"<label>"},
  {"index":19,"parentIndex":0,"depth":1,"type":"Toolbar","role":"_UIFloatingBarContainerView","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"toolbar","label":"Toolbar","identifier":"Toolbar"},
  {"index":20,"parentIndex":0,"depth":1,"type":"Toolbar","role":"_UIFloatingBarContainerView","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"toolbar","label":"Toolbar","identifier":"Toolbar"},
  {"index":21,"parentIndex":0,"depth":1,"type":"Other","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":24,"y":870,"width":98,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":22,"parentIndex":0,"depth":1,"type":"Other","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":122,"y":870,"width":98,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":23,"parentIndex":0,"depth":1,"type":"Other","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":220,"y":870,"width":98,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":24,"parentIndex":0,"depth":1,"type":"Other","role":"RCTViewComponentView","subrole":"UIView","rect":{"x":318,"y":870,"width":98,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":25,"parentIndex":0,"depth":1,"type":"Toolbar","role":"_UIFloatingBarContainerView","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"toolbar","label":"Toolbar","identifier":"Toolbar"}
 ]
}
Raw XCTest snapshot (shape 1, before group pruning)
{
 "nodes": [
  {"index":0,"depth":0,"type":"Application","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":false,"kind":"application","label":"<label>"},
  {"index":1,"parentIndex":0,"depth":1,"type":"Window","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"window"},
  {"index":2,"parentIndex":1,"depth":2,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other"},
  {"index":3,"parentIndex":2,"depth":3,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other"},
  {"index":4,"parentIndex":3,"depth":4,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other"},
  {"index":5,"parentIndex":4,"depth":5,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other"},
  {"index":6,"parentIndex":5,"depth":6,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":7,"parentIndex":6,"depth":7,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":8,"parentIndex":7,"depth":8,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":9,"parentIndex":8,"depth":9,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":10,"parentIndex":9,"depth":10,"type":"Other","rect":{"width":440,"y":0,"height":956,"x":0},"enabled":true,"hittable":true,"kind":"other"},
  {"index":11,"parentIndex":9,"depth":10,"type":"Other","rect":{"height":2,"width":440,"x":0,"y":62},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":12,"parentIndex":11,"depth":11,"type":"Other","rect":{"y":62,"x":257,"width":154,"height":2},"enabled":true,"hittable":true,"kind":"other"},
  {"index":13,"parentIndex":9,"depth":10,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":14,"parentIndex":13,"depth":11,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":15,"parentIndex":14,"depth":12,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other"},
  {"index":16,"parentIndex":15,"depth":13,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other"},
  {"index":17,"parentIndex":16,"depth":14,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other"},
  {"index":18,"parentIndex":17,"depth":15,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":19,"parentIndex":18,"depth":16,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":20,"parentIndex":19,"depth":17,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":21,"parentIndex":20,"depth":18,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":22,"parentIndex":21,"depth":19,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other"},
  {"index":23,"parentIndex":22,"depth":20,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other"},
  {"index":24,"parentIndex":23,"depth":21,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":25,"parentIndex":24,"depth":22,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":26,"parentIndex":25,"depth":23,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":27,"parentIndex":26,"depth":24,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"other","label":"Toolbar"},
  {"index":28,"parentIndex":27,"depth":25,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"other"},
  {"index":29,"parentIndex":28,"depth":26,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"other"},
  {"index":30,"parentIndex":29,"depth":27,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":31,"parentIndex":30,"depth":28,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":32,"parentIndex":31,"depth":29,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":954},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":33,"parentIndex":32,"depth":30,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":110},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":34,"parentIndex":33,"depth":31,"type":"Other","rect":{"x":0,"y":2,"width":440,"height":110},"enabled":true,"hittable":true,"kind":"other"},
  {"index":35,"parentIndex":33,"depth":31,"type":"StaticText","rect":{"x":16,"y":78,"width":58.333335876464844,"height":20.333335876464844},"enabled":true,"hittable":true,"kind":"text","label":"<label>"},
  {"index":36,"parentIndex":35,"depth":32,"type":"StaticText","rect":{"x":16,"y":78,"width":58.333335876464844,"height":20.333335876464844},"enabled":true,"hittable":true,"kind":"text","label":"<label>"},
  {"index":37,"parentIndex":32,"depth":30,"type":"Other","rect":{"x":0,"y":112,"width":440,"height":844},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":38,"parentIndex":37,"depth":31,"type":"ScrollView","rect":{"x":0,"y":112,"width":440,"height":844},"enabled":true,"hittable":true,"kind":"scroll-area","label":"<label>"},
  {"index":39,"parentIndex":38,"depth":32,"type":"Other","rect":{"x":0,"y":112,"width":440,"height":885.6666870117188},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":40,"parentIndex":39,"depth":33,"type":"Other","rect":{"x":0,"y":112,"width":440,"height":885.6666870117188},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":41,"parentIndex":40,"depth":34,"type":"Other","rect":{"x":0,"y":128,"width":440,"height":16.333328247070312},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":42,"parentIndex":40,"depth":34,"type":"Other","rect":{"x":16,"y":152.3333339691162,"width":408,"height":64.66667175292969},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":43,"parentIndex":42,"depth":35,"type":"Other","rect":{"x":16,"y":152.3333339691162,"width":408,"height":64.66667175292969},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":44,"parentIndex":40,"depth":34,"type":"Other","rect":{"x":0,"y":241,"width":440,"height":16.333343505859375},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":45,"parentIndex":40,"depth":34,"type":"Other","rect":{"x":16,"y":265.3333339691162,"width":408,"height":237.33331298828125},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":46,"parentIndex":45,"depth":35,"type":"Other","rect":{"x":16,"y":265.3333339691162,"width":408,"height":46.666656494140625},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":47,"parentIndex":45,"depth":35,"type":"Other","rect":{"x":16,"y":312.00000190734863,"width":408,"height":1},"enabled":true,"hittable":true,"kind":"other"},
  {"index":48,"parentIndex":45,"depth":35,"type":"Other","rect":{"x":16,"y":313.00000190734863,"width":408,"height":46.666656494140625},"enabled":true,"hittable":true,"kind":"other","label":"<label>","identifier":"<identifier>"},
  {"index":49,"parentIndex":45,"depth":35,"type":"Other","rect":{"height":1,"y":359.66666984558105,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other"},
  {"index":50,"parentIndex":45,"depth":35,"type":"Other","rect":{"height":46.66668701171875,"y":360.66666984558105,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":51,"parentIndex":45,"depth":35,"type":"Other","rect":{"height":1,"y":407.3333339691162,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other"},
  {"index":52,"parentIndex":45,"depth":35,"type":"Other","rect":{"height":46.666656494140625,"y":408.3333339691162,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":53,"parentIndex":45,"depth":35,"type":"Other","rect":{"height":1,"y":455.0000057220459,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other"},
  {"index":54,"parentIndex":45,"depth":35,"type":"Other","rect":{"height":46.666656494140625,"y":456.0000057220459,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":55,"parentIndex":40,"depth":34,"type":"Other","rect":{"height":16.33331298828125,"y":526.6666564941406,"x":0,"width":440},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":56,"parentIndex":40,"depth":34,"type":"Other","rect":{"height":94.33331298828125,"y":550.9999904632568,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":57,"parentIndex":56,"depth":35,"type":"Other","rect":{"height":46.66668701171875,"y":550.9999904632568,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":58,"parentIndex":56,"depth":35,"type":"Other","rect":{"height":1,"y":597.6666584014893,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other"},
  {"index":59,"parentIndex":56,"depth":35,"type":"Other","rect":{"height":46.6666259765625,"y":598.6666584014893,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":60,"parentIndex":40,"depth":34,"type":"Other","rect":{"height":178,"y":669.3333129882812,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":61,"parentIndex":60,"depth":35,"type":"Other","rect":{"height":46.66668701171875,"y":669.3333129882812,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":62,"parentIndex":60,"depth":35,"type":"Other","rect":{"height":1,"y":715.9999809265137,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other"},
  {"index":63,"parentIndex":60,"depth":35,"type":"Other","rect":{"height":64.66668701171875,"y":716.9999809265137,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":64,"parentIndex":60,"depth":35,"type":"Other","rect":{"height":1,"y":781.6666488647461,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other"},
  {"index":65,"parentIndex":60,"depth":35,"type":"Other","rect":{"height":64.6666259765625,"y":782.6666488647461,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":66,"parentIndex":40,"depth":34,"type":"Button","rect":{"height":16.3333740234375,"y":871.3333129882812,"x":0,"width":440},"enabled":true,"hittable":true,"kind":"button","label":"<label>"},
  {"index":67,"parentIndex":38,"depth":32,"type":"Other","rect":{"height":782,"y":112,"x":407,"width":30},"enabled":true,"hittable":true,"kind":"other","label":"<label>","value":"<value>"},
  {"index":68,"parentIndex":67,"depth":33,"type":"Other","rect":{"height":739.3333333333334,"y":115,"x":434,"width":3},"enabled":true,"hittable":true,"kind":"other"},
  {"index":69,"parentIndex":38,"depth":32,"type":"Other","rect":{"height":30,"y":923,"x":62,"width":316},"enabled":true,"hittable":true,"kind":"other","label":"<label>","value":"<value>"},
  {"index":70,"parentIndex":69,"depth":33,"type":"Other","rect":{"height":3,"y":950,"x":65,"width":310},"enabled":true,"hittable":true,"kind":"other"},
  {"index":71,"parentIndex":38,"depth":32,"type":"Other","rect":{"height":782,"y":112,"x":407,"width":30},"enabled":true,"hittable":true,"kind":"other","label":"<label>","value":"<value>"},
  {"index":72,"parentIndex":71,"depth":33,"type":"Other","rect":{"height":739.3333333333334,"y":115,"x":434,"width":3},"enabled":true,"hittable":true,"kind":"other"},
  {"index":73,"parentIndex":38,"depth":32,"type":"Other","rect":{"height":30,"y":923,"x":62,"width":316},"enabled":true,"hittable":true,"kind":"other","label":"<label>","value":"<value>"},
  {"index":74,"parentIndex":73,"depth":33,"type":"Other","rect":{"height":3,"y":950,"x":65,"width":310},"enabled":true,"hittable":true,"kind":"other"},
  {"index":75,"parentIndex":27,"depth":25,"type":"Toolbar","rect":{"height":954,"y":2,"x":0,"width":440},"enabled":true,"hittable":true,"kind":"toolbar","label":"Toolbar","identifier":"Toolbar"},
  {"index":76,"parentIndex":75,"depth":26,"type":"Other","rect":{"height":954,"y":2,"x":0,"width":440},"enabled":true,"hittable":true,"kind":"other"},
  {"index":77,"parentIndex":21,"depth":19,"type":"Toolbar","rect":{"height":892,"y":64,"x":0,"width":440},"enabled":true,"hittable":true,"kind":"toolbar","label":"Toolbar","identifier":"Toolbar"},
  {"index":78,"parentIndex":77,"depth":20,"type":"Other","rect":{"height":892,"y":64,"x":0,"width":440},"enabled":true,"hittable":true,"kind":"other"},
  {"index":79,"parentIndex":19,"depth":17,"type":"Other","rect":{"height":126,"y":830,"x":0,"width":440},"enabled":true,"hittable":true,"kind":"other"},
  {"index":80,"parentIndex":19,"depth":17,"type":"Other","rect":{"height":94,"y":862,"x":0,"width":440},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":81,"parentIndex":80,"depth":18,"type":"Other","rect":{"height":60,"y":862,"x":16,"width":408},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":82,"parentIndex":81,"depth":19,"type":"Other","rect":{"height":44,"y":870,"x":24,"width":98},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":83,"parentIndex":82,"depth":20,"type":"Other","rect":{"x":51,"y":870,"width":44,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":84,"parentIndex":83,"depth":21,"type":"StaticText","rect":{"x":60.666666984558105,"y":879.6666669845581,"width":24.333332061767578,"height":24.6666259765625},"enabled":true,"hittable":true,"kind":"text","label":"<label>"},
  {"index":85,"parentIndex":84,"depth":22,"type":"StaticText","rect":{"x":60.666666984558105,"y":879.6666669845581,"width":24.333332061767578,"height":24.6666259765625},"enabled":true,"hittable":true,"kind":"text","label":"<label>"},
  {"index":86,"parentIndex":81,"depth":19,"type":"Other","rect":{"x":122,"y":870,"width":98,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":87,"parentIndex":81,"depth":19,"type":"Other","rect":{"x":220,"y":870,"width":98,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":88,"parentIndex":81,"depth":19,"type":"Other","rect":{"x":318,"y":870,"width":98,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":89,"parentIndex":88,"depth":20,"type":"Other","rect":{"x":345,"y":870,"width":44,"height":44},"enabled":true,"hittable":true,"kind":"other","label":"<label>"},
  {"index":90,"parentIndex":89,"depth":21,"type":"StaticText","rect":{"x":354.6666669845581,"y":879.6666669845581,"width":24.333343505859375,"height":24.6666259765625},"enabled":true,"hittable":true,"kind":"text","label":"<label>"},
  {"index":91,"parentIndex":90,"depth":22,"type":"StaticText","rect":{"x":354.6666669845581,"y":879.6666669845581,"width":24.333343505859375,"height":24.6666259765625},"enabled":true,"hittable":true,"kind":"text","label":"<label>"},
  {"index":92,"parentIndex":14,"depth":12,"type":"Toolbar","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"toolbar","label":"Toolbar","identifier":"Toolbar"},
  {"index":93,"parentIndex":92,"depth":13,"type":"Other","rect":{"x":0,"y":64,"width":440,"height":892},"enabled":true,"hittable":true,"kind":"other"},
  {"index":94,"parentIndex":0,"depth":1,"type":"Window","rect":{"x":0,"y":0,"width":440,"height":956},"enabled":true,"hittable":true,"kind":"window"},
  {"index":95,"parentIndex":94,"depth":2,"type":"Other","rect":{"x":0,"y":0,"width":440,"height":956},"enabled":true,"hittable":true,"kind":"other"},
  {"index":96,"parentIndex":95,"depth":3,"type":"Other","rect":{"x":0,"y":0,"width":440,"height":956},"enabled":true,"hittable":true,"kind":"other"}
 ]
}
主要语言
TypeScript
星标
5.1k
派生
339
平均合并
11 小时 54 分钟
30 天内合并 PR
745

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

callstack/agent-device 的其他 Issue

查看 callstack/agent-device 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。