jupyter-server-documents 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jupyter_server_documents-0.1.0/.gitignore +132 -0
- jupyter_server_documents-0.1.0/.prettierignore +6 -0
- jupyter_server_documents-0.1.0/.yarnrc.yml +1 -0
- jupyter_server_documents-0.1.0/AGENTS.md +1 -0
- jupyter_server_documents-0.1.0/CHANGELOG.md +118 -0
- jupyter_server_documents-0.1.0/CLAUDE.md +104 -0
- jupyter_server_documents-0.1.0/LICENSE +29 -0
- jupyter_server_documents-0.1.0/PKG-INFO +307 -0
- jupyter_server_documents-0.1.0/README.md +241 -0
- jupyter_server_documents-0.1.0/RELEASE.md +80 -0
- jupyter_server_documents-0.1.0/babel.config.js +1 -0
- jupyter_server_documents-0.1.0/conftest.py +90 -0
- jupyter_server_documents-0.1.0/dev/set-untitled-txt.sh +10 -0
- jupyter_server_documents-0.1.0/dev-environment.yml +8 -0
- jupyter_server_documents-0.1.0/devenv-jcollab.yml +11 -0
- jupyter_server_documents-0.1.0/install.json +5 -0
- jupyter_server_documents-0.1.0/jest.config.js +28 -0
- jupyter_server_documents-0.1.0/jupyter-config/server-config/jupyter_server_documents.json +8 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/__init__.py +27 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/_version.py +4 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/app.py +96 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/events/__init__.py +10 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/events/awareness.yaml +33 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/events/room.yaml +60 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/handlers.py +42 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/jcollab_api/__init__.py +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/jcollab_api/jcollab_api.py +64 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/__init__.py +0 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/kernel_client.py +334 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/kernel_client_abc.py +42 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/kernel_manager.py +175 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/message_cache.py +226 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/multi_kernel_manager.py +17 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/states.py +35 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/websocket_connection.py +46 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/package.json +248 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/schemas/@jupyter-ai-contrib/server-documents/package.json.orig +243 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/schemas/@jupyter-ai-contrib/server-documents/plugin.json +16 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/280.380f6a92bd2a28ed3a69.js +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/291.5fc10816ad0581558067.js +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/381.c40a9d8f68e11f1ea284.js +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/388.1b04fc975e44ac0bb619.js +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/483.13bab7fa10f1d1282aed.js +102 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/483.13bab7fa10f1d1282aed.js.LICENSE.txt +28 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/7.1b04fc975e44ac0bb619.js +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/728.6c5bd285553457387d6b.js +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/759.4b3622fecbe63e419b67.js +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/remoteEntry.fe6c962dcfd3da7fa3de.js +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/style.js +4 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/third-party-licenses.json +208 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/__init__.py +9 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/handlers.py +92 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/manager.py +413 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/optimized_outputs_manager.py +460 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/output_processor.py +201 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/__init__.py +3 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/mock_yroom.py +27 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/yroom.py +1055 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/yroom_events_api.py +102 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/yroom_file_api.py +648 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/yroom_manager.py +322 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/session_manager.py +187 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/__init__.py +1 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/__init__.py +0 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/conftest.py +23 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_kernel_client.py +105 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_kernel_client_integration.py +490 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_kernel_manager.py +71 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_multi_kernel_manager.py +82 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_states.py +175 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_websocket_connection.py +124 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/mocks/mock_plaintext.txt +4 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_kernel_message_cache.py +285 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_output_processor.py +38 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_outputs_manager.py +856 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_yroom.py +92 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_yroom_file_api.py +124 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/websockets/__init__.py +2 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/websockets/clients.py +234 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/websockets/yroom_ws.py +79 -0
- jupyter_server_documents-0.1.0/jupyter_server_documents/ydocs.py +104 -0
- jupyter_server_documents-0.1.0/package.json +243 -0
- jupyter_server_documents-0.1.0/pyproject.toml +98 -0
- jupyter_server_documents-0.1.0/schema/plugin.json +16 -0
- jupyter_server_documents-0.1.0/setup.py +1 -0
- jupyter_server_documents-0.1.0/src/__tests__/jupyter_rtc_core.spec.ts +9 -0
- jupyter_server_documents-0.1.0/src/codemirror-binding/plugin.ts +42 -0
- jupyter_server_documents-0.1.0/src/codemirror-binding/ybinding.ts +345 -0
- jupyter_server_documents-0.1.0/src/codemirror-binding/yundomanager.ts +115 -0
- jupyter_server_documents-0.1.0/src/disablesave.ts +121 -0
- jupyter_server_documents-0.1.0/src/docprovider/awareness.ts +99 -0
- jupyter_server_documents-0.1.0/src/docprovider/custom_ydocs.ts +163 -0
- jupyter_server_documents-0.1.0/src/docprovider/filebrowser.ts +316 -0
- jupyter_server_documents-0.1.0/src/docprovider/index.ts +4 -0
- jupyter_server_documents-0.1.0/src/docprovider/requests.ts +74 -0
- jupyter_server_documents-0.1.0/src/docprovider/ydrive.ts +320 -0
- jupyter_server_documents-0.1.0/src/docprovider/yprovider.ts +386 -0
- jupyter_server_documents-0.1.0/src/executionindicator.tsx +107 -0
- jupyter_server_documents-0.1.0/src/handler.ts +55 -0
- jupyter_server_documents-0.1.0/src/index.ts +332 -0
- jupyter_server_documents-0.1.0/src/kernelstatus.tsx +168 -0
- jupyter_server_documents-0.1.0/src/notebook-factory/index.ts +2 -0
- jupyter_server_documents-0.1.0/src/notebook-factory/notebook-factory.ts +396 -0
- jupyter_server_documents-0.1.0/src/notebook-factory/notebook.ts +58 -0
- jupyter_server_documents-0.1.0/src/notebook-factory/plugin.ts +26 -0
- jupyter_server_documents-0.1.0/style/base.css +14 -0
- jupyter_server_documents-0.1.0/style/index.css +1 -0
- jupyter_server_documents-0.1.0/style/index.js +1 -0
- jupyter_server_documents-0.1.0/tsconfig.json +25 -0
- jupyter_server_documents-0.1.0/tsconfig.test.json +3 -0
- jupyter_server_documents-0.1.0/ui-tests/README.md +167 -0
- jupyter_server_documents-0.1.0/ui-tests/jupyter_server_test_config.py +12 -0
- jupyter_server_documents-0.1.0/ui-tests/package.json +23 -0
- jupyter_server_documents-0.1.0/ui-tests/playwright.config.js +14 -0
- jupyter_server_documents-0.1.0/ui-tests/tests/jupyter_server_documents.spec.ts +25 -0
- jupyter_server_documents-0.1.0/ui-tests/yarn.lock +5158 -0
- jupyter_server_documents-0.1.0/yarn.lock +12176 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
*.bundle.*
|
|
2
|
+
lib/
|
|
3
|
+
node_modules/
|
|
4
|
+
*.log
|
|
5
|
+
.eslintcache
|
|
6
|
+
.stylelintcache
|
|
7
|
+
*.egg-info/
|
|
8
|
+
.ipynb_checkpoints
|
|
9
|
+
*.tsbuildinfo
|
|
10
|
+
jupyter_server_documents/labextension
|
|
11
|
+
# Version file is handled by hatchling
|
|
12
|
+
jupyter_server_documents/_version.py
|
|
13
|
+
|
|
14
|
+
# Integration tests
|
|
15
|
+
ui-tests/test-results/
|
|
16
|
+
ui-tests/playwright-report/
|
|
17
|
+
|
|
18
|
+
# Created by https://www.gitignore.io/api/python
|
|
19
|
+
# Edit at https://www.gitignore.io/?templates=python
|
|
20
|
+
|
|
21
|
+
### Python ###
|
|
22
|
+
# Byte-compiled / optimized / DLL files
|
|
23
|
+
__pycache__/
|
|
24
|
+
*.py[cod]
|
|
25
|
+
*$py.class
|
|
26
|
+
|
|
27
|
+
# C extensions
|
|
28
|
+
*.so
|
|
29
|
+
|
|
30
|
+
# Distribution / packaging
|
|
31
|
+
.Python
|
|
32
|
+
build/
|
|
33
|
+
develop-eggs/
|
|
34
|
+
dist/
|
|
35
|
+
downloads/
|
|
36
|
+
eggs/
|
|
37
|
+
.eggs/
|
|
38
|
+
lib/
|
|
39
|
+
lib64/
|
|
40
|
+
parts/
|
|
41
|
+
sdist/
|
|
42
|
+
var/
|
|
43
|
+
wheels/
|
|
44
|
+
pip-wheel-metadata/
|
|
45
|
+
share/python-wheels/
|
|
46
|
+
.installed.cfg
|
|
47
|
+
*.egg
|
|
48
|
+
MANIFEST
|
|
49
|
+
|
|
50
|
+
# PyInstaller
|
|
51
|
+
# Usually these files are written by a python script from a template
|
|
52
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
53
|
+
*.manifest
|
|
54
|
+
*.spec
|
|
55
|
+
|
|
56
|
+
# Installer logs
|
|
57
|
+
pip-log.txt
|
|
58
|
+
pip-delete-this-directory.txt
|
|
59
|
+
|
|
60
|
+
# Unit test / coverage reports
|
|
61
|
+
htmlcov/
|
|
62
|
+
.tox/
|
|
63
|
+
.nox/
|
|
64
|
+
.coverage
|
|
65
|
+
.coverage.*
|
|
66
|
+
.cache
|
|
67
|
+
nosetests.xml
|
|
68
|
+
coverage/
|
|
69
|
+
coverage.xml
|
|
70
|
+
*.cover
|
|
71
|
+
.hypothesis/
|
|
72
|
+
.pytest_cache/
|
|
73
|
+
|
|
74
|
+
# Translations
|
|
75
|
+
*.mo
|
|
76
|
+
*.pot
|
|
77
|
+
|
|
78
|
+
# Scrapy stuff:
|
|
79
|
+
.scrapy
|
|
80
|
+
|
|
81
|
+
# Sphinx documentation
|
|
82
|
+
docs/_build/
|
|
83
|
+
|
|
84
|
+
# PyBuilder
|
|
85
|
+
target/
|
|
86
|
+
|
|
87
|
+
# pyenv
|
|
88
|
+
.python-version
|
|
89
|
+
|
|
90
|
+
# celery beat schedule file
|
|
91
|
+
celerybeat-schedule
|
|
92
|
+
|
|
93
|
+
# SageMath parsed files
|
|
94
|
+
*.sage.py
|
|
95
|
+
|
|
96
|
+
# Spyder project settings
|
|
97
|
+
.spyderproject
|
|
98
|
+
.spyproject
|
|
99
|
+
|
|
100
|
+
# Rope project settings
|
|
101
|
+
.ropeproject
|
|
102
|
+
|
|
103
|
+
# Mr Developer
|
|
104
|
+
.mr.developer.cfg
|
|
105
|
+
.project
|
|
106
|
+
.pydevproject
|
|
107
|
+
|
|
108
|
+
# mkdocs documentation
|
|
109
|
+
/site
|
|
110
|
+
|
|
111
|
+
# mypy
|
|
112
|
+
.mypy_cache/
|
|
113
|
+
.dmypy.json
|
|
114
|
+
dmypy.json
|
|
115
|
+
|
|
116
|
+
# Pyre type checker
|
|
117
|
+
.pyre/
|
|
118
|
+
|
|
119
|
+
# End of https://www.gitignore.io/api/python
|
|
120
|
+
|
|
121
|
+
# OSX files
|
|
122
|
+
.DS_Store
|
|
123
|
+
|
|
124
|
+
# Yarn cache
|
|
125
|
+
.yarn/
|
|
126
|
+
|
|
127
|
+
# Ignore files used to test in real-time
|
|
128
|
+
untitled*
|
|
129
|
+
Untitled*
|
|
130
|
+
|
|
131
|
+
.vscode/
|
|
132
|
+
playground/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nodeLinker: node-modules
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
CLAUDE.md
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
<!-- <START NEW CHANGELOG ENTRY> -->
|
|
4
|
+
|
|
5
|
+
## 0.1.0
|
|
6
|
+
|
|
7
|
+
([Full Changelog](https://github.com/jupyter-ai-contrib/jupyter-server-documents/compare/v0.1.0a9...a65fd2129eca2e844fa02590020af8a2f7159fd3))
|
|
8
|
+
|
|
9
|
+
### Enhancements made
|
|
10
|
+
|
|
11
|
+
- Disable OOB change notification [#187](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/187) ([@dlqqq](https://github.com/dlqqq), [@ellisonbg](https://github.com/ellisonbg))
|
|
12
|
+
|
|
13
|
+
### Bugs fixed
|
|
14
|
+
|
|
15
|
+
- Remove save toolbar buttons [#180](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/180) ([@nakul-py](https://github.com/nakul-py), [@dlqqq](https://github.com/dlqqq))
|
|
16
|
+
|
|
17
|
+
### Maintenance and upkeep improvements
|
|
18
|
+
|
|
19
|
+
- Update verbose logs to debug level [#181](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/181) ([@3coins](https://github.com/3coins), [@dlqqq](https://github.com/dlqqq))
|
|
20
|
+
|
|
21
|
+
### Other merged PRs
|
|
22
|
+
|
|
23
|
+
- Fix metadata links [#184](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/184) ([@ktaletsk](https://github.com/ktaletsk), [@dlqqq](https://github.com/dlqqq))
|
|
24
|
+
|
|
25
|
+
### Contributors to this release
|
|
26
|
+
|
|
27
|
+
The following people contributed discussions, new ideas, code and documentation contributions, and review.
|
|
28
|
+
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).
|
|
29
|
+
|
|
30
|
+
([GitHub contributors page for this release](https://github.com/jupyter-ai-contrib/jupyter-server-documents/graphs/contributors?from=2025-11-18&to=2026-01-15&type=c))
|
|
31
|
+
|
|
32
|
+
@3coins ([activity](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3A3coins+updated%3A2025-11-18..2026-01-15&type=Issues)) | @dlqqq ([activity](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Adlqqq+updated%3A2025-11-18..2026-01-15&type=Issues)) | @ellisonbg ([activity](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Aellisonbg+updated%3A2025-11-18..2026-01-15&type=Issues)) | @ktaletsk ([activity](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Aktaletsk+updated%3A2025-11-18..2026-01-15&type=Issues)) | @nakul-py ([activity](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Anakul-py+updated%3A2025-11-18..2026-01-15&type=Issues))
|
|
33
|
+
|
|
34
|
+
<!-- <END NEW CHANGELOG ENTRY> -->
|
|
35
|
+
|
|
36
|
+
## 0.1.0a9
|
|
37
|
+
|
|
38
|
+
([Full Changelog](https://github.com/jupyter-ai-contrib/jupyter-server-documents/compare/v0.1.0a8...dccb851a90d057da08c55a9c7e4d4da77bb80c8b))
|
|
39
|
+
|
|
40
|
+
### Enhancements made
|
|
41
|
+
|
|
42
|
+
- Remove excessive sync message logging [#172](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/172) ([@Zsailer](https://github.com/Zsailer))
|
|
43
|
+
|
|
44
|
+
### Bugs fixed
|
|
45
|
+
|
|
46
|
+
- Replace CRLF with LF when loading file [#177](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/177) ([@dlqqq](https://github.com/dlqqq))
|
|
47
|
+
- Fixes server error when deleted rooms are saved at shutdown [#175](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/175) ([@3coins](https://github.com/3coins))
|
|
48
|
+
|
|
49
|
+
### Documentation improvements
|
|
50
|
+
|
|
51
|
+
- docs: fix small typo [#173](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/173) ([@rgbkrk](https://github.com/rgbkrk))
|
|
52
|
+
|
|
53
|
+
### Contributors to this release
|
|
54
|
+
|
|
55
|
+
([GitHub contributors page for this release](https://github.com/jupyter-ai-contrib/jupyter-server-documents/graphs/contributors?from=2025-10-23&to=2025-11-18&type=c))
|
|
56
|
+
|
|
57
|
+
[@3coins](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3A3coins+updated%3A2025-10-23..2025-11-18&type=Issues) | [@dlqqq](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Adlqqq+updated%3A2025-10-23..2025-11-18&type=Issues) | [@rgbkrk](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Argbkrk+updated%3A2025-10-23..2025-11-18&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3AZsailer+updated%3A2025-10-23..2025-11-18&type=Issues)
|
|
58
|
+
|
|
59
|
+
## 0.1.0a8
|
|
60
|
+
|
|
61
|
+
([Full Changelog](https://github.com/jupyter-ai-contrib/jupyter-server-documents/compare/v0.1.0a7...dcf8a50078d525356737c69a94ca919281c2e379))
|
|
62
|
+
|
|
63
|
+
### Enhancements made
|
|
64
|
+
|
|
65
|
+
- Cleanup and add validation to new adaptive saving strategy [#169](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/169) ([@dlqqq](https://github.com/dlqqq))
|
|
66
|
+
- Refactor OutputsManager to align with default Jupyter behavior [#163](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/163) ([@ellisonbg](https://github.com/ellisonbg))
|
|
67
|
+
|
|
68
|
+
### Contributors to this release
|
|
69
|
+
|
|
70
|
+
([GitHub contributors page for this release](https://github.com/jupyter-ai-contrib/jupyter-server-documents/graphs/contributors?from=2025-10-22&to=2025-10-23&type=c))
|
|
71
|
+
|
|
72
|
+
[@3coins](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3A3coins+updated%3A2025-10-22..2025-10-23&type=Issues) | [@dlqqq](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Adlqqq+updated%3A2025-10-22..2025-10-23&type=Issues) | [@ellisonbg](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Aellisonbg+updated%3A2025-10-22..2025-10-23&type=Issues)
|
|
73
|
+
|
|
74
|
+
## 0.1.0a7
|
|
75
|
+
|
|
76
|
+
([Full Changelog](https://github.com/jupyter-ai-contrib/jupyter-server-documents/compare/v0.1.0a6...a1dbf46fc33e3e02fe475b3f197d1e17501d3374))
|
|
77
|
+
|
|
78
|
+
### Enhancements made
|
|
79
|
+
|
|
80
|
+
- Rename NPM package [#166](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/166) ([@dlqqq](https://github.com/dlqqq))
|
|
81
|
+
- Handle YChat document resets when `jupyterlab_chat` is installed [#161](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/161) ([@dlqqq](https://github.com/dlqqq))
|
|
82
|
+
|
|
83
|
+
### Bugs fixed
|
|
84
|
+
|
|
85
|
+
- Track if files are writable and disable saving if they are not. [#164](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/164) ([@ellisonbg](https://github.com/ellisonbg))
|
|
86
|
+
|
|
87
|
+
### Contributors to this release
|
|
88
|
+
|
|
89
|
+
([GitHub contributors page for this release](https://github.com/jupyter-ai-contrib/jupyter-server-documents/graphs/contributors?from=2025-10-14&to=2025-10-22&type=c))
|
|
90
|
+
|
|
91
|
+
[@3coins](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3A3coins+updated%3A2025-10-14..2025-10-22&type=Issues) | [@dlqqq](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Adlqqq+updated%3A2025-10-14..2025-10-22&type=Issues) | [@ellisonbg](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Aellisonbg+updated%3A2025-10-14..2025-10-22&type=Issues)
|
|
92
|
+
|
|
93
|
+
## 0.1.0a6
|
|
94
|
+
|
|
95
|
+
([Full Changelog](https://github.com/jupyter-ai-contrib/jupyter-server-documents/compare/10c176a76ac7595a299d4ccb4ccfb57c283c2182...bc6b60d58f569e77ab828ffe3cccff2d09a83675))
|
|
96
|
+
|
|
97
|
+
### Enhancements made
|
|
98
|
+
|
|
99
|
+
- Add optional `on_reset` argument to `YRoom` get methods [#152](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/152) ([@dlqqq](https://github.com/dlqqq))
|
|
100
|
+
|
|
101
|
+
### Bugs fixed
|
|
102
|
+
|
|
103
|
+
- Fixing lint error [#159](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/159) ([@3coins](https://github.com/3coins))
|
|
104
|
+
- Fix real-time output clearing for collaborative editing [#150](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/150) ([@ellisonbg](https://github.com/ellisonbg))
|
|
105
|
+
|
|
106
|
+
### Documentation improvements
|
|
107
|
+
|
|
108
|
+
- Add `CLAUDE.md` and `AGENTS.md` [#154](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/154) ([@dlqqq](https://github.com/dlqqq))
|
|
109
|
+
|
|
110
|
+
### Other merged PRs
|
|
111
|
+
|
|
112
|
+
- Increase stream limit to 200 [#149](https://github.com/jupyter-ai-contrib/jupyter-server-documents/pull/149) ([@ellisonbg](https://github.com/ellisonbg))
|
|
113
|
+
|
|
114
|
+
### Contributors to this release
|
|
115
|
+
|
|
116
|
+
([GitHub contributors page for this release](https://github.com/jupyter-ai-contrib/jupyter-server-documents/graphs/contributors?from=2025-07-25&to=2025-10-14&type=c))
|
|
117
|
+
|
|
118
|
+
[@3coins](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3A3coins+updated%3A2025-07-25..2025-10-14&type=Issues) | [@dlqqq](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Adlqqq+updated%3A2025-07-25..2025-10-14&type=Issues) | [@ellisonbg](https://github.com/search?q=repo%3Ajupyter-ai-contrib%2Fjupyter-server-documents+involves%3Aellisonbg+updated%3A2025-07-25..2025-10-14&type=Issues)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Jupyter Server Documents is a JupyterLab extension that provides real-time collaboration (RTC) capabilities by moving document state to the server. The extension consists of:
|
|
8
|
+
|
|
9
|
+
- **Python backend** (`jupyter_server_documents/`): Server extension handling WebSocket connections, room management, output processing, and collaboration state
|
|
10
|
+
- **TypeScript frontend** (`src/`): JupyterLab extension providing UI components, document providers, and awareness indicators
|
|
11
|
+
- **Hybrid architecture**: Frontend builds to `lib/` and gets packaged into `jupyter_server_documents/labextension/`
|
|
12
|
+
|
|
13
|
+
## Development Commands
|
|
14
|
+
|
|
15
|
+
### Setup
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Create development environment
|
|
19
|
+
micromamba env create -f dev-environment.yml
|
|
20
|
+
micromamba activate serverdocs
|
|
21
|
+
|
|
22
|
+
# Development installation
|
|
23
|
+
jlpm dev:install
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Building
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Build frontend only
|
|
30
|
+
jlpm build
|
|
31
|
+
|
|
32
|
+
# Build for production
|
|
33
|
+
jlpm build:prod
|
|
34
|
+
|
|
35
|
+
# Clean build artifacts
|
|
36
|
+
jlpm clean:all
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Development Workflow
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Watch mode (auto-rebuild frontend on changes)
|
|
43
|
+
jlpm watch
|
|
44
|
+
|
|
45
|
+
# Start JupyterLab (in separate terminal)
|
|
46
|
+
jupyter lab
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Testing
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Python tests
|
|
53
|
+
pytest -vv -r ap --cov jupyter_server_documents
|
|
54
|
+
|
|
55
|
+
# Frontend tests
|
|
56
|
+
jlpm test
|
|
57
|
+
|
|
58
|
+
# Integration tests (Playwright)
|
|
59
|
+
cd ui-tests && yarn test
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Code Quality
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Lint and format
|
|
66
|
+
jlpm lint
|
|
67
|
+
|
|
68
|
+
# Check only (no fixes)
|
|
69
|
+
jlpm lint:check
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Architecture
|
|
73
|
+
|
|
74
|
+
### Backend Components
|
|
75
|
+
|
|
76
|
+
- **`app.py`**: Main server extension (`ServerDocsApp`) - entry point and configuration
|
|
77
|
+
- **`rooms/`**: Y-document room management and file-based collaboration state
|
|
78
|
+
- **`outputs/`**: Notebook output processing and storage optimization
|
|
79
|
+
- **`kernels/`**: Kernel management, execution state, and WebSocket connections
|
|
80
|
+
- **`websockets/`**: WebSocket handlers for real-time collaboration
|
|
81
|
+
- **`handlers.py`**: HTTP API endpoints
|
|
82
|
+
|
|
83
|
+
### Frontend Components
|
|
84
|
+
|
|
85
|
+
- **`src/docprovider/`**: Document providers, awareness, and Y.js integration
|
|
86
|
+
- **`src/notebook-factory/`**: Custom notebook model and factory for collaboration
|
|
87
|
+
- **`src/codemirror-binding/`**: CodeMirror editor bindings for real-time editing
|
|
88
|
+
- **`src/executionindicator.tsx`**: UI component showing execution awareness
|
|
89
|
+
|
|
90
|
+
### Key Patterns
|
|
91
|
+
|
|
92
|
+
- Uses **Y.js/Yjs** for conflict-free replicated data types (CRDTs)
|
|
93
|
+
- **WebSocket-based** real-time synchronization via `YRoomWebsocket`
|
|
94
|
+
- **Output separation**: Large outputs stored separately from notebook documents
|
|
95
|
+
- **Awareness protocol**: Shows user cursors and execution state across collaborators
|
|
96
|
+
- **Kernel state management**: Handles kernel connections and execution across multiple users
|
|
97
|
+
|
|
98
|
+
## Development Notes
|
|
99
|
+
|
|
100
|
+
- After Python changes: restart Jupyter server
|
|
101
|
+
- After frontend changes: run `jlpm build` and refresh browser
|
|
102
|
+
- Frontend builds to `lib/` then packages to `jupyter_server_documents/labextension/`
|
|
103
|
+
- Uses `jlpm` (JupyterLab's yarn) instead of npm/yarn directly
|
|
104
|
+
- Development installation uses `uv` for faster Python package management
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025, Project Jupyter
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|