fix(ui): bottom padding + close-screen button removed + sidebar collapse + quiet loguru

Four issues batched together since they all touch the GUI shell:

- ``stMainBlockContainer``'s ``padding-bottom`` bumped from 0.75rem
  → 4rem (~one button-height of free space above the fixed Help/Close
  footer). The last line of content on a page that fills the viewport
  was previously sitting flush against the footer's top border.

- Farewell overlay's "Close this window" button removed per UX
  request. The auto-dismiss path is now the only flow: try
  programmatic close (works in Chrome/Edge ``--app`` windows);
  failing that, surface the hint and redirect the parent window to
  ``about:blank`` after a short timeout. Previously the user had to
  click the button to get the same fallback. The
  ``quit.close_window_button`` i18n key is retained as a no-op for
  now in case the button comes back; nothing references it.

- Sidebar collapse → expand was broken: clicking « collapsed the
  sidebar but the » expand-back affordance was invisible. Two causes
  pulled apart:

   1. ``.dt-brand { flex: 1 }`` was eating the entire
      ``stSidebarHeader`` width, squeezing Streamlit's
      ``stSidebarCollapseButton`` off the right edge. Changed to
      ``margin: 0 auto 0 0`` so the brand keeps its natural width
      and the chevron has room to live next to it.

   2. The "hide Streamlit chrome" toolbar block was listing
      ``stToolbar`` and ``stToolbarActions`` for ``display: none``
      — but the post-collapse re-open button
      (``stExpandSidebarButton``) lives inside ``stToolbar``, so
      hiding the container killed the button too. Dropped both
      container testids from the hide list and kept the per-icon
      rules for ``stMainMenu`` / ``stAppDeployButton`` /
      ``stStatusWidget`` / ``stDecoration``.

- Loguru's stderr sink quieted in GUI mode. ``src/gui/app.py`` now
  runs ``logger.remove()`` + ``logger.add(sys.stderr, level="ERROR",
  …)`` at the top so internal ``logger.debug`` / ``logger.warning``
  breadcrumbs (e.g.
  ``standardize_dataframe: 7/31 cells were unparseable``) no longer
  print to the terminal when the user runs ``python -m src.gui``.
  CLI entry points already do the same configuration per-script.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-19 02:21:41 +00:00
parent 1016a4d2c4
commit 9a7d861903
2 changed files with 66 additions and 40 deletions

View File

@@ -25,6 +25,20 @@ if str(_project_root) not in sys.path:
sys.path.insert(0, str(_project_root))
# Quiet the loguru stderr sink. The CLIs (``src/cli*.py``) reconfigure
# it per-script to ``WARNING``; the GUI's ``python -m src.gui``
# entrypoint never did, so internal ``logger.debug`` /
# ``logger.warning`` breadcrumbs bled into the terminal where users
# launched the app from. Drop the default ``DEBUG``-level stderr sink
# and add a clean ``ERROR``-only one so only genuinely actionable
# problems surface — diagnostic warnings still land in the audit log
# via its own sink. Runs once, before any module-level ``logger`` use
# in the GUI tree.
from loguru import logger as _logger # noqa: E402
_logger.remove()
_logger.add(sys.stderr, level="ERROR", format="{level: <8} | {message}")
# ---------------------------------------------------------------------------
# Home page (rendered when the user selects the default nav entry)
# ---------------------------------------------------------------------------