Skip to content

fix(desktop): restore composer drafts after #2574 remount - #2584

Merged
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y
Aug 9, 2026
Merged

fix(desktop): restore composer drafts after #2574 remount#2584
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y

Conversation

@jackwener

Copy link
Copy Markdown
Member

Summary

  • fix(ui): drop ceremonial Astryx patches; two-tone shell floor #2574 remounted ChatSurfaceLayout with key={activeId} so scroll state would not leak. That also remounted the Composer and wiped its in-component draft Map. The PR comment claimed drafts lived outside the layout; they do not.
  • Remove that remount so session switch / revision flows keep unsent drafts (composer skill leave-return, skill-draft-lifecycle).
  • Align two patch-era selectors with stock Astryx (not product fixes):
    • activity-card e2e: role=button instead of data-slot="chat-tool-call-row"
    • skills scroll story: .maka-module-page-rows instead of [aria-label="技能列表"] (List does not forward aria-label)

Test plan

  • Desktop: type a draft with skill chips → 新任务 → return to previous session → draft and chips still present
  • Revision + disable skill send failure: composer still shows the edited text / skill token
  • Storybook smoke: extensions-skills-scroll-containment passes
  • activity-card sticky e2e: expandable tool rows still sticky under group expand
  • Optional: switch sessions and confirm no severe scroll/new-message bleed (accepted tradeoff vs draft loss)

Drop the session-keyed ChatLayout remount that wiped the in-composer
draft Map, and point patch-era e2e/story selectors at stock Astryx DOM.
#2574 dropped the data-slot patch; nested sticky CSS still targeted it, so
expanded call headers scrolled away. Bind sticky to role=button instead.
@jackwener
jackwener merged commit 61f5f2a into mainAug 9, 2026
11 checks passed
@jackwener
jackwener deleted the fix/2574-chatlayout-draft-a11y branch August 9, 2026 07:33
@Astro-HanAstro-Han mentioned this pull request Aug 9, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix(desktop): restore composer drafts after #2574 remount by jackwener · Pull Request #2584 · apache/maka · GitHub
Skip to content

fix(desktop): restore composer drafts after #2574 remount - #2584

Merged
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y
Aug 9, 2026
Merged

fix(desktop): restore composer drafts after #2574 remount#2584
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y

Conversation

@jackwener

Copy link
Copy Markdown
Member

Summary

  • fix(ui): drop ceremonial Astryx patches; two-tone shell floor #2574 remounted ChatSurfaceLayout with key={activeId} so scroll state would not leak. That also remounted the Composer and wiped its in-component draft Map. The PR comment claimed drafts lived outside the layout; they do not.
  • Remove that remount so session switch / revision flows keep unsent drafts (composer skill leave-return, skill-draft-lifecycle).
  • Align two patch-era selectors with stock Astryx (not product fixes):
    • activity-card e2e: role=button instead of data-slot="chat-tool-call-row"
    • skills scroll story: .maka-module-page-rows instead of [aria-label="技能列表"] (List does not forward aria-label)

Test plan

  • Desktop: type a draft with skill chips → 新任务 → return to previous session → draft and chips still present
  • Revision + disable skill send failure: composer still shows the edited text / skill token
  • Storybook smoke: extensions-skills-scroll-containment passes
  • activity-card sticky e2e: expandable tool rows still sticky under group expand
  • Optional: switch sessions and confirm no severe scroll/new-message bleed (accepted tradeoff vs draft loss)

Drop the session-keyed ChatLayout remount that wiped the in-composer
draft Map, and point patch-era e2e/story selectors at stock Astryx DOM.
#2574 dropped the data-slot patch; nested sticky CSS still targeted it, so
expanded call headers scrolled away. Bind sticky to role=button instead.
@jackwener
jackwener merged commit 61f5f2a into mainAug 9, 2026
11 checks passed
@jackwener
jackwener deleted the fix/2574-chatlayout-draft-a11y branch August 9, 2026 07:33
@Astro-HanAstro-Han mentioned this pull request Aug 9, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(desktop): restore composer drafts after #2574 remount by jackwener · Pull Request #2584 · apache/maka · GitHub
Skip to content

fix(desktop): restore composer drafts after #2574 remount - #2584

Merged
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y
Aug 9, 2026
Merged

fix(desktop): restore composer drafts after #2574 remount#2584
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y

Conversation

@jackwener

Copy link
Copy Markdown
Member

Summary

  • fix(ui): drop ceremonial Astryx patches; two-tone shell floor #2574 remounted ChatSurfaceLayout with key={activeId} so scroll state would not leak. That also remounted the Composer and wiped its in-component draft Map. The PR comment claimed drafts lived outside the layout; they do not.
  • Remove that remount so session switch / revision flows keep unsent drafts (composer skill leave-return, skill-draft-lifecycle).
  • Align two patch-era selectors with stock Astryx (not product fixes):
    • activity-card e2e: role=button instead of data-slot="chat-tool-call-row"
    • skills scroll story: .maka-module-page-rows instead of [aria-label="技能列表"] (List does not forward aria-label)

