Reference
Changelog
Why it works this way
This page is generated from the Git history by npm run changelog. Commit messages in this repository are written in French, and are reproduced verbatim rather than translated: a translated subject sitting beside a hash points at a commit whose text says something else, and the reader can then search for neither.
September 2026#
Features
| Scope | Change | Commit |
|---|---|---|
demo | les posts réseaux sociaux dans un téléphone, dans leur fil | c921532 |
document | dix nouveaux types — affiche, rapport, documentation, CV, facture/devis, certificat, menu, posts Instagram, Facebook et LinkedIn | c51b84b |
document | « Ajuster à la page » au clic droit, type d'écran retenu par projet | fcda24e |
document | bouton « Ajuster à la page » sur l'alerte de dépassement | 8ca73c7 |
demo | un document imprimé tenu en main, dessiné au trait | 37f5828 |
document | type Flyer, formats de page et téléchargements | 587cf50 |
document | Screen.page, pdf-lib, et la place de la boîte de téléchargement | 65c0302 |
document | formats de page et contrat DOM du mode Document | 5b7267e |
| — | câbles entre écrans, cadres démo, fournisseurs, types d'écran, amélioration du prompt, son de fin | c269525 |
admin | tableau de bord d'administration en direct | 7f6ee0e |
admin | mode maintenance et migration vers un nouveau serveur | d526746 |
site | les images du site remplacées par des photos libres ou générées | 9f971a0 |
composer | captures d'un site existant, à reproduire ou à refondre | 5fb8c03 |
| — | notes privées par écran, et photos libres de droits choisies par la vision | ad4b301 |
ultra | Motion Ultra ×3 et ×6 ouverts par compte, indépendamment | ff3895a |
ui | les films s'appellent Motion Ultra partout | 7161595 |
video | accès aux vidéos par compte, et un vrai choix de source dans Muse | 807a979 |
media | vidéos libres de droits Pexels et Pixabay, configurables dans Admin | 52847f1 |
muse | une séquence vidéo pilotée par la souris, placée où le prompt le dit | 8dce2ee |
| — | animations de page toujours actives, plus de film automatique | d910b88 |
ultra | série visible sur le canevas, images réutilisées, film vraiment visible | 55c8d51 |
ultra | v2 — fond vidéo, fabriqué en local et branché sans appel | c0f31d4 |
ultra | quatre effets repérés dans le corpus motionsites | e0841dd |
ultra | contrôle de lisibilité du texte posé sur une image | 9d1dfde |
| — | retour arrière automatique quand la réparation d'un écran échoue | 9e0a4ce |
ultra | fin de la v1 — coût visible, budget d'animation, test U1 | 972d8e9 |
images | « Autre version » d'une image dans les médias d'un écran | def84f0 |
ultra | contrôles après génération et après retouche, badge sur le canevas | 14931a3 |
ultra | Polish ne corrige plus le style d'un écran Motion Ultra | 37cf5e9 |
ultra | Motion Ultra — storyboard, série d'images et kit CSS | 64370c0 |
3d | la place vivante suit la scene qu'on regarde | b9915c7 |
3d | une scene sans place montre une image d'elle-meme | f62e8a9 |
motion | le film sait ce que la page dessine deja en 3D | f4f7c24 |
3d | la scene repond au curseur, et un fond reste derriere | fffea74 |
3d | quatre scenes de plus, et une deuxieme couleur | 0c39797 |
3d | une scene WebGL dans une page, et le budget qui la gouverne | 535dd46 |
motion | un fichier compose pour les deploiements qui choisissent un fichier | d921659 |
motion | un film peut boucler proprement, en miroir ou en fondu | dca0127 |
motion | un film de page dit presque rien, et des icones animees | 4bc3a0c |
motion | monde 3D continu, titres dessines par un essaim, transitions cube/plongee/iris/liquide | 1a8692b |
motion | typographie cinetique et fonds qui bougent en couleur | 132e70e |
motion | niveau de puissance du serveur et bouton "Tester ce serveur" dans l'admin | 6c8bd41 |
motion | plus de case Motion, le film est decide par l'interrupteur d'animation et la demande | 78e7fe9 |
motion | les polices du dossier sont installees dans le moteur de rendu | 0a4433b |
motion | sept facons d'arriver et trois ambiances de couleur, choisies par le LLM | c1b378a |
motion | la modification d'un film passe par une fenetre Mocky, plus par la popup du navigateur | 1a794d0 |
motion | modifier un film deja pose dans un ecran, depuis le menu de l'ecran | 5f2d752 |
motion | varier les films, et modifier au lieu de refaire quand le brief change | 6aa306d |
motion | nommer les sections, pour que le film sache ou se poser | d331fae |
Fixes
| Scope | Change | Commit |
|---|---|---|
demo | main retracée sur la référence agrandie, ombre du pouce | 465f293 |
demo | main tracée d'après la référence choisie | fb94c2f |
document | main redessinée, bouton Enregistrer, images de la bibliothèque | ce3158f |
document | rendu natif des pages, image facultative, partage | 4792f6b |
annotation | la capture reçoit les capacités de l'écran ; démo : changer d'écran | fa08ce4 |
site | une refonte lit d'abord le contenu du site, et le garde dans sa langue | 1d6b06e |
composer | les captures d'un site aussi depuis l'accueil d'un projet vide | 77edc5e |
video | la séquence au défilement reste collée malgré un overflow-hidden | c806490 |
videos | le découpage n'agrandit plus un clip plus étroit que le réglage | e0939e1 |
ultra | une photo plein cadre ne recouvre plus le fond vidéo; cadres empilés sans débord | a0046d9 |
ultra | le film d'un écran Motion Ultra reçoit les images de la série | 0525a06 |
ultra | le voile du héros cinématique couvre chaque ligne de texte; suivi mis à jour | 0fa77e9 |
ultra | un film Motion ne prend plus l'ouverture construite par Motion Ultra | e207122 |
3d | une capture donne son image a CHAQUE scene de la page | 1df6187 |
motion | le film n'est pas un conteneur | a2a302f |
motion | le sujet plein cadre s'ecarte des mots | 1328f9b |
provider | la reflexion recoit un budget la ou on peut en demander un | c4fce19 |
provider | une generation qui ne rend rien dit enfin pourquoi | 67523a4 |
3d | un ecran depense un contexte, quoi que le modele ait ecrit | b108ceb |
export | un projet exporte porte tous ses composants, et se construit | beac878 |
3d | la scene garde son propre temps, et la console se tait | 4927324 |
motion | pas de second fond anime, et jamais une bande a soi | 3a75f3f |
3d | une scene tient dans sa boite, et se laisse photographier | 21c3466 |
canevas | l'outil Modifier reagit enfin au clic | e4e5a79 |
motion | le fichier compose pour Coolify est entier, et genere | dafe036 |
generation,motion | une icone inconnue ne fait plus planter l'ecran, un film refuse a une seconde chance | 1075322 |
ui | les erreurs du composer s'affichent en entier, sur plusieurs lignes, et se ferment | 50cdbc2 |
test | la couture prompt/lecteur lit un fichier, donc elle vit dans tests/ | 223eff7 |
Documentation
| Scope | Change | Commit |
|---|---|---|
lumy | captures annotées, cartes, quiz et valeurs du lecteur | 9ebf522 |
lumy | documents et posts réseaux sociaux, câbles, mode démo, types d'écran, Améliorer, carillon, fournisseurs | 9504f84 |
| — | LUMY_SECRET est facultatif | 096a681 |
| — | Lumy 0.1.1 — formulaires du tableau de bord visibles malgré les bloqueurs de publicité | d406bd9 |
readme | types d'écran, documents, posts réseaux sociaux, cadres de démo, câbles, carillon, fournisseurs | 6357efa |
| — | Lumy installé depuis sa version publiée sur GitHub | bb74aca |
| — | la documentation passe de Docsify à Lumy | d14e752 |
| — | tableau de bord d'administration, invariants D1–D5 | 8d3ca06 |
| — | maintenance et migration de serveur, README et architecture | 0fc16a7 |
readme | reproduire ou refondre un site existant | ce5838d |
| — | plus de bouton d'animation ni de film automatique — pages, invariants et changelog à jour | 183c132 |
| — | Motion Ultra dans l'interface, la vue d'ensemble et le changelog | 9bb2e5a |
ultra | v2 — le fond vidéo, FR/EN, CLAUDE.md et suivi | cf0301f |
ultra | suivi mis à jour | 6090c84 |
ultra | Motion Ultra — page FR/EN, invariants U1–U5, README et CLAUDE.md | 290f7a0 |
3d | la vue d'ensemble nommait encore mockySceneClaim au présent | ce0338d |
motion | comment faire demarrer le worker avec les autres services | f227871 |
deployment | le niveau de rendu et le test du serveur, cote exploitant | ed5d0b9 |
motion | la doc officielle decrit Motion tel qu'il est | ae357f4 |
Maintenance
| Scope | Change | Commit |
|---|---|---|
admin | une page moitié moins haute, et la section Motion devient Motion Ultra | 170ccd8 |
| — | retire les lecteurs du placement automatique de film | 60d2276 |
motion | journaliser une composition qui n'aboutit pas, avec sa duree et sa raison | 396ca74 |
August 2026#
Features
| Scope | Change | Commit |
|---|---|---|
motion | chaque type ouvre sur ce qui lui convient, et le dossier arrive entier | 488adae |
media | rafraichir sans quitter la page, et dire quand chaque media a ete fait | 1481afb |
motion | un film entre enfin dans l'ecran qu'il decore | 1e78ab9 |
motion | un geste, les couleurs demandees, un globe entier, et Motion dans le composer | d286c17 |
motion | la 3D devient un vocabulaire, et l'admin dit qui y a droit | 7c8339b |
motion | un bloc habite la boite qu'on lui donne | 1025b07 |
motion | le modele compose des blocs, il ne choisit plus une mise en page | baee1e0 |
motion | rien ne reste immobile, et un long film a le temps de finir | ae18e88 |
motion | retrouver le montage, l'attacher à un écran, et fusionner les deux chemins | 036cb95 |
images | un profil image-to-image, et des variantes vraiment dérivées | e9c1962 |
video | phase 4 — le modèle propose le montage, le schéma en décide | 76fadad |
video | phase 2 — composition réelle, stockage du mp4, suivi de job | 6eb9f25 |
video | phase 1 — worker Remotion isolé, file, garde-fous admin | ef5dcb1 |
seo | un panneau SEO et accessibilité, noté par famille | b82c673 |
images | changer les images d'un écran, emplacement par emplacement | cc9ca69 |
admin | les projets et le stockage, compte par compte | 78cc8b0 |
canevas | le cadrage suit la fenêtre, et un bouton vise le dernier écran | f52ecff |
header | la marque à côté du nom, et la baseline qui lui cède la place | 9b71bc0 |
mobile | des barres qui tiennent, des cibles qu'on peut viser, un canevas qui cède | 8cf0509 |
design | le DESIGN.md devient une fiche, et se modifie | 2d8f0ba |
canvas | cinq retouches, dont deux vrais bugs | 93e8f8c |
quality | détecter, corriger, noter — et dire ce qui a changé | 2ad2f2a |
plan | le mode dit ce que le visiteur vient faire | 28b84e8 |
generate | le nom du produit et son logo traversent les écrans | 53b517e |
design | une seule direction par projet, et un interrupteur pour en changer | 3d776d1 |
design | une direction par projet — la fondation | ad6b439 |
liens | « Proposer des liens » — la fonctionnalité est visible | 2f69b10 |
liens | l'aperçu sait maintenant lister ce qu'on peut lier | ada0457 |
liens | deviner quel bouton mène à quel écran | 7de45d9 |
demo | un parcours qui n'exige pas d'avoir tout relié à la main | 91b73b0 |
video | 24 fps et 1440 px, et un bouton pour redécouper l'existant | 277fe92 |
media | les séquences se lisent enfin | dc0334c |
projets | cocher plusieurs projets, et les ranger dans des dossiers | 9444c95 |
capture | la clé API n'est plus à portée du code généré | d777bdf |
app | du travail qui ne se perd plus, et une bibliothèque de designs | 976323a |
server | de quoi tenir sur le web public, et huit défauts qui mordaient | 6680fde |
| — | un bouton Docs dans l'app, et le site de doc habillé comme Mocky | a443d2d |
motion | cinq presets de plus, et deux composants retrouvés | e7c851b |
canvas | les animations se règlent écran par écran, et le composer respire | 836f3ed |
motion | l'interrupteur d'animations, et le filet anti-contournement | e23b0f3 |
ui | brancher la vidéo, le média et le dossier au reste de l'application | 4323e1d |
motion | des animations par presets fermés, adossées à Motion | 71c8cc1 |
muse | écrire le dossier de design À PARTIR du média de l'utilisateur | 022252d |
media | la page Média, et l'import de ses propres images et vidéos | 931a828 |
video | une séquence vidéo que le visiteur fait défiler | c56578f |
Fixes
| Scope | Change | Commit |
|---|---|---|
motion | ne plus rogner un film qui porte des mots, et respecter la CLASSE de la police | 532b722 |
motion | garder toutes les sorties, pas seulement celle que j'avais regardee | da90d0a |
motion | la seconde CSP, et une attente que personne ne pouvait deviner | 6502fb9 |
motion | la regle porte sur la ZONE, pas sur la repetition | 49571c6 |
motion | le film dit ce qu'il grave, la page cesse de le redire | f79d8b2 |
motion | lire l'ecran par la ref, sinon on ne le voit jamais | 3203c4e |
motion | un film compose puis jete une ligne plus loin | 5a8c631 |
motion | un film 3D doit pouvoir finir, et le chiffre ecrit etait faux | b83781b |
motion | une photographie se borne, et un ornement se mesure sur ce qu'il traverse | 16d6670 |
motion | un anneau vu de sept degres est une ellipse plate | 5e0361b |
motion | un mot ne se coupe pas, et un meuble n'est pas la scene | 2757a1f |
motion | un role est une notion de scene, et un champ se mesure comme il peint | c9578f8 |
motion | mesurer le texte plutot que le supposer, et six fautes vues a l'image | 4105c6c |
video | un film net, et une image faite pour le cadre où elle finit | 3a68e3b |
video | le texte se mesure, il ne se suppose pas | a3c761d |
design | la maquette Muse peignait en bleu nuit, et deux causes le voulaient | 3adde33 |
projet | cinq dettes de la revue adverse, et la doc du module vidéo | b780716 |
images | fal a deux familles de modèles d'édition, et deux noms de champ | 8943136 |
video | quatre défauts trouvés au premier essai réel | 9f23452 |
docs | la version mobile, d'après un audit multi-agents | efe4daf |
docs | le sélecteur de thème retrouve le bas du menu | b690b88 |
mobile | la liste des projets cesse d'élargir la page | dc7d301 |
deps | fast-uri et hono, corrigés là où ils étaient déjà permis | 764e3d8 |
design | les vignettes viennent de la palette, plus d'un bleu nuit par défaut | 85c16aa |
capabilities | charger ce que le code utilise, pas seulement ce que le prompt annonçait | 3a802fb |
liens | choisir l'écran dans le panneau, pas sur le canevas | c0695cf |
images | la borne sur le prompt passait sous le trafic de Mocky | 808f13e |
aperçu | le chien de garde s'armait sur le code, pas sur le document | f26a2e8 |
demo | rendre le fil principal à la démo, et un hook remis à sa place | 269e892 |
demo | l'aperçu s'accusait d'un dépassement qu'il n'avait pas | 7072db6 |
demo | ne plus photographier les écrans pendant qu'une démo tourne | b32a6cf |
app | le lien Docs passe dans la manchette | 72fbaa6 |
site | versionner les ressources pour que le cache cesse de mentir | 6875f61 |
site | le sélecteur de langue sort du sommaire | db74b90 |
site | l'onglet s'appelle « Doc Mocky », et la favicon est déclarée proprement | 6c51e41 |
motion | couper les animations fige vraiment l'écran, et le menu montre les choix | 6cf9cec |
motion | l'interrupteur manquait au premier écran, et n'agissait pas sur l'existant | b10128e |
generate | une balise de fin tronquée ne doit plus finir dans le code | ab71f5d |
Documentation
| Scope | Change | Commit |
|---|---|---|
| — | une page sur l'interface, et le rattrapage du retard | 866340e |
site | la colonne s'élargit, la mesure se resserre | 5e10a3b |
| — | un changelog, des pages vivantes, et ce qui manquait | 8e012c8 |
| — | CLAUDE.md, la série Q, et ce qu'on doit à Impeccable | b055b9c |
| — | la direction par projet, l'identité qui voyage, et deux phrases devenues fausses | 29b62a0 |
| — | les jumeaux de langue, et le « pourquoi » sous chaque titre | f014d33 |
| — | des images nettes, en anglais, et qui chargent aussi en français | 9e31856 |
| — | six captures d'écran, et quatre affirmations remises d'aplomb | 352b61d |
site | un drapeau par langue, et l'icône de Mocky sur l'onglet | 404ee87 |
| — | l'anglais par défaut, le français réécrit, et plus aucun schéma ASCII | f2b361d |
| — | la documentation du projet, et une coquille Docsify pour la lire | 1e45992 |
readme | les animations, la page Média, et trois affirmations devenues fausses | 681e7a3 |
Maintenance
| Scope | Change | Commit |
|---|---|---|
deps | vite 7, et l'arbre de dépendances rétrécit | 59d5633 |
| — | Node 22.12, et un détecteur qui n'emporte pas Chrome avec lui | ca33975 |
| — | repasser la capture à html2canvas | ce0392b |
| — | rendre Preview, DemoPlayer et ProjectView à l'état où tout marchait | cd98f63 |
dossiers | les dossiers deviennent les rubriques du sommaire | 4cd63d3 |
July 2026#
Features
| Scope | Change | Commit |
|---|---|---|
ui | page d'accueil en registre, miniatures, loader Mocky, mode Interact | faa5403 |
account | gestion des mots de passe, côté utilisateur et côté admin | 72951c3 |
i18n | interface bilingue français / anglais | 64530c9 |
design | editorial redesign — tokens, primitives, newspaper typography | 0fc90e1 |
muse | separate image models for inspiration and for content | 82da4ef |
admin | add fal.ai as a text provider (usable for the inspiration profile) | d43a4c5 |
admin | separate models for generation and for inspiration | cc8ed50 |
muse | "both" image mode, image card on the canvas, full-size viewer | 11e52c8 |
muse | image as content OR inspiration, gated by a real vision probe | 603ddb5 |
canvas | show a screen's original prompt, and name projects from it | c0cbb96 |
text | admin-configurable LLM provider (OpenAI, OpenRouter, compatible) | 3b8128b |
muse | add a top-level "Images" page for the generated-image library | d81740c |
images | add fal.ai as an image provider | 51faf2a |
images | admin-configurable image generation provider | fb95027 |
muse | Phase 5 — anti-slop lint, distinctiveness pass, docs & Docker | 6ba6537 |
muse | Phase 4b — Bibliothèque (image library browser) + pin-to-run | 38546e5 |
muse | Phase 4 core — ✨ toggle, dossier-driven generation, moodboard | e14dafb |
muse | Phase 3 — Inspiration Engine (Discover → Distill → Dossier) | 1bf7578 |
muse | Phase 2 — image providers, store & global Image Library | dca079e |
muse | Phase 1 — MCP host core + inspiration fetch (ADR 001) | 28324b5 |
preview | show a calm "Repairing…" state while auto-fix runs, not the red error | 9d2d2b6 |
canvas | live Design-system frame with click-to-recolor tokens (Lot D.2) | 16373b0 |
welcome | first-run style picker sets DESIGN.md before the first screen (Lot D.1) | 01ba132 |
canvas | animated multicolor ring around a frame while it regenerates | afcfaf7 |
modify | quick text + recolor no-code edits; outline-only pick; freeze-on-regenerate (Lot C.2) | 54acbb2 |
canvas | no-code "Modify" mode — click an element, describe a change (Lot C.1) | 4c674a6 |
canvas | add animations to a screen at subtle/moderate/rich levels (Lot B) | 00e7ddd |
canvas | per-screen context menu (regenerate, formats, code, …) | 7d47a74 |
design | 2x-larger preview cards + background-color picker | 3f1d121 |
design | scalable previews + hover states + larger-preview modal | 8a8d3c4 |
design | richer mini-dashboard previews + per-style accent variants | f4f9f65 |
design | light/dark toggle for style presets | 199e5bb |
fix | give the auto-repair a bounded second attempt | 257a54f |
project | pin a screen as shared-layout reference | 647d621 |
export | runnable Vite project export with DESIGN.md theming | 9965978 |
plan | cheap pre-generation planner stage | 485e157 |
| — | Docker deployment (Dockerfile, docker-compose, .env.example) | f1414c1 |
| — | motion snippet-pack — CSS-only, no framer-motion | 0179155 |
| — | runtime capability registry (daisyui, motion, lucide, recharts, magicui) | e313e6e |
| — | sentinel protocol for streaming + num_ctx fix + vitest tests | 25b41aa |
| — | bigger screen icons + Generating overlay during streaming | 3300e20 |
| — | add 7 Tilda design styles + bigger visual previews | 442b50d |
| — | revert button, visual design previews, back button, 4 new designs | 5338c37 |
| — | auto-retry broken components — send code + error to model for fix | 1f82271 |
| — | stream generated code into preview live + pre-validate JSX + syntax check prompt | a10b32e |
| — | Dashy SSO, security hardening, performance optimizations, and production-ready UI prompts | ec0505a |
Fixes
| Scope | Change | Commit |
|---|---|---|
preview | un lien d’ancre ne doit plus emporter la maquette | bd5ef41 |
muse | balayage de gauche à droite, et deux extrémités propres | d5fb3b4 |
muse | montrer l’animation à ceux qui ont déjà essayé Muse | 852e62c |
sync | mettre fin à la boucle de rechargement infinie | ed46575 |
muse | les écrans suivent enfin la direction artistique | c5399e1 |
preview | vendoriser daisyUI, et sortir la capture du timeout | 9323d72 |
sync | stop losing work | eacc4a6 |
security | close the anonymous routes, harden the SSRF guard, pin the vendored bundles | 6c63fc4 |
muse | generate the image again, and show it on the canvas | 9aae371 |
images | image first, scroll for the prompt | 60a19b0 |
admin | stop calling two different settings "Inspiration Muse" | f60ced2 |
admin | explain when an image model id is pasted in a text model field | c8affcb |
vision | probe with a real 256px image, not a 1×1 pixel | 6761308 |
generate | report a truncated model response instead of a syntax error | 54774cc |
text | don't report an empty model reply as a successful test | 35cc372 |
images | use fal's queue API and stop assuming a "fal-ai/" prefix | 8c09122 |
images | make fal failures diagnosable instead of an opaque 502 | b673d7b |
muse | make the Dossier tolerant of real model output (drift + truncation) | b05a8b2 |
generate | give the auto-fixer the capability list so it can repair React #130 | e825b2f |
icons | add social/brand + contact icons to prevent footer React #130 | 5e1f9f4 |
modify | precise element pick + freeze-on-edit; clearer selection | 12926d8 |
modify | anchor edits on the element's class string; design + hex recolor | 71e554f |
charts | center DonutChart total; stop model duplicating it | 471ccfa |
generate | forbid redeclaring ANY prelude component, not just Icon | 18f2cf1 |
charts | stop BarChart/LineChart distorting dots and labels | 920ede9 |
demo | inject capability prelude in Demo mode | 4bc1c1e |
icons | add common auth/UI icons + forbid redeclaring Icon | dd99416 |
preview | report async render errors via a React error boundary | f33b4bb |
generate | ban thinking/meta comments in generated code | 425b403 |
capabilities | remove unused lucide cdn-script | 9cac25d |
generate | harden prompt against invalid dynamic JSX tags | 2c83bd5 |
server | decouple backend port from generic PORT | 390a958 |
preview | repair blob-injection rendering | 0d577ef |
| — | sanitize invalid Unicode + Blob URL injection + line-level diagnostics | 876a50b |
| — | one source of truth for capability names + render error reporting | afd998a |
| — | merge magicui into motion pack, eliminate duplicate declarations | eb54aee |
| — | add ChevronLeft + MoreHorizontal icons, strokeWidth prop, match spec | ad7056a |
| — | silence streaming console noise + icons snippet-pack to ban raw SVG paths | 853e76a |
| — | remove false-positive prelude guard from iframe | dbd2b04 |
| — | snippet-pack atomicity — explicit exports[], no source parsing | ef563b6 |
| — | snippet-pack atomicity — inject ALL components, deduplicate sources | 0527e36 |
| — | remove crossorigin from iframe scripts — use need() guards instead | 98cb4bc |
| — | crossorigin on scripts, readiness guard, charts snippet-pack, dev logging | 133ca7d |
| — | robust import stripping + registry-driven global hoisting + prompt tightening | a730de5 |
| — | replace num_predict:-1 with 8192 + readable error parsing | 0e47ace |
generate | preserve 'function' keyword in toPreviewModule | 37c8025 |
retry | suppress auto-retry during streaming + ignore stale errors | 1711218 |
preview | debounce Babel validation to prevent streaming races | 7a9dcc5 |
proxy | only stream when request asks for stream:true, buffer regular JSON | ea71b5b |
proxy | stream upstream response body through instead of buffering | 35ee8ef |
preview | correct createElement syntax in injected script.textContent | 51fe414 |
preview | inject compiled JS via script.textContent instead of new Function | 2be611c |
capture | fallback to Babel-in-iframe when compiled JS fails | 0f047d7 |
preview | compile JSX inside sandboxed iframe using Babel CDN | 8a39e98 |
| — | use proper UTF-8 base64 for iframe code injection | ef832cb |
| — | robust iframe code embedding + enforce authentication | 8d17842 |
| — | encode compiled JS as base64 before iframe injection | 0c922f6 |
Documentation
| Scope | Change | Commit |
|---|---|---|
readme | document MOCKY_PORT env var | 869a4f2 |
| — | comprehensive README with Docker deployment guide | 99e3f15 |
Maintenance
| Scope | Change | Commit |
|---|---|---|
| — | installation, ops and docs | 2dcf9ae |
canvas | thicker, brighter regen ring for visibility | b1f9c80 |
| — | add GitHub Actions workflow (build/test/smoke + docker build) | 3409487 |
capabilities | dead-code sweep + registry invariant tests | c728ba8 |
preview | remove parent-side Babel validation, simplify rendering | f07cd32 |
| — | Add self-hosted accounts backend + admin user management | b788f3a |
| — | Add screenshot annotations attached to (vision) generations | 7ae7619 |
| — | Initial commit: Mocky — self-hosted chat-to-UI generator | a81de92 |
Was this page helpful?
Thanks for your feedback!