autoResize misses absolutely-positioned portal growth (popover opens → no size-changed)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 56/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- react, typescript
Direzione di ricerca
Inizia da setupSizeChangedNotifications e confronta i relativi trigger e la misurazione di ResizeObserver con il workaround di body MutationObserver descritto qui e in direction #619. Usa l’harness del wire contract che pilota AppBridge per verificare che l’apertura di un popover basato su portal emetta ui/notifications/size-changed con un’altezza che includa il contenuto out-of-flow.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
With autoResize: true (the useApp() default), opening any portal-based popover — a date-picker calendar, a Select dropdown, a tooltip — never emits ui/notifications/size-changed, so the host iframe stays at the pre-popover height and the popover is clipped.
Two independent gaps in setupSizeChangedNotifications (v1.7.4):
- Trigger gap: the
ResizeObserverwatches onlydocument.documentElementanddocument.bodyborder-boxes. Component libraries (Mantine, Radix, MUI, Floating UI…) render popovers into an absolutely-positioned portal appended to<body>— typically inside a zero-height positioned wrapper. Neither observed border-box changes, so no measurement is ever scheduled. - Measurement gap: even when a measure does run, it reports
documentElement.getBoundingClientRect().heightunder a transientheight: max-content— which excludes out-of-flow content. An absolutely-positioned dropdown extending past the in-flow content does not contribute, so the reported height is unchanged anyway. (#619's proposedbody.scrollHeightmeasure would fix this half, but not gap 1.)
Repro
Any React app embedded via the SDK:
const { app } = useApp({ appInfo, capabilities: {} }); // autoResize default
// render a Mantine <DatePickerInput /> near the bottom of the content
Click the input → calendar opens in a portal, extends ~300px past the content → no size-changed notification → host iframe clips the calendar. Verified against a host that resizes the iframe to every reported height (our wire-contract harness drives AppBridge directly).
Workaround we ship
A MutationObserver on body funnelled through the public API:
useEffect(() => {
if (!app) return;
const report = () =>
app.sendSizeChanged({
width: Math.ceil(window.innerWidth),
height: Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight,
),
});
const mo = new MutationObserver(report);
mo.observe(document.body, { childList: true, subtree: true, attributes: true });
return () => mo.disconnect();
}, [app]);
scrollHeight includes the out-of-flow portal; the MutationObserver supplies the missing trigger.
Suggested fix
In setupSizeChangedNotifications, add a (debounced) MutationObserver on body alongside the existing ResizeObserver, and measure with Math.max(body.scrollHeight, documentElement.scrollHeight) (compatible with the direction #619 proposes) so out-of-flow portals are both detected and measured.
Related: #502 (height-management umbrella), #619 (measurement strategy), #567 (auto-resize side effects).
- Lingua principale
- TypeScript
- Stelle
- 2.9k
- Fork
- 394
- Merge medio
- 4h 35m
- PR unite (30g)
- 13
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelcontextprotocol/ext-apps
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
modelcontextprotocol/ext-apps#786 ·
I maintainer di solito rispondono entro 1 giorno
-
Reference host renders tool.name in the app header; base spec display precedence is title → annotations.title → nameForse già presa @Michael-WhiteCapData l’ha presa 17 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
modelcontextprotocol/ext-apps#767 ·
I maintainer di solito rispondono entro 1 giorno
-
Documentation for MCP Apps does not match 2026-07-28 specificationForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
modelcontextprotocol/ext-apps#742 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
modelcontextprotocol/ext-apps#711 ·
I maintainer di solito rispondono entro 1 giorno
-
Spec: Deprecate SamplingAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
modelcontextprotocol/ext-apps#706 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di modelcontextprotocol/ext-apps
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
AOSSIE-Org/DebateAI#611 ·
I maintainer di solito rispondono entro 3 giorni
-
Upgrade node-libzim to 4.7.0Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
openzim/mwoffliner#2933 ·
I maintainer di solito rispondono entro 1 giorno
-
Use the README category name for website links and submissionsForse già presa @dajiaohuang l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
birobirobiro/awesome-shadcn-ui#647 ·
I maintainer di solito rispondono entro 2 giorni
-
Twake Drive picker: closePicker() never destroys the intent (stop() is on the promise returned by start(), not by create())Forse già presa @chibenwa l’ha presa oggi. Apertaclaude
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
linagora/twake-calendar-frontend#1498 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Add: Valea Prahovei TV RO SDApertacheck:passed streams:add
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno