The mobile composer/footer slid over the message list when the user swiped with the keyboard up. Cause: --vv-height / --vv-offset-top were routed through React state via useMobileKeyboard, so on iOS — which fires visualViewport scroll/resize on the same frame as its keyboard animation — the .chat-thread translation lagged by one paint, visible as the composer momentarily floating over messages. Now those two vars are written imperatively in a useLayoutEffect directly to the .chat-thread DOM node on every visualViewport event, mirroring the working pattern at QuickChatFAB.tsx:1032-1052 (which already works correctly on mobile). Only --keyboard-overlap (a structural open/close signal, not per-frame) still flows through React state. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
17 lines
886 B
TypeScript
17 lines
886 B
TypeScript
export declare const FUSION_SKILL_NAME = "fusion";
|
|
export type HermesFusionSkillInstallOutcome = "installed" | "already-installed" | "replaced" | "skipped" | "warning";
|
|
export interface HermesFusionSkillInstallResult {
|
|
outcome: HermesFusionSkillInstallOutcome;
|
|
sourceDir: string | null;
|
|
targetDir: string;
|
|
reason?: string;
|
|
}
|
|
export declare function resolveHermesHome(profile?: string): string;
|
|
export declare function getFusionSkillSourceCandidates(moduleUrl?: string): string[];
|
|
export declare function resolveBundledFusionSkillSource(): string | null;
|
|
export declare function resolveBundledFusionSkillSourceFromCandidates(candidates: string[]): string | null;
|
|
export declare function installFusionSkillIntoHermesHome(options?: {
|
|
profile?: string;
|
|
sourceDir?: string | null;
|
|
}): HermesFusionSkillInstallResult;
|
|
//# sourceMappingURL=fusion-skill-install.d.ts.map
|