From efa26440a05abddad07290bf88340c4f4e3ec126 Mon Sep 17 00:00:00 2001 From: Corentin Date: Thu, 7 May 2026 21:10:51 +0200 Subject: [PATCH] =?UTF-8?q?feat(rebrand):=20DocAdenice=20=E2=80=94=20patch?= =?UTF-8?q?=20initial=20sur=20le=20fork=20Acadenice?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Renomme app name visible 'Docmost' -> 'DocAdenice' (browser title, header, emails) - Conserve identifiants techniques (package name, classes, imports, service docker) - Ajoute ACADENICE_PATCHES.md avec changelog des patches Acadenice --- ACADENICE_PATCHES.md | 72 +++++++++++++++++++ README.md | 8 +++ apps/client/index.html | 4 +- .../components/layouts/global/app-header.tsx | 6 +- apps/client/src/components/ui/error-404.tsx | 2 +- .../features/auth/components/auth-layout.tsx | 4 +- .../home/components/home-ai-prompt.tsx | 2 +- apps/client/src/lib/config.ts | 2 +- .../services/workspace-invitation.service.ts | 4 +- .../environment/environment.service.ts | 2 +- .../transactional/emails/invitation-email.tsx | 2 +- .../transactional/partials/partials.tsx | 2 +- 12 files changed, 95 insertions(+), 15 deletions(-) create mode 100644 ACADENICE_PATCHES.md diff --git a/ACADENICE_PATCHES.md b/ACADENICE_PATCHES.md new file mode 100644 index 00000000..f43aacd8 --- /dev/null +++ b/ACADENICE_PATCHES.md @@ -0,0 +1,72 @@ +# Acadenice Patches + +Liste des patches custom appliques sur le fork Acadenice de Docmost. +Ce document est maintenu manuellement pour faciliter le rebase upstream. + +Repo upstream : `github.com/docmost/docmost` +Branche fork : `acadenice/main` + +## Conventions + +- Chaque patch est commit isole avec scope `feat(rebrand)` / `feat(custom)` / etc. +- Les modifications in-line de fichiers upstream sont documentees ici avec rationale. +- Les nouveaux fichiers (extensions Tiptap custom, hooks, etc.) vont dans des emplacements dedies pour minimiser les conflits de rebase. + +--- + +## Patch 001 — Rebrand minimal "Docmost" -> "DocAdenice" + +**Date** : 2026-05-07 +**Scope** : strings UI visibles utilisateur uniquement +**Rationale** : nom temporaire pour les beta-testeurs en attendant le vrai rebranding (logo SVG + design system + manifest PWA). Conserve les identifiants techniques pour ne rien casser et faciliter le rebase upstream. + +### Fichiers modifies + +| Fichier | Avant | Apres | +|---------|-------|-------| +| `apps/client/index.html` | `Docmost` | `DocAdenice` | +| `apps/client/index.html` | `apple-mobile-web-app-title content="Docmost"` | `content="DocAdenice"` | +| `apps/client/src/lib/config.ts` | `getAppName() return "Docmost"` | `return "DocAdenice"` | +| `apps/client/src/components/layouts/global/app-header.tsx` | brand `aria-label`, `alt`, texte `Docmost` | `DocAdenice` | +| `apps/client/src/features/auth/components/auth-layout.tsx` | brand `alt`, texte `Docmost` | `DocAdenice` | +| `apps/client/src/components/ui/error-404.tsx` | titre 404 ` - Docmost` | ` - DocAdenice` | +| `apps/client/src/features/home/components/home-ai-prompt.tsx` | fallback workspace name `"Docmost"` | `"DocAdenice"` | +| `apps/server/src/integrations/transactional/emails/invitation-email.tsx` | `"You have been invited to Docmost."` | `"...DocAdenice."` | +| `apps/server/src/integrations/transactional/partials/partials.tsx` | footer `© Docmost` | `© DocAdenice` | +| `apps/server/src/core/workspace/services/workspace-invitation.service.ts` | sujet `... has accepted your Docmost invite` | `... DocAdenice invite` | +| `apps/server/src/core/workspace/services/workspace-invitation.service.ts` | sujet `... invited you to Docmost` | `... DocAdenice` | +| `apps/server/src/integrations/environment/environment.service.ts` | `MAIL_FROM_NAME` default `'Docmost'` | `'DocAdenice'` | +| `README.md` | header initial Docmost | bloc "DocAdenice" ajoute au-dessus | + +### KEEP volontairement (non modifies) + +| Element | Raison | +|---------|--------| +| `package.json` `name: "docmost"` | nom du package npm interne, casserait les imports/scripts Nx | +| `@docmost/editor-ext` workspace package | identifiant pnpm workspace | +| `docker-compose.yml` service `docmost` | identifiant technique | +| `apps/server/src/core/auth/token.module.ts` JWT issuer `'Docmost'` | changer invaliderait les tokens existants | +| `apps/server/src/core/workspace/workspace.constants.ts` `'docmost'` dans DISALLOWED_HOSTNAMES | blacklist hostnames reserves, technique | +| `apps/server/src/common/helpers/types/export-metadata.types.ts` `source: 'docmost'` | format export pour interop avec Docmost officiel | +| `apps/server/src/integrations/export/export.service.ts` filename `docmost-metadata.json` | format export, interop | +| `apps/server/src/integrations/import/services/file-import-task.service.ts` (vars `docmostMetadata`, prefix `docmost-import`, fonction `readDocmostMetadata`) | identifiants techniques + lecture du format export Docmost | +| `apps/server/src/integrations/import/utils/import.utils.ts` `readDocmostMetadata` | API publique du module import | +| `apps/server/src/integrations/security/version.service.ts` URL `github.com/docmost/docmost/releases` | check de version vs upstream officiel | +| `apps/server/src/integrations/telemetry/telemetry.service.ts` endpoint `tel.docmost.com` | telemetry upstream (a desactiver dans une iteration future via env var) | +| `apps/client/src/components/settings/settings-sidebar.tsx` `help@docmost.com` | email support upstream officiel, on n'usurpe pas | +| `apps/client/src/components/settings/app-version.tsx` URL releases | check de version upstream | +| `apps/client/src/ee/**` (license, AI, MCP, API keys, share-branding "Powered by Docmost") | code Enterprise Edition propriete Docmost — copy commerciale, ne pas masquer | +| `apps/client/src/ee/components/posthog-user.tsx` `source: "docmost-app"` | identifiant analytics upstream | +| `apps/server/src/integrations/environment/environment.validation.ts` URL clickhouse exemple | message d'erreur dev-facing technique | +| `apps/server/src/core/workspace/services/workspace.service.ts` `@deleted.docmost.com` | placeholder technique pour soft-delete | + +### TODO rebrand complet (futur) + +- Logo SVG / favicon DocAdenice (actuellement reutilise `/icons/favicon-32x32.png` upstream) +- Manifest PWA (`apps/client/public/manifest.json`) : name, short_name, icons +- `apps/client/public/icons/` : pack d'icones Acadenice (16, 32, 192, 512, apple-touch) +- Palette couleur design system (theme Mantine custom) +- Eventuellement disable telemetry upstream par defaut (env var ou patch) +- Decider du sort de l'EE branding ("Powered by Docmost" sur les pages partagees publiques) +- Crowdin / i18n : ajouter une cle `appName` au lieu du hardcode et router via `getAppName()` +- Strategie : renommer le package npm `docmost` -> `docadenice` quand on aura un build pipeline custom complet (impacte trop d'imports actuellement) diff --git a/README.md b/README.md index f09680e1..2d590d33 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +# DocAdenice + +> Fork Acadenice de Docmost, customise pour formation-hub. +> Nom de marque temporaire en attendant le rebranding complet (logo, design system, manifest PWA). +> Voir `ACADENICE_PATCHES.md` pour la liste des patches custom appliques sur l'upstream. + +--- +

