@@ -453,6 +462,7 @@ export function HoloLakeHome({
{t('hololake.channel.heartbeatDescription')}
+ navigate('education-work-lake')} />
@@ -492,6 +502,7 @@ export function HoloLakeHome({
+
>}
{fifthDomainOpen && <>
diff --git a/product-source/hololake-platform/src/hooks/useAiAgentsStatus.test.ts b/product-source/hololake-platform/src/hooks/useAiAgentsStatus.test.ts
index 0407d1264..c5a1aca57 100644
--- a/product-source/hololake-platform/src/hooks/useAiAgentsStatus.test.ts
+++ b/product-source/hololake-platform/src/hooks/useAiAgentsStatus.test.ts
@@ -57,11 +57,6 @@ describe('useAiAgentsStatus', () => {
expect(result.current.claude_code).toEqual({ status: 'installed', version: '1.0.20' })
expect(result.current.codex).toEqual({ status: 'missing', version: null })
expect(result.current.copilot).toEqual({ status: 'installed', version: '1.0.58' })
- expect(result.current.opencode).toEqual({ status: 'installed', version: '0.3.1' })
- expect(result.current.pi).toEqual({ status: 'installed', version: '0.70.2' })
- expect(result.current.antigravity).toEqual({ status: 'installed', version: 'Antigravity CLI 1.0.0' })
- expect(result.current.kiro).toEqual({ status: 'installed', version: '0.4.0' })
- expect(result.current.hermes).toEqual({ status: 'installed', version: 'Hermes Agent 0.16.0' })
})
})
diff --git a/product-source/hololake-platform/src/hooks/useCommandRegistry.test.ts b/product-source/hololake-platform/src/hooks/useCommandRegistry.test.ts
index cfd1aacdf..d25959ead 100644
--- a/product-source/hololake-platform/src/hooks/useCommandRegistry.test.ts
+++ b/product-source/hololake-platform/src/hooks/useCommandRegistry.test.ts
@@ -1085,9 +1085,9 @@ describe('reload-vault command', () => {
expect(cmd).toBeDefined()
expect(cmd!.label).toBe('Switch AI Agent to Codex')
expect(findCommand(result.current, 'switch-ai-agent-copilot')).toBeDefined()
- expect(findCommand(result.current, 'switch-ai-agent-opencode')).toBeDefined()
- expect(findCommand(result.current, 'switch-ai-agent-pi')).toBeDefined()
- expect(findCommand(result.current, 'switch-ai-agent-antigravity')).toBeDefined()
+ expect(findCommand(result.current, 'switch-ai-agent-opencode')).toBeUndefined()
+ expect(findCommand(result.current, 'switch-ai-agent-pi')).toBeUndefined()
+ expect(findCommand(result.current, 'switch-ai-agent-antigravity')).toBeUndefined()
cmd!.execute()
expect(onSetDefaultAiAgent).toHaveBeenCalledWith('codex')
diff --git a/product-source/hololake-platform/src/hooks/useStartupScreenState.test.ts b/product-source/hololake-platform/src/hooks/useStartupScreenState.test.ts
new file mode 100644
index 000000000..1f8c027e5
--- /dev/null
+++ b/product-source/hololake-platform/src/hooks/useStartupScreenState.test.ts
@@ -0,0 +1,27 @@
+import { renderHook } from '@testing-library/react'
+import { describe, expect, it } from 'vitest'
+import { useStartupScreenState } from './useStartupScreenState'
+
+describe('useStartupScreenState', () => {
+ it('does not let local vault onboarding replace the HoloLake world entry', () => {
+ const { result } = renderHook(() => useStartupScreenState({
+ aiAgentsPromptVisible: false,
+ isNoteWindow: false,
+ onboardingState: { status: 'welcome' },
+ runtimeMissingVaultPath: '/blocked/config/path',
+ selectedVaultPath: null,
+ settingsLoaded: true,
+ showMcpSetupDialog: false,
+ telemetryConsent: null,
+ vaultIsLoading: false,
+ vaultSwitcher: {
+ allVaults: [],
+ loaded: true,
+ vaultPath: '',
+ },
+ worldEntryVisible: true,
+ }))
+
+ expect(result.current.shouldShowStartupScreen).toBe(false)
+ })
+})
diff --git a/product-source/hololake-platform/src/hooks/useStartupScreenState.ts b/product-source/hololake-platform/src/hooks/useStartupScreenState.ts
index 2fe7b58c3..3558c5b57 100644
--- a/product-source/hololake-platform/src/hooks/useStartupScreenState.ts
+++ b/product-source/hololake-platform/src/hooks/useStartupScreenState.ts
@@ -22,6 +22,7 @@ interface UseStartupScreenStateArgs {
telemetryConsent: boolean | null
vaultIsLoading: boolean
vaultSwitcher: StartupVaultSwitcherState
+ worldEntryVisible?: boolean
}
interface StartupScreenState {
@@ -122,6 +123,7 @@ export function useStartupScreenState({
telemetryConsent,
vaultIsLoading,
vaultSwitcher,
+ worldEntryVisible = false,
}: UseStartupScreenStateArgs): StartupScreenState {
const shouldResumeFreshStartOnboarding = useMemo(
() => shouldResumeFreshStart(onboardingState, selectedVaultPath, vaultSwitcher),
@@ -129,7 +131,7 @@ export function useStartupScreenState({
)
const isStartupLoading = !isNoteWindow && onboardingState.status === 'loading'
- const shouldShowStartupScreen = shouldShowStartupScreenForState({
+ const shouldShowStartupScreen = !worldEntryVisible && shouldShowStartupScreenForState({
aiAgentsPromptVisible,
isNoteWindow,
isStartupLoading,
diff --git a/product-source/hololake-platform/src/lib/aiAgents.test.ts b/product-source/hololake-platform/src/lib/aiAgents.test.ts
index dc4444430..f7f2183cb 100644
--- a/product-source/hololake-platform/src/lib/aiAgents.test.ts
+++ b/product-source/hololake-platform/src/lib/aiAgents.test.ts
@@ -11,12 +11,12 @@ describe('aiAgents helpers', () => {
expect(normalizeStoredAiAgent('claude_code')).toBe('claude_code')
expect(normalizeStoredAiAgent('codex')).toBe('codex')
expect(normalizeStoredAiAgent('copilot')).toBe('copilot')
- expect(normalizeStoredAiAgent('opencode')).toBe('opencode')
- expect(normalizeStoredAiAgent('pi')).toBe('pi')
- expect(normalizeStoredAiAgent('antigravity')).toBe('antigravity')
- expect(normalizeStoredAiAgent('gemini')).toBe('antigravity')
- expect(normalizeStoredAiAgent('kiro')).toBe('kiro')
- expect(normalizeStoredAiAgent('hermes')).toBe('hermes')
+ expect(normalizeStoredAiAgent('opencode')).toBeNull()
+ expect(normalizeStoredAiAgent('pi')).toBeNull()
+ expect(normalizeStoredAiAgent('antigravity')).toBeNull()
+ expect(normalizeStoredAiAgent('gemini')).toBeNull()
+ expect(normalizeStoredAiAgent('kiro')).toBeNull()
+ expect(normalizeStoredAiAgent('hermes')).toBeNull()
expect(normalizeStoredAiAgent('cursor')).toBeNull()
})
@@ -40,29 +40,25 @@ describe('aiAgents helpers', () => {
expect(statuses.claude_code).toEqual({ status: 'installed', version: '1.0.20' })
expect(statuses.codex).toEqual({ status: 'missing', version: null })
expect(statuses.copilot).toEqual({ status: 'installed', version: '1.0.58' })
- expect(statuses.opencode).toEqual({ status: 'installed', version: '0.3.1' })
- expect(statuses.pi).toEqual({ status: 'installed', version: '0.70.2' })
- expect(statuses.antigravity).toEqual({ status: 'installed', version: 'Antigravity CLI 1.0.0' })
- expect(statuses.kiro).toEqual({ status: 'installed', version: '0.12.0' })
- expect(statuses.hermes).toEqual({ status: 'installed', version: 'Hermes Agent 0.16.0' })
+ expect(statuses.opencode).toBeUndefined()
+ expect(statuses.pi).toBeUndefined()
+ expect(statuses.antigravity).toBeUndefined()
+ expect(statuses.kiro).toBeUndefined()
+ expect(statuses.hermes).toBeUndefined()
})
- it('normalizes legacy Gemini status payloads to Antigravity', () => {
+ it('does not expose legacy Gemini status payloads', () => {
const statuses = normalizeAiAgentsStatus({
gemini: { installed: true, version: '0.5.1' },
})
- expect(statuses.antigravity).toEqual({ status: 'installed', version: '0.5.1' })
+ expect(statuses.antigravity).toBeUndefined()
})
it('cycles through the supported agents', () => {
expect(getNextAiAgentId('claude_code')).toBe('codex')
expect(getNextAiAgentId('codex')).toBe('copilot')
- expect(getNextAiAgentId('copilot')).toBe('opencode')
- expect(getNextAiAgentId('opencode')).toBe('pi')
- expect(getNextAiAgentId('pi')).toBe('antigravity')
- expect(getNextAiAgentId('antigravity')).toBe('kiro')
- expect(getNextAiAgentId('kiro')).toBe('hermes')
- expect(getNextAiAgentId('hermes')).toBe('claude_code')
+ expect(getNextAiAgentId('copilot')).toBe('claude_code')
+ expect(getNextAiAgentId('opencode')).toBe('claude_code')
})
})
diff --git a/product-source/hololake-platform/src/lib/aiAgents.ts b/product-source/hololake-platform/src/lib/aiAgents.ts
index 4f2ff70e0..273e40f87 100644
--- a/product-source/hololake-platform/src/lib/aiAgents.ts
+++ b/product-source/hololake-platform/src/lib/aiAgents.ts
@@ -40,37 +40,40 @@ export const AI_AGENT_DEFINITIONS: readonly AiAgentDefinition[] = [
shortLabel: 'Copilot',
installUrl: 'https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli',
},
- {
+] as const
+
+const LEGACY_AI_AGENT_DEFINITIONS: Partial> = {
+ opencode: {
id: 'opencode',
label: 'OpenCode',
shortLabel: 'OpenCode',
installUrl: 'https://opencode.ai/docs/',
},
- {
+ pi: {
id: 'pi',
label: 'Pi',
shortLabel: 'Pi',
installUrl: 'https://pi.dev',
},
- {
+ antigravity: {
id: 'antigravity',
- label: 'Antigravity CLI',
+ label: 'Antigravity',
shortLabel: 'Antigravity',
installUrl: 'https://antigravity.google/docs/cli/install',
},
- {
+ kiro: {
id: 'kiro',
label: 'Kiro',
shortLabel: 'Kiro',
installUrl: 'https://kiro.dev/docs/cli',
},
- {
+ hermes: {
id: 'hermes',
label: 'Hermes Agent',
shortLabel: 'Hermes',
installUrl: 'https://hermes-agent.nousresearch.com/docs/getting-started/quickstart',
},
-] as const
+}
export function createAiAgentAvailability(status: AiAgentStatus = 'checking', version: string | null = null): AiAgentAvailability {
return { status, version }
@@ -94,7 +97,6 @@ export function createMissingAiAgentsStatus(): AiAgentsStatus {
}
export function normalizeStoredAiAgent(value: string | null | undefined): AiAgentId | null {
- if (value === 'gemini') return 'antigravity'
if (AI_AGENT_DEFINITIONS.some((definition) => definition.id === value)) return value as AiAgentId
return null
}
@@ -104,7 +106,9 @@ export function resolveDefaultAiAgent(value: string | null | undefined): AiAgent
}
export function getAiAgentDefinition(agent: AiAgentId): AiAgentDefinition {
- return AI_AGENT_DEFINITIONS.find((definition) => definition.id === agent) ?? AI_AGENT_DEFINITIONS[0]
+ return AI_AGENT_DEFINITIONS.find((definition) => definition.id === agent)
+ ?? LEGACY_AI_AGENT_DEFINITIONS[agent]
+ ?? AI_AGENT_DEFINITIONS[0]
}
function normalizeAvailability(agent: { installed?: boolean | null; version?: string | null } | null | undefined): AiAgentAvailability {
@@ -116,7 +120,7 @@ function normalizeAvailability(agent: { installed?: boolean | null; version?: st
}
function payloadForAgent(payload: AiAgentsStatusPayload | null | undefined, agent: AiAgentId) {
- return agent === 'antigravity' ? payload?.antigravity ?? payload?.gemini : payload?.[agent]
+ return payload?.[agent]
}
export function normalizeAiAgentsStatus(payload: AiAgentsStatusPayload | null | undefined): AiAgentsStatus {
diff --git a/product-source/hololake-platform/src/lib/aiTargets.test.ts b/product-source/hololake-platform/src/lib/aiTargets.test.ts
index 73453a12e..8d804f783 100644
--- a/product-source/hololake-platform/src/lib/aiTargets.test.ts
+++ b/product-source/hololake-platform/src/lib/aiTargets.test.ts
@@ -59,7 +59,7 @@ describe('ai target provider contract', () => {
})
})
- it('accepts legacy agent ids saved in the default target field', () => {
+ it('falls back safely when the default target contains a hidden legacy agent', () => {
const target = resolveAiTarget({
default_ai_agent: 'claude_code',
default_ai_target: 'kiro',
@@ -67,12 +67,12 @@ describe('ai target provider contract', () => {
expect(target).toMatchObject({
kind: 'agent',
- agent: 'kiro',
- id: 'agent:kiro',
+ agent: 'claude_code',
+ id: 'agent:claude_code',
})
})
- it('uses the legacy default agent when a saved agent target is stale', () => {
+ it('falls back safely when the saved legacy default agent is no longer selectable', () => {
const target = resolveAiTarget({
default_ai_agent: 'kiro',
default_ai_target: 'agent:claude_code',
@@ -80,8 +80,8 @@ describe('ai target provider contract', () => {
expect(target).toMatchObject({
kind: 'agent',
- agent: 'kiro',
- id: 'agent:kiro',
+ agent: 'claude_code',
+ id: 'agent:claude_code',
})
})
diff --git a/product-source/hololake-platform/src/lib/educationWorkLake.test.ts b/product-source/hololake-platform/src/lib/educationWorkLake.test.ts
new file mode 100644
index 000000000..9166c3002
--- /dev/null
+++ b/product-source/hololake-platform/src/lib/educationWorkLake.test.ts
@@ -0,0 +1,46 @@
+import { describe, expect, it } from 'vitest'
+import {
+ educationMetricsFromSheet,
+ isEducationWorkLakePath,
+ routeEducationInstruction,
+} from './educationWorkLake'
+
+describe('routeEducationInstruction', () => {
+ it.each([
+ ['整理一下这个表格里面的数据', 'sheet'],
+ ['对比一下并做一个对比图', 'chart'],
+ ['把结果做成仪表盘', 'dashboard'],
+ ['起草一份教研文档', 'document'],
+ ['找一下课程知识库', 'knowledge'],
+ ] as const)('routes %s to %s', (instruction, expectedSurface) => {
+ expect(routeEducationInstruction(instruction).surface).toBe(expectedSurface)
+ })
+
+ it('returns a stable safe fallback without claiming execution', () => {
+ expect(routeEducationInstruction('帮我看看')).toMatchObject({
+ surface: 'knowledge',
+ capabilityId: 'HL-MOD-KNOWLEDGE-001',
+ reason: 'safe-fallback',
+ })
+ })
+
+ it('prioritizes dashboards over their underlying chart keyword', () => {
+ expect(routeEducationInstruction('把对比图放进仪表盘')).toMatchObject({
+ surface: 'dashboard',
+ capabilityId: 'HL-MOD-DASHBOARD-001',
+ })
+ })
+
+ it('projects numeric spreadsheet rows into chart metrics', () => {
+ expect(educationMetricsFromSheet('---\n_display: sheet\n---\n班级,平均分\n一班,86\n二班,91\n备注,待补')).toEqual([
+ { label: '一班', value: 86 },
+ { label: '二班', value: 91 },
+ ])
+ })
+
+ it('recognizes the server-hosted education entry without matching similar words', () => {
+ expect(isEducationWorkLakePath('/jd/education/')).toBe(true)
+ expect(isEducationWorkLakePath('/jd/education/assets/app.js')).toBe(true)
+ expect(isEducationWorkLakePath('/jd/educational/')).toBe(false)
+ })
+})
diff --git a/product-source/hololake-platform/src/lib/educationWorkLake.ts b/product-source/hololake-platform/src/lib/educationWorkLake.ts
new file mode 100644
index 000000000..2782e2c98
--- /dev/null
+++ b/product-source/hololake-platform/src/lib/educationWorkLake.ts
@@ -0,0 +1,92 @@
+export const EDUCATION_SURFACES = [
+ 'document',
+ 'sheet',
+ 'chart',
+ 'dashboard',
+ 'knowledge',
+] as const
+
+export type EducationSurface = typeof EDUCATION_SURFACES[number]
+
+export type EducationInstructionRoute = {
+ capabilityId: string
+ reason: 'keyword-match' | 'safe-fallback'
+ surface: EducationSurface
+}
+
+export type EducationMetric = {
+ label: string
+ value: number
+}
+
+const ROUTES: ReadonlyArray<{
+ capabilityId: string
+ keywords: readonly string[]
+ surface: EducationSurface
+}> = [
+ {
+ capabilityId: 'HL-MOD-DASHBOARD-001',
+ keywords: ['仪表盘', '看板', 'dashboard'],
+ surface: 'dashboard',
+ },
+ {
+ capabilityId: 'HL-MOD-CHART-001',
+ keywords: ['对比图', '图表', '柱状图', '折线图', 'chart'],
+ surface: 'chart',
+ },
+ {
+ capabilityId: 'HL-MOD-SHEET-001',
+ keywords: ['表格', '数据', '计算', '统计', 'sheet', 'spreadsheet'],
+ surface: 'sheet',
+ },
+ {
+ capabilityId: 'HL-MOD-DOC-001',
+ keywords: ['文档', '教案', '报告', '总结', '起草', 'document'],
+ surface: 'document',
+ },
+ {
+ capabilityId: 'HL-MOD-KNOWLEDGE-001',
+ keywords: ['知识库', '课程', '资料', '搜索', '找', 'knowledge'],
+ surface: 'knowledge',
+ },
+]
+
+export function routeEducationInstruction(instruction: string): EducationInstructionRoute {
+ const normalizedInstruction = instruction.trim().toLocaleLowerCase()
+ const route = ROUTES.find((candidate) =>
+ candidate.keywords.some((keyword) => normalizedInstruction.includes(keyword)))
+
+ if (route) {
+ return {
+ capabilityId: route.capabilityId,
+ reason: 'keyword-match',
+ surface: route.surface,
+ }
+ }
+
+ return {
+ capabilityId: 'HL-MOD-KNOWLEDGE-001',
+ reason: 'safe-fallback',
+ surface: 'knowledge',
+ }
+}
+
+export function educationMetricsFromSheet(content: string): EducationMetric[] {
+ const body = content.includes('---')
+ ? content.split('---').slice(2).join('---')
+ : content
+
+ return body
+ .trim()
+ .split(/\r?\n/)
+ .slice(1)
+ .map((row) => {
+ const [label = '', value = ''] = row.split(',')
+ return { label: label.trim(), value: Number(value.trim()) }
+ })
+ .filter((metric) => metric.label.length > 0 && Number.isFinite(metric.value))
+}
+
+export function isEducationWorkLakePath(pathname: string): boolean {
+ return pathname.split('/').filter(Boolean).includes('education')
+}
diff --git a/product-source/hololake-platform/src/lib/guanghuLivingSystem.ts b/product-source/hololake-platform/src/lib/guanghuLivingSystem.ts
index d08d59068..78c8caf48 100644
--- a/product-source/hololake-platform/src/lib/guanghuLivingSystem.ts
+++ b/product-source/hololake-platform/src/lib/guanghuLivingSystem.ts
@@ -9,6 +9,7 @@ export const GUANGHU_CHANNEL_ROUTES = [
'eternal-lake-heart',
'light-lake',
'heartbeat-core',
+ 'education-work-lake',
'love-core',
'servers',
] as const
diff --git a/product-source/hololake-platform/src/lib/locales/be-BY.json b/product-source/hololake-platform/src/lib/locales/be-BY.json
index 9d58eb70f..2c1f6734b 100644
--- a/product-source/hololake-platform/src/lib/locales/be-BY.json
+++ b/product-source/hololake-platform/src/lib/locales/be-BY.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/be-Latn.json b/product-source/hololake-platform/src/lib/locales/be-Latn.json
index 710487faa..279685e80 100644
--- a/product-source/hololake-platform/src/lib/locales/be-Latn.json
+++ b/product-source/hololake-platform/src/lib/locales/be-Latn.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/de-DE.json b/product-source/hololake-platform/src/lib/locales/de-DE.json
index c8bc01ccd..b1389370f 100644
--- a/product-source/hololake-platform/src/lib/locales/de-DE.json
+++ b/product-source/hololake-platform/src/lib/locales/de-DE.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/en.json b/product-source/hololake-platform/src/lib/locales/en.json
index 5289e18de..e81a05aff 100644
--- a/product-source/hololake-platform/src/lib/locales/en.json
+++ b/product-source/hololake-platform/src/lib/locales/en.json
@@ -1000,6 +1000,20 @@
"locale.ukUA": "Ukrainian",
"locale.svSE": "Swedish",
"locale.skSK": "Slovak",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content",
"hololake.home.ariaLabel": "HoloLake Era world entry",
"hololake.home.eyebrow": "Guanghu Language World · Fifth Domain",
"hololake.home.lead": "Language-personality-driven operating system",
diff --git a/product-source/hololake-platform/src/lib/locales/es-419.json b/product-source/hololake-platform/src/lib/locales/es-419.json
index 4bd663fa1..f8a875986 100644
--- a/product-source/hololake-platform/src/lib/locales/es-419.json
+++ b/product-source/hololake-platform/src/lib/locales/es-419.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/es-ES.json b/product-source/hololake-platform/src/lib/locales/es-ES.json
index 37aee57e2..dd8827a95 100644
--- a/product-source/hololake-platform/src/lib/locales/es-ES.json
+++ b/product-source/hololake-platform/src/lib/locales/es-ES.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/fr-FR.json b/product-source/hololake-platform/src/lib/locales/fr-FR.json
index c5eee5b44..4d5ccdd78 100644
--- a/product-source/hololake-platform/src/lib/locales/fr-FR.json
+++ b/product-source/hololake-platform/src/lib/locales/fr-FR.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/id-ID.json b/product-source/hololake-platform/src/lib/locales/id-ID.json
index 626bfa83d..0d79117e9 100644
--- a/product-source/hololake-platform/src/lib/locales/id-ID.json
+++ b/product-source/hololake-platform/src/lib/locales/id-ID.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/it-IT.json b/product-source/hololake-platform/src/lib/locales/it-IT.json
index 03778eb77..827020573 100644
--- a/product-source/hololake-platform/src/lib/locales/it-IT.json
+++ b/product-source/hololake-platform/src/lib/locales/it-IT.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/ja-JP.json b/product-source/hololake-platform/src/lib/locales/ja-JP.json
index 0051b43d6..3f6100b49 100644
--- a/product-source/hololake-platform/src/lib/locales/ja-JP.json
+++ b/product-source/hololake-platform/src/lib/locales/ja-JP.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/ko-KR.json b/product-source/hololake-platform/src/lib/locales/ko-KR.json
index a37e8750f..e9767b58e 100644
--- a/product-source/hololake-platform/src/lib/locales/ko-KR.json
+++ b/product-source/hololake-platform/src/lib/locales/ko-KR.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/pl-PL.json b/product-source/hololake-platform/src/lib/locales/pl-PL.json
index 5cf8e1809..1fae53aa8 100644
--- a/product-source/hololake-platform/src/lib/locales/pl-PL.json
+++ b/product-source/hololake-platform/src/lib/locales/pl-PL.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/pt-BR.json b/product-source/hololake-platform/src/lib/locales/pt-BR.json
index 3d16c56ac..bf9234fde 100644
--- a/product-source/hololake-platform/src/lib/locales/pt-BR.json
+++ b/product-source/hololake-platform/src/lib/locales/pt-BR.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/pt-PT.json b/product-source/hololake-platform/src/lib/locales/pt-PT.json
index 415925214..46c9504f1 100644
--- a/product-source/hololake-platform/src/lib/locales/pt-PT.json
+++ b/product-source/hololake-platform/src/lib/locales/pt-PT.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/ru-RU.json b/product-source/hololake-platform/src/lib/locales/ru-RU.json
index b54a4c953..2827e588d 100644
--- a/product-source/hololake-platform/src/lib/locales/ru-RU.json
+++ b/product-source/hololake-platform/src/lib/locales/ru-RU.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/sk-SK.json b/product-source/hololake-platform/src/lib/locales/sk-SK.json
index eb106a9bb..32ae7a000 100644
--- a/product-source/hololake-platform/src/lib/locales/sk-SK.json
+++ b/product-source/hololake-platform/src/lib/locales/sk-SK.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/sv-SE.json b/product-source/hololake-platform/src/lib/locales/sv-SE.json
index d6393c95f..ebd84fee7 100644
--- a/product-source/hololake-platform/src/lib/locales/sv-SE.json
+++ b/product-source/hololake-platform/src/lib/locales/sv-SE.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/uk-UA.json b/product-source/hololake-platform/src/lib/locales/uk-UA.json
index 6d3cb164f..ca9141d75 100644
--- a/product-source/hololake-platform/src/lib/locales/uk-UA.json
+++ b/product-source/hololake-platform/src/lib/locales/uk-UA.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/vi.json b/product-source/hololake-platform/src/lib/locales/vi.json
index a8c7b5ac9..aac9bd025 100644
--- a/product-source/hololake-platform/src/lib/locales/vi.json
+++ b/product-source/hololake-platform/src/lib/locales/vi.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
diff --git a/product-source/hololake-platform/src/lib/locales/zh-CN.json b/product-source/hololake-platform/src/lib/locales/zh-CN.json
index b398aea61..f9735c5b2 100644
--- a/product-source/hololake-platform/src/lib/locales/zh-CN.json
+++ b/product-source/hololake-platform/src/lib/locales/zh-CN.json
@@ -1000,6 +1000,20 @@
"locale.ukUA": "乌克兰语",
"locale.svSE": "瑞典语",
"locale.skSK": "斯洛伐克语",
+ "education.title": "教育工作湖",
+ "education.description": "人格体通过语言指令调出并编辑文档、表格、对比图、仪表盘与知识,所有呈现在用户设备完成。",
+ "education.hostingState": "临时隔离承载",
+ "education.instructionLabel": "告诉人格体你要处理什么",
+ "education.instructionPlaceholder": "例如:整理这个表格,并生成一个对比仪表盘",
+ "education.runInstruction": "运行指令",
+ "education.openedInsideApp": "已在应用内打开",
+ "education.surfaceNavigation": "教育工作区界面",
+ "education.document": "文档",
+ "education.sheet": "表格",
+ "education.chart": "对比图",
+ "education.dashboard": "仪表盘",
+ "education.knowledge": "知识",
+ "education.documentLabel": "教研文档内容",
"hololake.home.ariaLabel": "HoloLake Era 世界入口",
"hololake.home.eyebrow": "光湖语言世界 · 第五域",
"hololake.home.lead": "语言人格驱动操作系统",
diff --git a/product-source/hololake-platform/src/lib/locales/zh-TW.json b/product-source/hololake-platform/src/lib/locales/zh-TW.json
index fb0195d6a..093e9be45 100644
--- a/product-source/hololake-platform/src/lib/locales/zh-TW.json
+++ b/product-source/hololake-platform/src/lib/locales/zh-TW.json
@@ -1121,5 +1121,19 @@
"hololake.login.errorTitle": "The world entrance did not open",
"hololake.login.retry": "Try again",
"hololake.login.privacy": "HoloLake never receives or stores your mailbox address. The Fifth Domain controller resolves the bound Guanghu number.",
- "hololake.login.nodeReady": "Fifth Domain world entrance ready"
+ "hololake.login.nodeReady": "Fifth Domain world entrance ready",
+ "education.title": "Education Work Lake",
+ "education.description": "A client-rendered workspace where the persona can open and edit documents, spreadsheets, charts, dashboards, and knowledge through language instructions.",
+ "education.hostingState": "Temporary isolated hosting",
+ "education.instructionLabel": "Tell the persona what you want to work on",
+ "education.instructionPlaceholder": "For example: organize this spreadsheet and create a comparison dashboard",
+ "education.runInstruction": "Run instruction",
+ "education.openedInsideApp": "Opened inside the app",
+ "education.surfaceNavigation": "Education workspace surfaces",
+ "education.document": "Document",
+ "education.sheet": "Spreadsheet",
+ "education.chart": "Chart",
+ "education.dashboard": "Dashboard",
+ "education.knowledge": "Knowledge",
+ "education.documentLabel": "Education document content"
}
From 2777f0fd99d641cb741b25227be3d77a1d51e289 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com>
Date: Fri, 7 Aug 2026 20:49:23 +0800
Subject: [PATCH 2/3] docs: record education work lake deployment
---
.../receipts/EDU-JD-STAGE1-20260807-001.json | 41 +++++++++++++++++++
1 file changed, 41 insertions(+)
create mode 100644 product-source/hololake-platform/deployment/receipts/EDU-JD-STAGE1-20260807-001.json
diff --git a/product-source/hololake-platform/deployment/receipts/EDU-JD-STAGE1-20260807-001.json b/product-source/hololake-platform/deployment/receipts/EDU-JD-STAGE1-20260807-001.json
new file mode 100644
index 000000000..1bd6816f6
--- /dev/null
+++ b/product-source/hololake-platform/deployment/receipts/EDU-JD-STAGE1-20260807-001.json
@@ -0,0 +1,41 @@
+{
+ "schema": "hololake.education-deployment-receipt/v1",
+ "state": "DEPLOYED_PUBLIC_VERIFIED",
+ "deployment_id": "EDU-JD-STAGE1-20260807-001",
+ "target": "JD-FD-PRIMARY",
+ "public_route": "https://guanghulab.com/jd/education/",
+ "service": {
+ "name": "jd-app-hub.service",
+ "state": "active",
+ "enabled": true,
+ "version": "2.2.0-education-stage1",
+ "listen": "127.0.0.1:8088"
+ },
+ "source": {
+ "repository": "REPO-014 hololake-system-architecture",
+ "commit": "333cd222c53d7d162218543cd167bdda4f8efb22",
+ "tree": "102c430f4b99ec584a438550d5dff3b2e0b015dc"
+ },
+ "release": {
+ "path_id": "333cd222c53d7d162218543cd167bdda4f8efb22",
+ "archive_sha256": "3798df89a9f58cf0ad08d31f8eb65f24812e690016a8767d2eba4c2436ea1c43",
+ "rollback_path_id": "c0764d08f0dc534adf1aede82d90c6e9b3630307",
+ "rollback_present": true
+ },
+ "verification": {
+ "server_loopback_status": 200,
+ "server_loopback_education": 200,
+ "public_status": 200,
+ "public_education_html": 200,
+ "public_entry_javascript": 200,
+ "public_application_javascript": 200,
+ "existing_hub_home": 200
+ },
+ "boundaries": {
+ "host_os_observed": "Ubuntu 22.04.3 LTS, Linux 5.15.0-60-generic",
+ "native_guanghu_os_claim": false,
+ "persistence": "browser-local-stage-1",
+ "multi_user_collaboration": "not_in_stage_1"
+ },
+ "verified_at": "2026-08-07T12:47:23Z"
+}
From a57ce92e65d28baba5f1579538733518b676e93c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com>
Date: Fri, 7 Aug 2026 20:50:26 +0800
Subject: [PATCH 3/3] chore: place deployment receipt at publication gate
---
.../receipts/EDU-JD-STAGE1-20260807-001.json | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename {product-source/hololake-platform/deployment => deployment}/receipts/EDU-JD-STAGE1-20260807-001.json (100%)
diff --git a/product-source/hololake-platform/deployment/receipts/EDU-JD-STAGE1-20260807-001.json b/deployment/receipts/EDU-JD-STAGE1-20260807-001.json
similarity index 100%
rename from product-source/hololake-platform/deployment/receipts/EDU-JD-STAGE1-20260807-001.json
rename to deployment/receipts/EDU-JD-STAGE1-20260807-001.json