refactor: rebrand complet Laurel & Vow -> Mostuki Photo

- fallbacks composants + directus.ts passes a Mostuki Photo / Cannes
- corrige Contact.astro (PARIS -> CANNES)
- seed/token scripts : defauts Mostuki + email corentin.jog@gmail.com
- docker-compose dev : conteneurs mostuki-*, email admin, secrets dev
- backup.sh : conteneurs par defaut mostuki-*
- package.json : name mostuki-photo + description vitrine
- .env.example : email admin
- DEPLOY.md : retrait des references obsoletes a l ancien branding

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Corentin Joguet 2026-06-15 11:15:03 +02:00
parent b0030246e4
commit 9559ba1216
19 changed files with 77 additions and 33 deletions

View file

@ -6,7 +6,7 @@ DIRECTUS_URL=http://localhost:8055
DIRECTUS_TOKEN= DIRECTUS_TOKEN=
# Directus admin (used only by docker-compose for initial setup) # Directus admin (used only by docker-compose for initial setup)
DIRECTUS_ADMIN_EMAIL=admin@laurelvow.fr DIRECTUS_ADMIN_EMAIL=corentin.jog@gmail.com
DIRECTUS_ADMIN_PASSWORD=changeme-please DIRECTUS_ADMIN_PASSWORD=changeme-please
DIRECTUS_SECRET=replace-with-a-random-long-string DIRECTUS_SECRET=replace-with-a-random-long-string

View file

