This commit is contained in:
2026-09-09 18:06:21 +08:00
parent 161af68fe3
commit 45b9f9ed5d
79 changed files with 1167 additions and 1532 deletions
@@ -94,11 +94,10 @@
<li>The <code>Brief Message Text Field</code> content is updated</li>
<li>The message is appended to the daily log file at <code>logs/log-{DateTime.Now:yyyy-MM-dd}.txt</code></li>
</ol>
<p>The second step belongs to the logging path rather than to the bar, and only one client shares it.
The WPF brief field is fed by a logger provider, so a message that reaches the field has already
gone to the file sink. The web footer is fed by the routine-progress store instead: what lands there
is client-side, and it reaches the server's daily log only when the server logged it too — no part
of the shell posts a message to the log-append endpoint.</p>
<p>The second step belongs to the logging path rather than to the bar, and the footer does not share
it. The footer is fed by the routine-progress store: what lands there is client-side, and it reaches
the server's daily log only when the server logged it too — no part of the shell posts a message to
the log-append endpoint.</p>
<h3 id="message-types">Message Types</h3>
<p>The <a class="xref" href="../../api/Hi.Common.Messages.MessageFlag.html">MessageFlag</a> determines the display behavior:</p>
<table>
@@ -128,16 +127,6 @@ of the shell posts a message to the log-append endpoint.</p>
<p>When the message is an <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.exception">Exception</a>, the brief message shows <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.exception.message">Message</a> while the full exception details are logged to file.</p>
</div>
<h2 id="platform-specific-layouts">Platform-Specific Layouts</h2>
<h3 id="wpf-application">WPF Application</h3>
<p>The WPF version uses a fixed bottom bar:</p>
<ul>
<li><strong>Message Section Bottom Bar</strong>
<ul>
<li>Brief Message Text Field (selectable for copy)</li>
<li>Show Log Button</li>
</ul>
</li>
</ul>
<h3 id="web-application">Web Application</h3>
<p>The web version docks a single dense bar along the bottom of the layout — <code>AppFooter.vue</code>, not a
stack of toasts:</p>
@@ -159,16 +148,11 @@ Quasar notifications, anchored bottom-right and auto-hiding on a timeout that do
severity. A boot patch mirrors every one of them into the footer's foreground history, which is what
keeps a toast reviewable after it fades.</p>
<h2 id="show-log-button">Show Log Button</h2>
<p>The <code>Show Log</code> button is the only entrance to the log screen, and the two clients answer it
differently.</p>
<p>In the web application it is a router link in the menu bar's right-hand group — not on this bar —
and it opens the Log Viewer as a full page inside the shell. See
<a class="xref" href="../platform/log-viewer.html">Log Viewer Page</a> for that screen's toolbar, its auto-refresh interval, its
copy and download actions and the states of its text area.</p>
<p>In the WPF client the button sits at the right end of this bar. It looks for the current day's file
under the client's own <code>logs</code> folder and, when it is there, opens it with whatever application the
operating system associates with the file type; when it is not, it reports that in a message box
instead of opening anything.</p>
<p>The <code>Show Log</code> button is the only entrance to the log screen.</p>
<p>It is a router link in the menu bar's right-hand group — not on this bar — and it opens the Log
Viewer as a full page inside the shell. See <a class="xref" href="../platform/log-viewer.html">Log Viewer Page</a> for that
screen's toolbar, its auto-refresh interval, its copy and download actions and the states of its
text area.</p>
<h2 id="see-also">See Also</h2>
<ul>
<li><a class="xref" href="main-panel.html">Main Panel</a> — the window frame this bar is docked in</li>