Test plan

  • Desktop: type a draft with skill chips → 新任务 → return to previous session → draft and chips still present
  • Revision + disable skill send failure: composer still shows the edited text / skill token
  • Storybook smoke: extensions-skills-scroll-containment passes
  • activity-card sticky e2e: expandable tool rows still sticky under group expand
  • Optional: switch sessions and confirm no severe scroll/new-message bleed (accepted tradeoff vs draft loss)

Drop the session-keyed ChatLayout remount that wiped the in-composer
draft Map, and point patch-era e2e/story selectors at stock Astryx DOM.
#2574 dropped the data-slot patch; nested sticky CSS still targeted it, so
expanded call headers scrolled away. Bind sticky to role=button instead.
@jackwener
jackwener merged commit 61f5f2a into mainAug 9, 2026
11 checks passed
@jackwener
jackwener deleted the fix/2574-chatlayout-draft-a11y branch August 9, 2026 07:33
@Astro-HanAstro-Han mentioned this pull request Aug 9, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(desktop): restore composer drafts after #2574 remount by jackwener · Pull Request #2584 · apache/maka · GitHub
Skip to content

fix(desktop): restore composer drafts after #2574 remount - #2584

Merged
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y
Aug 9, 2026
Merged

fix(desktop): restore composer drafts after #2574 remount#2584
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y

Conversation

@jackwener

Copy link
Copy Markdown
Member

Summary

  • fix(ui): drop ceremonial Astryx patches; two-tone shell floor #2574 remounted ChatSurfaceLayout with key={activeId} so scroll state would not leak. That also remounted the Composer and wiped its in-component draft Map. The PR comment claimed drafts lived outside the layout; they do not.
  • Remove that remount so session switch / revision flows keep unsent drafts (composer skill leave-return, skill-draft-lifecycle).
  • Align two patch-era selectors with stock Astryx (not product fixes):
    • activity-card e2e: role=button instead of data-slot="chat-tool-call-row"
    • skills scroll story: .maka-module-page-rows instead of [aria-label="技能列表"] (List does not forward aria-label)

Test plan

  • Desktop: type a draft with skill chips → 新任务 → return to previous session → draft and chips still present
  • Revision + disable skill send failure: composer still shows the edited text / skill token
  • Storybook smoke: extensions-skills-scroll-containment passes
  • activity-card sticky e2e: expandable tool rows still sticky under group expand
  • Optional: switch sessions and confirm no severe scroll/new-message bleed (accepted tradeoff vs draft loss)

Drop the session-keyed ChatLayout remount that wiped the in-composer
draft Map, and point patch-era e2e/story selectors at stock Astryx DOM.
#2574 dropped the data-slot patch; nested sticky CSS still targeted it, so
expanded call headers scrolled away. Bind sticky to role=button instead.
@jackwener
jackwener merged commit 61f5f2a into mainAug 9, 2026
11 checks passed
@jackwener
jackwener deleted the fix/2574-chatlayout-draft-a11y branch August 9, 2026 07:33
@Astro-HanAstro-Han mentioned this pull request Aug 9, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' fix(desktop): restore composer drafts after #2574 remount by jackwener · Pull Request #2584 · apache/maka · GitHub
Skip to content

fix(desktop): restore composer drafts after #2574 remount - #2584

Merged
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y
Aug 9, 2026
Merged

fix(desktop): restore composer drafts after #2574 remount#2584
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y

Conversation

@jackwener

Copy link
Copy Markdown
Member

Summary

  • fix(ui): drop ceremonial Astryx patches; two-tone shell floor #2574 remounted ChatSurfaceLayout with key={activeId} so scroll state would not leak. That also remounted the Composer and wiped its in-component draft Map. The PR comment claimed drafts lived outside the layout; they do not.
  • Remove that remount so session switch / revision flows keep unsent drafts (composer skill leave-return, skill-draft-lifecycle).
  • Align two patch-era selectors with stock Astryx (not product fixes):
    • activity-card e2e: role=button instead of data-slot="chat-tool-call-row"
    • skills scroll story: .maka-module-page-rows instead of [aria-label="技能列表"] (List does not forward aria-label)

Test plan

  • Desktop: type a draft with skill chips → 新任务 → return to previous session → draft and chips still present
  • Revision + disable skill send failure: composer still shows the edited text / skill token
  • Storybook smoke: extensions-skills-scroll-containment passes
  • activity-card sticky e2e: expandable tool rows still sticky under group expand
  • Optional: switch sessions and confirm no severe scroll/new-message bleed (accepted tradeoff vs draft loss)

