Core (@owdproject/core) owns the kernel and shell composables (flat runtime/composables, runtime/utils, runtime/components/Desktop/). Headless explorer APIs live in @owdproject/module-fs. PrimeVue demo UI is in @owdproject/kit-primevue.
Installed via desktop add and listed in desktop.config.ts → modules:
| Package | Role |
|---|---|
@owdproject/module-fs | Virtual filesystem (ZenFS); uses shell identity for per-user paths |
@owdproject/module-persistence | Pinia persistence (e.g. IndexedDB) |
Load order: theme → modules → apps.
Shared behaviour for all themes — no visual chrome. Auto-imported with core.
| Composable / component | Use |
|---|---|
useDesktopShellOptions | Read systemBar, startButton from appConfig.desktop |
useDesktopShellIdentity | Guest user, avatar, VFS userHome; auth overrides — see Shell identity |
useDesktopSession | End session → navigate to theme start route |
useWorkspaceEdgeDrop | Drag window to screen edge → adjacent workspace |
useWindowDragHandlers | Edge drop + snap while dragging |
useWorkspaceOverviewLiveScale | Live DOM scale in workspace overview |
useWorkspaceOverviewCapture | Overview JPEG snapshots (html2canvas optional) |
DesktopWorkspaceEdgeHintsBase, DesktopWindowSnapHintsBase | Headless hints; theme supplies slots |
Import path (explicit):
import { useDesktopShellIdentity } from '@owdproject/core/runtime/composables/useDesktopShellIdentity'
@owdproject/module-fs (headless explorer)| Area | Use |
|---|---|
useExplorerStore | Explorer selection, nav expanded keys |
createExplorerFsOperations | Delete/overwrite confirm via useDesktopDialogs |
createExplorerWindowMenuItems | Window menubar model (DesktopMenuItem[]) |
useExplorerTabs | Tab strip state |
useExplorerWindow | Explorer shell wiring (tabs, DnD, FS ops) |
With module-fs, themes build their own explorer shell (Nova, Win95, …) on top of these APIs. PV listing chrome is in kit-primevue.
@owdproject/kit-primevueOptional — PrimeVue stack for demo themes:
@primevue/nuxt-modulecreateDesktopDialogs → core DesktopDialogProviderKitPrimevue* (Workspace, Toolbar, AddressBar, …)await installModule('@owdproject/kit-primevue')
Themes still mount styled <ConfirmDialog /> groups (delete, about, …) in their layout.
Non-PV themes skip this package and provide their own dialog implementation on DESKTOP_DIALOG_PROVIDER_KEY.
See Dialog provider.
| Package | Replacement |
|---|---|
@owdproject/kit-theme | Shell → core runtime/composables/; dialogs → kit-primevue |
@owdproject/kit-fs | Headless → module-fs; PV UI → kit-primevue |
@owdproject/kit-explorer | Headless → module-fs; PV UI → kit-primevue |
Update imports to core / module-fs / kit-primevue — no Vite shims.
export default defineDesktopConfig({
theme: '@owdproject/theme-nova',
modules: ['@owdproject/module-fs'],
apps: ['@owdproject/app-about'],
})
Theme module.ts: installModule('@owdproject/kit-primevue') and registerThemeTailwindPath(nuxt, import.meta.url) (not kit-theme / kit-explorer).
@owdproject/core for public runtime APIs.