diff --git a/jalhyd_branch b/jalhyd_branch
index d64531f1305e091791eac674c3a36d86b9e17ddd..1ec9ebc2097b5c3e9a5fb6dc2fe6cea0f6f5b78b 100644
--- a/jalhyd_branch
+++ b/jalhyd_branch
@@ -1 +1 @@
-devel
+315-journal-de-calcul-repliable
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index f1d0c02158a2d200aa58511119fd390dd95f0b8a..a76bf4558a49de10d0f8c1510f971f86e27a159a 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -23,7 +23,7 @@ import { MatTableModule } from "@angular/material/table";
 import { MatTabsModule } from "@angular/material/tabs";
 import { MatToolbarModule } from "@angular/material/toolbar";
 import { MatTooltipModule } from "@angular/material/tooltip";
-
+import { MatExpansionModule } from '@angular/material/expansion';
 import { MaterialFileInputModule } from "ngx-material-file-input";
 
 import { DragDropModule } from "@angular/cdk/drag-drop";
@@ -170,6 +170,7 @@ const appRoutes: Routes = [
         MatTabsModule,
         MatToolbarModule,
         MatTooltipModule,
+        MatExpansionModule,
         MatomoModule,
         RouterModule.forRoot(
         appRoutes,
diff --git a/src/app/components/app-setup/app-setup.component.html b/src/app/components/app-setup/app-setup.component.html
index bcd3946889ee454fcaa79c7139fcebadcf00051d..4c3bb5d355187e1310a50184938400bd09399800 100644
--- a/src/app/components/app-setup/app-setup.component.html
+++ b/src/app/components/app-setup/app-setup.component.html
@@ -88,6 +88,12 @@
                     {{ uitextEnableEmptyFieldsOnFormInit }}
                 </mat-checkbox>
 
+                <!-- display result messages log folded by default -->
+                <mat-checkbox id="cb_foldedMessageLog" class="wrapped-checkbox" name="foldedMessageLog" [(ngModel)]="foldedMessageLog"
+                    [ngModelOptions]="{standalone: true}">
+                    {{ uitextEnableFoldedMessageLog }}
+                </mat-checkbox>
+
                 <!-- langue -->
                 <mat-form-field>
                     <mat-select [placeholder]="uitextLanguage" [(value)]="currentLanguageCode"
diff --git a/src/app/components/app-setup/app-setup.component.ts b/src/app/components/app-setup/app-setup.component.ts
index 1b3c52d158c498cf992ed9ee31e0fe88dca086c5..7010813af108b281a6e21f69cb8c2e250140827b 100644
--- a/src/app/components/app-setup/app-setup.component.ts
+++ b/src/app/components/app-setup/app-setup.component.ts
@@ -84,6 +84,15 @@ export class ApplicationSetupComponent implements Observer, OnInit {
         this.appSetupService.enableEmptyFieldsOnFormInit = v;
     }
 
+    /** fold result messages log by default */
+    public get foldedMessageLog(): boolean {
+        return this.appSetupService.foldedMessageLog;
+    }
+
+    public set foldedMessageLog(v: boolean) {
+        this.appSetupService.foldedMessageLog = v;
+    }
+
     public get uitextTitle(): string {
         return this.intlService.localizeText("INFO_SETUP_TITLE");
     }
@@ -116,6 +125,10 @@ export class ApplicationSetupComponent implements Observer, OnInit {
         return this.intlService.localizeText("INFO_SETUP_ENABLE_EMPTY_FIELDS");
     }
 
+    public get uitextEnableFoldedMessageLog(): string {
+        return this.intlService.localizeText("INFO_SETUP_FOLDED_RESULT_MESSAGES_LOG");
+    }    
+
     public get uitextMustBeANumber(): string {
         return this.intlService.localizeText("ERROR_PARAM_MUST_BE_A_NUMBER");
     }
diff --git a/src/app/components/log/log.component.html b/src/app/components/log/log.component.html
index 5920817ec90af8c9dae78dbca027e29197cd7071..084e32802829778ad94d322bfd4e5d2a5dca97e5 100644
--- a/src/app/components/log/log.component.html
+++ b/src/app/components/log/log.component.html
@@ -1,8 +1,9 @@
-<div *ngIf="hasEntries">
-    <div class="hyd_log">
-        <!-- titre -->
-        <div class="titre">{{ uitextTitreJournal }}</div>
-        <!-- entrées du journal -->
-        <log-entry *ngFor="let m of _log?.messages" [_message]="m"></log-entry>
-    </div>
-</div>
+<mat-expansion-panel *ngIf="hasEntries" [expanded]="expandedStatus">
+    <mat-expansion-panel-header class="panel_header">
+        <mat-panel-title>
+            {{ uitextTitreJournal }}
+        </mat-panel-title>
+    </mat-expansion-panel-header>
+    <!-- entrées du journal -->
+    <log-entry *ngFor="let m of _log?.messages" [_message]="m"></log-entry>
+</mat-expansion-panel>
diff --git a/src/app/components/log/log.component.scss b/src/app/components/log/log.component.scss
index 4c37d752b16c35c7d426ce82734044c40d02b32a..b64c47977e5a56bc52895a1cdf589d26f4d36482 100644
--- a/src/app/components/log/log.component.scss
+++ b/src/app/components/log/log.component.scss
@@ -2,21 +2,6 @@
     display: block;
 }
 
-.hyd_log {
-    margin-top: 2.5em;
-    border: solid #ccc 1px;
-    border-radius: 2px;
-    padding: 1em;
-    padding-top : 1.3em;
-}
-
-.titre {
-    background-color: white;
-    border: 1px solid #ccc;
-    border-radius: 2px;
-    float: left;
-    font-weight: bold;
-    margin-bottom: -1em;
-    margin-top: -2.3em;
-    padding: 0.2em 0.5em;
-}
+.panel_header {
+    font-weight: 600;
+}
\ No newline at end of file
diff --git a/src/app/components/log/log.component.ts b/src/app/components/log/log.component.ts
index b3d9c2f7188e4227f5ec1559bfd488d24aa30e80..7b9e8b8e4236ac01e0a9a2c674a23eefc33df909 100644
--- a/src/app/components/log/log.component.ts
+++ b/src/app/components/log/log.component.ts
@@ -1,6 +1,8 @@
 import { Component, Input } from "@angular/core";
+import { LogHelper } from "app/results/log-helper";
+import { ApplicationSetupService } from "app/services/app-setup.service";
 
-import { cLog, Message } from "jalhyd";
+import { cLog } from "jalhyd";
 
 import { I18nService } from "../../services/internationalisation.service";
 
@@ -21,16 +23,26 @@ export class LogComponent {
     @Input()
     public logTitle: string;
 
+    // expanded/folded panel state
+    public expandedStatus: boolean;
+
     constructor(
         private intlService: I18nService,
-    ) { }
+        private appSetupService: ApplicationSetupService
+    ) {
+        this.expandedStatus = !this.appSetupService.foldedMessageLog;
+    }
 
     public get uitextTitreJournal() {
+        let res;
         if (this.logTitle) {
-            return this.logTitle;
+            res = this.logTitle;
         } else {
-            return this.intlService.localizeText("INFO_TITREJOURNAL");
+            res = this.intlService.localizeText("INFO_TITREJOURNAL");
         }
+
+        const stats = cLog.messagesStats(this._log.messages);
+        return res + " - " + LogHelper.messagesStatsToString(stats);;
     }
 
     public get hasEntries(): boolean {
diff --git a/src/app/results/log-helper.ts b/src/app/results/log-helper.ts
index d3b75c621dc6e1575feab757459739365e64e82e..ed7ed901626797c13c8a7dbc32e412bbd46a8664 100644
--- a/src/app/results/log-helper.ts
+++ b/src/app/results/log-helper.ts
@@ -47,7 +47,7 @@ export class LogHelper {
         return res;
     }
 
-    private resultElementStatToString(res: any): string {
+    public static messagesStatsToString(res: any): string {
         let ret = "";
         function ccat(n: number, code: MessageCode, b: string): string {
             if (n > 0) {
@@ -69,7 +69,7 @@ export class LogHelper {
 
     public resultElementsStats(index: number): string {
         const res = this.computeResultElementLogStats(index);
-        return this.resultElementStatToString(res);
+        return LogHelper.messagesStatsToString(res);
     }
 
     /*
diff --git a/src/app/services/app-setup.service.ts b/src/app/services/app-setup.service.ts
index 32b9f517da6c776b8a43fe6df266d80deedefc55..16e3cf00e4398bf9815fa5a6194310b0b871cb4f 100644
--- a/src/app/services/app-setup.service.ts
+++ b/src/app/services/app-setup.service.ts
@@ -25,6 +25,7 @@ export class ApplicationSetupService extends Observable {
     public enableNotifications = true;
     public enableHotkeys = false;
     private _enableEmptyFieldsOnFormInit = true;
+    private _foldedMessageLog = false;
 
     public set computePrecision(p: number) {
         this._computePrecision = p;
@@ -54,6 +55,14 @@ export class ApplicationSetupService extends Observable {
         this._enableEmptyFieldsOnFormInit = b;
     }
 
+    public get foldedMessageLog() {
+        return this._foldedMessageLog;
+    }
+
+    public set foldedMessageLog(b: boolean) {
+        this._foldedMessageLog = b;
+    }
+
     /**
      * just stores the current language preference, does not transmit it to I18nService, that is
      * not available here.
diff --git a/src/locale/messages.en.json b/src/locale/messages.en.json
index 649e9e7c1263d8a781b259050a633a3648b29e89..b095f44db790a27e0f08155594be2b39f0bd0b1a 100755
--- a/src/locale/messages.en.json
+++ b/src/locale/messages.en.json
@@ -586,6 +586,7 @@
     "INFO_SETUP_ENABLE_HOTKEYS": "Enable keyboard shortcuts",
     "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Create new calculators with empty fields (no default values)",
     "INFO_SETUP_ENABLE_NOTIFICATIONS": "Enable on-screen notifications",
+    "INFO_SETUP_FOLDED_RESULT_MESSAGES_LOG": "Fold result messages log by default",
     "INFO_SETUP_LANGUAGE": "Language",
     "INFO_SETUP_NEWTON_MAX_ITER": "Solver iteration limit",
     "INFO_SETUP_PRECISION_AFFICHAGE": "Number of displayed decimals",
diff --git a/src/locale/messages.fr.json b/src/locale/messages.fr.json
index cb3e769e68c4ea5dd34f2c4f1ce36dacd4e84b91..ac3d94292107b94b74e48bee33a1b9ab6cf00cec 100755
--- a/src/locale/messages.fr.json
+++ b/src/locale/messages.fr.json
@@ -587,6 +587,7 @@
     "INFO_SETUP_ENABLE_HOTKEYS": "Activer les raccourcis clavier",
     "INFO_SETUP_ENABLE_EMPTY_FIELDS": "Créer les nouveaux modules avec des champs vides (aucune valeur par défaut)",
     "INFO_SETUP_ENABLE_NOTIFICATIONS": "Activer les notifications à l'écran",
+    "INFO_SETUP_FOLDED_RESULT_MESSAGES_LOG": "Replier le journal de calcul par défaut",
     "INFO_SETUP_LANGUAGE": "Langue",
     "INFO_SETUP_NEWTON_MAX_ITER": "Solveur&nbsp;: nombre d'itérations maximum",
     "INFO_SETUP_PRECISION_AFFICHAGE": "Nombre de décimales affichées",