Docmost

diff --git a/apps/client/index.html b/apps/client/index.html index 28679e40..762689fd 100644 --- a/apps/client/index.html +++ b/apps/client/index.html @@ -5,13 +5,13 @@ - Docmost + DocAdenice - + diff --git a/apps/client/src/components/layouts/global/app-header.tsx b/apps/client/src/components/layouts/global/app-header.tsx index 97a464fd..7b6371bd 100644 --- a/apps/client/src/components/layouts/global/app-header.tsx +++ b/apps/client/src/components/layouts/global/app-header.tsx @@ -84,11 +84,11 @@ export function AppHeader() { /> - + Docmost @@ -99,7 +99,7 @@ export function AppHeader() { style={{ userSelect: "none" }} visibleFrom="sm" > - Docmost + DocAdenice diff --git a/apps/client/src/components/ui/error-404.tsx b/apps/client/src/components/ui/error-404.tsx index 8c8846ae..926c598a 100644 --- a/apps/client/src/components/ui/error-404.tsx +++ b/apps/client/src/components/ui/error-404.tsx @@ -10,7 +10,7 @@ export function Error404() { return ( <> - {t("404 page not found")} - Docmost + {t("404 page not found")} - DocAdenice {t("404 page not found")} diff --git a/apps/client/src/features/auth/components/auth-layout.tsx b/apps/client/src/features/auth/components/auth-layout.tsx index d05ad7ec..914543f9 100644 --- a/apps/client/src/features/auth/components/auth-layout.tsx +++ b/apps/client/src/features/auth/components/auth-layout.tsx @@ -12,12 +12,12 @@ export function AuthLayout({ children }: AuthLayoutProps) { Docmost - Docmost + DocAdenice {children} diff --git a/apps/client/src/features/home/components/home-ai-prompt.tsx b/apps/client/src/features/home/components/home-ai-prompt.tsx index c3c69398..1c01e304 100644 --- a/apps/client/src/features/home/components/home-ai-prompt.tsx +++ b/apps/client/src/features/home/components/home-ai-prompt.tsx @@ -40,7 +40,7 @@ export default function HomeAiPrompt() { return (

- {t("Welcome to {{name}}", { name: workspace?.name ?? "Docmost" })} + {t("Welcome to {{name}}", { name: workspace?.name ?? "DocAdenice" })}

{t("Ask anything or search your workspace")} diff --git a/apps/client/src/lib/config.ts b/apps/client/src/lib/config.ts index 67bbe100..bccc762f 100644 --- a/apps/client/src/lib/config.ts +++ b/apps/client/src/lib/config.ts @@ -10,7 +10,7 @@ declare global { } export function getAppName(): string { - return "Docmost"; + return "DocAdenice"; } export function getAppUrl(): string { diff --git a/apps/server/src/core/workspace/services/workspace-invitation.service.ts b/apps/server/src/core/workspace/services/workspace-invitation.service.ts index 50ed49f0..a1a9ea26 100644 --- a/apps/server/src/core/workspace/services/workspace-invitation.service.ts +++ b/apps/server/src/core/workspace/services/workspace-invitation.service.ts @@ -318,7 +318,7 @@ export class WorkspaceInvitationService { await this.mailService.sendToQueue({ to: invitedByUser.email, - subject: `${newUser.name} has accepted your Docmost invite`, + subject: `${newUser.name} has accepted your DocAdenice invite`, template: emailTemplate, }); } @@ -467,7 +467,7 @@ export class WorkspaceInvitationService { await this.mailService.sendToQueue({ to: inviteeEmail, - subject: `${invitedByName} invited you to Docmost`, + subject: `${invitedByName} invited you to DocAdenice`, template: emailTemplate, }); } diff --git a/apps/server/src/integrations/environment/environment.service.ts b/apps/server/src/integrations/environment/environment.service.ts index abee1966..f927548d 100644 --- a/apps/server/src/integrations/environment/environment.service.ts +++ b/apps/server/src/integrations/environment/environment.service.ts @@ -131,7 +131,7 @@ export class EnvironmentService { } getMailFromName(): string { - return this.configService.get('MAIL_FROM_NAME', 'Docmost'); + return this.configService.get('MAIL_FROM_NAME', 'DocAdenice'); } getMailBlockedRecipientDomains(): string[] { diff --git a/apps/server/src/integrations/transactional/emails/invitation-email.tsx b/apps/server/src/integrations/transactional/emails/invitation-email.tsx index 7a1cde3a..8b334ea6 100644 --- a/apps/server/src/integrations/transactional/emails/invitation-email.tsx +++ b/apps/server/src/integrations/transactional/emails/invitation-email.tsx @@ -12,7 +12,7 @@ export const InvitationEmail = ({ inviteLink }: Props) => {
Hi there, - You have been invited to Docmost. + You have been invited to DocAdenice. Please click the button below to accept this invitation. diff --git a/apps/server/src/integrations/transactional/partials/partials.tsx b/apps/server/src/integrations/transactional/partials/partials.tsx index 0c0e58b0..8bf8cbc9 100644 --- a/apps/server/src/integrations/transactional/partials/partials.tsx +++ b/apps/server/src/integrations/transactional/partials/partials.tsx @@ -81,7 +81,7 @@ export function MailFooter() {
- © {new Date().getFullYear()} Docmost, All Rights Reserved
+ © {new Date().getFullYear()} DocAdenice, All Rights Reserved