@ -79,7 +79,7 @@ docker compose -f docker-compose.prod.yml up -d --build
Le `--build` compile l'image Astro de prod. Verifie que les 3 conteneurs Le `--build` compile l'image Astro de prod. Verifie que les 3 conteneurs
tournent : `docker compose -f docker-compose.prod.yml ps`. tournent : `docker compose -f docker-compose.prod.yml ps`.
A ce stade la base est VIDE (branding "Laurel & Vow" par defaut). On la A ce stade la base est VIDE (sans tes series ni tes photos). On la
remplace avec ton contenu a l'etape 6. remplace avec ton contenu a l'etape 6.
--- ---
@ -124,8 +124,8 @@ Avec TLS (Let's Encrypt) sur les deux.
## ETAPE 8 — Verifications finales ## ETAPE 8 — Verifications finales
- [ ] La home affiche bien "Mostuki" (pas "Laurel & Vow") -> sinon la restore - [ ] Les 4 series s'affichent dans REALISATIONS -> sinon la restore DB n'a
DB n'a pas pris, relance l'etape 6. pas pris, relance l'etape 6.
- [ ] Les photos des series s'affichent (proxy `/api/files/...` OK). - [ ] Les photos des series s'affichent (proxy `/api/files/...` OK).
- [ ] Le formulaire `/contact` enregistre bien (verifie dans Directus admin, - [ ] Le formulaire `/contact` enregistre bien (verifie dans Directus admin,
collection `contact_requests`). collection `contact_requests`).

View file

@ -871,3 +871,47 @@
{"timestamp":"2026-06-15T09:00:34.099Z","phase":"pre","tool":"Edit","summary":"/Users/corentinjoguet/Documents/03_Dev/site-photo/.gitignore","est_input_tokens":51} {"timestamp":"2026-06-15T09:00:34.099Z","phase":"pre","tool":"Edit","summary":"/Users/corentinjoguet/Documents/03_Dev/site-photo/.gitignore","est_input_tokens":51}
{"timestamp":"2026-06-15T09:00:34.137Z","phase":"post","tool":"Edit","ok":true,"failure_kind":null,"est_output_tokens":157} {"timestamp":"2026-06-15T09:00:34.137Z","phase":"post","tool":"Edit","ok":true,"failure_kind":null,"est_output_tokens":157}
{"timestamp":"2026-06-15T09:00:43.652Z","phase":"pre","tool":"Bash","summary":"Fix tracking, verify env template included","est_input_tokens":147} {"timestamp":"2026-06-15T09:00:43.652Z","phase":"pre","tool":"Bash","summary":"Fix tracking, verify env template included","est_input_tokens":147}
{"timestamp":"2026-06-15T09:00:43.746Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":91}
{"timestamp":"2026-06-15T09:00:52.957Z","phase":"pre","tool":"Bash","summary":"Commit and push deploy package","est_input_tokens":222}
{"timestamp":"2026-06-15T09:00:53.932Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":58}
{"timestamp":"2026-06-15T09:08:01.263Z","phase":"pre","tool":"Bash","summary":"Check docker and containers state","est_input_tokens":77}
{"timestamp":"2026-06-15T09:08:01.490Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":32}
{"timestamp":"2026-06-15T09:08:07.313Z","phase":"pre","tool":"Bash","summary":"Start Colima VM","est_input_tokens":23}
{"timestamp":"2026-06-15T09:08:34.112Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":128}
{"timestamp":"2026-06-15T09:08:38.266Z","phase":"pre","tool":"Bash","summary":"Start postgres and directus","est_input_tokens":77}
{"timestamp":"2026-06-15T09:08:39.721Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":75}
{"timestamp":"2026-06-15T09:08:44.348Z","phase":"pre","tool":"Bash","summary":"Run backup script","est_input_tokens":37}
{"timestamp":"2026-06-15T09:08:45.549Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":121}
{"timestamp":"2026-06-15T09:09:01.912Z","phase":"pre","tool":"Bash","summary":"Verify dump contains Mostuki branding","est_input_tokens":136}
{"timestamp":"2026-06-15T09:09:01.986Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":89}
{"timestamp":"2026-06-15T09:09:13.798Z","phase":"pre","tool":"Bash","summary":"Find Laurel & Vow contexts in dump","est_input_tokens":74}
{"timestamp":"2026-06-15T09:09:15.579Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":465}
{"timestamp":"2026-06-15T09:09:31.394Z","phase":"pre","tool":"Bash","summary":"Query live current values","est_input_tokens":191}
{"timestamp":"2026-06-15T09:09:31.609Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":116}
{"timestamp":"2026-06-15T09:11:21.476Z","phase":"pre","tool":"Bash","summary":"Discover all laurel/vow divergences in code and DB","est_input_tokens":214}
{"timestamp":"2026-06-15T09:11:21.590Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":584}
{"timestamp":"2026-06-15T09:12:27.888Z","phase":"pre","tool":"Bash","summary":"Check volume names and public dir","est_input_tokens":100}
{"timestamp":"2026-06-15T09:12:28.001Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":127}
{"timestamp":"2026-06-15T09:12:57.724Z","phase":"pre","tool":"Bash","summary":"Apply branding fixes to app code","est_input_tokens":297}
{"timestamp":"2026-06-15T09:12:57.810Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":228}
{"timestamp":"2026-06-15T09:13:15.193Z","phase":"pre","tool":"Bash","summary":"Re-apply branding fixes with explicit file list","est_input_tokens":232}
{"timestamp":"2026-06-15T09:13:15.270Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":119}
{"timestamp":"2026-06-15T09:13:34.266Z","phase":"pre","tool":"Bash","summary":"Fix backup.sh, compose, package.json branding","est_input_tokens":281}
{"timestamp":"2026-06-15T09:13:34.342Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":64}
{"timestamp":"2026-06-15T09:13:40.480Z","phase":"pre","tool":"Bash","summary":"Fix compose admin email, final verify","est_input_tokens":118}
{"timestamp":"2026-06-15T09:13:40.539Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":44}
{"timestamp":"2026-06-15T09:13:47.233Z","phase":"pre","tool":"Bash","summary":"Fix env.example, verify zero laurel, rebuild","est_input_tokens":149}
{"timestamp":"2026-06-15T09:13:49.076Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":127}
{"timestamp":"2026-06-15T09:13:59.564Z","phase":"pre","tool":"Read","summary":"/Users/corentinjoguet/Documents/03_Dev/site-photo/DEPLOY.md","est_input_tokens":25}
{"timestamp":"2026-06-15T09:13:59.602Z","phase":"post","tool":"Read","ok":true,"failure_kind":null,"est_output_tokens":104}
{"timestamp":"2026-06-15T09:14:04.184Z","phase":"pre","tool":"Edit","summary":"/Users/corentinjoguet/Documents/03_Dev/site-photo/DEPLOY.md","est_input_tokens":87}
{"timestamp":"2026-06-15T09:14:04.227Z","phase":"post","tool":"Edit","ok":true,"failure_kind":null,"est_output_tokens":1455}
{"timestamp":"2026-06-15T09:14:07.571Z","phase":"pre","tool":"Read","summary":"/Users/corentinjoguet/Documents/03_Dev/site-photo/DEPLOY.md","est_input_tokens":25}
{"timestamp":"2026-06-15T09:14:07.611Z","phase":"post","tool":"Read","ok":true,"failure_kind":null,"est_output_tokens":98}
{"timestamp":"2026-06-15T09:14:15.553Z","phase":"pre","tool":"Edit","summary":"/Users/corentinjoguet/Documents/03_Dev/site-photo/DEPLOY.md","est_input_tokens":91}
{"timestamp":"2026-06-15T09:14:15.597Z","phase":"post","tool":"Edit","ok":true,"failure_kind":null,"est_output_tokens":1493}
{"timestamp":"2026-06-15T09:14:30.508Z","phase":"pre","tool":"Bash","summary":"Recreate stack with new container names","est_input_tokens":136}
{"timestamp":"2026-06-15T09:14:36.984Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":130}
{"timestamp":"2026-06-15T09:14:48.066Z","phase":"pre","tool":"Bash","summary":"Verify data intact and fix DB divergences","est_input_tokens":317}
{"timestamp":"2026-06-15T09:14:48.383Z","phase":"post","tool":"Bash","ok":true,"failure_kind":null,"est_output_tokens":96}
{"timestamp":"2026-06-15T09:15:02.975Z","phase":"pre","tool":"Bash","summary":"Commit and push rebrand","est_input_tokens":248}

Binary file not shown.

Binary file not shown.

View file

@ -1,7 +1,7 @@
services: services:
postgres: postgres:
image: postgres:16-alpine image: postgres:16-alpine
container_name: laurel-vow-postgres container_name: mostuki-postgres
restart: unless-stopped restart: unless-stopped
environment: environment:
POSTGRES_USER: ${POSTGRES_USER:-directus} POSTGRES_USER: ${POSTGRES_USER:-directus}
@ -17,7 +17,7 @@ services:
directus: directus:
image: directus/directus:11 image: directus/directus:11
container_name: laurel-vow-directus container_name: mostuki-directus
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
postgres: postgres:
@ -28,9 +28,9 @@ services:
- directus_uploads:/directus/uploads - directus_uploads:/directus/uploads
- directus_extensions:/directus/extensions - directus_extensions:/directus/extensions
environment: environment:
KEY: "${DIRECTUS_SECRET:-laurel-vow-dev-key}" KEY: "${DIRECTUS_SECRET:-mostuki-dev-key}"
SECRET: "${DIRECTUS_SECRET:-laurel-vow-dev-secret}" SECRET: "${DIRECTUS_SECRET:-mostuki-dev-secret}"
ADMIN_EMAIL: "${DIRECTUS_ADMIN_EMAIL:-admin@laurelvow.fr}" ADMIN_EMAIL: "${DIRECTUS_ADMIN_EMAIL:-corentin.jog@gmail.com}"
ADMIN_PASSWORD: "${DIRECTUS_ADMIN_PASSWORD:-changeme-please}" ADMIN_PASSWORD: "${DIRECTUS_ADMIN_PASSWORD:-changeme-please}"
DB_CLIENT: "pg" DB_CLIENT: "pg"
DB_HOST: "postgres" DB_HOST: "postgres"
@ -48,7 +48,7 @@ services:
build: build:
context: . context: .
dockerfile: Dockerfile.dev dockerfile: Dockerfile.dev
container_name: laurel-vow-astro container_name: mostuki-astro
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- directus - directus

View file

@ -1,7 +1,7 @@
{ {
"name": "laurel-vow", "name": "mostuki-photo",
"version": "0.1.0", "version": "0.1.0",
"description": "Site portfolio photographie de mariage Laurel & Vow. Astro + nginx + Traefik.", "description": "Site vitrine photographie Mostuki Photo (Cannes). Astro SSR + Directus + Postgres.",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "astro dev", "dev": "astro dev",

View file

@ -30,7 +30,7 @@
const safety = setTimeout(() => { try { boot.remove(); } catch {} }, 6000); const safety = setTimeout(() => { try { boot.remove(); } catch {} }, 6000);
const target = boot.querySelector('.boot__text'); const target = boot.querySelector('.boot__text');
const lines = [ const lines = [
'> initializing laurel & vow studio . . .', '> initializing mostuki photo studio . . .',
'> loading typography: JetBrainsMono v2.304 . . . OK', '> loading typography: JetBrainsMono v2.304 . . . OK',
'> loading palette: ink #0a0a0a / paper #f4f1eb / accent #5e2ca5 . . . OK', '> loading palette: ink #0a0a0a / paper #f4f1eb / accent #5e2ca5 . . . OK',
'> resolving photographer.heart . . . OK', '> resolving photographer.heart . . . OK',
@ -86,7 +86,7 @@
if (logo) { if (logo) {
if (active) { if (active) {
logo.dataset.original = logo.dataset.original || logo.innerHTML; logo.dataset.original = logo.dataset.original || logo.innerHTML;
logo.innerHTML = '[ LAUREL_AND_VOW_v1.4.2-rc.1<span class="cursor" aria-hidden="true">▌</span> ]'; logo.innerHTML = '[ MOSTUKI_v1.4.2-rc.1<span class="cursor" aria-hidden="true">▌</span> ]';
} else if (logo.dataset.original) { } else if (logo.dataset.original) {
logo.innerHTML = logo.dataset.original; logo.innerHTML = logo.dataset.original;
} }

View file

@ -18,8 +18,8 @@ cd "$(dirname "$0")/.."
# Charge .env pour POSTGRES_USER / POSTGRES_DB # Charge .env pour POSTGRES_USER / POSTGRES_DB
if [ -f .env ]; then set -a; . ./.env; set +a; fi if [ -f .env ]; then set -a; . ./.env; set +a; fi
PG_CONTAINER="${PG_CONTAINER:-laurel-vow-postgres}" PG_CONTAINER="${PG_CONTAINER:-mostuki-postgres}"
DIRECTUS_CONTAINER="${DIRECTUS_CONTAINER:-laurel-vow-directus}" DIRECTUS_CONTAINER="${DIRECTUS_CONTAINER:-mostuki-directus}"
PG_USER="${POSTGRES_USER:-directus}" PG_USER="${POSTGRES_USER:-directus}"
PG_DB="${POSTGRES_DB:-directus}" PG_DB="${POSTGRES_DB:-directus}"

View file

@ -10,7 +10,7 @@ import fs from 'node:fs';
import path from 'node:path'; import path from 'node:path';
const URL_BASE = process.env.DIRECTUS_PUBLIC_URL || 'http://localhost:8055'; const URL_BASE = process.env.DIRECTUS_PUBLIC_URL || 'http://localhost:8055';
const EMAIL = process.env.DIRECTUS_ADMIN_EMAIL || 'admin@laurelvow.fr'; const EMAIL = process.env.DIRECTUS_ADMIN_EMAIL || 'corentin.jog@gmail.com';
const PASSWORD = process.env.DIRECTUS_ADMIN_PASSWORD || 'changeme-please'; const PASSWORD = process.env.DIRECTUS_ADMIN_PASSWORD || 'changeme-please';
async function api(method, path, body, token) { async function api(method, path, body, token) {

View file

@ -18,7 +18,7 @@
import 'node:process'; import 'node:process';
const URL_BASE = process.env.DIRECTUS_PUBLIC_URL || 'http://localhost:8055'; const URL_BASE = process.env.DIRECTUS_PUBLIC_URL || 'http://localhost:8055';
const EMAIL = process.env.DIRECTUS_ADMIN_EMAIL || 'admin@laurelvow.fr'; const EMAIL = process.env.DIRECTUS_ADMIN_EMAIL || 'corentin.jog@gmail.com';
const PASSWORD = process.env.DIRECTUS_ADMIN_PASSWORD || 'changeme-please'; const PASSWORD = process.env.DIRECTUS_ADMIN_PASSWORD || 'changeme-please';
let TOKEN = null; let TOKEN = null;
@ -262,12 +262,12 @@ async function setSingleton(collection, values) {
await ensurePublicRead('site_settings'); await ensurePublicRead('site_settings');
await setSingleton('site_settings', { await setSingleton('site_settings', {
studio_name: 'Laurel & Vow', studio_name: 'Mostuki Photo',
city: 'CANNES', city: 'CANNES',
region: 'PACA', region: 'PACA',
country: 'FR', country: 'FR',
coords: '43.55N 7.02E', coords: '43.55N 7.02E',
email: 'hello@laurelvow.fr', email: 'corentin.jog@gmail.com',
est_year: 2018, est_year: 2018,
current_year: 2026, current_year: 2026,
hero_tag: '[01] STUDIO.', hero_tag: '[01] STUDIO.',
@ -292,7 +292,7 @@ async function setSingleton(collection, values) {
], ],
contact_title: 'ON SE PARLE ?', contact_title: 'ON SE PARLE ?',
contact_body: "DECRIS-MOI TON PROJET EN QUELQUES LIGNES : TYPE DE SHOOT, DATE APPROXIMATIVE, LIEU, BUDGET INDICATIF. REPONSE SOUS 48H.", contact_body: "DECRIS-MOI TON PROJET EN QUELQUES LIGNES : TYPE DE SHOOT, DATE APPROXIMATIVE, LIEU, BUDGET INDICATIF. REPONSE SOUS 48H.",
contact_addr: 'STUDIO LAUREL & VOW · CANNES · FR', contact_addr: 'STUDIO MOSTUKI · CANNES · FR',
}); });
// ============ series (collection) ============ // ============ series (collection) ============

View file

@ -10,8 +10,8 @@ const {
tag = '[06] CONTACT.', tag = '[06] CONTACT.',
title = 'ON SE PARLE ?', title = 'ON SE PARLE ?',
body = "DATE &middot; LIEU APPROXIMATIF &middot; NOMBRE D'INVITES. REPONSE SOUS 48H.", body = "DATE &middot; LIEU APPROXIMATIF &middot; NOMBRE D'INVITES. REPONSE SOUS 48H.",
email = 'hello@laurelvow.fr', email = 'corentin.jog@gmail.com',
addr = 'STUDIO LAUREL &amp; VOW &middot; PARIS &middot; FR', addr = 'STUDIO MOSTUKI &middot; CANNES &middot; FR',
} = Astro.props; } = Astro.props;
const subject = encodeURIComponent("Demande d'information"); const subject = encodeURIComponent("Demande d'information");
--- ---

View file

@ -5,7 +5,7 @@ export interface Props {
country?: string; country?: string;
est?: number; est?: number;
} }
const { studio = 'Laurel & Vow', city = 'CANNES', country = 'FR', est = 2018 } = Astro.props; const { studio = 'Mostuki Photo', city = 'CANNES', country = 'FR', est = 2018 } = Astro.props;
const year = new Date().getFullYear(); const year = new Date().getFullYear();
--- ---
<footer class="site-footer"> <footer class="site-footer">

View file

@ -4,7 +4,7 @@ export interface Props {
addr?: string; addr?: string;
} }
const { const {
studio = 'Laurel & Vow', studio = 'Mostuki Photo',
addr = 'PARIS / FR &middot; 48.85N 2.34E', addr = 'PARIS / FR &middot; 48.85N 2.34E',
} = Astro.props; } = Astro.props;
--- ---

View file

@ -12,7 +12,7 @@ export interface Props {
yearSuffix?: string; yearSuffix?: string;
} }
const { const {
bar = 'FILE 001 / LANDING / 2026 / STUDIO LAUREL &amp; VOW', bar = 'FILE 001 / LANDING / 2026 / STUDIO MOSTUKI',
tag = '[01] HELLO.', tag = '[01] HELLO.',
displayLines = ['PHOTOGRAPHIE', 'DE MARIAGE.'], displayLines = ['PHOTOGRAPHIE', 'DE MARIAGE.'],
italicLine = 'documentaire.', italicLine = 'documentaire.',

View file

@ -4,7 +4,7 @@ export interface Props {
} }
const { const {
items = [ items = [
'STUDIO LAUREL &amp; VOW', 'STUDIO MOSTUKI',
'EST. 2018', 'EST. 2018',
'PARIS / FR', 'PARIS / FR',
'10 MARIAGES / AN', '10 MARIAGES / AN',

View file

@ -79,12 +79,12 @@ const client = TOKEN
// Fallback values used when Directus is unreachable or returns nothing. // Fallback values used when Directus is unreachable or returns nothing.
// Permet au dev de fonctionner sans Directus running. // Permet au dev de fonctionner sans Directus running.
const FALLBACK_SETTINGS: SiteSettings = { const FALLBACK_SETTINGS: SiteSettings = {
studio_name: 'Laurel & Vow', studio_name: 'Mostuki Photo',
city: 'CANNES', city: 'CANNES',
region: 'PACA', region: 'PACA',
country: 'FR', country: 'FR',
coords: '43.55N 7.02E', coords: '43.55N 7.02E',
email: 'hello@laurelvow.fr', email: 'corentin.jog@gmail.com',
est_year: 2018, est_year: 2018,
current_year: 2026, current_year: 2026,
hero_tag: '[01] STUDIO.', hero_tag: '[01] STUDIO.',
@ -109,7 +109,7 @@ const FALLBACK_SETTINGS: SiteSettings = {
], ],
contact_title: 'ON SE PARLE ?', contact_title: 'ON SE PARLE ?',
contact_body: "DECRIS-MOI TON PROJET EN QUELQUES LIGNES : TYPE DE SHOOT, DATE APPROXIMATIVE, LIEU, BUDGET INDICATIF. REPONSE SOUS 48H.", contact_body: "DECRIS-MOI TON PROJET EN QUELQUES LIGNES : TYPE DE SHOOT, DATE APPROXIMATIVE, LIEU, BUDGET INDICATIF. REPONSE SOUS 48H.",
contact_addr: 'STUDIO LAUREL & VOW · CANNES · FR', contact_addr: 'STUDIO MOSTUKI · CANNES · FR',
}; };
export async function getSiteSettings(): Promise<SiteSettings> { export async function getSiteSettings(): Promise<SiteSettings> {

View file

@ -5,7 +5,7 @@ import { getSiteSettings } from '../lib/directus';
const s = await getSiteSettings(); const s = await getSiteSettings();
const ts = new Date().toISOString(); const ts = new Date().toISOString();
--- ---
<Layout title="404 // LAUREL & VOW // FILE NOT FOUND" description="Page introuvable."> <Layout title="404 // MOSTUKI // FILE NOT FOUND" description="Page introuvable.">
<main class="err-wrap"> <main class="err-wrap">
<div class="err-bar">ERROR &middot; 404 &middot; {s.studio_name.toUpperCase()} &middot; {s.city} &middot; {s.country}</div> <div class="err-bar">ERROR &middot; 404 &middot; {s.studio_name.toUpperCase()} &middot; {s.city} &middot; {s.country}</div>
<p class="err-code">404<span class="cursor" aria-hidden="true">▌</span></p> <p class="err-code">404<span class="cursor" aria-hidden="true">▌</span></p>

View file

@ -30,7 +30,7 @@
const safety = setTimeout(() => { try { boot.remove(); } catch {} }, 6000); const safety = setTimeout(() => { try { boot.remove(); } catch {} }, 6000);
const target = boot.querySelector('.boot__text'); const target = boot.querySelector('.boot__text');
const lines = [ const lines = [
'> initializing laurel & vow studio . . .', '> initializing mostuki photo studio . . .',
'> loading typography: JetBrainsMono v2.304 . . . OK', '> loading typography: JetBrainsMono v2.304 . . . OK',
'> loading palette: ink #0a0a0a / paper #f4f1eb / accent #5e2ca5 . . . OK', '> loading palette: ink #0a0a0a / paper #f4f1eb / accent #5e2ca5 . . . OK',
'> resolving photographer.heart . . . OK', '> resolving photographer.heart . . . OK',
@ -86,7 +86,7 @@
if (logo) { if (logo) {
if (active) { if (active) {
logo.dataset.original = logo.dataset.original || logo.innerHTML; logo.dataset.original = logo.dataset.original || logo.innerHTML;
logo.innerHTML = '[ LAUREL_AND_VOW_v1.4.2-rc.1<span class="cursor" aria-hidden="true">▌</span> ]'; logo.innerHTML = '[ MOSTUKI_v1.4.2-rc.1<span class="cursor" aria-hidden="true">▌</span> ]';
} else if (logo.dataset.original) { } else if (logo.dataset.original) {
logo.innerHTML = logo.dataset.original; logo.innerHTML = logo.dataset.original;
} }