Some checks failed
CI / lint (push) Successful in 39s
CI / test (push) Failing after 2m8s
CI / notebooks-smoke (push) Successful in 1m36s
Infra CI / zotero (push) Successful in 15s
Infra CI / notebooks (push) Successful in 52s
Infra CI / docs (push) Successful in 1m31s
Infra CI / api (push) Successful in 1m2s
Infra CI / llm (push) Successful in 48s
Infra CI / mc (push) Failing after 57s
Infra CI / bcda (push) Successful in 1m29s
CI / lint (pull_request) Successful in 27s
CI / notebooks-smoke (pull_request) Successful in 1m46s
CI / test (pull_request) Failing after 3m23s
Infra CI / notebooks (pull_request) Successful in 1m27s
Infra CI / zotero (pull_request) Successful in 16s
Infra CI / docs (pull_request) Successful in 17s
Infra CI / bcda (pull_request) Successful in 17s
Infra CI / api (pull_request) Successful in 19s
Infra CI / mc (pull_request) Failing after 35s
Infra CI / llm (pull_request) Successful in 16s
src/bcda/ui/theme.toml is a Streamlit theme file carrying the dashboard
tokens from assets/css/dashboard.css (cream paper, near-black ink, navy
primary and sidebar, warm beige surfaces, 2px radius, Playfair Display /
Source Serif 4 / JetBrains Mono). `python -m bcda.ui` passes it as
--theme.base unless the caller set one, so the container and
`stack bcda ui` look the same without a .streamlit/config.toml per cwd;
the image's streamlit.toml keeps only server settings.
bcda.ui.brand adds what a theme file cannot: the Google Fonts import,
the dashboard masthead (rule, display title, monospace eyebrow) at the
top of the sidebar, and brand.title() eyebrows above every page title.
app.py renders its own page links after the masthead (navigation
position="hidden") so the masthead comes first as on the dashboard. The
favicon is the repo's assets/icons/fav32.png, baked into the image.
Family names in the theme file stay double-quoted: Streamlit 1.66 emits
the body font unquoted, and an unquoted family with a digit ("Source
Serif 4") is an invalid font-family, so the browser silently fell back
to its default serif while the headings (quoted on their path) were
fine. Found by rendering the rolled container headlessly on the compose
network and reading computed styles.
tests/bcda/test_ui_brand.py pins the theme's hexes and font stacks to
dashboard.css and renders inject/masthead/title through AppTest;
test_ui_main covers the --theme.base handling.
refs #1139
42 lines
1.1 KiB
Plaintext
42 lines
1.1 KiB
Plaintext
# Docs Dockerfile uses repo root context — exclude heavy/sensitive dirs
|
|
data/zotero/
|
|
notebooks/
|
|
.git/
|
|
.env
|
|
*.duckdb
|
|
*.duckdb.wal
|
|
__pycache__/
|
|
dist/
|
|
*.egg-info/
|
|
logs/
|
|
tuva/
|
|
dev/
|
|
tests/
|
|
infra/
|
|
# Carve out the pieces that feed image builds so they ride along in the
|
|
# build context. `infra/` is otherwise heavy (certs, state, configs).
|
|
# Docker needs each intermediate directory un-excluded explicitly:
|
|
# `!infra/marimo/` un-excludes the dir entry itself so BuildKit can
|
|
# descend into it; `!infra/marimo/theme/**` un-excludes the contents.
|
|
!infra/marimo/
|
|
!infra/marimo/theme/
|
|
!infra/marimo/theme/**
|
|
!infra/gitea/
|
|
!infra/gitea/**
|
|
!infra/images/
|
|
# zotero desktop-bridge watchdog + healthcheck, COPYed by zotero.Dockerfile
|
|
# (repo-root context). Dir entry + contents, same pattern as marimo above.
|
|
!infra/images/zotero/
|
|
!infra/images/zotero/**
|
|
assets/
|
|
cloud/
|
|
mirrors/
|
|
.claude/
|
|
# Streamlit server config COPYed by bcda.Dockerfile (repo-root context).
|
|
!infra/images/bcda/
|
|
!infra/images/bcda/**
|
|
# Favicon COPYed by bcda.Dockerfile; dir entries first so BuildKit can descend.
|
|
!assets/
|
|
!assets/icons/
|
|
!assets/icons/fav32.png
|