Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
470 changes: 470 additions & 0 deletions OPENLINGS_PUBLIC_PR_REPORT.md

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,15 @@
"marked": "^18.0.13",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"react-router-dom": "^7.18.3"
"react-router-dom": "^7.18.3",
"three": "^0.186.1"
},
"devDependencies": {
"@tailwindcss/vite": "^4.3.3",
"@types/node": "^24.13.3",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.7",
"@types/three": "^0.186.0",
"@vitejs/plugin-react": "^6.1.1",
"electron": "^41.0.2",
"electron-builder": "^26.0.12",
Expand Down
53 changes: 53 additions & 0 deletions frontend/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

39 changes: 39 additions & 0 deletions frontend/public/models/openlings/LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Openlings runtime models: license

The six 3D model files listed below are licensed under the
[Creative Commons Attribution 4.0 International License (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/).

This license covers only these model files. OpenBot's source code, including the code that loads
and renders these models, is licensed separately under the MIT License (see `LICENSE` at the
repository root).

## Covered files

All paths are relative to this directory.

| File | Contents | SHA-256 |
| --------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------ |
| `base-openling-lookdev-v01.glb` | Openling character, static | `130b32fd4696702e574b7124eb4d7f92c60792f6e622260e3d39ce40108fbaad` |
| `base-openling-animated-v01.glb` | Openling character, rigged, with animations and expressions | `cd11b39713683b80b05e19e2503f12140a8b168f6d00d2746fd69651eb74c82c` |
| `openling-props-v01.glb` | Openling props | `6b824047af27e36065d6d1c1a515a5a0ce239a585fd9b67f6ca8bbc5c706acb9` |
| `office/office-shell-v01.glb` | Living Office building | `2a1cd8cd98f8a3a351a32dd35f3d675a6724c62e1bf7b89eb6943ebb829f4fd6` |
| `office/office-furniture-v01.glb` | Living Office furniture | `1379d51d5746106fae98e19a7e4f6dbac26de67d217c0ac8bc0b9a2fe64d47b4` |
| `office/office-decor-v01.glb` | Living Office decor | `19c52c5dca9adac50f29b3d05a5609bd44dd63f42cf8cdde1ac30309a1356ed3` |

The license includes the textures, animations and other data embedded in these files.

## Attribution

When you share these files or adapted versions of them, credit them as:

> Openlings 3D models by suncihai, licensed under
> [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)

Also indicate whether you changed them.

## Notes

- These files are runtime builds. The editable source files they were produced from are not part of
this repository and are not covered by this license.
- The licensor licenses these files only to the extent of the licensor's rights in them. No rights
are granted in any material the licensor does not hold.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
23 changes: 23 additions & 0 deletions frontend/src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { lazy, Suspense } from "react";
import { Navigate, Route, Routes } from "react-router-dom";
import SaveNotification from "./components/SaveNotification";
import CustomCaret from "./components/CustomCaret";
Expand All @@ -14,11 +15,33 @@ import BotPage from "./pages/BotPage";
import SettingsPage from "./pages/SettingsPage";
import ScheduledPage from "./pages/ScheduledPage";
import DocumentTitle from "./components/DocumentTitle";
import { Spinner } from "./components/ui";

// Internal 3D character lab: lazy so three.js stays out of the main bundle, and outside the
// backend gates because it only needs static assets.
const OpenlingsLabPage = lazy(() => import("./pages/OpenlingsLabPage"));
const OfficeLabPage = lazy(() => import("./pages/OfficeLabPage"));

export default function App() {
return (
<>
<DocumentTitle />
<Routes>
<Route path="/lab/openlings" element={
<Suspense fallback={<div className="flex h-dvh items-center justify-center"><Spinner /></div>}><OpenlingsLabPage /></Suspense>
} />
<Route path="/lab/office" element={
<Suspense fallback={<div className="flex h-dvh items-center justify-center"><Spinner /></div>}><OfficeLabPage /></Suspense>
} />
<Route path="*" element={<MainApp />} />
</Routes>
</>
);
}

function MainApp() {
return (
<>
<CustomCaret />
<SaveNotification />
<ApiKeyGate>
Expand Down
2 changes: 2 additions & 0 deletions frontend/src/components/DocumentTitle.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ const PAGE_TITLES: Record<string, string> = {
"/bots/new": "New bot",
"/settings": "Settings",
"/scheduled": "Scheduled",
"/lab/openlings": "Openlings Lab",
"/lab/office": "Living Office",
};

function pageTitleFor(pathname: string): string | undefined {
Expand Down
Loading
Loading