jupyterhub / nbgitpuller

Jupyter server extension to sync a git repository one-way to a local path
https://nbgitpuller.readthedocs.io
BSD 3-Clause "New" or "Revised" License
209 stars 86 forks source link

Status page broken #358

Open CGuichard opened 4 days ago

CGuichard commented 4 days ago

Bug description

The status page with the progress bar is not displayed correctly with JupyterLab 4.

How to reproduce

  1. Install jupyterlab==4.2.5 and nbgitpuller==1.2.1 in a virtualenv
  2. Run jupyter lab
  3. Open the JupyterLab
  4. In another tab, use nbgitpuller: http://127.0.0.1:8888/git-pull?repo=https%3A%2F%2Fgithub.com%2Fjupyterhub%2Fnbgitpuller&urlpath=lab%2Ftree%2Fnbgitpuller%2F&branch=main
  5. Status should be broken

Expected behaviour

The status page should appear with a progress bar

Actual behaviour

No progress bar and the CSS is broken

nbgitpuller

Your personal set up

Full environment ``` $ pip list Package Version ------------------------- -------------- anyio 4.6.0 argon2-cffi 23.1.0 argon2-cffi-bindings 21.2.0 arrow 1.3.0 asttokens 2.4.1 async-lru 2.0.4 attrs 24.2.0 babel 2.16.0 beautifulsoup4 4.12.3 bleach 6.1.0 certifi 2024.8.30 cffi 1.17.1 charset-normalizer 3.3.2 comm 0.2.2 debugpy 1.8.6 decorator 5.1.1 defusedxml 0.7.1 executing 2.1.0 fastjsonschema 2.20.0 fqdn 1.5.1 h11 0.14.0 httpcore 1.0.5 httpx 0.27.2 idna 3.10 ipykernel 6.29.5 ipython 8.27.0 isoduration 20.11.0 jedi 0.19.1 Jinja2 3.1.4 json5 0.9.25 jsonpointer 3.0.0 jsonschema 4.23.0 jsonschema-specifications 2023.12.1 jupyter_client 8.6.3 jupyter_core 5.7.2 jupyter-events 0.10.0 jupyter-lsp 2.2.5 jupyter_server 2.14.2 jupyter_server_terminals 0.5.3 jupyterlab 4.2.5 jupyterlab_pygments 0.3.0 jupyterlab_server 2.27.3 MarkupSafe 2.1.5 matplotlib-inline 0.1.7 mistune 3.0.2 nbclient 0.10.0 nbconvert 7.16.4 nbformat 5.10.4 nbgitpuller 1.2.1 nest-asyncio 1.6.0 notebook_shim 0.2.4 overrides 7.7.0 packaging 24.1 pandocfilters 1.5.1 parso 0.8.4 pexpect 4.9.0 pip 24.2 platformdirs 4.3.6 prometheus_client 0.21.0 prompt_toolkit 3.0.48 psutil 6.0.0 ptyprocess 0.7.0 pure_eval 0.2.3 pycparser 2.22 Pygments 2.18.0 python-dateutil 2.9.0.post0 python-json-logger 2.0.7 PyYAML 6.0.2 pyzmq 26.2.0 referencing 0.35.1 requests 2.32.3 rfc3339-validator 0.1.4 rfc3986-validator 0.1.1 rpds-py 0.20.0 Send2Trash 1.8.3 setuptools 75.1.0 six 1.16.0 sniffio 1.3.1 soupsieve 2.6 stack-data 0.6.3 terminado 0.18.1 tinycss2 1.3.0 tornado 6.4.1 traitlets 5.14.3 types-python-dateutil 2.9.0.20240906 uri-template 1.3.0 urllib3 2.2.3 wcwidth 0.2.13 webcolors 24.8.0 webencodings 0.5.1 websocket-client 1.8.0 ```
Logs ``` [W 2024-09-27 10:37:31.909 ServerApp] 404 GET /static/style/style.min.css (057adeb6224643f794230da84686af1d@127.0.0.1) 1.56ms referer=http://127.0.0.1:8888/git-pull?repo=https%3A%2F%2Fgithub.com%2Fjupyterhub%2Fnbgitpuller&urlpath=lab%2Ftree%2Fnbgitpuller%2F&branch=main [I 2024-09-27 10:37:32.882 ServerApp] $ git clone --depth 1 --branch main -- https://github.com/jupyterhub/nbgitpuller /tmp/nbgitpuller [I 2024-09-27 10:37:33.385 ServerApp] Cloning into '/tmp/nbgitpuller'... [I 2024-09-27 10:37:33.948 LabApp] 301 GET /lab/tree/nbgitpuller/ (057adeb6224643f794230da84686af1d@127.0.0.1) 1.01ms ```

Investigation

From what I've seen, the CSS file /static/style/style.min.css is requested, but while it exists on JupyterLab 3, it does not in version 4.

This is still in main at the moment I'm writing this issue: https://github.com/jupyterhub/nbgitpuller/blob/9e317a94d83519a22a9d734549474687e188f578/nbgitpuller/templates/page.html#L8

In JupyterLab 3, the CSS sheet returned was Bootstrap 3.4.1, but is seems this is no longer shipped by JupyterLab 4, thus breaking nbgitpuller CSS.

possiblyMikeB commented 1 day ago

It looks like jupyter-server changed from including a single style-sheet to pulling in three distinct style-sheets (see https://github.com/jupyter-server/jupyter_server/blob/74655ce66f36ed85a83591e6658e70ba91232580/jupyter_server/templates/page.html#L11)