Drop the session-keyed ChatLayout remount that wiped the in-composer
draft Map, and point patch-era e2e/story selectors at stock Astryx DOM.
#2574 dropped the data-slot patch; nested sticky CSS still targeted it, so
expanded call headers scrolled away. Bind sticky to role=button instead.
@jackwener
jackwener merged commit 61f5f2a into mainAug 9, 2026
11 checks passed
@jackwener
jackwener deleted the fix/2574-chatlayout-draft-a11y branch August 9, 2026 07:33
@Astro-HanAstro-Han mentioned this pull request Aug 9, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(desktop): restore composer drafts after #2574 remount by jackwener · Pull Request #2584 · apache/maka · GitHub
Skip to content

fix(desktop): restore composer drafts after #2574 remount - #2584

Merged
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y
Aug 9, 2026
Merged

fix(desktop): restore composer drafts after #2574 remount#2584
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y

Conversation

@jackwener

Copy link
Copy Markdown
Member

Summary

  • fix(ui): drop ceremonial Astryx patches; two-tone shell floor #2574 remounted ChatSurfaceLayout with key={activeId} so scroll state would not leak. That also remounted the Composer and wiped its in-component draft Map. The PR comment claimed drafts lived outside the layout; they do not.
  • Remove that remount so session switch / revision flows keep unsent drafts (composer skill leave-return, skill-draft-lifecycle).
  • Align two patch-era selectors with stock Astryx (not product fixes):
    • activity-card e2e: role=button instead of data-slot="chat-tool-call-row"
    • skills scroll story: .maka-module-page-rows instead of [aria-label="技能列表"] (List does not forward aria-label)

Test plan

  • Desktop: type a draft with skill chips → 新任务 → return to previous session → draft and chips still present
  • Revision + disable skill send failure: composer still shows the edited text / skill token
  • Storybook smoke: extensions-skills-scroll-containment passes
  • activity-card sticky e2e: expandable tool rows still sticky under group expand
  • Optional: switch sessions and confirm no severe scroll/new-message bleed (accepted tradeoff vs draft loss)

Drop the session-keyed ChatLayout remount that wiped the in-composer
draft Map, and point patch-era e2e/story selectors at stock Astryx DOM.
#2574 dropped the data-slot patch; nested sticky CSS still targeted it, so
expanded call headers scrolled away. Bind sticky to role=button instead.
@jackwener
jackwener merged commit 61f5f2a into mainAug 9, 2026
11 checks passed
@jackwener
jackwener deleted the fix/2574-chatlayout-draft-a11y branch August 9, 2026 07:33
@Astro-HanAstro-Han mentioned this pull request Aug 9, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); fix(desktop): restore composer drafts after #2574 remount by jackwener · Pull Request #2584 · apache/maka · GitHub
Skip to content

fix(desktop): restore composer drafts after #2574 remount - #2584

Merged
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y
Aug 9, 2026
Merged

fix(desktop): restore composer drafts after #2574 remount#2584
jackwener merged 2 commits into
mainfrom
fix/2574-chatlayout-draft-a11y

Conversation

@jackwener

Copy link
Copy Markdown
Member

Summary

  • fix(ui): drop ceremonial Astryx patches; two-tone shell floor #2574 remounted ChatSurfaceLayout with key={activeId} so scroll state would not leak. That also remounted the Composer and wiped its in-component draft Map. The PR comment claimed drafts lived outside the layout; they do not.
  • Remove that remount so session switch / revision flows keep unsent drafts (composer skill leave-return, skill-draft-lifecycle).
  • Align two patch-era selectors with stock Astryx (not product fixes):
    • activity-card e2e: role=button instead of data-slot="chat-tool-call-row"
    • skills scroll story: .maka-module-page-rows instead of [aria-label="技能列表"] (List does not forward aria-label)

Test plan

  • Desktop: type a draft with skill chips → 新任务 → return to previous session → draft and chips still present
  • Revision + disable skill send failure: composer still shows the edited text / skill token
  • Storybook smoke: extensions-skills-scroll-containment passes
  • activity-card sticky e2e: expandable tool rows still sticky under group expand
  • Optional: switch sessions and confirm no severe scroll/new-message bleed (accepted tradeoff vs draft loss)

Drop the session-keyed ChatLayout remount that wiped the in-composer
draft Map, and point patch-era e2e/story selectors at stock Astryx DOM.
#2574 dropped the data-slot patch; nested sticky CSS still targeted it, so
expanded call headers scrolled away. Bind sticky to role=button instead.
@jackwener
jackwener merged commit 61f5f2a into mainAug 9, 2026
11 checks passed
@jackwener
jackwener deleted the fix/2574-chatlayout-draft-a11y branch August 9, 2026 07:33
@Astro-HanAstro-Han mentioned this pull request Aug 9, 2026
4 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener