Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui

Keep both Remote contributions master and this branch add: the mount loop
now carries commandsRemote, goalsRemote, pluginInventoryRemote, and
messageFeedbackRemote, with both new tsconfig references retained.
This commit is contained in:
Chinesezjc
2026-08-12 16:36:10 +08:00
339 changed files with 7766 additions and 2302 deletions

View File

@@ -1,7 +1,7 @@
/* Conversation column skeleton: header (breadcrumb row only for subagents not fork + tabs) over the view
area, composer InputBar at the bottom. Column width/squeeze is layout's;
this fills its cell. Figma: Header 39:27730 (83px two-row), tabs 13px with
a 3px active bar. */
a 2px active bar. */
.root {
display: flex;
@@ -26,9 +26,22 @@
}
.header {
position: relative;
flex: none;
padding: 12px 28px 0 20px;
border-bottom: 1px solid var(--dsw-alias-border-l2);
border-bottom: 1px solid transparent;
}
.header::after {
content: '';
position: absolute;
right: 0;
bottom: 1px;
left: 0;
z-index: 0;
height: 1px;
background: var(--dsw-alias-border-l2);
pointer-events: none;
}
/* Blank hero/settling: keep the strict Session header mounted without taking
@@ -100,13 +113,15 @@
/* figma Tab_Group 34:11441: 35px strip, gap 36, pad-left 8, tabs bottom-aligned. */
.tabs {
position: relative;
z-index: 1;
display: flex;
gap: 36px;
margin-top: 4px;
padding-left: 8px;
}
/* figma .Tab 34:11442: 13/16 text (figma wt510, rendered 500), gap 8 to the 3px bar (no bottom rounding). */
/* figma .Tab 34:11442: 13/16 text (figma wt510, rendered 500), gap 8 to the 2px bar. */
.tab {
position: relative;
padding: 0 0 11px;
@@ -123,9 +138,10 @@
content: '';
position: absolute;
right: 0;
bottom: 0;
bottom: 1px;
left: 0;
height: 3px;
height: 2px;
border-radius: 2px;
background: transparent;
}

View File

@@ -118,7 +118,9 @@ export function HeroShell({ t, children }: HeroShellProps) {
<div className={css.stack}>
<div className={css.headline}>
{/* figma 34:10412: fish 34×25 leading the headline, gap 10. */}
<FishLogo size={34} className={css.fish} />
<span className={css.fishHitbox}>
<FishLogo size={34} className={css.fish} />
</span>
<span className={css.headlineText}>{t('hero.headline')}</span>
<span className={css.previewBadge}>{t('hero.preview')}</span>
</div>

View File

@@ -61,11 +61,39 @@
white-space: nowrap;
}
/* figma fish fill rides business blue. */
.fish {
/* Keep hover detection on a stationary box while the mark moves within it. */
.fishHitbox {
grid-row: 1;
grid-column: 1;
color: var(--dsw-alias-state-business-primary);
display: inline-flex;
align-items: center;
justify-content: center;
}
/* Keep the hero mark in the same primary ink as its headline. */
.fish {
color: var(--dsw-alias-label-primary);
transform-origin: 50% 60%;
}
@keyframes hero-fish-swim {
0%, 100% {
transform: translate(0, 0) rotate(0deg);
}
35% {
transform: translate(-1px, -1px) rotate(-5deg);
}
70% {
transform: translate(1px, 0) rotate(3deg);
}
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
.fishHitbox:hover .fish {
animation: hero-fish-swim var(--ds-transition-duration-slow) var(--ds-ease-in-out);
}
}
/* Workspace row sits 12px above the input card (figma y80 → y112). The blue