合并 master 更新到 AI 游戏创作分支

合入 master 的画布 Agent、精选素材审核、外部编辑器 API 与认证投影更新
保留当前分支的 AI 游戏创作壳、配置项和 LLM 运行接口改造
解决图片编辑器、LLM、去背景完成、外部生成排序和文档冲突
沿用 master 的 SpacetimeDB auth_store_projection 迁移与生成绑定
This commit is contained in:
AIGameCreator App
2026-07-06 11:47:19 +08:00
309 changed files with 24952 additions and 3100 deletions
@@ -119,6 +119,7 @@ import { useHostNetworkOnline } from '../../hooks/useHostNetworkOnline';
import {
buildPublicWorkStagePath,
pushAppHistoryPath,
replaceAppHistoryPath,
resolvePathForSelectionStage,
} from '../../routing/appPageRoutes';
import { resolveWorkNotFoundRecoveryAction } from '../../routing/runtimeNotFoundRecovery';
@@ -3759,15 +3760,33 @@ export function PlatformEntryFlowShellImpl({
setSelectionStage('project');
}, [setSelectionStage]);
const replaceWithProjectGallery = useCallback(() => {
replaceAppHistoryPath('/project');
setSelectionStage('project');
}, [setSelectionStage]);
const openCreationCommunity = useCallback(() => {
setIsCreationCommunityOpen(true);
}, []);
const openEditorProject = useCallback((projectId: string) => {
setSelectionStage('image-editor', {
path: `/editor/canvas?projectid=${encodeURIComponent(projectId)}`,
});
}, [setSelectionStage]);
const openEditorProject = useCallback(
(
projectId: string,
options?: { guide?: boolean; tool?: string },
) => {
const params = new URLSearchParams({ projectid: projectId });
if (options?.tool) {
params.set('tool', options.tool);
}
if (options?.guide) {
params.set('guide', 'toolbar');
}
setSelectionStage('image-editor', {
path: `/editor/canvas?${params.toString()}`,
});
},
[setSelectionStage],
);
const openCreationTypeModal = useCallback(() => {
if (!prepareCreationLaunch()) {
@@ -15707,7 +15726,9 @@ export function PlatformEntryFlowShellImpl({
<Suspense
fallback={<LazyPanelFallback label="正在加载编辑器..." />}
>
<ImageCanvasEditorView />
<ImageCanvasEditorView
onProjectAccessLost={replaceWithProjectGallery}
/>
</Suspense>
</motion.div>
)}