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.
Files changed (117) hide show
  1. jupyter_server_documents-0.1.0/.gitignore +132 -0
  2. jupyter_server_documents-0.1.0/.prettierignore +6 -0
  3. jupyter_server_documents-0.1.0/.yarnrc.yml +1 -0
  4. jupyter_server_documents-0.1.0/AGENTS.md +1 -0
  5. jupyter_server_documents-0.1.0/CHANGELOG.md +118 -0
  6. jupyter_server_documents-0.1.0/CLAUDE.md +104 -0
  7. jupyter_server_documents-0.1.0/LICENSE +29 -0
  8. jupyter_server_documents-0.1.0/PKG-INFO +307 -0
  9. jupyter_server_documents-0.1.0/README.md +241 -0
  10. jupyter_server_documents-0.1.0/RELEASE.md +80 -0
  11. jupyter_server_documents-0.1.0/babel.config.js +1 -0
  12. jupyter_server_documents-0.1.0/conftest.py +90 -0
  13. jupyter_server_documents-0.1.0/dev/set-untitled-txt.sh +10 -0
  14. jupyter_server_documents-0.1.0/dev-environment.yml +8 -0
  15. jupyter_server_documents-0.1.0/devenv-jcollab.yml +11 -0
  16. jupyter_server_documents-0.1.0/install.json +5 -0
  17. jupyter_server_documents-0.1.0/jest.config.js +28 -0
  18. jupyter_server_documents-0.1.0/jupyter-config/server-config/jupyter_server_documents.json +8 -0
  19. jupyter_server_documents-0.1.0/jupyter_server_documents/__init__.py +27 -0
  20. jupyter_server_documents-0.1.0/jupyter_server_documents/_version.py +4 -0
  21. jupyter_server_documents-0.1.0/jupyter_server_documents/app.py +96 -0
  22. jupyter_server_documents-0.1.0/jupyter_server_documents/events/__init__.py +10 -0
  23. jupyter_server_documents-0.1.0/jupyter_server_documents/events/awareness.yaml +33 -0
  24. jupyter_server_documents-0.1.0/jupyter_server_documents/events/room.yaml +60 -0
  25. jupyter_server_documents-0.1.0/jupyter_server_documents/handlers.py +42 -0
  26. jupyter_server_documents-0.1.0/jupyter_server_documents/jcollab_api/__init__.py +1 -0
  27. jupyter_server_documents-0.1.0/jupyter_server_documents/jcollab_api/jcollab_api.py +64 -0
  28. jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/__init__.py +0 -0
  29. jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/kernel_client.py +334 -0
  30. jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/kernel_client_abc.py +42 -0
  31. jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/kernel_manager.py +175 -0
  32. jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/message_cache.py +226 -0
  33. jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/multi_kernel_manager.py +17 -0
  34. jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/states.py +35 -0
  35. jupyter_server_documents-0.1.0/jupyter_server_documents/kernels/websocket_connection.py +46 -0
  36. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/package.json +248 -0
  37. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/schemas/@jupyter-ai-contrib/server-documents/package.json.orig +243 -0
  38. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/schemas/@jupyter-ai-contrib/server-documents/plugin.json +16 -0
  39. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/280.380f6a92bd2a28ed3a69.js +1 -0
  40. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/291.5fc10816ad0581558067.js +1 -0
  41. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/381.c40a9d8f68e11f1ea284.js +1 -0
  42. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/388.1b04fc975e44ac0bb619.js +1 -0
  43. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/483.13bab7fa10f1d1282aed.js +102 -0
  44. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/483.13bab7fa10f1d1282aed.js.LICENSE.txt +28 -0
  45. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/7.1b04fc975e44ac0bb619.js +1 -0
  46. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/728.6c5bd285553457387d6b.js +1 -0
  47. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/759.4b3622fecbe63e419b67.js +1 -0
  48. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/remoteEntry.fe6c962dcfd3da7fa3de.js +1 -0
  49. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/style.js +4 -0
  50. jupyter_server_documents-0.1.0/jupyter_server_documents/labextension/static/third-party-licenses.json +208 -0
  51. jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/__init__.py +9 -0
  52. jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/handlers.py +92 -0
  53. jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/manager.py +413 -0
  54. jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/optimized_outputs_manager.py +460 -0
  55. jupyter_server_documents-0.1.0/jupyter_server_documents/outputs/output_processor.py +201 -0
  56. jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/__init__.py +3 -0
  57. jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/mock_yroom.py +27 -0
  58. jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/yroom.py +1055 -0
  59. jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/yroom_events_api.py +102 -0
  60. jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/yroom_file_api.py +648 -0
  61. jupyter_server_documents-0.1.0/jupyter_server_documents/rooms/yroom_manager.py +322 -0
  62. jupyter_server_documents-0.1.0/jupyter_server_documents/session_manager.py +187 -0
  63. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/__init__.py +1 -0
  64. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/__init__.py +0 -0
  65. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/conftest.py +23 -0
  66. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_kernel_client.py +105 -0
  67. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_kernel_client_integration.py +490 -0
  68. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_kernel_manager.py +71 -0
  69. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_multi_kernel_manager.py +82 -0
  70. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_states.py +175 -0
  71. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/kernels/test_websocket_connection.py +124 -0
  72. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/mocks/mock_plaintext.txt +4 -0
  73. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_kernel_message_cache.py +285 -0
  74. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_output_processor.py +38 -0
  75. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_outputs_manager.py +856 -0
  76. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_yroom.py +92 -0
  77. jupyter_server_documents-0.1.0/jupyter_server_documents/tests/test_yroom_file_api.py +124 -0
  78. jupyter_server_documents-0.1.0/jupyter_server_documents/websockets/__init__.py +2 -0
  79. jupyter_server_documents-0.1.0/jupyter_server_documents/websockets/clients.py +234 -0
  80. jupyter_server_documents-0.1.0/jupyter_server_documents/websockets/yroom_ws.py +79 -0
  81. jupyter_server_documents-0.1.0/jupyter_server_documents/ydocs.py +104 -0
  82. jupyter_server_documents-0.1.0/package.json +243 -0
  83. jupyter_server_documents-0.1.0/pyproject.toml +98 -0
  84. jupyter_server_documents-0.1.0/schema/plugin.json +16 -0
  85. jupyter_server_documents-0.1.0/setup.py +1 -0
  86. jupyter_server_documents-0.1.0/src/__tests__/jupyter_rtc_core.spec.ts +9 -0
  87. jupyter_server_documents-0.1.0/src/codemirror-binding/plugin.ts +42 -0
  88. jupyter_server_documents-0.1.0/src/codemirror-binding/ybinding.ts +345 -0
  89. jupyter_server_documents-0.1.0/src/codemirror-binding/yundomanager.ts +115 -0
  90. jupyter_server_documents-0.1.0/src/disablesave.ts +121 -0
  91. jupyter_server_documents-0.1.0/src/docprovider/awareness.ts +99 -0
  92. jupyter_server_documents-0.1.0/src/docprovider/custom_ydocs.ts +163 -0
  93. jupyter_server_documents-0.1.0/src/docprovider/filebrowser.ts +316 -0
  94. jupyter_server_documents-0.1.0/src/docprovider/index.ts +4 -0
  95. jupyter_server_documents-0.1.0/src/docprovider/requests.ts +74 -0
  96. jupyter_server_documents-0.1.0/src/docprovider/ydrive.ts +320 -0
  97. jupyter_server_documents-0.1.0/src/docprovider/yprovider.ts +386 -0
  98. jupyter_server_documents-0.1.0/src/executionindicator.tsx +107 -0
  99. jupyter_server_documents-0.1.0/src/handler.ts +55 -0
  100. jupyter_server_documents-0.1.0/src/index.ts +332 -0
  101. jupyter_server_documents-0.1.0/src/kernelstatus.tsx +168 -0
  102. jupyter_server_documents-0.1.0/src/notebook-factory/index.ts +2 -0
  103. jupyter_server_documents-0.1.0/src/notebook-factory/notebook-factory.ts +396 -0
  104. jupyter_server_documents-0.1.0/src/notebook-factory/notebook.ts +58 -0
  105. jupyter_server_documents-0.1.0/src/notebook-factory/plugin.ts +26 -0
  106. jupyter_server_documents-0.1.0/style/base.css +14 -0
  107. jupyter_server_documents-0.1.0/style/index.css +1 -0
  108. jupyter_server_documents-0.1.0/style/index.js +1 -0
  109. jupyter_server_documents-0.1.0/tsconfig.json +25 -0
  110. jupyter_server_documents-0.1.0/tsconfig.test.json +3 -0
  111. jupyter_server_documents-0.1.0/ui-tests/README.md +167 -0
  112. jupyter_server_documents-0.1.0/ui-tests/jupyter_server_test_config.py +12 -0
  113. jupyter_server_documents-0.1.0/ui-tests/package.json +23 -0
  114. jupyter_server_documents-0.1.0/ui-tests/playwright.config.js +14 -0
  115. jupyter_server_documents-0.1.0/ui-tests/tests/jupyter_server_documents.spec.ts +25 -0
  116. jupyter_server_documents-0.1.0/ui-tests/yarn.lock +5158 -0
  117. 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,6 @@
1
+ node_modules
2
+ **/node_modules
3
+ **/lib
4
+ **/package.json
5
+ !/package.json
6
+ jupyter_server_documents
@@ -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.