diff --git a/.binder/conda-linux-64.lock b/.binder/conda-linux-64.lock
index efdc190..945d28c 100644
--- a/.binder/conda-linux-64.lock
+++ b/.binder/conda-linux-64.lock
@@ -1,6 +1,6 @@
# Generated by conda-lock.
# platform: linux-64
-# input_hash: d590a6f1af5b3bf72a3b889d1bf03c4b2d69937757baa840cc0b841a898e956b
+# input_hash: 6d5e923fdf0849ccdceed869afeeb7be9753e20caf1c32130dc84bdc218f0412
@EXPLICIT
https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81
https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.11.17-hbcca054_0.conda#01ffc8d36f9eba0ce0b3c1955fa780ee
@@ -242,7 +242,9 @@ https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.25.2-pyhd8ed1a
https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.11.0-pyhd8ed1ab_0.conda#e492b36cbea1c83d1663fa73a8abff9b
https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.3-pyhd8ed1ab_0.conda#67e0fe74c156267d9159e9133df7fd37
https://conda.anaconda.org/conda-forge/label/jupyterlab_alpha/noarch/jupyterlab-4.1.0a4-pyhd9494c6_0.conda#937116905e11106b9bcf4e5cc05b6793
+https://conda.anaconda.org/conda-forge/label/jupyterlab_fonts_alpha/noarch/jupyterlab-fonts-3.0.0a3-pyheae6aa3_0.conda#14b6ea3738c1e800a610f1e1df155548
https://conda.anaconda.org/conda-forge/label/notebook_alpha/noarch/notebook-7.1.0a0-pyhdf78bca_0.conda#aa9e88daa0d394a944f48ffbea1c7556
+https://conda.anaconda.org/conda-forge/label/jupyterlab_deck_alpha/noarch/jupyterlab-deck-0.2.0a0-pyha661375_0.conda#6e6bf18dc450f5b33d9ec9b47abbfea1
https://conda.anaconda.org/conda-forge/noarch/myst-parser-2.0.0-pyhd8ed1ab_0.conda#70699181909e468875f12076e1b0a8a9
https://conda.anaconda.org/conda-forge/noarch/myst-nb-1.0.0-pyhd8ed1ab_0.conda#fe4a9aa4a900dc509fcb5e6210184fa3
https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.14.4-pyhd8ed1ab_0.conda#c79b8443908032263ffb40ee6215e9e4
diff --git a/.binder/environment.yml b/.binder/environment.yml
index 8423ac4..ede7d21 100644
--- a/.binder/environment.yml
+++ b/.binder/environment.yml
@@ -1,7 +1,9 @@
channels:
- - conda-forge
- conda-forge/label/jupyterlab_alpha
- conda-forge/label/notebook_alpha
+ - conda-forge/label/jupyterlab_fonts_alpha
+ - conda-forge/label/jupyterlab_deck_alpha
+ - conda-forge
- nodefaults
platforms:
- linux-64
@@ -14,6 +16,8 @@ dependencies:
- notebook >=7.1.0a0,<8
# images
- imagemagick
+ # demo
+ - jupyterlab-deck >=0.2.0a0
### .github/environment.yml ###
# fix
- ruff
diff --git a/README.md b/README.md
index 142966b..adae6be 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
# jupyak
-> get a JupyterLite preview of pull requests across the Jupyter stack
+> get a statically-hosted JupyterLite preview of pull requests from across the
+> Jupyter stack
## what does it do?
@@ -29,6 +30,10 @@ This repo accepts [pull requests](#how-does-it-work) that build static [preview
- PR-based [preview site](#how-do-i-get-a-preview-site)
- preview of the docs for the site itself
+> The above works on at least _one_ Ubuntu 22.03 LTS machine, but little care has
+> been taken to make _anything_ run on any other system, and likely won't be tested
+> anywhere else.
+
## how does it work?
Delivering a preview site uses a few different GitHub Actions workflows and ReadTheDocs.
@@ -38,7 +43,12 @@ Delivering a preview site uses a few different GitHub Actions workflows and Read
[repos](#what-can-it-build).
- Clicking the _submit_ button will open a "new file" GitHub page against this repo
- Click _Commit Changes..._
- - Follow the Pull Request template and submit
+ - Follow the _Pull Request_ template and submit
+- A GitHub Action job will create a link to the current site
+ - This will initially return `404`, as the site isn't built yet
+ - Clicking instead on the ReadTheDocs check at the bottom of the Pull Request
+ will show build logs, but these are _intentionally_ sparse, capturing most output
+ as logs to present in the built site.
- ReadTheDocs will check out the PR and build a preview JupyterLite site on a custom
domain
- If the preview site **fails** to build, the built RTD site will contain
@@ -47,11 +57,11 @@ Delivering a preview site uses a few different GitHub Actions workflows and Read
## what can it build?
-`jupyak` understand how to work with one or more human-readable HTML URLs of the forms:
+`jupyak` understand how to work with one or more human-readable URLs fragments of the forms:
- - `{:repo}/pull/{:pull-id}`
- - `{:repo}/tree/{:branch}`
- - `{:repo}/releases/tag/{:tag}`
+ - `/pull/{:pull-id}`
+ - `/tree/{:branch}`
+ - `/releases/tag/{:tag}`
- > note that the `/tree/{:tag}` form will fail loudly
...from the following repos:
@@ -69,5 +79,23 @@ Delivering a preview site uses a few different GitHub Actions workflows and Read
- https://github.com/jupyterlite/jupyterlite
- https://github.com/jupyterlite/pyodide-kernel
+Additionally, a single GitHub gist can be used as the contents of the preview site,
+and can further configure the build- and runtime behavior of JupyterLite by providing
+a custom `jupyter_lite_config.json` and/or `jupyter-lite.json`.
+
+## what does it _not_ build?
+
+A few more things _could_ be built, and might be interesting to evaluate
+a PR stack, ar note. However, each of these would come at the expense of a lower
+chance of a usable JupyterLite site at the end of each PR build. These include:
+
+- test reports
+- examples
+- per-project documentation
+- lint reports
+- anything that doesn't work in the browser
+- anything that requires a `c`/`rust`/`emscripten` compiler or other heavy dependencies
+ such as `pandas`
+
[issues]: https://github.com/deathbeds/jupyak/issues
[pulls]: https://github.com/deathbeds/jupyak/pulls
diff --git a/docs/.readthedocs.yaml b/docs/.readthedocs.yaml
index d1b0f3e..74e3553 100644
--- a/docs/.readthedocs.yaml
+++ b/docs/.readthedocs.yaml
@@ -8,7 +8,7 @@ build:
pre_build:
- git config --global user.email "jupyak@example.com"
- git config --global user.name "jupyak"
- - JPYK_ALLOW_NO_CONFIG=1 doit bootstrap || echo 'ok'
+ - JPYK_ALLOW_NO_CONFIG=1 doit bootstrap || echo 'ok'
# check out everything
- JPYK_LOG_NAME=git doit shave:git:* || echo 'ok'
# prepare the work conda env
@@ -19,7 +19,7 @@ build:
- JPYK_LOG_NAME=shave doit shave || echo 'ok'
- JPYK_LOG_NAME=shave2 doit shave || echo 'ok'
- doit self:docs:deploy:work || echo 'ok'
- - JPYK_ALLOW_NO_CONFIG=1 doit self:docs:graph || echo 'ok'
+ - JPYK_ALLOW_NO_CONFIG=1 doit self:docs:graph || echo 'ok'
sphinx:
builder: html
diff --git a/docs/_static/css/theme.css b/docs/_static/css/theme.css
index 5a09d71..f01383b 100644
--- a/docs/_static/css/theme.css
+++ b/docs/_static/css/theme.css
@@ -4,11 +4,6 @@
--jpyk-color-jupyter-orange: #f37726;
}
-html[data-theme="light"],
-html[data-theme="dark"] {
- --pst-color-primary: #9556cf;
-}
-
html[data-theme="dark"] {
--pst-color-border: #444;
}
@@ -106,7 +101,7 @@ table.jsonschema h2 {
#task-graph-legend {
position: fixed;
- top: 100px;
+ bottom: 100px;
right: 0;
pointer-events: none;
opacity: 0.75;
@@ -118,7 +113,65 @@ input[id*="svg-zoom-2"]:checked ~ svg { width: 200%; transition: width 0.5s;}
input[id*="svg-zoom-4"]:checked ~ svg { width: 400%; transition: width 0.5s;}
input[id*="svg-zoom-8"]:checked ~ svg { width: 800%; transition: width 0.5s;}
-/* work */
+/* form sidebar*/
+
+form#propose button {
+ width: 100%;
+ margin: 0.5rem 0 1rem;
+}
+form#propose textarea {
+ width: 100%;
+ min-height: 10rem;
+}
+form#propose textarea:placeholder-shown ~ button {
+ display: none;
+}
+/* form main */
+.show-repo-label {
+ padding-right: 1rem;
+}
+
+form#new input[type="text"] {
+ width: 100%;
+}
+
+form#new select {
+ width: 100%;
+ height: 2rem;
+}
+
+form#new code {
+ text-wrap: nowrap;
+}
+
+form#new input[id*="merge_with"] {
+ word-wrap: break-word;
+ word-break: break-all;
+}
+
+form#new table {
+ width: 100%;
+}
+
+form#new table label {
+ display: block;
+}
+
+form#new input[pattern]:invalid {
+ border: solid 1px var(--jpyk-color-jupyter-orange);
+ color: solid 1px var(--jpyk-color-jupyter-orange);
+}
+
+form#new input[pattern]:not(:invalid) ~ label {
+ display: none;
+}
+
+form#new th,
+form#new td {
+ vertical-align: top;
+}
+
+/* work sidebar */
.work-sidebar {
border: solid 2px var(--jpyk-color-wasm-purple);
padding: 0;
diff --git a/docs/_templates/demo.html b/docs/_templates/demo.html
index 20bf2ac..ee463b0 100644
--- a/docs/_templates/demo.html
+++ b/docs/_templates/demo.html
@@ -1,7 +1,7 @@