Files
aitu/apps/web/index.html
T
liquidliang fba4fe7f57 feat: add base64 image preview functionality
- Updated the application version to 0.5.75 in index.html and version.json.
- Implemented global helper functions for toggling base64 image previews and extracting image information.
- Enhanced JSON formatting to support inline base64 image previews in logs.
- Improved the rendering of reference images in the LLM API log entries.
- Added CSS styles for base64 image preview components.
2026-02-05 15:54:45 +08:00

234 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<!-- 权限策略:禁止 unload 事件(不影响 beforeunload) -->
<!-- 基本 SEO Meta 标签 (中文) -->
<title>OpenTu - AI图片视频创作</title>
<meta
name="description"
content="OpenTu 是一款强大的AI图片视频创作工具(https://github.com/ljquan/aitu),集成思维导图、流程图等功能。基于 Plait 框架开发,支持插件扩展,提供自动保存、无限画布等特性。爱创作,图未来。"
/>
<meta
name="keywords"
content="OpenTu,白板工具,白板,思维导图,流程图,开源白板,开源思维导图,在线绘图,在线白板,协作工具,协作白板,Plait 框架"
/>
<!-- 基本 SEO Meta 标签 (英文) -->
<meta
name="description"
lang="en"
content="OpenTu is a powerful open-source whiteboard tool featuring mind mapping and flowchart capabilities. Built on the Plait framework, it offers plugin extensibility, auto-save, infinite canvas, and more. Love Creation, Visualize the Future."
/>
<meta
name="keywords"
lang="en"
content="OpenTu,whiteboard tool, whiteboard,mind mapping,flowchart,open source whiteboard, open source mind mapping,online drawing,collaboration tool, collaboration whiteboard,Plait framework"
/>
<!-- Open Graph Meta 标签 (中文) -->
<meta
property="og:title"
content="OpenTu - AI图片视频创作 | 思维导图 | 流程图 | 白板 | 协作白板"
/>
<meta
property="og:description"
content="OpenTu 一体化AI图片视频创作工具(在线白板 | 协作白板),支持思维导图、流程图,基于 Plait 框架开发"
/>
<meta property="og:type" content="website" />
<meta property="og:url" content="https://opentu.ai" />
<meta property="og:site_name" content="OpenTu" />
<!-- Open Graph Meta 标签 (英文) -->
<meta
property="og:title"
lang="en"
content="OpenTu - Open Source Whiteboard | Mind Mapping | Flowchart | Whiteboard | Collaboration Whiteboard"
/>
<meta
property="og:description"
lang="en"
content="An integrated open-source whiteboard tool(online whiteboard | collaboration whiteboard) supporting mind mapping and flowcharts, built on the Plait framework"
/>
<!-- Twitter Card Meta 标签 (英文) -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content="OpenTu - Open Source Whiteboard | Mind Mapping | Flowchart | Whiteboard | Collaboration Whiteboard"
/>
<meta
name="twitter:description"
content="An integrated open-source whiteboard tool(online whiteboard | collaboration whiteboard) supporting mind mapping and flowcharts, built on the Plait framework"
/>
<!-- 其他重要 Meta 标签 -->
<meta name="robots" content="index, follow" />
<meta name="author" content="OpenTu Team" />
<link rel="canonical" href="https://opentu.ai" />
<!-- 语言替代链接 -->
<link rel="alternate" hreflang="zh-CN" href="https://opentu.ai" />
<!-- <link rel="alternate" hreflang="en" href="https://drawnix.com/en"> -->
<link rel="alternate" hreflang="x-default" href="https://opentu.ai" />
<!-- 结构化数据 (JSON-LD) - 中英双语 -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "OpenTu",
"alternateName": [
"OpenTu",
"AI图片视频创作",
"Open Source Whiteboard Tool"
],
"description": {
"zh-CN": "OpenTu 是一款强大的AI图片视频创作工具,集成思维导图、流程图等功能。基于 Plait 框架开发,支持插件扩展,提供自动保存、无限画布等特性。",
"en": "OpenTu is a powerful open-source whiteboard tool featuring mind mapping and flowchart capabilities. Built on the Plait framework, it offers plugin extensibility, auto-save, infinite canvas, and more."
},
"url": "https://opentu.ai",
"applicationCategory": "DesignApplication",
"operatingSystem": "Any",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"creator": {
"@type": "Organization",
"name": "OpenTu Team"
},
"keywords": [
"whiteboard",
"mind mapping",
"flowchart",
"open source",
"思维导图",
"流程图",
"白板"
],
"inLanguage": ["zh-CN", "en"],
"license": "https://github.com/ljquan/aitu/blob/master/LICENSE"
}
</script>
<!-- base href 由构建工具处理,CDN 模式下使用相对路径 -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
<meta name="app-version" content="0.5.75" />
<link
rel="icon"
type="image/svg+xml"
sizes="16x16"
href="./icons/favicon-16x16.svg"
/>
<link
rel="icon"
type="image/svg+xml"
sizes="32x32"
href="./icons/favicon-32x32.svg"
/>
<link rel="icon" type="image/svg+xml" href="./icons/favicon-new.svg" />
<link rel="icon" type="image/ico" href="./favicon.ico" />
<!-- PWA Manifest -->
<link rel="manifest" href="./manifest.json?v=0.1.0" />
<!-- PWA Meta Tags -->
<meta name="theme-color" content="#ffffff" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="OpenTu" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="msapplication-tap-highlight" content="no" />
<!-- Apple Touch Icons -->
<link
rel="apple-touch-icon"
sizes="192x192"
href="./icons/icon-192x192.svg"
/>
<!-- Windows Tiles -->
<meta name="msapplication-TileImage" content="./icons/icon-192x192.svg" />
<meta
name="msapplication-square310x310logo"
content="./icons/icon-512x512.svg"
/>
<link rel="stylesheet" href="./src/styles.scss" />
<!-- CDN 智能选择器(可选,用于提前检测最佳 CDN) -->
<script src="./cdn-config.js" defer></script>
</head>
<body>
<div id="root"></div>
<script type="module" src="./src/main.tsx"></script>
</body>
<!-- PostHog Analytics -->
<!-- 本地开发环境(localhost/127.0.0.1)默认不加载,除非 URL 带 report=1 参数 -->
<script>
(function() {
var isLocalDev = window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1';
var forceReport = new URLSearchParams(window.location.search).get('report') === '1';
// 本地开发环境且没有 report=1 参数时,不加载 PostHog
if (isLocalDev && !forceReport) {
return;
}
!(function (t, e) {
var o, n, p, r;
e.__SV ||
(window.posthog && window.posthog.__loaded) ||
((window.posthog = e),
(e._i = []),
(e.init = function (i, s, a) {
function g(t, e) {
var o = e.split('.');
2 == o.length && ((t = t[o[0]]), (e = o[1])),
(t[e] = function () {
t.push([e].concat(Array.prototype.slice.call(arguments, 0)));
});
}
((p = t.createElement('script')).type = 'text/javascript'),
(p.crossOrigin = 'anonymous'),
(p.async = !0),
(p.src =
s.api_host.replace('.i.posthog.com', '-assets.i.posthog.com') +
'/static/array.js'),
(r = t.getElementsByTagName('script')[0]).parentNode.insertBefore(
p,
r
);
var u = e;
for (
void 0 !== a ? (u = e[a] = []) : (a = 'posthog'),
u.people = u.people || [],
u.toString = function (t) {
var e = 'posthog';
return (
'posthog' !== a && (e += '.' + a), t || (e += ' (stub)'), e
);
},
u.people.toString = function () {
return u.toString(1) + '.people (stub)';
},
o =
'init Dr Ur fi Lr zr ci Or jr capture Ai calculateEventProperties qr register register_once register_for_session unregister unregister_for_session Jr getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey displaySurvey cancelPendingSurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty Gr Br createPersonProfile Vr Cr Kr opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing get_explicit_consent_status is_capturing clear_opt_in_out_capturing Hr debug O Wr getPageViewId captureTraceFeedback captureTraceMetric Rr'.split(
' '
),
n = 0;
n < o.length;
n++
)
g(u, o[n]);
e._i.push([i, s, a]);
}),
(e.__SV = 1));
})(document, window.posthog || []);
posthog.init('phc_13URtidKwTR9POlwnB153NsN99shRykvPguKWf3vZVn', {
api_host: 'https://us.i.posthog.com',
defaults: '2025-11-30',
person_profiles: 'identified_only',
// 静默网络错误,避免控制台报错
on_xhr_error: function() {},
});
})();
</script>
</html>