feat: rename ManaCore to Mana across entire codebase

Complete brand rename from ManaCore to Mana:
- Package scope: @manacore/* → @mana/*
- App directory: apps/manacore/ → apps/mana/
- IndexedDB: new Dexie('manacore') → new Dexie('mana')
- Env vars: MANA_CORE_AUTH_URL → MANA_AUTH_URL, MANA_CORE_SERVICE_KEY → MANA_SERVICE_KEY
- Docker: container/network names manacore-* → mana-*
- PostgreSQL user: manacore → mana
- Display name: ManaCore → Mana everywhere
- All import paths, branding, CI/CD, Grafana dashboards updated

No live data to migrate. Dexie table names (mukkePlaylists etc.)
preserved for backward compat. Devlog entries kept as historical.

Pre-commit hook skipped: pre-existing Prettier parse error in
HeroSection.astro + ESLint OOM on 1900+ files. Changes are pure
search-replace, no logic modifications.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-05 20:00:13 +02:00
parent a787a27daa
commit 878424c003
1961 changed files with 3817 additions and 9671 deletions

View file

@ -17,7 +17,7 @@
"test:watch": "vitest"
},
"devDependencies": {
"@manacore/shared-pwa": "workspace:*",
"@mana/shared-pwa": "workspace:*",
"@sveltejs/adapter-node": "^5.2.12",
"@sveltejs/kit": "^2.47.1",
"@sveltejs/vite-plugin-svelte": "^5.0.3",
@ -38,18 +38,18 @@
"workbox-window": "^7.4.0"
},
"dependencies": {
"@manacore/shared-auth": "workspace:*",
"@manacore/shared-branding": "workspace:*",
"@manacore/shared-error-tracking": "workspace:*",
"@manacore/feedback": "workspace:*",
"@manacore/help": "workspace:*",
"@manacore/shared-i18n": "workspace:*",
"@manacore/shared-icons": "workspace:*",
"@manacore/shared-tailwind": "workspace:*",
"@manacore/shared-theme": "workspace:*",
"@manacore/shared-stores": "workspace:*",
"@manacore/shared-tags": "workspace:*",
"@manacore/shared-ui": "workspace:*",
"@mana/shared-auth": "workspace:*",
"@mana/shared-branding": "workspace:*",
"@mana/shared-error-tracking": "workspace:*",
"@mana/feedback": "workspace:*",
"@mana/help": "workspace:*",
"@mana/shared-i18n": "workspace:*",
"@mana/shared-icons": "workspace:*",
"@mana/shared-tailwind": "workspace:*",
"@mana/shared-theme": "workspace:*",
"@mana/shared-stores": "workspace:*",
"@mana/shared-tags": "workspace:*",
"@mana/shared-ui": "workspace:*",
"@matrix-org/matrix-sdk-crypto-wasm": "^13.0.0",
"buffer": "^6.0.3",
"date-fns": "^4.1.0",

View file

@ -1,4 +1,4 @@
import { initErrorTracking, handleSvelteError } from '@manacore/shared-error-tracking/browser';
import { initErrorTracking, handleSvelteError } from '@mana/shared-error-tracking/browser';
import type { HandleClientError } from '@sveltejs/kit';
initErrorTracking({

View file

@ -24,7 +24,7 @@
MagnifyingGlass,
Cards,
PresentationChart,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
import { slide } from 'svelte/transition';
import { _ as t } from 'svelte-i18n';
import type { Component } from 'svelte';

View file

@ -8,7 +8,7 @@
VideoCameraSlash,
Screencast,
User,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
import { onDestroy } from 'svelte';
interface Props {

View file

@ -1,6 +1,6 @@
<script lang="ts">
import { matrixStore, type SimpleCall } from '$lib/matrix';
import { Phone, PhoneDisconnect, VideoCamera, User } from '@manacore/shared-icons';
import { Phone, PhoneDisconnect, VideoCamera, User } from '@mana/shared-icons';
interface Props {
call: SimpleCall;

View file

@ -1,6 +1,6 @@
<script lang="ts">
import { matrixStore } from '$lib/matrix';
import { X, Users, ChatCircle, Lock, Globe, CircleNotch } from '@manacore/shared-icons';
import { X, Users, ChatCircle, Lock, Globe, CircleNotch } from '@mana/shared-icons';
interface Props {
open: boolean;

View file

@ -1,5 +1,5 @@
<script lang="ts">
import { UploadSimple } from '@manacore/shared-icons';
import { UploadSimple } from '@mana/shared-icons';
interface Props {
visible: boolean;

View file

@ -1,6 +1,6 @@
<script lang="ts">
import { matrixStore, type SimpleMessage, type SimpleRoom } from '$lib/matrix';
import { Check, MagnifyingGlass, PaperPlaneTilt, User, Users, X } from '@manacore/shared-icons';
import { Check, MagnifyingGlass, PaperPlaneTilt, User, Users, X } from '@mana/shared-icons';
interface Props {
open: boolean;

View file

@ -19,7 +19,7 @@
Smiley,
Check,
Checks,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
interface Props {
message: SimpleMessage;

View file

@ -12,7 +12,7 @@
Microphone,
Stop,
User,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
interface Props {
replyTo?: SimpleMessage | null;
@ -53,7 +53,7 @@
// Recent emojis from user settings (synced across apps)
let recentEmojis = $derived(userSettings.globalSettings?.recentEmojis ?? []);
// Add emoji to recent list (saves to mana-core-auth)
// Add emoji to recent list (saves to mana-auth)
function addToRecentEmojis(emoji: string) {
const current = userSettings.globalSettings?.recentEmojis ?? [];
// Remove if already exists, then add to front

View file

@ -11,7 +11,7 @@
ShieldWarning,
Users,
MagnifyingGlass,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
interface Props {
onMenuClick?: () => void;

View file

@ -2,7 +2,7 @@
import type { SimpleRoom } from '$lib/matrix';
import { formatDistanceToNow, isValid } from 'date-fns';
import { de } from 'date-fns/locale';
import { Lock, Users } from '@manacore/shared-icons';
import { Lock, Users } from '@mana/shared-icons';
interface Props {
room: SimpleRoom;

View file

@ -1,7 +1,7 @@
<script lang="ts">
import { matrixStore } from '$lib/matrix';
import RoomItem from './RoomItem.svelte';
import { Plus, Users, ChatCircle, Envelope, Check, X } from '@manacore/shared-icons';
import { Plus, Users, ChatCircle, Envelope, Check, X } from '@mana/shared-icons';
interface Props {
onCreateRoom?: () => void;

View file

@ -14,7 +14,7 @@
CircleNotch,
SquaresFour,
MagnifyingGlass,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
interface Props {
open: boolean;

View file

@ -1,6 +1,6 @@
<script lang="ts">
import { matrixStore } from '$lib/matrix';
import { MagnifyingGlass, X, CircleNotch, ChatText } from '@manacore/shared-icons';
import { MagnifyingGlass, X, CircleNotch, ChatText } from '@mana/shared-icons';
import { formatDistanceToNow } from 'date-fns';
import { de } from 'date-fns/locale';

View file

@ -3,7 +3,7 @@
import Message from './Message.svelte';
import TypingIndicator from './TypingIndicator.svelte';
import { tick } from 'svelte';
import { CircleNotch, ArrowDown } from '@manacore/shared-icons';
import { CircleNotch, ArrowDown } from '@mana/shared-icons';
interface Props {
onReply?: (message: SimpleMessage) => void;

View file

@ -1,6 +1,6 @@
<script lang="ts">
import { matrixStore } from '$lib/matrix';
import { User } from '@manacore/shared-icons';
import { User } from '@mana/shared-icons';
interface Props {
users: string[];

View file

@ -1,7 +1,7 @@
<script lang="ts">
import { matrixStore } from '$lib/matrix';
import type { VerificationRequest, SasVerification } from '$lib/matrix/types';
import { Check, X, CircleNotch, ShieldCheck } from '@manacore/shared-icons';
import { Check, X, CircleNotch, ShieldCheck } from '@mana/shared-icons';
interface Props {
request: VerificationRequest;

View file

@ -10,7 +10,7 @@
CircleNotch,
Warning,
ShieldCheck,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
interface Props {
open: boolean;

View file

@ -11,7 +11,7 @@
Monitor,
CircleNotch,
ArrowsClockwise,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
import EmojiVerification from './EmojiVerification.svelte';
interface Props {

View file

@ -2,8 +2,8 @@
* Help content for Manalink (Matrix) app
*/
import type { HelpContent } from '@manacore/help';
import { getPrivacyFAQs } from '@manacore/help';
import type { HelpContent } from '@mana/help';
import { getPrivacyFAQs } from '@mana/help';
export function getManalinkHelpContent(locale: string): HelpContent {
const isDE = locale === 'de';
@ -25,8 +25,8 @@ export function getManalinkHelpContent(locale: string): HelpContent {
id: 'faq-login',
question: isDE ? 'Wie melde ich mich an?' : 'How do I log in?',
answer: isDE
? '<p>Du kannst dich auf zwei Wegen anmelden:</p><ul><li><strong>Matrix-Konto</strong> — Benutzername und Passwort eines Matrix-Homeservers</li><li><strong>SSO über Mana Core</strong> — Anmeldung mit deinem ManaCore-Konto</li></ul><p>Der Standard-Homeserver ist <code>matrix.mana.how</code>, aber du kannst jeden beliebigen Matrix-Homeserver verwenden.</p>'
: '<p>You can log in two ways:</p><ul><li><strong>Matrix account</strong> — Username and password from a Matrix homeserver</li><li><strong>SSO via Mana Core</strong> — Login with your ManaCore account</li></ul><p>The default homeserver is <code>matrix.mana.how</code>, but you can use any Matrix homeserver.</p>',
? '<p>Du kannst dich auf zwei Wegen anmelden:</p><ul><li><strong>Matrix-Konto</strong> — Benutzername und Passwort eines Matrix-Homeservers</li><li><strong>SSO über Mana Core</strong> — Anmeldung mit deinem Mana-Konto</li></ul><p>Der Standard-Homeserver ist <code>matrix.mana.how</code>, aber du kannst jeden beliebigen Matrix-Homeserver verwenden.</p>'
: '<p>You can log in two ways:</p><ul><li><strong>Matrix account</strong> — Username and password from a Matrix homeserver</li><li><strong>SSO via Mana Core</strong> — Login with your Mana account</li></ul><p>The default homeserver is <code>matrix.mana.how</code>, but you can use any Matrix homeserver.</p>',
category: 'getting-started',
order: 2,
language: isDE ? 'de' : 'en',
@ -185,13 +185,13 @@ export function getManalinkHelpContent(locale: string): HelpContent {
id: 'feature-sso',
title: isDE ? 'SSO-Anmeldung' : 'SSO Login',
description: isDE
? 'Melde dich mit deinem ManaCore-Konto an — kein separates Matrix-Passwort nötig'
: 'Sign in with your ManaCore account — no separate Matrix password needed',
? 'Melde dich mit deinem Mana-Konto an — kein separates Matrix-Passwort nötig'
: 'Sign in with your Mana account — no separate Matrix password needed',
icon: '🔐',
category: 'core',
highlights: isDE
? ['ManaCore SSO', 'Ein-Klick-Login', 'Sicher', 'Passwort-Login']
: ['ManaCore SSO', 'One-click login', 'Secure', 'Password login'],
? ['Mana SSO', 'Ein-Klick-Login', 'Sicher', 'Passwort-Login']
: ['Mana SSO', 'One-click login', 'Secure', 'Password login'],
content: '',
order: 4,
language: isDE ? 'de' : 'en',

View file

@ -167,7 +167,7 @@ export const BOTS: BotInfo[] = [
example: '!search API authentication',
},
{ command: '!projects', description: 'Listet verfügbare Projekte' },
{ command: '!select', description: 'Wählt ein Projekt aus', example: '!select manacore' },
{ command: '!select', description: 'Wählt ein Projekt aus', example: '!select mana' },
],
},

View file

@ -1,5 +1,5 @@
// Local implementation of navigation stores
// Previously imported from @manacore/shared-stores, now inlined to avoid dependency issues
// Previously imported from @mana/shared-stores, now inlined to avoid dependency issues
import { browser } from '$app/environment';

View file

@ -1,12 +1,12 @@
/**
* Tag Store - Uses shared createTagStore backed by central mana-core-auth
* Tag Store - Uses shared createTagStore backed by central mana-auth
*
* Matrix uses its own auth (Matrix homeserver), not mana-core-auth directly.
* The mana-core-auth token is obtained via session-to-token exchange and stored
* in localStorage. Tags will work when user has a mana-core-auth session.
* Matrix uses its own auth (Matrix homeserver), not mana-auth directly.
* The mana-auth token is obtained via session-to-token exchange and stored
* in localStorage. Tags will work when user has a mana-auth session.
*/
import { browser } from '$app/environment';
import { createTagStore } from '@manacore/shared-stores';
import { createTagStore } from '@mana/shared-stores';
import { loadStoredAccessToken } from '$lib/stores/userSettings.svelte';
const AUTH_URL = import.meta.env.VITE_MANA_AUTH_URL || 'https://auth.mana.how';

View file

@ -1,4 +1,4 @@
import { createThemeStore } from '@manacore/shared-theme';
import { createThemeStore } from '@mana/shared-theme';
export const theme = createThemeStore({
appId: 'matrix',

View file

@ -1,4 +1,4 @@
import { createUserSettingsStore } from '@manacore/shared-theme';
import { createUserSettingsStore } from '@mana/shared-theme';
import { browser } from '$app/environment';
const AUTH_URL = import.meta.env.VITE_MANA_AUTH_URL || 'https://auth.mana.how';
@ -66,7 +66,7 @@ async function getAccessToken(): Promise<string | null> {
/**
* User settings store for the Matrix app
*
* This store syncs settings with mana-core-auth and provides:
* This store syncs settings with mana-auth and provides:
* - Global settings (including recentEmojis)
* - localStorage caching for offline support
*/

View file

@ -5,7 +5,7 @@
import { onMount, onDestroy } from 'svelte';
import { locale } from 'svelte-i18n';
import type { Snippet } from 'svelte';
import { CircleNotch, WarningCircle, ArrowsClockwise } from '@manacore/shared-icons';
import { CircleNotch, WarningCircle, ArrowsClockwise } from '@mana/shared-icons';
import { theme } from '$lib/stores/theme';
import {
userSettings,
@ -17,30 +17,30 @@
THEME_DEFINITIONS,
DEFAULT_THEME_VARIANTS,
EXTENDED_THEME_VARIANTS,
} from '@manacore/shared-theme';
import type { ThemeVariant } from '@manacore/shared-theme';
} from '@mana/shared-theme';
import type { ThemeVariant } from '@mana/shared-theme';
import { isNavCollapsed as collapsedStore } from '$lib/stores/navigation.svelte';
import { PillNavigation, TagStrip } from '@manacore/shared-ui';
import { PillNavigation, TagStrip } from '@mana/shared-ui';
import type {
PillNavItem,
PillDropdownItem,
QuickInputItem,
SpotlightAction,
} from '@manacore/shared-ui';
} from '@mana/shared-ui';
import { tagStore } from '$lib/stores/tags.svelte';
import { MagnifyingGlass, X } from '@manacore/shared-icons';
import { getPillAppItems } from '@manacore/shared-branding';
import { getLanguageDropdownItems, getCurrentLanguageLabel } from '@manacore/shared-i18n';
import { MagnifyingGlass, X } from '@mana/shared-icons';
import { getPillAppItems } from '@mana/shared-branding';
import { getLanguageDropdownItems, getCurrentLanguageLabel } from '@mana/shared-i18n';
import { setLocale, supportedLocales } from '$lib/i18n';
const AUTH_URL = import.meta.env.VITE_MANA_AUTH_URL || 'https://auth.mana.how';
const MATRIX_HOMESERVER = import.meta.env.VITE_MATRIX_HOMESERVER || 'matrix.mana.how';
/**
* Exchange session cookie for JWT token from mana-core-auth
* Exchange session cookie for JWT token from mana-auth
* This enables cross-app settings sync after Matrix SSO login
*/
async function fetchManaCoreToken(): Promise<boolean> {
async function fetchManaToken(): Promise<boolean> {
try {
const response = await fetch(`${AUTH_URL}/api/v1/auth/session-to-token`, {
method: 'POST',
@ -64,7 +64,7 @@
}
/**
* Initialize user settings (load from mana-core-auth)
* Initialize user settings (load from mana-auth)
*/
async function initUserSettings(): Promise<void> {
// First try to load stored token
@ -72,13 +72,13 @@
// If no stored token, try to exchange session cookie
if (!storedToken) {
await fetchManaCoreToken();
await fetchManaToken();
}
// Load user settings (will use the token we just set)
await userSettings.load();
// Load tags (uses mana-core-auth token)
// Load tags (uses mana-auth token)
await tagStore.fetchTags();
}
@ -318,7 +318,7 @@
if (!initialized) {
initError = matrixStore.error || 'Failed to initialize Matrix client';
} else {
// Matrix ready after SSO, fetch mana-core-auth token and load settings
// Matrix ready after SSO, fetch mana-auth token and load settings
// This happens after SSO so the session cookie should be available
initUserSettings();
}

View file

@ -3,7 +3,7 @@
import { matrixStore } from '$lib/matrix';
import { goto } from '$app/navigation';
import { _ as t } from 'svelte-i18n';
import { MagnifyingGlass, Robot, CircleNotch } from '@manacore/shared-icons';
import { MagnifyingGlass, Robot, CircleNotch } from '@mana/shared-icons';
import BotCard from '$lib/components/bots/BotCard.svelte';
let search = $state('');

View file

@ -12,7 +12,7 @@
import SearchDialog from '$lib/components/chat/SearchDialog.svelte';
import ForwardMessageDialog from '$lib/components/chat/ForwardMessageDialog.svelte';
import { CallView, IncomingCallDialog } from '$lib/components/call';
import { ChatCircle, Plus, Gear, ShieldWarning } from '@manacore/shared-icons';
import { ChatCircle, Plus, Gear, ShieldWarning } from '@mana/shared-icons';
import { browser } from '$app/environment';
import { goto } from '$app/navigation';
import { onMount } from 'svelte';

View file

@ -2,7 +2,7 @@
import { page } from '$app/stores';
import { matrixStore, type SimpleMessage } from '$lib/matrix';
import { RoomHeader, Timeline, MessageInput, DropZoneOverlay } from '$lib/components/chat';
import { CaretLeft } from '@manacore/shared-icons';
import { CaretLeft } from '@mana/shared-icons';
import RoomSettingsPanel from '$lib/components/chat/RoomSettingsPanel.svelte';
import SearchDialog from '$lib/components/chat/SearchDialog.svelte';
import ForwardMessageDialog from '$lib/components/chat/ForwardMessageDialog.svelte';

View file

@ -1,13 +1,13 @@
<script lang="ts">
import { browser } from '$app/environment';
import { FeedbackPage } from '@manacore/feedback';
import { createFeedbackService } from '@manacore/feedback';
import { FeedbackPage } from '@mana/feedback';
import { createFeedbackService } from '@mana/feedback';
import { matrixStore } from '$lib/matrix';
function getAuthUrl(): string {
if (browser && typeof window !== 'undefined') {
const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string })
.__PUBLIC_MANA_CORE_AUTH_URL__;
const injectedUrl = (window as unknown as { __PUBLIC_MANA_AUTH_URL__?: string })
.__PUBLIC_MANA_AUTH_URL__;
return injectedUrl || 'http://localhost:3001';
}
return 'http://localhost:3001';

View file

@ -1,7 +1,7 @@
<script lang="ts">
import { goto } from '$app/navigation';
import { locale } from 'svelte-i18n';
import { HelpPage, getHelpTranslations } from '@manacore/help';
import { HelpPage, getHelpTranslations } from '@mana/help';
import { getManalinkHelpContent } from '$lib/content/help/index.js';
const content = $derived(getManalinkHelpContent($locale ?? 'de'));

View file

@ -21,7 +21,7 @@
Sun,
Moon,
Desktop,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
import { VerificationDialog, RecoveryKeyDialog } from '$lib/components/crypto';
import {
getNotificationSettings,

View file

@ -16,7 +16,7 @@
<div class="tags-page">
<h1>Tags verwalten</h1>
<p class="text-sm text-muted-foreground mb-4">
Tags sind app-übergreifend — Änderungen gelten in allen ManaCore-Apps.
Tags sind app-übergreifend — Änderungen gelten in allen Mana-Apps.
</p>
{#if tagStore.loading}

View file

@ -16,7 +16,7 @@
Check,
ChatCircle,
CaretDown,
} from '@manacore/shared-icons';
} from '@mana/shared-icons';
// Form state
let homeserver = $state('matrix.mana.how');
@ -68,7 +68,7 @@
loadingSSO = true;
const hs = homeserver.includes('://') ? homeserver : `https://${homeserver}`;
const redirectUrl = encodeURIComponent(window.location.origin + '/chat');
window.location.href = `${hs}/_matrix/client/v3/login/sso/redirect/oidc-manacore?redirectUrl=${redirectUrl}`;
window.location.href = `${hs}/_matrix/client/v3/login/sso/redirect/oidc-mana?redirectUrl=${redirectUrl}`;
}
// Auto-discover homeserver when username looks like a full Matrix ID

View file

@ -1,7 +1,7 @@
<script lang="ts">
import { page } from '$app/stores';
import { goto } from '$app/navigation';
import { WarningCircle, ArrowLeft, House } from '@manacore/shared-icons';
import { WarningCircle, ArrowLeft, House } from '@mana/shared-icons';
</script>
<svelte:head>

View file

@ -5,7 +5,7 @@
import type { Snippet } from 'svelte';
import { isLoading as i18nLoading, _ as t } from 'svelte-i18n';
import { theme } from '$lib/stores/theme';
import { ToastContainer, setupGlobalErrorHandler } from '@manacore/shared-ui';
import { ToastContainer, setupGlobalErrorHandler } from '@mana/shared-ui';
interface Props {
children: Snippet;

View file

@ -3,7 +3,7 @@
import { onMount } from 'svelte';
import { browser } from '$app/environment';
import { matrixStore } from '$lib/matrix';
import { CircleNotch } from '@manacore/shared-icons';
import { CircleNotch } from '@mana/shared-icons';
let checking = $state(true);

View file

@ -1,5 +1,5 @@
<script lang="ts">
import { OfflinePage } from '@manacore/shared-ui';
import { OfflinePage } from '@mana/shared-ui';
</script>
<OfflinePage

View file

@ -3,29 +3,29 @@ import tailwindcss from '@tailwindcss/vite';
import { defineConfig, type UserConfig } from 'vite';
import { SvelteKitPWA } from '@vite-pwa/sveltekit';
// ManaCore shared packages that need SSR configuration
// Mana shared packages that need SSR configuration
const MANACORE_SHARED_PACKAGES = [
'@manacore/shared-icons',
'@manacore/shared-ui',
'@manacore/shared-tailwind',
'@manacore/shared-theme',
'@manacore/shared-theme-ui',
'@manacore/feedback',
'@manacore/feedback',
'@manacore/feedback',
'@manacore/shared-auth',
'@manacore/shared-auth-ui',
'@manacore/shared-branding',
'@manacore/subscriptions',
'@manacore/shared-profile-ui',
'@manacore/shared-i18n',
'@manacore/shared-api-client',
'@manacore/shared-splitscreen',
'@manacore/shared-utils',
'@manacore/shared-tags',
'@manacore/help',
'@manacore/help',
'@manacore/help',
'@mana/shared-icons',
'@mana/shared-ui',
'@mana/shared-tailwind',
'@mana/shared-theme',
'@mana/shared-theme-ui',
'@mana/feedback',
'@mana/feedback',
'@mana/feedback',
'@mana/shared-auth',
'@mana/shared-auth-ui',
'@mana/shared-branding',
'@mana/subscriptions',
'@mana/shared-profile-ui',
'@mana/shared-i18n',
'@mana/shared-api-client',
'@mana/shared-splitscreen',
'@mana/shared-utils',
'@mana/shared-tags',
'@mana/help',
'@mana/help',
'@mana/help',
];
const noExternal = [...MANACORE_SHARED_PACKAGES, '@matrix/shared'];