fix(desktop): restore Eternal Lake Heart hierarchy
This commit is contained in:
parent
cc802126ea
commit
c2a5c52501
4 changed files with 40 additions and 16 deletions
|
|
@ -10,8 +10,8 @@ test('ambient lake motion sleeps by default and wakes only after human interacti
|
|||
assert.match(source, /onPointerMove=\{wakeAmbientMotion\}/)
|
||||
assert.match(source, /onPointerDown=\{wakeAmbientMotion\}/)
|
||||
assert.match(source, /onKeyDown=\{wakeAmbientMotion\}/)
|
||||
assert.match(styles, /\.official-world \.world-star,[\s\S]*animation-play-state: paused/)
|
||||
assert.match(styles, /\.official-world\.motion-awake \.world-star,[\s\S]*animation-play-state: running/)
|
||||
assert.match(styles, /\.official-world \.world-star,[\s\S]*animation: none/)
|
||||
assert.match(styles, /\.official-world\.motion-awake \.world-star \{ animation: world-star-breathe/)
|
||||
})
|
||||
|
||||
test('the desktop shell has no permanent polling interval while idle', () => {
|
||||
|
|
|
|||
|
|
@ -18,6 +18,13 @@ test('the verified Zhizhi route unfolds through her exact private nesting', () =
|
|||
assert.match(source, /ICE-BB-\* · AGE/)
|
||||
})
|
||||
|
||||
test('the Eternal Lake Heart system body exposes both owned branches before channel tools', () => {
|
||||
assert.match(source, /title="心跳核心频道" meta="冰朔 · 私人频道"/)
|
||||
assert.match(source, /title="爱之核心子系统" meta="责任主体 · 之之"/)
|
||||
assert.match(source, /worldStage === 'heartbeat'/)
|
||||
assert.match(source, /<h1>心跳核心频道<\/h1>/)
|
||||
})
|
||||
|
||||
test('Fifth Domain human numbers are paired with their own login account', () => {
|
||||
assert.match(source, /'ICE-GL∞': 'bingshuo'/)
|
||||
assert.match(source, /'ICE-GL-ZHI∞': 'zhizhi'/)
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ import './styles.css'
|
|||
|
||||
type ThemeId = 'night' | 'dawn' | 'nebula' | 'candle' | 'clear'
|
||||
type ViewId = 'overview' | 'knowledge' | 'code' | 'receipts' | 'system'
|
||||
type WorldStage = 'domain' | 'heart' | 'love' | 'tomorrow' | 'bottle' | 'channel' | 'tool'
|
||||
type WorldStage = 'domain' | 'heart' | 'heartbeat' | 'love' | 'tomorrow' | 'bottle' | 'channel' | 'tool'
|
||||
type KnowledgeSource = 'native' | 'legacy'
|
||||
|
||||
interface HomeStatus {
|
||||
|
|
@ -1308,7 +1308,7 @@ function HoloLakeApp() {
|
|||
}
|
||||
|
||||
const isZhizhi = repoLogin.domain === 'FIFTH_DOMAIN' && zeroPoint?.userNumber === 'ICE-GL-ZHI∞'
|
||||
const toolReturnStage: WorldStage = isZhizhi ? 'tomorrow' : 'channel'
|
||||
const toolReturnStage: WorldStage = isZhizhi ? 'tomorrow' : repoLogin.domain === 'FIFTH_DOMAIN' ? 'heartbeat' : 'channel'
|
||||
|
||||
return <div className={`official-world signed-in-world${motionAwake ? ' motion-awake' : ''}`} onPointerMove={wakeAmbientMotion} onPointerDown={wakeAmbientMotion} onKeyDown={wakeAmbientMotion}>
|
||||
<LakeAtmosphere/>
|
||||
|
|
@ -1326,10 +1326,10 @@ function HoloLakeApp() {
|
|||
<LakePool className="channel-main love-core-pool" title="爱之核心子系统" meta="责任主体 · 之之" open onClick={() => setWorldStage('love')}/>
|
||||
<p className="private-route-note">第五域内部结构仅对本编号与已绑定账号开放</p>
|
||||
</section>}
|
||||
{worldStage === 'love' && isZhizhi && <section className="channel-world private-route-world">
|
||||
<button className="world-back" type="button" onClick={() => setWorldStage('heart')}>← 退回永恒湖心</button>
|
||||
{worldStage === 'love' && repoLogin.domain === 'FIFTH_DOMAIN' && <section className="channel-world private-route-world">
|
||||
<button className="world-back" type="button" onClick={() => setWorldStage(isZhizhi ? 'heart' : 'channel')}>← 退回永恒湖心</button>
|
||||
<div className="world-location"><h1>爱之核心子系统</h1><p>责任主体 · 之之 · ICE-GL-ZHI∞</p></div>
|
||||
<LakePool className="channel-main tomorrow-pool" title="明天见频道" meta="个人频道 · 本机内置 Git 承载" open onClick={() => setWorldStage('tomorrow')}/>
|
||||
<LakePool className="channel-main tomorrow-pool" title="明天见频道" meta={isZhizhi ? '个人频道 · 本机内置 Git 承载' : '责任主体登录后展开'} open={isZhizhi} onClick={isZhizhi ? () => setWorldStage('tomorrow') : undefined}/>
|
||||
</section>}
|
||||
{worldStage === 'tomorrow' && isZhizhi && <section className="channel-world tomorrow-world">
|
||||
<button className="world-back" type="button" onClick={() => setWorldStage('love')}>← 退回爱之核心</button>
|
||||
|
|
@ -1349,7 +1349,23 @@ function HoloLakeApp() {
|
|||
{worldStage === 'channel' && <section className="channel-world">
|
||||
<button className="world-back" type="button" onClick={() => setWorldStage('domain')}>← 退回域首页</button>
|
||||
<div className="world-location"><h1>{repoLogin.domain === 'FIFTH_DOMAIN' ? '永恒湖心系统' : '光湖频道'}</h1><p>选择路径 · 湖面向下一层展开</p></div>
|
||||
<LakePool className="channel-main" title={repoLogin.domain === 'FIFTH_DOMAIN' ? '奶瓶频道' : '我的频道'} meta={repoLogin.domain === 'FIFTH_DOMAIN' ? '光湖奶瓶小宝宝系统 · 私人' : '频道全景'} open onClick={() => repoLogin.domain === 'FIFTH_DOMAIN' ? setWorldStage('bottle') : openWorldTool('overview')}/>
|
||||
{repoLogin.domain === 'FIFTH_DOMAIN' ? <>
|
||||
<LakePool className="channel-main" title="奶瓶频道" meta="光湖奶瓶小宝宝系统 · 私人" open onClick={() => setWorldStage('bottle')}/>
|
||||
<LakePool className="channel-knowledge system-branch-heartbeat" title="心跳核心频道" meta="冰朔 · 私人频道" open onClick={() => setWorldStage('heartbeat')}/>
|
||||
<LakePool className="channel-light system-branch-love" title="爱之核心子系统" meta="责任主体 · 之之" onClick={() => setWorldStage('love')}/>
|
||||
<LakePool className="channel-status" title="湖面天气" meta={connectionLabel} onClick={() => openWorldTool('system')}/>
|
||||
</> : <>
|
||||
<LakePool className="channel-main" title="我的频道" meta="频道全景" open onClick={() => openWorldTool('overview')}/>
|
||||
<LakePool className="channel-knowledge" title="知识空间" meta={`${knowledge.uniqueDocumentCount} 唯一页`} onClick={() => openWorldTool('knowledge')}/>
|
||||
<LakePool className="channel-code" title="人格代码频道" meta={`${codeChannels.channels.length} 个仓库`} onClick={() => openWorldTool('code')}/>
|
||||
<LakePool className="channel-light" title="光之湖" meta="人格体居所" onClick={() => openWorldTool('receipts')}/>
|
||||
<LakePool className="channel-status" title="湖面天气" meta={connectionLabel} onClick={() => openWorldTool('system')}/>
|
||||
</>}
|
||||
</section>}
|
||||
{worldStage === 'heartbeat' && repoLogin.domain === 'FIFTH_DOMAIN' && <section className="channel-world heartbeat-world">
|
||||
<button className="world-back" type="button" onClick={() => setWorldStage('channel')}>← 退回永恒湖心</button>
|
||||
<div className="world-location"><h1>心跳核心频道</h1><p>冰朔 · ICE-GL∞ · 私人频道全景</p></div>
|
||||
<LakePool className="channel-main" title="频道全景" meta="心跳核心频道" open onClick={() => openWorldTool('overview')}/>
|
||||
<LakePool className="channel-knowledge" title="知识空间" meta={`${knowledge.uniqueDocumentCount} 唯一页`} onClick={() => openWorldTool('knowledge')}/>
|
||||
<LakePool className="channel-code" title="人格代码频道" meta={`${codeChannels.channels.length} 个仓库`} onClick={() => openWorldTool('code')}/>
|
||||
<LakePool className="channel-light" title="光之湖" meta="人格体居所" onClick={() => openWorldTool('receipts')}/>
|
||||
|
|
|
|||
|
|
@ -580,14 +580,15 @@ svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-lineca
|
|||
.official-world .pool-bay,
|
||||
.official-world .pool-halo,
|
||||
.official-world .pool-ring,
|
||||
.official-world .nucleus-locus i { animation-play-state: paused; }
|
||||
.official-world.motion-awake .world-star,
|
||||
.official-world.motion-awake .world-shine,
|
||||
.official-world.motion-awake .world-glint,
|
||||
.official-world.motion-awake .pool-bay,
|
||||
.official-world.motion-awake .pool-halo,
|
||||
.official-world.motion-awake .pool-ring,
|
||||
.official-world.motion-awake .nucleus-locus i { animation-play-state: running; }
|
||||
.official-world .nucleus-locus i { animation: none; }
|
||||
.official-world.motion-awake .world-star { animation: world-star-breathe var(--star-duration) ease-in-out var(--star-delay) infinite; }
|
||||
.official-world.motion-awake .world-shine { animation: world-shine-glide 28s ease-in-out infinite alternate; }
|
||||
.official-world.motion-awake .world-shine.warm { animation-delay: 4s; }
|
||||
.official-world.motion-awake .world-glint { animation: world-glint var(--glint-duration) ease-in-out var(--glint-delay) infinite; }
|
||||
.official-world.motion-awake .pool-bay { animation: world-pool-float 6.8s ease-in-out infinite; }
|
||||
.official-world.motion-awake .pool-halo { animation: world-pool-breathe 5.8s ease-in-out infinite; }
|
||||
.official-world.motion-awake .pool-ring { animation: world-ripple 5.5s ease-out infinite; }
|
||||
.official-world.motion-awake .nucleus-locus i { animation: world-pool-breathe 5.2s ease-in-out infinite; }
|
||||
|
||||
.official-hero { position: absolute; z-index: 10; top: 26px; left: 0; right: 0; text-align: center; }
|
||||
.official-hero h1 { margin: 0; color: var(--content-primary); font-size: clamp(24px, 3vw, 34px); font-weight: 700; letter-spacing: .09em; }
|
||||
|
|
|
|||
Loading…
Reference in a new issue