main 092b288555a0 cached
174 files
5.9 MB
1.6M tokens
408 symbols
1 requests
Download .txt
Showing preview only (6,244K chars total). Download the full file or copy to clipboard to get everything.
Repository: jupyterlab/jupyter-collaboration
Branch: main
Commit: 092b288555a0
Files: 174
Total size: 5.9 MB

Directory structure:
gitextract_bz7cwb94/

├── .eslintignore
├── .eslintrc.js
├── .flake8
├── .gitconfig
├── .github/
│   └── workflows/
│       ├── binder-badge.yml
│       ├── check-release.yml
│       ├── enforce-label.yml
│       ├── license-header.yml
│       ├── prep-release.yml
│       ├── publish-changelog.yml
│       ├── publish-release.yml
│       ├── test.yml
│       └── update_galata_references.yaml
├── .gitignore
├── .licenserc.yaml
├── .npmignore
├── .pre-commit-config.yaml
├── .prettierignore
├── .prettierrc
├── .readthedocs.yaml
├── .stylelintrc
├── .yarnrc.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── RELEASE.md
├── binder/
│   ├── environment.yml
│   ├── jupyter_config.py
│   └── postBuild
├── codecov.yml
├── docs/
│   ├── Makefile
│   ├── make.bat
│   └── source/
│       ├── conf.py
│       ├── configuration.md
│       ├── developer/
│       │   ├── architecture.md
│       │   ├── contributing.md
│       │   ├── javascript_api.md
│       │   └── python_api.md
│       └── index.md
├── install.json
├── lerna.json
├── package.json
├── packages/
│   ├── collaboration/
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── collaboratorspanel.tsx
│   │   │   ├── components.tsx
│   │   │   ├── cursors.ts
│   │   │   ├── index.ts
│   │   │   ├── menu.ts
│   │   │   ├── sharedlink.ts
│   │   │   ├── tokens.ts
│   │   │   ├── userinfopanel.tsx
│   │   │   └── users-item.tsx
│   │   ├── style/
│   │   │   ├── base.css
│   │   │   ├── index.css
│   │   │   ├── index.js
│   │   │   ├── menu.css
│   │   │   ├── sharedlink.css
│   │   │   ├── sidepanel.css
│   │   │   └── users-item.css
│   │   └── tsconfig.json
│   ├── collaboration-extension/
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── schema/
│   │   │   ├── shared-link.json
│   │   │   └── user-menu-bar.json
│   │   ├── src/
│   │   │   ├── collaboration.ts
│   │   │   ├── index.ts
│   │   │   └── sharedlink.ts
│   │   ├── style/
│   │   │   ├── index.css
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── collaborative-drive/
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.ts
│   │   │   └── tokens.ts
│   │   └── tsconfig.json
│   ├── docprovider/
│   │   ├── babel.config.js
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── TimelineSlider.tsx
│   │   │   ├── __tests__/
│   │   │   │   ├── forkManager.spec.ts
│   │   │   │   └── yprovider.spec.ts
│   │   │   ├── awareness.ts
│   │   │   ├── component.tsx
│   │   │   ├── forkManager.ts
│   │   │   ├── index.ts
│   │   │   ├── notebookCellExecutor.ts
│   │   │   ├── requests.ts
│   │   │   ├── tokens.ts
│   │   │   ├── ydrive.ts
│   │   │   └── yprovider.ts
│   │   ├── style/
│   │   │   ├── base.css
│   │   │   ├── index.css
│   │   │   ├── index.js
│   │   │   └── slider.css
│   │   ├── tsconfig.json
│   │   └── tsconfig.test.json
│   └── docprovider-extension/
│       ├── README.md
│       ├── babel.config.js
│       ├── package.json
│       ├── src/
│       │   ├── executor.ts
│       │   ├── filebrowser.ts
│       │   ├── forkManager.ts
│       │   ├── index.ts
│       │   └── yprovider.ts
│       ├── style/
│       │   ├── index.css
│       │   └── index.js
│       └── tsconfig.json
├── projects/
│   ├── jupyter-collaboration/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── jupyter_collaboration/
│   │   │   ├── __init__.py
│   │   │   └── _version.py
│   │   ├── pyproject.toml
│   │   └── setup.py
│   ├── jupyter-collaboration-ui/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── install.json
│   │   ├── jupyter_collaboration_ui/
│   │   │   ├── __init__.py
│   │   │   └── _version.py
│   │   ├── pyproject.toml
│   │   └── setup.py
│   ├── jupyter-docprovider/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── install.json
│   │   ├── jupyter_docprovider/
│   │   │   ├── __init__.py
│   │   │   └── _version.py
│   │   ├── pyproject.toml
│   │   └── setup.py
│   └── jupyter-server-ydoc/
│       ├── LICENSE
│       ├── README.md
│       ├── jupyter-config/
│       │   └── jupyter_server_ydoc.json
│       ├── jupyter_server_ydoc/
│       │   ├── __init__.py
│       │   ├── _version.py
│       │   ├── app.py
│       │   ├── events/
│       │   │   ├── awareness.yaml
│       │   │   ├── fork.yaml
│       │   │   └── session.yaml
│       │   ├── handlers.py
│       │   ├── loaders.py
│       │   ├── pytest_plugin.py
│       │   ├── rooms.py
│       │   ├── stores.py
│       │   ├── test_utils.py
│       │   ├── utils.py
│       │   └── websocketserver.py
│       ├── pyproject.toml
│       └── setup.py
├── pyproject.toml
├── scripts/
│   ├── bump_version.py
│   └── dev_install.py
├── setup.py
├── tests/
│   ├── __init__.py
│   ├── conftest.py
│   ├── test_app.py
│   ├── test_documents.py
│   ├── test_handlers.py
│   ├── test_loaders.py
│   ├── test_rooms.py
│   └── test_session_store.py
├── tsconfig.json
├── tsconfig.test.json
├── typedoc.json
└── ui-tests/
    ├── README.md
    ├── jupyter_server_test_config.py
    ├── package.json
    ├── playwright.config.js
    ├── playwright.timeline.config.js
    └── tests/
        ├── collaborationpanel.spec.ts
        ├── data/
        │   └── OutputExamples.ipynb
        ├── file.spec.ts
        ├── hub-share.spec.ts
        ├── notebook.spec.ts
        ├── timeline-slider.spec.ts
        └── user-menu.spec.ts

================================================
FILE CONTENTS
================================================

================================================
FILE: .eslintignore
================================================
**/lib
**/node_modules
**/style
**/package.json
**/tsconfig.json
**/tsconfig.test.json
**/*.d.ts
**/test
**/ui-tests
**/labextension

docs
tests
.eslintrc.js
jupyter-config
jupyter_collaboration

packages/collaboration/babel.config.js
packages/docprovider/babel.config.js
packages/docprovider/jest.config.js


================================================
FILE: .eslintrc.js
================================================
module.exports = {
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/eslint-recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:prettier/recommended'
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: 'tsconfig.json',
    sourceType: 'module'
  },
  plugins: ['@typescript-eslint'],
  rules: {
    '@typescript-eslint/naming-convention': [
      'error',
      {
        selector: 'interface',
        format: ['PascalCase'],
        custom: {
          regex: '^I[A-Z]',
          match: true
        }
      }
    ],
    '@typescript-eslint/no-unused-vars': ['warn', { args: 'none' }],
    '@typescript-eslint/no-explicit-any': 'off',
    '@typescript-eslint/no-namespace': 'off',
    '@typescript-eslint/no-use-before-define': 'off',
    '@typescript-eslint/quotes': [
      'error',
      'single',
      { avoidEscape: true, allowTemplateLiterals: false }
    ],
    curly: ['error', 'all'],
    eqeqeq: 'error',
    'prefer-arrow-callback': 'error'
  }
};


================================================
FILE: .flake8
================================================
[flake8]
ignore = E501, W503, E402
builtins = c, get_config
exclude =
    .cache,
    .github,
    docs,
    setup.py
enable-extensions = G
extend-ignore =
    G001, G002, G004, G200, G201, G202,
    # black adds spaces around ':'
    E203,
per-file-ignores =
    # B011: Do not call assert False since python -O removes these calls
    # F841 local variable 'foo' is assigned to but never used
    tests/*: B011, F841


================================================
FILE: .gitconfig
================================================
[blame]
    ignoreRevsFile = .git-blame-ignore-revs


================================================
FILE: .github/workflows/binder-badge.yml
================================================
name: Binder Badge
on:
  pull_request_target:
    types: [opened]

jobs:
  binder:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    steps:
      - uses: jupyterlab/maintainer-tools/.github/actions/binder-link@v1
        with:
          github_token: ${{ secrets.github_token }}


================================================
FILE: .github/workflows/check-release.yml
================================================
name: Check Release
on:
  push:
    branches: ["main"]
  pull_request:
    branches: ["*"]

permissions:
  contents: write

jobs:
  check_release:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Base Setup
        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Check Release
        uses: jupyter-server/jupyter_releaser/.github/actions/check-release@v2
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Upload Distributions
        uses: actions/upload-artifact@v4
        with:
          name: jupyter-collaboration-dist-${{ github.run_number }}
          path: |
            .jupyter_releaser_checkout/dist


================================================
FILE: .github/workflows/enforce-label.yml
================================================
name: Enforce PR label

on:
  pull_request:
    types: [labeled, unlabeled, opened, edited, synchronize]
jobs:
  enforce-label:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: write
    steps:
      - name: enforce-triage-label
        uses: jupyterlab/maintainer-tools/.github/actions/enforce-label@v1


================================================
FILE: .github/workflows/license-header.yml
================================================
name: Fix License Headers

on:
  pull_request_target:

jobs:
  header-license-fix:
    runs-on: ubuntu-latest

    permissions:
      contents: write
      pull-requests: write

    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - name: Configure git to use https
        run: git config --global hub.protocol https

      - name: Checkout the branch from the PR that triggered the job
        run: gh pr checkout ${{ github.event.pull_request.number }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Fix License Header
        uses: apache/skywalking-eyes/header@v0.4.0
        with:
          mode: fix

      - name: List files changed
        id: files-changed
        shell: bash -l {0}
        run: |
          set -ex
          export CHANGES=$(git status --porcelain | tee modified.log | wc -l)
          cat modified.log
          # Remove the log otherwise it will be committed
          rm modified.log

          echo "N_CHANGES=${CHANGES}" >> $GITHUB_OUTPUT

          git diff

      - name: Commit any changes
        if: steps.files-changed.outputs.N_CHANGES != '0'
        shell: bash -l {0}
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"

          git pull --no-tags

          git add *
          git commit -m "Automatic application of license header"

          git config push.default upstream
          git push
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/prep-release.yml
================================================
name: "Step 1: Prep Release"
on:
  workflow_dispatch:
    inputs:
      version_spec:
        description: "New Version Specifier"
        default: "next"
        required: false
      branch:
        description: "The branch to target"
        required: false
      post_version_spec:
        description: "Post Version Specifier"
        required: false
      silent:
        description: "Set a placeholder in the changelog and don't publish the release."
        required: false
        type: boolean
      since:
        description: "Use PRs with activity since this date or git reference"
        required: false
      since_last_stable:
        description: "Use PRs with activity since the last stable git tag"
        required: false
        type: boolean
jobs:
  prep_release:
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Prep Release
        id: prep-release
        uses: jupyter-server/jupyter_releaser/.github/actions/prep-release@v2
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          version_spec: ${{ github.event.inputs.version_spec }}
          silent: ${{ github.event.inputs.silent }}
          post_version_spec: ${{ github.event.inputs.post_version_spec }}
          target: ${{ github.event.inputs.target }}
          branch: ${{ github.event.inputs.branch }}
          since: ${{ github.event.inputs.since }}
          since_last_stable: ${{ github.event.inputs.since_last_stable }}

      - name: "** Next Step **"
        run: |
          echo "Optional): Review Draft Release: ${{ steps.prep-release.outputs.release_url }}"


================================================
FILE: .github/workflows/publish-changelog.yml
================================================
name: "Publish Changelog"
on:
  release:
    types: [published]

  workflow_dispatch:
    inputs:
      branch:
        description: "The branch to target"
        required: false

jobs:
  publish_changelog:
    runs-on: ubuntu-latest
    environment: release
    steps:
      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - uses: actions/create-github-app-token@v1
        id: app-token
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Publish changelog
        id: publish-changelog
        uses: jupyter-server/jupyter_releaser/.github/actions/publish-changelog@v2
        with:
          token: ${{ steps.app-token.outputs.token }}
          branch: ${{ github.event.inputs.branch }}

      - name: "** Next Step **"
        run: |
          echo "Merge the changelog update PR: ${{ steps.publish-changelog.outputs.pr_url }}"


================================================
FILE: .github/workflows/publish-release.yml
================================================
name: "Step 2: Publish Release"
on:
  workflow_dispatch:
    inputs:
      branch:
        description: "The target branch"
        required: false
      release_url:
        description: "The URL of the draft GitHub release"
        required: false
      steps_to_skip:
        description: "Comma separated list of steps to skip"
        required: false

jobs:
  publish_release:
    runs-on: ubuntu-latest
    environment: release
    permissions:
      id-token: write
    steps:
      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - uses: actions/create-github-app-token@v1
        id: app-token
        with:
          app-id: ${{ vars.APP_ID }}
          private-key: ${{ secrets.APP_PRIVATE_KEY }}

      - name: Populate Release
        id: populate-release
        uses: jupyter-server/jupyter_releaser/.github/actions/populate-release@v2
        with:
          token: ${{ steps.app-token.outputs.token }}
          branch: ${{ github.event.inputs.branch }}
          release_url: ${{ github.event.inputs.release_url }}
          steps_to_skip: ${{ github.event.inputs.steps_to_skip }}

      - name: Finalize Release
        id: finalize-release
        env:
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
        uses: jupyter-server/jupyter_releaser/.github/actions/finalize-release@v2
        with:
          token: ${{ steps.app-token.outputs.token }}
          release_url: ${{ steps.populate-release.outputs.release_url }}

      - name: "** Next Step **"
        if: ${{ success() }}
        run: |
          echo "Verify the final release"
          echo ${{ steps.finalize-release.outputs.release_url }}

      - name: "** Failure Message **"
        if: ${{ failure() }}
        run: |
          echo "Failed to Publish the Draft Release Url:"
          echo ${{ steps.populate-release.outputs.release_url }}


================================================
FILE: .github/workflows/test.yml
================================================
name: Tests
on:
  push:
    branches: ["main"]
  pull_request:

  schedule:
    - cron: "0 8 * * *"

jobs:
  # Run "pre-commit run --all-files --hook-stage=manual"
  pre-commit:
    name: Run pre-commit hook
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.13'

      - name: Base Setup
        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Install dependencies
        run: |
          pip install "jupyterlab>=4.4.0,<5"
          jlpm install

      - name: Run pre-commit
        uses: pre-commit/action@v3.0.1
        with:
          extra_args: --all-files --hook-stage=manual

      - name: Help message if pre-commit fail
        if: ${{ failure() }}
        run: |
          echo "You can install pre-commit hooks to automatically run formatting"
          echo "on each commit with:"
          echo "    pre-commit install"
          echo "or you can run by hand on staged files with"
          echo "    pre-commit run"
          echo "or after-the-fact on already committed files with"
          echo "    pre-commit run --all-files --hook-stage=manual"

      - name: Lint frontend
        run: |
          jlpm run lint:check

  test-js:
    name: Test JavaScript
    runs-on: ubuntu-latest
    needs: [pre-commit]
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.13'

      - name: Base Setup
        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Install dependencies
        run: |
          yarn dev

      - name: Run Tests
        run: |
          set -eux
          jlpm run test

  test-py:
    name: Test Python
    needs: [pre-commit]
    runs-on: ${{ matrix.os }}
    timeout-minutes: 20
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"]
        # PyPy is not supported because we use the file_id_manager. See:
        # https://github.com/jupyter-server/jupyter_server_fileid/issues/44
        #include:
        #  - os: ubuntu-latest
        #    python-version: "pypy-3.8"

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Base Setup
        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Install the Python dependencies
        run: |
          python -m pip install codecov
          yarn dev

      - name: List installed packages
        run: |
          pip freeze
          pip check
          pip list

      - name: Run the tests with Coverage
        if: ${{ !startsWith(matrix.python-version, 'pypy') && !startsWith(runner.os, 'Windows') }}
        run: |
          python -m pytest -vv --cov jupyter_server_ydoc --cov-branch --cov-report term-missing:skip-covered

      #- name: Run the tests on pypy
      #  if: ${{ startsWith(matrix.python-version, 'pypy') }}
      #  run: |
          # PyPy is not supported because we use the file_id_manager. See:
          # https://github.com/jupyter-server/jupyter_server_fileid/issues/44
          # python -W ignore::ImportWarning -m pytest -vv

      - name: Run the tests on Windows
        if: ${{ startsWith(runner.os, 'Windows') }}
        run: |
          python -W ignore::ImportWarning -m pytest -vv --cov jupyter_server_ydoc --cov-branch --cov-report term-missing:skip-covered

      - uses: jupyterlab/maintainer-tools/.github/actions/upload-coverage@v1

      - name: Build the extension
        if: ${{ !startsWith(matrix.python-version, 'pypy') }}
        shell: bash
        run: |
          set -eux
          jupyter server extension list
          jupyter server extension list 2>&1 | grep -ie "jupyter_server_ydoc.*OK"
          jupyter labextension list
          jupyter labextension list 2>&1 | grep -ie "@jupyter/collaboration-extension.*OK"
          python -m jupyterlab.browser_check

  test_minimum_versions:
    name: Test Minimum Versions
    needs: [test-js, test-py]
    timeout-minutes: 20
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Base Setup
        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
        with:
          python_version: "3.10"
          dependency_type: minimum

      - name: Install the Python dependencies
        run: |
          yarn dev

      - name: Run the unit tests
        run: |
          pytest -vv -W default || pytest -vv -W default --lf

  test_prereleases:
    name: Test Prereleases
    needs: [test-js, test-py]
    runs-on: ubuntu-latest
    timeout-minutes: 20
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Base Setup
        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Install the Python dependencies
        run: |
          yarn dev

      - name: List installed packages
        run: |
          pip freeze
          pip check

      - name: Run the tests
        run: |
          pytest -vv -W default || pytest -vv --lf

  make_sdist:
    name: Make SDist
    needs: [pre-commit]
    runs-on: ubuntu-latest
    timeout-minutes: 10
    steps:
      - uses: actions/checkout@v4
      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
      - name: Build SDist
        shell: bash
        run: |
          pip install build
          find projects/* -maxdepth 0 -type d | xargs -L 1 python -m build --sdist --outdir dist/
      - uses: actions/upload-artifact@v4
        with:
          name: "sdist"
          path: dist/*.tar.gz

  test_sdist:
    runs-on: ubuntu-latest
    needs: [make_sdist]
    name: Install from SDist and Test
    timeout-minutes: 15
    steps:
      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Download sdist
        uses: actions/download-artifact@v4

      - name: Install From SDist
        shell: bash
        run: |
          echo "::group::Install from SDist"
          set -ex
          cd sdist
          mkdir test
          find *.tar.gz | xargs -L 1 tar -C ./test -zxvf
          cd test
          python -m pip install "jupyterlab>=4.4.0,<5"
          # install each from source, except for `jupyter_collaboration` metapackage
          find ./* -maxdepth 0 -type d -not -path './jupyter_collaboration-*' | sed 's/$/[test]/' | xargs -L 1 python -m pip install
          echo "::endgroup::"

      - name: Run Test
        shell: bash
        run: |
          echo "::group::Run test"
          set -ex
          cd sdist/test

          # for now only `jupyter_server_ydoc` includes python tests
          cd jupyter_server_ydoc*
          python -m pytest -vv -raXxs --durations 10 --color=yes
          cd ..

          jupyter server extension list
          jupyter server extension list 2>&1 | grep -ie "jupyter_server_ydoc.*OK"
          jupyter labextension list
          jupyter labextension list 2>&1 | grep -ie "@jupyter/collaboration-extension.*OK"
          python -m jupyterlab.browser_check --no-browser-test
          echo "::endgroup::"

  check_links:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - uses: actions/checkout@v4
      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
      - uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1
        with:
          ignore_links: "../api/*.* ./api/* .*/images/[\\w-]+.png https://docs.github.com/en/.* https://github.com/.* https://mybinder.org/v2/gh/jupyterlab/jupyter_collaboration/.* https://www.npmjs.com.*"

  ui_tests:
    runs-on: ubuntu-latest
    needs: [make_sdist]
    timeout-minutes: 30
    env:
      PLAYWRIGHT_BROWSERS_PATH: ${{ github.workspace }}/pw-browsers
    steps:
      - uses: actions/checkout@v4
      - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
      - name: Download sdist
        uses: actions/download-artifact@v4
        with:
          name: "sdist"
      - name: Install dependencies
        run: |
          pip install "jupyterlab>=4.4.0" jupyter_collaboration_ui*.tar.gz jupyter_docprovider*.tar.gz jupyter_server_ydoc*.tar.gz

      - name: Install playwright
        env:
          PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1
        run: |
          jlpm install
        working-directory: ui-tests
      - name: Set up browser cache
        uses: actions/cache@v3
        with:
          path: |
            ${{ github.workspace }}/pw-browsers
          key: ${{ runner.os }}-${{ hashFiles('ui-tests/yarn.lock') }}
      - name: Install browser
        run: jlpm playwright install chromium
        working-directory: ui-tests

      - name: run tests
        working-directory: ui-tests
        run: |
          jlpm test
          TIMELINE_FEATURE=1 jlpm test:timeline
      - name: Upload Playwright Test report
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: jupyter-collaboration-playwright-report
          path: |
            ui-tests/test-results
            ui-tests/playwright-report


================================================
FILE: .github/workflows/update_galata_references.yaml
================================================
name: Update Galata References

on:
  issue_comment:
    types: [created, edited]

permissions:
  contents: write
  pull-requests: write

defaults:
  run:
    shell: bash -l {0}

jobs:
  update-snapshots:
    runs-on: ubuntu-latest
    if: github.event.issue.pull_request && contains(github.event.comment.body, 'please update snapshots')

    steps:
      - uses: jupyterlab/maintainer-tools/.github/actions/update-snapshots-checkout@main
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

      - name: Base Setup
        uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

      - name: Build the extension
        run: yarn dev

      - uses: jupyterlab/maintainer-tools/.github/actions/update-snapshots@main
        with:
          npm_client: jlpm
          github_token: ${{ secrets.GITHUB_TOKEN }}
          start_server_script: 'null'
          test_folder: ui-tests


================================================
FILE: .gitignore
================================================
*.bundle.*
lib/
node_modules/
*.log
.eslintcache
.stylelintcache
*.egg-info/
.ipynb_checkpoints
*.tsbuildinfo
package-lock.json
docs/source/ts
.jupyter
labextension

# Integration tests
ui-tests/test-results/
ui-tests/playwright-report/

# Created by https://www.gitignore.io/api/python
# Edit at https://www.gitignore.io/?templates=python

### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage/
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# Mr Developer
.mr.developer.cfg
.project
.pydevproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# End of https://www.gitignore.io/api/python

# OSX files
.DS_Store
docs/source/changelog.md

.pnp.*
.yarn/
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
packages/docprovider/junit.xml
.jupyter_ystore.db


================================================
FILE: .licenserc.yaml
================================================
header:
  license:
    spdx-id: BSD-3-Clause
    copyright-owner: Jupyter Development Team
    software-name: JupyterLab
    content: |
      Copyright (c) Jupyter Development Team.
      Distributed under the terms of the Modified BSD License.

  paths-ignore:
    - '**/*.ipynb'
    - '**/*.json'
    - '**/*.md'
    - '**/*.svg'
    - '**/*.yml'
    - '**/*.yaml'
    - '**/build'
    - '**/lib'
    - '**/node_modules'
    - '*.map.js'
    - '*.bundle.js'
    - '**/.*'
    - 'binder/postBuild'
    - 'coverage'
    - 'LICENSE'
    - 'yarn.lock'
    - '**/_version.py'

  comment: on-failure


================================================
FILE: .npmignore
================================================
node_modules


================================================
FILE: .pre-commit-config.yaml
================================================
ci:
  # skip any check that needs internet access
  skip: [prettier, eslint, stylelint]

default_language_version:
  node: system

repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.4.0
    hooks:
      - id: end-of-file-fixer
        # Version bump conflict with this hook
        exclude: "^package\\.json$"
      - id: check-case-conflict
      - id: check-executables-have-shebangs
      - id: requirements-txt-fixer
      - id: check-added-large-files
      - id: check-case-conflict
      - id: check-toml
      - id: check-yaml
      - id: debug-statements
      - id: forbid-new-submodules
      - id: check-builtin-literals
      - id: trailing-whitespace

  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.8.0
    hooks:
      - id: ruff
        args: [ --fix ]
      - id: ruff-format

  - repo: https://github.com/PyCQA/doc8
    rev: v1.1.1
    hooks:
      - id: doc8
        args: [--max-line-length=200]
        stages: [manual]

  - repo: https://github.com/pre-commit/mirrors-mypy
    rev: v1.15.0
    hooks:
      - id: mypy
        exclude: "(^binder/jupyter_config\\.py$)|(^scripts/bump_version\\.py$)|(/setup\\.py$)"
        args: ["--config-file", "pyproject.toml"]
        additional_dependencies: [tornado, pytest, 'pycrdt-websocket>=0.16.0,<0.17.0']
        stages: [manual]

  - repo: https://github.com/python-jsonschema/check-jsonschema
    rev: 0.37.1
    hooks:
      - id: check-github-workflows
        stages: [manual]

  - repo: local
    hooks:
      - id: prettier
        name: prettier
        entry: 'jlpm run prettier'
        language: node
        types_or: [json, ts, tsx, javascript, jsx, css]
      - id: eslint
        name: eslint
        entry: 'jlpm run eslint'
        language: node
        types_or: [ts, tsx, javascript, jsx]
      - id: stylelint
        name: stylelint
        entry: 'jlpm run stylelint'
        language: node
        types: [css]


================================================
FILE: .prettierignore
================================================
**/lib
**/node_modules
**/style
**/package.json
**/tsconfig.json
**/tsconfig.test.json
**/*.d.ts
**/test
**/labextension

docs
tests
jupyter-config
jupyter_collaboration
.mypy_cache


================================================
FILE: .prettierrc
================================================
{
  "singleQuote": true,
  "trailingComma": "none",
  "arrowParens": "avoid",
  "endOfLine": "auto"
}


================================================
FILE: .readthedocs.yaml
================================================
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details

version: 2

build:
  os: ubuntu-22.04
  tools:
    python: "3.11"
    nodejs: "18"

# Build documentation in the docs/ directory with Sphinx
sphinx:
   configuration: docs/source/conf.py

python:
  install:
    - method: pip
      path: .
      extra_requirements:
        - docs


================================================
FILE: .stylelintrc
================================================
{
  "extends": [
    "stylelint-config-recommended",
    "stylelint-config-standard",
    "stylelint-prettier/recommended"
  ],
  "rules": {
    "property-no-vendor-prefix": null,
    "selector-no-vendor-prefix": null,
    "value-no-vendor-prefix": null,
    "selector-class-pattern": null
  }
}


================================================
FILE: .yarnrc.yml
================================================
nodeLinker: node-modules
enableScripts: false


================================================
FILE: CHANGELOG.md
================================================
# Changelog

All notable changes to this project will be documented in this file.

<!-- <START NEW CHANGELOG ENTRY> -->

## 4.4.0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.3.0...c6978b434fc2bd1accb41a503ab1fac10496b949))

### New features added

- Make document provider pluggable [#558](https://github.com/jupyterlab/jupyter-collaboration/pull/558) ([@davidbrochart](https://github.com/davidbrochart), [@Copilot](https://github.com/Copilot), [@SylvainCorlay](https://github.com/SylvainCorlay), [@krassowski](https://github.com/krassowski), [@martinRenou](https://github.com/martinRenou))

### Enhancements made

- Side Panel: respect `avatar_url` [#582](https://github.com/jupyterlab/jupyter-collaboration/pull/582) ([@martinRenou](https://github.com/martinRenou), [@brichet](https://github.com/brichet), [@krassowski](https://github.com/krassowski))
- Add `create: bool` argument to `get_document()` API [#569](https://github.com/jupyterlab/jupyter-collaboration/pull/569) ([@abbbe](https://github.com/abbbe), [@Darshan808](https://github.com/Darshan808), [@krassowski](https://github.com/krassowski), [@mediamead](https://github.com/mediamead))
- Export editor facet to allow settings cursors from third party extensions [#562](https://github.com/jupyterlab/jupyter-collaboration/pull/562) ([@brichet](https://github.com/brichet), [@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))

### Bugs fixed

- Depend on `IDocumentManager` instead of fetching settings directly [#574](https://github.com/jupyterlab/jupyter-collaboration/pull/574) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Fix content duplication when document room goes away [#571](https://github.com/jupyterlab/jupyter-collaboration/pull/571) ([@krassowski](https://github.com/krassowski), [@Copilot](https://github.com/Copilot), [@SylvainCorlay](https://github.com/SylvainCorlay), [@davidbrochart](https://github.com/davidbrochart))
- Fix the share button in the top area [#570](https://github.com/jupyterlab/jupyter-collaboration/pull/570) ([@jtpio](https://github.com/jtpio), [@brichet](https://github.com/brichet), [@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Align JupyterLab version in one more place [#581](https://github.com/jupyterlab/jupyter-collaboration/pull/581) ([@krassowski](https://github.com/krassowski), [@jtpio](https://github.com/jtpio))
- Test using stable versions [#580](https://github.com/jupyterlab/jupyter-collaboration/pull/580) ([@krassowski](https://github.com/krassowski), [@brichet](https://github.com/brichet))
- Update to the newer `check-jsonschema` pre-commit hook [#579](https://github.com/jupyterlab/jupyter-collaboration/pull/579) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Update to TypeScript 5.9 [#576](https://github.com/jupyterlab/jupyter-collaboration/pull/576) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Rename check release upload artifact [#575](https://github.com/jupyterlab/jupyter-collaboration/pull/575) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Require Python 3.10, update classifiers [#572](https://github.com/jupyterlab/jupyter-collaboration/pull/572) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Disable `postinstall` scripts [#565](https://github.com/jupyterlab/jupyter-collaboration/pull/565) ([@krassowski](https://github.com/krassowski), [@davidbrochart](https://github.com/davidbrochart))
- Update httpx-ws >=0.9.0 [#561](https://github.com/jupyterlab/jupyter-collaboration/pull/561) ([@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))

### Contributors to this release

The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2026-03-31&to=2026-05-11&type=c))

@abbbe ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aabbbe+updated%3A2026-03-31..2026-05-11&type=Issues)) | @brichet ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2026-03-31..2026-05-11&type=Issues)) | @Copilot ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ACopilot+updated%3A2026-03-31..2026-05-11&type=Issues)) | @Darshan808 ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2026-03-31..2026-05-11&type=Issues)) | @davidbrochart ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2026-03-31..2026-05-11&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2026-03-31..2026-05-11&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2026-03-31..2026-05-11&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2026-03-31..2026-05-11&type=Issues)) | @mediamead ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Amediamead+updated%3A2026-03-31..2026-05-11&type=Issues)) | @SylvainCorlay ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ASylvainCorlay+updated%3A2026-03-31..2026-05-11&type=Issues))

<!-- <END NEW CHANGELOG ENTRY> -->

## 4.4.0rc0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.3.0...c6978b434fc2bd1accb41a503ab1fac10496b949))

### New features added

- Make document provider pluggable [#558](https://github.com/jupyterlab/jupyter-collaboration/pull/558) ([@davidbrochart](https://github.com/davidbrochart), [@Copilot](https://github.com/Copilot), [@SylvainCorlay](https://github.com/SylvainCorlay), [@krassowski](https://github.com/krassowski), [@martinRenou](https://github.com/martinRenou))

### Enhancements made

- Side Panel: respect `avatar_url` [#582](https://github.com/jupyterlab/jupyter-collaboration/pull/582) ([@martinRenou](https://github.com/martinRenou), [@brichet](https://github.com/brichet), [@krassowski](https://github.com/krassowski))
- Add `create: bool` argument to `get_document()` API [#569](https://github.com/jupyterlab/jupyter-collaboration/pull/569) ([@abbbe](https://github.com/abbbe), [@Darshan808](https://github.com/Darshan808), [@krassowski](https://github.com/krassowski), [@mediamead](https://github.com/mediamead))
- Export editor facet to allow settings cursors from third party extensions [#562](https://github.com/jupyterlab/jupyter-collaboration/pull/562) ([@brichet](https://github.com/brichet), [@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))

### Bugs fixed

- Depend on `IDocumentManager` instead of fetching settings directly [#574](https://github.com/jupyterlab/jupyter-collaboration/pull/574) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Fix content duplication when document room goes away [#571](https://github.com/jupyterlab/jupyter-collaboration/pull/571) ([@krassowski](https://github.com/krassowski), [@Copilot](https://github.com/Copilot), [@SylvainCorlay](https://github.com/SylvainCorlay), [@davidbrochart](https://github.com/davidbrochart))
- Fix the share button in the top area [#570](https://github.com/jupyterlab/jupyter-collaboration/pull/570) ([@jtpio](https://github.com/jtpio), [@brichet](https://github.com/brichet), [@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Align JupyterLab version in one more place [#581](https://github.com/jupyterlab/jupyter-collaboration/pull/581) ([@krassowski](https://github.com/krassowski), [@jtpio](https://github.com/jtpio))
- Test using stable versions [#580](https://github.com/jupyterlab/jupyter-collaboration/pull/580) ([@krassowski](https://github.com/krassowski), [@brichet](https://github.com/brichet))
- Update to the newer `check-jsonschema` pre-commit hook [#579](https://github.com/jupyterlab/jupyter-collaboration/pull/579) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Update to TypeScript 5.9 [#576](https://github.com/jupyterlab/jupyter-collaboration/pull/576) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Rename check release upload artifact [#575](https://github.com/jupyterlab/jupyter-collaboration/pull/575) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Require Python 3.10, update classifiers [#572](https://github.com/jupyterlab/jupyter-collaboration/pull/572) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Disable `postinstall` scripts [#565](https://github.com/jupyterlab/jupyter-collaboration/pull/565) ([@krassowski](https://github.com/krassowski), [@davidbrochart](https://github.com/davidbrochart))
- Update httpx-ws >=0.9.0 [#561](https://github.com/jupyterlab/jupyter-collaboration/pull/561) ([@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))

### Contributors to this release

The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2026-03-31&to=2026-05-08&type=c))

@abbbe ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aabbbe+updated%3A2026-03-31..2026-05-08&type=Issues)) | @brichet ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2026-03-31..2026-05-08&type=Issues)) | @Copilot ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ACopilot+updated%3A2026-03-31..2026-05-08&type=Issues)) | @Darshan808 ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2026-03-31..2026-05-08&type=Issues)) | @davidbrochart ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2026-03-31..2026-05-08&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2026-03-31..2026-05-08&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2026-03-31..2026-05-08&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2026-03-31..2026-05-08&type=Issues)) | @mediamead ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Amediamead+updated%3A2026-03-31..2026-05-08&type=Issues)) | @SylvainCorlay ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ASylvainCorlay+updated%3A2026-03-31..2026-05-08&type=Issues))

## 4.4.0beta0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.4.0-alpha.0...c6978b434fc2bd1accb41a503ab1fac10496b949))

### Enhancements made

- Side Panel: respect `avatar_url` [#582](https://github.com/jupyterlab/jupyter-collaboration/pull/582) ([@martinRenou](https://github.com/martinRenou), [@brichet](https://github.com/brichet), [@krassowski](https://github.com/krassowski))

### Contributors to this release

The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2026-05-04&to=2026-05-06&type=c))

@brichet ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2026-05-04..2026-05-06&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2026-05-04..2026-05-06&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2026-05-04..2026-05-06&type=Issues))

## 4.4.0alpha0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.3.0...690496020ae8bce06f8edc52d6f57cdbbe0d2475))

### New features added

- Make document provider pluggable [#558](https://github.com/jupyterlab/jupyter-collaboration/pull/558) ([@davidbrochart](https://github.com/davidbrochart), [@Copilot](https://github.com/Copilot), [@SylvainCorlay](https://github.com/SylvainCorlay), [@krassowski](https://github.com/krassowski), [@martinRenou](https://github.com/martinRenou))

### Enhancements made

- Add `create: bool` argument to `get_document()` API [#569](https://github.com/jupyterlab/jupyter-collaboration/pull/569) ([@abbbe](https://github.com/abbbe), [@Darshan808](https://github.com/Darshan808), [@krassowski](https://github.com/krassowski), [@mediamead](https://github.com/mediamead))
- Export editor facet to allow settings cursors from third party extensions [#562](https://github.com/jupyterlab/jupyter-collaboration/pull/562) ([@brichet](https://github.com/brichet), [@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))

### Bugs fixed

- Depend on `IDocumentManager` instead of fetching settings directly [#574](https://github.com/jupyterlab/jupyter-collaboration/pull/574) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Fix content duplication when document room goes away [#571](https://github.com/jupyterlab/jupyter-collaboration/pull/571) ([@krassowski](https://github.com/krassowski), [@Copilot](https://github.com/Copilot), [@SylvainCorlay](https://github.com/SylvainCorlay), [@davidbrochart](https://github.com/davidbrochart))
- Fix the share button in the top area [#570](https://github.com/jupyterlab/jupyter-collaboration/pull/570) ([@jtpio](https://github.com/jtpio), [@brichet](https://github.com/brichet), [@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Align JupyterLab version in one more place [#581](https://github.com/jupyterlab/jupyter-collaboration/pull/581) ([@krassowski](https://github.com/krassowski), [@jtpio](https://github.com/jtpio))
- Test using stable versions [#580](https://github.com/jupyterlab/jupyter-collaboration/pull/580) ([@krassowski](https://github.com/krassowski), [@brichet](https://github.com/brichet))
- Update to the newer `check-jsonschema` pre-commit hook [#579](https://github.com/jupyterlab/jupyter-collaboration/pull/579) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Update to TypeScript 5.9 [#576](https://github.com/jupyterlab/jupyter-collaboration/pull/576) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Rename check release upload artifact [#575](https://github.com/jupyterlab/jupyter-collaboration/pull/575) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Require Python 3.10, update classifiers [#572](https://github.com/jupyterlab/jupyter-collaboration/pull/572) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Disable `postinstall` scripts [#565](https://github.com/jupyterlab/jupyter-collaboration/pull/565) ([@krassowski](https://github.com/krassowski), [@davidbrochart](https://github.com/davidbrochart))
- Update httpx-ws >=0.9.0 [#561](https://github.com/jupyterlab/jupyter-collaboration/pull/561) ([@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))

### Contributors to this release

The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2026-03-31&to=2026-05-04&type=c))

@abbbe ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aabbbe+updated%3A2026-03-31..2026-05-04&type=Issues)) | @brichet ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2026-03-31..2026-05-04&type=Issues)) | @Copilot ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ACopilot+updated%3A2026-03-31..2026-05-04&type=Issues)) | @Darshan808 ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2026-03-31..2026-05-04&type=Issues)) | @davidbrochart ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2026-03-31..2026-05-04&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2026-03-31..2026-05-04&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2026-03-31..2026-05-04&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2026-03-31..2026-05-04&type=Issues)) | @mediamead ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Amediamead+updated%3A2026-03-31..2026-05-04&type=Issues)) | @SylvainCorlay ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ASylvainCorlay+updated%3A2026-03-31..2026-05-04&type=Issues))

## 4.3.0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.2.1...9293fa90884423049a812d8573e9d8737276d9cf))

### Enhancements made

- Improve UX for reconnecting after server restart [#548](https://github.com/jupyterlab/jupyter-collaboration/pull/548) ([@Darshan808](https://github.com/Darshan808), [@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))
- Use jupyter-ydoc's `aget`/`aset` [#544](https://github.com/jupyterlab/jupyter-collaboration/pull/544) ([@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))

### Bugs fixed

- Skip redundant `aset` on out-of-band changes [#556](https://github.com/jupyterlab/jupyter-collaboration/pull/556) ([@jordanhboxer](https://github.com/jordanhboxer), [@Hnasar](https://github.com/Hnasar), [@claude](https://github.com/claude), [@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))
- Fix error handling on corrupted files [#550](https://github.com/jupyterlab/jupyter-collaboration/pull/550) ([@krassowski](https://github.com/krassowski), [@Copilot](https://github.com/Copilot), [@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Enable Ruff `E, F, I` rules and lint codebase [#553](https://github.com/jupyterlab/jupyter-collaboration/pull/553) ([@Darshan808](https://github.com/Darshan808), [@krassowski](https://github.com/krassowski))
- Update snapshots after JupyterLab 4.5.6 release [#551](https://github.com/jupyterlab/jupyter-collaboration/pull/551) ([@krassowski](https://github.com/krassowski), [@Darshan808](https://github.com/Darshan808))
- Disambiguate log messages [#543](https://github.com/jupyterlab/jupyter-collaboration/pull/543) ([@Carreau](https://github.com/Carreau), [@krassowski](https://github.com/krassowski))

### Contributors to this release

The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2026-02-05&to=2026-03-31&type=c))

@Carreau ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ACarreau+updated%3A2026-02-05..2026-03-31&type=Issues)) | @claude ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aclaude+updated%3A2026-02-05..2026-03-31&type=Issues)) | @Copilot ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ACopilot+updated%3A2026-02-05..2026-03-31&type=Issues)) | @Darshan808 ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2026-02-05..2026-03-31&type=Issues)) | @davidbrochart ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2026-02-05..2026-03-31&type=Issues)) | @Hnasar ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AHnasar+updated%3A2026-02-05..2026-03-31&type=Issues)) | @jordanhboxer ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajordanhboxer+updated%3A2026-02-05..2026-03-31&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2026-02-05..2026-03-31&type=Issues))

## 4.3.0rc0

No merged PRs

## 4.3.0beta0

No merged PRs

## 4.3.0alpha0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.2.1...9293fa90884423049a812d8573e9d8737276d9cf))

### Enhancements made

- Improve UX for reconnecting after server restart [#548](https://github.com/jupyterlab/jupyter-collaboration/pull/548) ([@Darshan808](https://github.com/Darshan808), [@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))
- Use jupyter-ydoc's `aget`/`aset` [#544](https://github.com/jupyterlab/jupyter-collaboration/pull/544) ([@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))

### Bugs fixed

- Skip redundant `aset` on out-of-band changes [#556](https://github.com/jupyterlab/jupyter-collaboration/pull/556) ([@jordanhboxer](https://github.com/jordanhboxer), [@Hnasar](https://github.com/Hnasar), [@claude](https://github.com/claude), [@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))
- Fix error handling on corrupted files [#550](https://github.com/jupyterlab/jupyter-collaboration/pull/550) ([@krassowski](https://github.com/krassowski), [@Copilot](https://github.com/Copilot), [@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Enable Ruff `E, F, I` rules and lint codebase [#553](https://github.com/jupyterlab/jupyter-collaboration/pull/553) ([@Darshan808](https://github.com/Darshan808), [@krassowski](https://github.com/krassowski))
- Update snapshots after JupyterLab 4.5.6 release [#551](https://github.com/jupyterlab/jupyter-collaboration/pull/551) ([@krassowski](https://github.com/krassowski), [@Darshan808](https://github.com/Darshan808))
- Disambiguate log messages [#543](https://github.com/jupyterlab/jupyter-collaboration/pull/543) ([@Carreau](https://github.com/Carreau), [@krassowski](https://github.com/krassowski))

### Contributors to this release

The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2026-02-05&to=2026-03-27&type=c))

@Carreau ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ACarreau+updated%3A2026-02-05..2026-03-27&type=Issues)) | @claude ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aclaude+updated%3A2026-02-05..2026-03-27&type=Issues)) | @Copilot ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ACopilot+updated%3A2026-02-05..2026-03-27&type=Issues)) | @Darshan808 ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2026-02-05..2026-03-27&type=Issues)) | @davidbrochart ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2026-02-05..2026-03-27&type=Issues)) | @Hnasar ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AHnasar+updated%3A2026-02-05..2026-03-27&type=Issues)) | @jordanhboxer ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajordanhboxer+updated%3A2026-02-05..2026-03-27&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2026-02-05..2026-03-27&type=Issues))

## 4.2.1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.2.0...22cc16de10597e59a032675144d8d37a12c6d485))

### Bugs fixed

- Save immediately when triggering manual save [#540](https://github.com/jupyterlab/jupyter-collaboration/pull/540) ([@Carreau](https://github.com/Carreau), [@krassowski](https://github.com/krassowski))
- Use `serverSettings` for API requests [#539](https://github.com/jupyterlab/jupyter-collaboration/pull/539) ([@krassowski](https://github.com/krassowski), [@jtpio](https://github.com/jtpio))

### Maintenance and upkeep improvements

- Add testing on Python 3.14 [#541](https://github.com/jupyterlab/jupyter-collaboration/pull/541) ([@Carreau](https://github.com/Carreau), [@krassowski](https://github.com/krassowski))
- Update snapshots bot checkout and permission check [#536](https://github.com/jupyterlab/jupyter-collaboration/pull/536) ([@martinRenou](https://github.com/martinRenou), [@davidbrochart](https://github.com/davidbrochart), [@krassowski](https://github.com/krassowski))
- Update shared link icon snapshot to fix UI tests [#534](https://github.com/jupyterlab/jupyter-collaboration/pull/534) ([@krassowski](https://github.com/krassowski), [@davidbrochart](https://github.com/davidbrochart))
- Improve file watcher cancellation message and increase test coverage [#533](https://github.com/jupyterlab/jupyter-collaboration/pull/533) ([@krassowski](https://github.com/krassowski), [@davidbrochart](https://github.com/davidbrochart))
- Fix tests hanging on CI due to pytest configured to turn warnings into errors [#531](https://github.com/jupyterlab/jupyter-collaboration/pull/531) ([@krassowski](https://github.com/krassowski), [@davidbrochart](https://github.com/davidbrochart))
- Add a test for file watcher cleanup after delay [#529](https://github.com/jupyterlab/jupyter-collaboration/pull/529) ([@krassowski](https://github.com/krassowski), [@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/use/#how-does-this-tool-define-contributions-in-the-reports).

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-12-10&to=2026-02-05&type=c))

@Carreau ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ACarreau+updated%3A2025-12-10..2026-02-05&type=Issues)) | @davidbrochart ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2025-12-10..2026-02-05&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2025-12-10..2026-02-05&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-12-10..2026-02-05&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2025-12-10..2026-02-05&type=Issues))

## 4.2.0

No merged PRs

## 4.2.0rc0

No merged PRs

## 4.2.0beta0

No merged PRs

## 4.2.0alpha0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.1.2...71ab261f4e6cb52e431496ec2bc53fc3883dc5d6))

### Enhancements made

- Stop file watcher on persistent errors [#520](https://github.com/jupyterlab/jupyter-collaboration/pull/520) ([@krassowski](https://github.com/krassowski))

### Bugs fixed

- `RtcContentProvider`: depend on `DefaultDrive` rather than on the `RestContentProvider` for routing `get()` and `save()` [#525](https://github.com/jupyterlab/jupyter-collaboration/pull/525) ([@martinRenou](https://github.com/martinRenou))
- Enable `TempFileYStore` to work with Jupyter Lab [#519](https://github.com/jupyterlab/jupyter-collaboration/pull/519) ([@Darshan808](https://github.com/Darshan808))
- Fix bug with saving of files with DOS line endings by normalizing them before loading to ydoc [#449](https://github.com/jupyterlab/jupyter-collaboration/pull/449) ([@BaukJ](https://github.com/BaukJ))

### Maintenance and upkeep improvements

- Bump JupyterLab packages to 4.5.0 [#524](https://github.com/jupyterlab/jupyter-collaboration/pull/524) ([@martinRenou](https://github.com/martinRenou))
- Update snapshots [#521](https://github.com/jupyterlab/jupyter-collaboration/pull/521) ([@krassowski](https://github.com/krassowski))

### Documentation improvements

- Update contributing docs (black → ruff; conda → pip) [#528](https://github.com/jupyterlab/jupyter-collaboration/pull/528) ([@krassowski](https://github.com/krassowski))
- Convert documentation to Markdown [#523](https://github.com/jupyterlab/jupyter-collaboration/pull/523) ([@Darshan808](https://github.com/Darshan808))
- Add documentation on Sharing Notebook and User Settings [#522](https://github.com/jupyterlab/jupyter-collaboration/pull/522) ([@Darshan808](https://github.com/Darshan808))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-11-14&to=2025-12-08&type=c))

[@BaukJ](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ABaukJ+updated%3A2025-11-14..2025-12-08&type=Issues) | [@Darshan808](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2025-11-14..2025-12-08&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-11-14..2025-12-08&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-11-14..2025-12-08&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2025-11-14..2025-12-08&type=Issues)

## 4.1.2

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.1.1...619aa5b6f810830d0bf95e1d587f53ec5db7a414))

### Bugs fixed

- Fix saving after renames [#511](https://github.com/jupyterlab/jupyter-collaboration/pull/511) ([@krassowski](https://github.com/krassowski))
- Fix handling of `hubHost` [#501](https://github.com/jupyterlab/jupyter-collaboration/pull/501) ([@minrk](https://github.com/minrk))
- Define `ICollaborativeContentProvider` as inheriting from `IContentProvider` [#499](https://github.com/jupyterlab/jupyter-collaboration/pull/499) ([@krassowski](https://github.com/krassowski))

### Maintenance and upkeep improvements

- Update snapshots [#513](https://github.com/jupyterlab/jupyter-collaboration/pull/513) ([@krassowski](https://github.com/krassowski))
- Add npmjs.com to ignored links in test workflow [#512](https://github.com/jupyterlab/jupyter-collaboration/pull/512) ([@krassowski](https://github.com/krassowski))

### Documentation improvements

- Document the breaking change in 4.0 in the changelog [#497](https://github.com/jupyterlab/jupyter-collaboration/pull/497) ([@krassowski](https://github.com/krassowski))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-08-27&to=2025-11-14&type=c))

[@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-08-27..2025-11-14&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-08-27..2025-11-14&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aminrk+updated%3A2025-08-27..2025-11-14&type=Issues)

## 4.1.1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.1.0...b488a2b2e532dddca27ed4827c142c6147fe51ed))

### Maintenance and upkeep improvements

- Bump `pycrdt-websocket` to `v0.16.0` [#493](https://github.com/jupyterlab/jupyter-collaboration/pull/493) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-07-02&to=2025-08-27&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2025-07-02..2025-08-27&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-07-02..2025-08-27&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-07-02..2025-08-27&type=Issues)

## 4.1.0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.0.2...2c47bc0e69e9c621caaa3cacaac5244b4b4c464c))

### Enhancements made

- Add dialog to update user info [#482](https://github.com/jupyterlab/jupyter-collaboration/pull/482) ([@brichet](https://github.com/brichet))
- Respect autosave setting in RTC backend [#479](https://github.com/jupyterlab/jupyter-collaboration/pull/479) ([@Darshan808](https://github.com/Darshan808))
- Add a UI to let users share their servers to other users and groups [#438](https://github.com/jupyterlab/jupyter-collaboration/pull/438) ([@Hyrla](https://github.com/Hyrla))

### Bugs fixed

- Fix confirmation on manual saving [#490](https://github.com/jupyterlab/jupyter-collaboration/pull/490) ([@krassowski](https://github.com/krassowski))
- Fix translation loading in share link dialog [#488](https://github.com/jupyterlab/jupyter-collaboration/pull/488) ([@krassowski](https://github.com/krassowski))

### Documentation improvements

- Add URLs to `pyproject.toml` files [#491](https://github.com/jupyterlab/jupyter-collaboration/pull/491) ([@krassowski](https://github.com/krassowski))
- Add Current Implementation section to docs [#484](https://github.com/jupyterlab/jupyter-collaboration/pull/484) ([@Darshan808](https://github.com/Darshan808))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-04-22&to=2025-07-02&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2025-04-22..2025-07-02&type=Issues) | [@Darshan808](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2025-04-22..2025-07-02&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2025-04-22..2025-07-02&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-04-22..2025-07-02&type=Issues) | [@Hyrla](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AHyrla+updated%3A2025-04-22..2025-07-02&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-04-22..2025-07-02&type=Issues) | [@manics](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Amanics+updated%3A2025-04-22..2025-07-02&type=Issues) | [@ykazakov](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aykazakov+updated%3A2025-04-22..2025-07-02&type=Issues)

## 4.1.0rc0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.1.0-beta.0...5c61a17e0f5e4db2f9a5474fe661ab1c7be8c3a8))

### Enhancements made

- Add a UI to let users share their servers to other users and groups [#438](https://github.com/jupyterlab/jupyter-collaboration/pull/438) ([@Hyrla](https://github.com/Hyrla))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-05-27&to=2025-05-28&type=c))

[@Hyrla](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AHyrla+updated%3A2025-05-27..2025-05-28&type=Issues) | [@ykazakov](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aykazakov+updated%3A2025-05-27..2025-05-28&type=Issues)

## 4.1.0beta0

No merged PRs

## 4.1.0alpha0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.0.2...1cb6f096a43de4688e6c1e5fc4e36ff50e30376d))

### Enhancements made

- Add dialog to update user info [#482](https://github.com/jupyterlab/jupyter-collaboration/pull/482) ([@brichet](https://github.com/brichet))
- Respect autosave setting in RTC backend [#479](https://github.com/jupyterlab/jupyter-collaboration/pull/479) ([@Darshan808](https://github.com/Darshan808))

### Documentation improvements

- Add Current Implementation section to docs [#484](https://github.com/jupyterlab/jupyter-collaboration/pull/484) ([@Darshan808](https://github.com/Darshan808))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-04-22&to=2025-05-27&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2025-04-22..2025-05-27&type=Issues) | [@Darshan808](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2025-04-22..2025-05-27&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2025-04-22..2025-05-27&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-04-22..2025-05-27&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-04-22..2025-05-27&type=Issues)

## 4.0.2

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.0.1...a7af554ac4e3865cf397cf57cbd61e4dd9facee3))

### Bugs fixed

- Force analysis of `pycrdt_websocket` imports, fix types [#476](https://github.com/jupyterlab/jupyter-collaboration/pull/476) ([@krassowski](https://github.com/krassowski))
- Fix cleanup logic and suppress repetitive error logs [#475](https://github.com/jupyterlab/jupyter-collaboration/pull/475) ([@Darshan808](https://github.com/Darshan808))
- Reset dirty state only when the file is saved [#472](https://github.com/jupyterlab/jupyter-collaboration/pull/472) ([@Darshan808](https://github.com/Darshan808))

### Maintenance and upkeep improvements

- Remove suspected unused code [#478](https://github.com/jupyterlab/jupyter-collaboration/pull/478) ([@krassowski](https://github.com/krassowski))

### Documentation improvements

- Fix "Edit on GitHub" link in documentation [#471](https://github.com/jupyterlab/jupyter-collaboration/pull/471) ([@Darshan808](https://github.com/Darshan808))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-04-09&to=2025-04-22&type=c))

[@Darshan808](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2025-04-09..2025-04-22&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-04-09..2025-04-22&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-04-09..2025-04-22&type=Issues)

## 4.0.1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.0.0...7f1646a600291d8f9625df6c3fe1d1403063de9d))

### Bugs fixed

- Fix version pins in bump script [#461](https://github.com/jupyterlab/jupyter-collaboration/pull/461) ([@brichet](https://github.com/brichet))
- Fix empty collaborators list when file without icon is opened [#465](https://github.com/jupyterlab/jupyter-collaboration/pull/465) ([@krassowski](https://github.com/krassowski))
- Fix jupyterlab dependency dropped by the version bump script [#463](https://github.com/jupyterlab/jupyter-collaboration/pull/463) ([@krassowski](https://github.com/krassowski))

### Maintenance and upkeep improvements

- Update the pre-commit action to v3.0.1 [#467](https://github.com/jupyterlab/jupyter-collaboration/pull/467) ([@brichet](https://github.com/brichet))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-04-07&to=2025-04-09&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2025-04-07..2025-04-09&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-04-07..2025-04-09&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-04-07..2025-04-09&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ameeseeksmachine+updated%3A2025-04-07..2025-04-09&type=Issues)

## 4.0.0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.1.0...996367692c97d10a85aef21c9d76a5d44f260de5))

> [!IMPORTANT]
> This version requires migration from `ICollaborativeDrive` to `ICollaborativeContentProvider` token for access to shared factory and forks:
>
>
> ```diff
> - import { ICollaborativeDrive } from '@jupyter/collaborative-drive';
> + import { ICollaborativeContentProvider } from '@jupyter/collaborative-drive';
> ```

### Enhancements made

- Gracefully handling non-existing fork room [#420](https://github.com/jupyterlab/jupyter-collaboration/pull/420) ([@trungleduc](https://github.com/trungleduc))
- Use content providers to remove RTC prefix [#418](https://github.com/jupyterlab/jupyter-collaboration/pull/418) ([@krassowski](https://github.com/krassowski))
- Users item toolbar [#379](https://github.com/jupyterlab/jupyter-collaboration/pull/379) ([@brichet](https://github.com/brichet))

### Bugs fixed

- Skip saving non-writable files [#457](https://github.com/jupyterlab/jupyter-collaboration/pull/457) ([@Darshan808](https://github.com/Darshan808))
- Fix collaborators panel breaking on opening files without known extension [#427](https://github.com/jupyterlab/jupyter-collaboration/pull/427) ([@krassowski](https://github.com/krassowski))
- Fix Timeline Slider Visibility in Status Bar for Certain Documents [#423](https://github.com/jupyterlab/jupyter-collaboration/pull/423) ([@Meriem-BenIsmail](https://github.com/Meriem-BenIsmail))
- Fix duplicate collaborator entries in collaboration panel [#422](https://github.com/jupyterlab/jupyter-collaboration/pull/422) ([@nzinfo](https://github.com/nzinfo))

### Maintenance and upkeep improvements

- Bump to jupyterlab v4.4.0 [#458](https://github.com/jupyterlab/jupyter-collaboration/pull/458) ([@davidbrochart](https://github.com/davidbrochart))
- Bump min required `jupyter_events` version to 0.11 [#453](https://github.com/jupyterlab/jupyter-collaboration/pull/453) ([@krassowski](https://github.com/krassowski))
- Bump jupyter_server [#444](https://github.com/jupyterlab/jupyter-collaboration/pull/444) ([@brichet](https://github.com/brichet))
- Update github actions to v4 [#441](https://github.com/jupyterlab/jupyter-collaboration/pull/441) ([@brichet](https://github.com/brichet))
- Pin jupyterlab at `>=4.4.0a2,<5.0.0` in `projects/jupyter-collaboration` package [#429](https://github.com/jupyterlab/jupyter-collaboration/pull/429) ([@andrii-i](https://github.com/andrii-i))
- Update event schema version type [#421](https://github.com/jupyterlab/jupyter-collaboration/pull/421) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-12-10&to=2025-04-07&type=c))

[@andrii-i](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aandrii-i+updated%3A2024-12-10..2025-04-07&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-12-10..2025-04-07&type=Issues) | [@Darshan808](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ADarshan808+updated%3A2024-12-10..2025-04-07&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-12-10..2025-04-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-12-10..2025-04-07&type=Issues) | [@Hyrla](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AHyrla+updated%3A2024-12-10..2025-04-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-12-10..2025-04-07&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-12-10..2025-04-07&type=Issues) | [@lumberbot-app](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Alumberbot-app+updated%3A2024-12-10..2025-04-07&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2024-12-10..2025-04-07&type=Issues) | [@Meriem-BenIsmail](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AMeriem-BenIsmail+updated%3A2024-12-10..2025-04-07&type=Issues) | [@nzinfo](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Anzinfo+updated%3A2024-12-10..2025-04-07&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Atrungleduc+updated%3A2024-12-10..2025-04-07&type=Issues) | [@ykazakov](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aykazakov+updated%3A2024-12-10..2025-04-07&type=Issues)

## 4.0.0rc0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.0.0-beta.0...2f4c44f70f17bab9b4e7611357cddf9220eafba0))

### Maintenance and upkeep improvements

- Bump to jupyterlab v4.4.0 [#458](https://github.com/jupyterlab/jupyter-collaboration/pull/458) ([@davidbrochart](https://github.com/davidbrochart))
- Bump min required `jupyter_events` version to 0.11 [#453](https://github.com/jupyterlab/jupyter-collaboration/pull/453) ([@krassowski](https://github.com/krassowski))
- Bump jupyter_server [#444](https://github.com/jupyterlab/jupyter-collaboration/pull/444) ([@brichet](https://github.com/brichet))
- Update github actions to v4 [#441](https://github.com/jupyterlab/jupyter-collaboration/pull/441) ([@brichet](https://github.com/brichet))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-01-28&to=2025-04-04&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2025-01-28..2025-04-04&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2025-01-28..2025-04-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-01-28..2025-04-04&type=Issues) | [@Hyrla](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AHyrla+updated%3A2025-01-28..2025-04-04&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2025-01-28..2025-04-04&type=Issues) | [@ykazakov](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aykazakov+updated%3A2025-01-28..2025-04-04&type=Issues)

## 4.0.0beta0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@4.0.0-alpha.0...bd4b23ac71b346bded151a4628abc6e7d5305de2))

### Bugs fixed

- Fix Timeline Slider Visibility in Status Bar for Certain Documents [#423](https://github.com/jupyterlab/jupyter-collaboration/pull/423) ([@Meriem-BenIsmail](https://github.com/Meriem-BenIsmail))
- Fix duplicate collaborator entries in collaboration panel [#422](https://github.com/jupyterlab/jupyter-collaboration/pull/422) ([@nzinfo](https://github.com/nzinfo))

### Maintenance and upkeep improvements

- Pin jupyterlab at `>=4.4.0a2,<5.0.0` in `projects/jupyter-collaboration` package [#429](https://github.com/jupyterlab/jupyter-collaboration/pull/429) ([@andrii-i](https://github.com/andrii-i))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2025-01-07&to=2025-01-28&type=c))

[@andrii-i](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aandrii-i+updated%3A2025-01-07..2025-01-28&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2025-01-07..2025-01-28&type=Issues) | [@Meriem-BenIsmail](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AMeriem-BenIsmail+updated%3A2025-01-07..2025-01-28&type=Issues) | [@nzinfo](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Anzinfo+updated%3A2025-01-07..2025-01-28&type=Issues)

## 4.0.0alpha0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.1.0...2e1419ac48059fd830e74d7f91d48ac13d84daba))

### Enhancements made

- Gracefully handling non-existing fork room [#420](https://github.com/jupyterlab/jupyter-collaboration/pull/420) ([@trungleduc](https://github.com/trungleduc))
- Use content providers to remove RTC prefix [#418](https://github.com/jupyterlab/jupyter-collaboration/pull/418) ([@krassowski](https://github.com/krassowski))
- Users item toolbar [#379](https://github.com/jupyterlab/jupyter-collaboration/pull/379) ([@brichet](https://github.com/brichet))

### Bugs fixed

- Fix collaborators panel breaking on opening files without known extension [#427](https://github.com/jupyterlab/jupyter-collaboration/pull/427) ([@krassowski](https://github.com/krassowski))

### Maintenance and upkeep improvements

- Update event schema version type [#421](https://github.com/jupyterlab/jupyter-collaboration/pull/421) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-12-10&to=2025-01-07&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-12-10..2025-01-07&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-12-10..2025-01-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-12-10..2025-01-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-12-10..2025-01-07&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-12-10..2025-01-07&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2024-12-10..2025-01-07&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Atrungleduc+updated%3A2024-12-10..2025-01-07&type=Issues)

## 3.1.0

No merged PRs

## 3.1.0rc0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.1.0-beta.0...efa512058ef46d6bdbeb8a07864c939625d5642b))

### Bugs fixed

- Fix rename [#413](https://github.com/jupyterlab/jupyter-collaboration/pull/413) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-12-02&to=2024-12-03&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-12-02..2024-12-03&type=Issues)

## 3.1.0beta0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.1.0-alpha.0...a4f6108585ca98602c419c4bd0fc64eff2d3a820))

### Maintenance and upkeep improvements

- Update with jupyter-ydoc v3.0.2 [#412](https://github.com/jupyterlab/jupyter-collaboration/pull/412) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-11-29&to=2024-12-02&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-11-29..2024-12-02&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-11-29..2024-12-02&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Atrungleduc+updated%3A2024-11-29..2024-12-02&type=Issues)

## 3.1.0alpha0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.1...9363e5a4b8caac92fbaa348ec7895848f1a017a8))

### Enhancements made

- Add fork API [#410](https://github.com/jupyterlab/jupyter-collaboration/pull/410) ([@trungleduc](https://github.com/trungleduc))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-11-26&to=2024-11-29&type=c))

[@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-11-26..2024-11-29&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Atrungleduc+updated%3A2024-11-26..2024-11-29&type=Issues)

## 3.0.1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0...9802fd38b041cecb80e1f94be038a2bb798d25b1))

### Bugs fixed

- Fix timeline feature error when base url is set [#402](https://github.com/jupyterlab/jupyter-collaboration/pull/402) ([@Meriem-BenIsmail](https://github.com/Meriem-BenIsmail))
- Fix open path error with timeline feature [#401](https://github.com/jupyterlab/jupyter-collaboration/pull/401) ([@Meriem-BenIsmail](https://github.com/Meriem-BenIsmail))

### Maintenance and upkeep improvements

- Replace flake8, pyupgrade, isort and black with ruff [#407](https://github.com/jupyterlab/jupyter-collaboration/pull/407) ([@davidbrochart](https://github.com/davidbrochart))
- Fix tests [#404](https://github.com/jupyterlab/jupyter-collaboration/pull/404) ([@davidbrochart](https://github.com/davidbrochart))
- Update CI [#396](https://github.com/jupyterlab/jupyter-collaboration/pull/396) ([@trungleduc](https://github.com/trungleduc))

### Documentation improvements

- Add `packages/collaborative-drive` to the typedoc config [#389](https://github.com/jupyterlab/jupyter-collaboration/pull/389) ([@jtpio](https://github.com/jtpio))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-10-29&to=2024-11-26&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-10-29..2024-11-26&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-10-29..2024-11-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-10-29..2024-11-26&type=Issues) | [@Meriem-BenIsmail](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AMeriem-BenIsmail+updated%3A2024-10-29..2024-11-26&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Atrungleduc+updated%3A2024-10-29..2024-11-26&type=Issues)

## 3.0.0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.9...fc7cdfbf2c10f61ce4fe3001d8d12fb9f2291e08))

### Enhancements made

- Updates warning message on double file open [#375](https://github.com/jupyterlab/jupyter-collaboration/pull/375) ([@JasonWeill](https://github.com/JasonWeill))
- Update jupyter_ydoc and pycrdt_websocket dependencies [#367](https://github.com/jupyterlab/jupyter-collaboration/pull/367) ([@brichet](https://github.com/brichet))
- Add missing aria label to the file browser [#355](https://github.com/jupyterlab/jupyter-collaboration/pull/355) ([@trungleduc](https://github.com/trungleduc))
- Handle generic document types in timeline [#349](https://github.com/jupyterlab/jupyter-collaboration/pull/349) ([@davidbrochart](https://github.com/davidbrochart))
- Implementing Collaborative Timeline Slider with Undo/Redo Functionality [#338](https://github.com/jupyterlab/jupyter-collaboration/pull/338) ([@Meriem-BenIsmail](https://github.com/Meriem-BenIsmail))
- Move fixtures to `jupyter_server_ydoc.pytest_plugin` [#327](https://github.com/jupyterlab/jupyter-collaboration/pull/327) ([@krassowski](https://github.com/krassowski))
- Start ystore in a task [#303](https://github.com/jupyterlab/jupyter-collaboration/pull/303) ([@davidbrochart](https://github.com/davidbrochart))
- Log (instead of raise) exceptions when running as a server extension [#295](https://github.com/jupyterlab/jupyter-collaboration/pull/295) ([@Zsailer](https://github.com/Zsailer))
- handle exception when websocket server start room failed [#289](https://github.com/jupyterlab/jupyter-collaboration/pull/289) ([@jzhang20133](https://github.com/jzhang20133))
- Add the list of opened shared documents to the user awareness [#287](https://github.com/jupyterlab/jupyter-collaboration/pull/287) ([@brichet](https://github.com/brichet))
- Split up the backend, frontend, and the docprovider [#280](https://github.com/jupyterlab/jupyter-collaboration/pull/280) ([@krassowski](https://github.com/krassowski))
- Support server-side execution [#279](https://github.com/jupyterlab/jupyter-collaboration/pull/279) ([@davidbrochart](https://github.com/davidbrochart))
- Add a public API for getting a read-only view of the shared model [#275](https://github.com/jupyterlab/jupyter-collaboration/pull/275) ([@krassowski](https://github.com/krassowski))

### Bugs fixed

- Add check for user value in CollaboratorsPanel [#383](https://github.com/jupyterlab/jupyter-collaboration/pull/383) ([@martinRenou](https://github.com/martinRenou))
- Fix model format [#368](https://github.com/jupyterlab/jupyter-collaboration/pull/368) ([@davidbrochart](https://github.com/davidbrochart))
- Remove the unused `ISettingRegistry` token from the file browser plugin [#356](https://github.com/jupyterlab/jupyter-collaboration/pull/356) ([@trungleduc](https://github.com/trungleduc))
- Initialize and update the ydoc path property [#342](https://github.com/jupyterlab/jupyter-collaboration/pull/342) ([@brichet](https://github.com/brichet))
- Fix spurious "File Changed" dialog in JupyterLab 4.1+/Notebook 7.1+ [#337](https://github.com/jupyterlab/jupyter-collaboration/pull/337) ([@krassowski](https://github.com/krassowski))
- Bump dependencies to fix CI [#335](https://github.com/jupyterlab/jupyter-collaboration/pull/335) ([@krassowski](https://github.com/krassowski))
- Allow jupyter-ydoc v3.0.0-a3 or higher [#334](https://github.com/jupyterlab/jupyter-collaboration/pull/334) ([@krassowski](https://github.com/krassowski))
- Fix use of traitlets to configure YStore class [#322](https://github.com/jupyterlab/jupyter-collaboration/pull/322) ([@krassowski](https://github.com/krassowski))
- Fix for code execution on the Jupyter Server  [#307](https://github.com/jupyterlab/jupyter-collaboration/pull/307) ([@fcollonval](https://github.com/fcollonval))
- Fix writing settings in page_config [#304](https://github.com/jupyterlab/jupyter-collaboration/pull/304) ([@fcollonval](https://github.com/fcollonval))
- Rename the docprovider destination name to avoid conficts [#285](https://github.com/jupyterlab/jupyter-collaboration/pull/285) ([@brichet](https://github.com/brichet))
- Fix releaser [#268](https://github.com/jupyterlab/jupyter-collaboration/pull/268) ([@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Bump jupyter-ydoc v3.0.0 [#388](https://github.com/jupyterlab/jupyter-collaboration/pull/388) ([@davidbrochart](https://github.com/davidbrochart))
- Fix ignore github links [#385](https://github.com/jupyterlab/jupyter-collaboration/pull/385) ([@davidbrochart](https://github.com/davidbrochart))
- Update test workflow [#384](https://github.com/jupyterlab/jupyter-collaboration/pull/384) ([@davidbrochart](https://github.com/davidbrochart))
- Ignore github.com in check-links [#360](https://github.com/jupyterlab/jupyter-collaboration/pull/360) ([@davidbrochart](https://github.com/davidbrochart))
- Fix ignoring AnyIO warnings in tests [#359](https://github.com/jupyterlab/jupyter-collaboration/pull/359) ([@davidbrochart](https://github.com/davidbrochart))
- Fix mypy [#358](https://github.com/jupyterlab/jupyter-collaboration/pull/358) ([@brichet](https://github.com/brichet))
- Extract out ICollaborativeDrive to `@jupyter/collaborative-drive` [#353](https://github.com/jupyterlab/jupyter-collaboration/pull/353) ([@davidbrochart](https://github.com/davidbrochart))
- Remove unused chat feature [#346](https://github.com/jupyterlab/jupyter-collaboration/pull/346) ([@davidbrochart](https://github.com/davidbrochart))
- Fix bump file [#343](https://github.com/jupyterlab/jupyter-collaboration/pull/343) ([@brichet](https://github.com/brichet))
- Remove @jupyter/collaboration dependency from @jupyter/docprovider [#331](https://github.com/jupyterlab/jupyter-collaboration/pull/331) ([@brichet](https://github.com/brichet))
- Add notebook test for `get_document`, fix fixture when `store=True` [#329](https://github.com/jupyterlab/jupyter-collaboration/pull/329) ([@krassowski](https://github.com/krassowski))
- Bump pycrdt-websocket v0.14.0 [#320](https://github.com/jupyterlab/jupyter-collaboration/pull/320) ([@davidbrochart](https://github.com/davidbrochart))
- Update JupyterLab 4.2.0 and fix test start store [#305](https://github.com/jupyterlab/jupyter-collaboration/pull/305) ([@davidbrochart](https://github.com/davidbrochart))
- Update pycrdt-websocket v0.13.0 [#293](https://github.com/jupyterlab/jupyter-collaboration/pull/293) ([@davidbrochart](https://github.com/davidbrochart))
- Only include `docprovider` packages in its sdist [#282](https://github.com/jupyterlab/jupyter-collaboration/pull/282) ([@krassowski](https://github.com/krassowski))
- Workaround shutdown issue with `aiosqlite` for now [#278](https://github.com/jupyterlab/jupyter-collaboration/pull/278) ([@krassowski](https://github.com/krassowski))
- Fix UI tests [#277](https://github.com/jupyterlab/jupyter-collaboration/pull/277) ([@krassowski](https://github.com/krassowski))

### Documentation improvements

- Fix errors in contributing.rst for setup [#373](https://github.com/jupyterlab/jupyter-collaboration/pull/373) ([@JasonWeill](https://github.com/JasonWeill))
- Fix readthedocs URL [#344](https://github.com/jupyterlab/jupyter-collaboration/pull/344) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-03-28&to=2024-10-29&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-03-28..2024-10-29&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-03-28..2024-10-29&type=Issues) | [@echarles](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aecharles+updated%3A2024-03-28..2024-10-29&type=Issues) | [@ellisonbg](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aellisonbg+updated%3A2024-03-28..2024-10-29&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Afcollonval+updated%3A2024-03-28..2024-10-29&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-03-28..2024-10-29&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AJasonWeill+updated%3A2024-03-28..2024-10-29&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-03-28..2024-10-29&type=Issues) | [@jzhang20133](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajzhang20133+updated%3A2024-03-28..2024-10-29&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-03-28..2024-10-29&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2024-03-28..2024-10-29&type=Issues) | [@Meriem-BenIsmail](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AMeriem-BenIsmail+updated%3A2024-03-28..2024-10-29&type=Issues) | [@shrutiagarwal13](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ashrutiagarwal13+updated%3A2024-03-28..2024-10-29&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Atrungleduc+updated%3A2024-03-28..2024-10-29&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AZsailer+updated%3A2024-03-28..2024-10-29&type=Issues)

## 3.0.0rc1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-rc.0...b5fb9787c95ddd2fd9d066d50d6640dc588b9cd8))

### Bugs fixed

- Add check for user value in CollaboratorsPanel [#383](https://github.com/jupyterlab/jupyter-collaboration/pull/383) ([@martinRenou](https://github.com/martinRenou))

### Maintenance and upkeep improvements

- Fix ignore github links [#385](https://github.com/jupyterlab/jupyter-collaboration/pull/385) ([@davidbrochart](https://github.com/davidbrochart))

### Documentation improvements

- Fix errors in contributing.rst for setup [#373](https://github.com/jupyterlab/jupyter-collaboration/pull/373) ([@JasonWeill](https://github.com/JasonWeill))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-10-18&to=2024-10-24&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-10-18..2024-10-24&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-10-18..2024-10-24&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-10-18..2024-10-24&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AJasonWeill+updated%3A2024-10-18..2024-10-24&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-10-18..2024-10-24&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2024-10-18..2024-10-24&type=Issues)

## 3.0.0rc0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.8...c80993047517121d207874f57412fdf2348e6afa))

### Enhancements made

- Updates warning message on double file open [#375](https://github.com/jupyterlab/jupyter-collaboration/pull/375) ([@JasonWeill](https://github.com/JasonWeill))
- Update jupyter_ydoc and pycrdt_websocket dependencies [#367](https://github.com/jupyterlab/jupyter-collaboration/pull/367) ([@brichet](https://github.com/brichet))

### Bugs fixed

- Fix model format [#368](https://github.com/jupyterlab/jupyter-collaboration/pull/368) ([@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Fix bump file [#343](https://github.com/jupyterlab/jupyter-collaboration/pull/343) ([@brichet](https://github.com/brichet))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-10-11&to=2024-10-18&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-10-11..2024-10-18&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-10-11..2024-10-18&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-10-11..2024-10-18&type=Issues) | [@JasonWeill](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AJasonWeill+updated%3A2024-10-11..2024-10-18&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-10-11..2024-10-18&type=Issues)

## 3.0.0beta8

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.6...60e55eab4613135b995c8a96f51fac68784edb29))

### Bugs fixed

- Initialize and update the ydoc path property [#342](https://github.com/jupyterlab/jupyter-collaboration/pull/342) ([@brichet](https://github.com/brichet))

### Maintenance and upkeep improvements

- Ignore github.com in check-links [#360](https://github.com/jupyterlab/jupyter-collaboration/pull/360) ([@davidbrochart](https://github.com/davidbrochart))
- Fix ignoring AnyIO warnings in tests [#359](https://github.com/jupyterlab/jupyter-collaboration/pull/359) ([@davidbrochart](https://github.com/davidbrochart))
- Fix mypy [#358](https://github.com/jupyterlab/jupyter-collaboration/pull/358) ([@brichet](https://github.com/brichet))
- Extract out ICollaborativeDrive to `@jupyter/collaborative-drive` [#353](https://github.com/jupyterlab/jupyter-collaboration/pull/353) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-09-18&to=2024-10-11&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-09-18..2024-10-11&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-09-18..2024-10-11&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-09-18..2024-10-11&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-09-18..2024-10-11&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-09-18..2024-10-11&type=Issues)

## 3.0.0beta7

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.6...60e55eab4613135b995c8a96f51fac68784edb29))

### Bugs fixed

- Initialize and update the ydoc path property [#342](https://github.com/jupyterlab/jupyter-collaboration/pull/342) ([@brichet](https://github.com/brichet))

### Maintenance and upkeep improvements

- Ignore github.com in check-links [#360](https://github.com/jupyterlab/jupyter-collaboration/pull/360) ([@davidbrochart](https://github.com/davidbrochart))
- Fix ignoring AnyIO warnings in tests [#359](https://github.com/jupyterlab/jupyter-collaboration/pull/359) ([@davidbrochart](https://github.com/davidbrochart))
- Fix mypy [#358](https://github.com/jupyterlab/jupyter-collaboration/pull/358) ([@brichet](https://github.com/brichet))
- Extract out ICollaborativeDrive to `@jupyter/collaborative-drive` [#353](https://github.com/jupyterlab/jupyter-collaboration/pull/353) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-09-18&to=2024-10-11&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-09-18..2024-10-11&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-09-18..2024-10-11&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-09-18..2024-10-11&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-09-18..2024-10-11&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-09-18..2024-10-11&type=Issues)

## 3.0.0beta6

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.5...7eac099ae0a2e75c73e78fe636bb9012933440d1))

### Bugs fixed

- Remove the unused `ISettingRegistry` token from the file browser plugin [#356](https://github.com/jupyterlab/jupyter-collaboration/pull/356) ([@trungleduc](https://github.com/trungleduc))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-09-18&to=2024-09-18&type=c))

[@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Atrungleduc+updated%3A2024-09-18..2024-09-18&type=Issues)

## 3.0.0beta5

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.4...b03299b291361529d821d7d9fd4a5ec3d99e19fa))

### Enhancements made

- Add missing aria label to the file browser [#355](https://github.com/jupyterlab/jupyter-collaboration/pull/355) ([@trungleduc](https://github.com/trungleduc))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-09-17&to=2024-09-18&type=c))

[@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Atrungleduc+updated%3A2024-09-17..2024-09-18&type=Issues)

## 3.0.0beta4

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.3...682d14d569b1a8126486e788bbf870b045897392))

### Enhancements made

- Handle generic document types in timeline [#349](https://github.com/jupyterlab/jupyter-collaboration/pull/349) ([@davidbrochart](https://github.com/davidbrochart))
- Implementing Collaborative Timeline Slider with Undo/Redo Functionality [#338](https://github.com/jupyterlab/jupyter-collaboration/pull/338) ([@Meriem-BenIsmail](https://github.com/Meriem-BenIsmail))

### Maintenance and upkeep improvements

- Remove unused chat feature [#346](https://github.com/jupyterlab/jupyter-collaboration/pull/346) ([@davidbrochart](https://github.com/davidbrochart))

### Documentation improvements

- Fix readthedocs URL [#344](https://github.com/jupyterlab/jupyter-collaboration/pull/344) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-08-24&to=2024-09-17&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-08-24..2024-09-17&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-08-24..2024-09-17&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-08-24..2024-09-17&type=Issues) | [@Meriem-BenIsmail](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AMeriem-BenIsmail+updated%3A2024-08-24..2024-09-17&type=Issues)

## 3.0.0beta3

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.2...1b74c437fec5475548e8cf08233c0992dcfdd4f8))

### Bugs fixed

- Fix spurious "File Changed" dialog in JupyterLab 4.1+/Notebook 7.1+ [#337](https://github.com/jupyterlab/jupyter-collaboration/pull/337) ([@krassowski](https://github.com/krassowski))
- Bump dependencies to fix CI [#335](https://github.com/jupyterlab/jupyter-collaboration/pull/335) ([@krassowski](https://github.com/krassowski))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-08-12&to=2024-08-24&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-08-12..2024-08-24&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-08-12..2024-08-24&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-08-12..2024-08-24&type=Issues)

## 3.0.0beta2

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.1...74a269c38d49fe5ff413322178508719c54790a3))

### Bugs fixed

- Allow jupyter-ydoc v3.0.0-a3 or higher [#334](https://github.com/jupyterlab/jupyter-collaboration/pull/334) ([@krassowski](https://github.com/krassowski))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-07-19&to=2024-08-12&type=c))

[@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-07-19..2024-08-12&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-07-19..2024-08-12&type=Issues)

## 3.0.0beta1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-beta.0...1c3bd6470cd53b718a24ad15e7bae89301e4451f))

### Enhancements made

- Move fixtures to `jupyter_server_ydoc.pytest_plugin` [#327](https://github.com/jupyterlab/jupyter-collaboration/pull/327) ([@krassowski](https://github.com/krassowski))

### Maintenance and upkeep improvements

- Remove @jupyter/collaboration dependency from @jupyter/docprovider [#331](https://github.com/jupyterlab/jupyter-collaboration/pull/331) ([@brichet](https://github.com/brichet))
- Add notebook test for `get_document`, fix fixture when `store=True` [#329](https://github.com/jupyterlab/jupyter-collaboration/pull/329) ([@krassowski](https://github.com/krassowski))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-07-17&to=2024-07-19&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-07-17..2024-07-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-07-17..2024-07-19&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-07-17..2024-07-19&type=Issues)

## 3.0.0beta0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-alpha.2...ab80f15094f971da6dc6f9afc72e1504c63dc9ff))

### Enhancements made

- Add the list of opened shared documents to the user awareness [#287](https://github.com/jupyterlab/jupyter-collaboration/pull/287) ([@brichet](https://github.com/brichet))

### Bugs fixed

- Fix use of traitlets to configure YStore class [#322](https://github.com/jupyterlab/jupyter-collaboration/pull/322) ([@krassowski](https://github.com/krassowski))
- Fix for code execution on the Jupyter Server  [#307](https://github.com/jupyterlab/jupyter-collaboration/pull/307) ([@fcollonval](https://github.com/fcollonval))

### Maintenance and upkeep improvements

- Bump pycrdt-websocket v0.14.0 [#320](https://github.com/jupyterlab/jupyter-collaboration/pull/320) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-05-08&to=2024-07-17&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-05-08..2024-07-17&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-05-08..2024-07-17&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Afcollonval+updated%3A2024-05-08..2024-07-17&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-05-08..2024-07-17&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-05-08..2024-07-17&type=Issues)

## 3.0.0alpha2

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-alpha.1...5b166c49d76ed5a009ae7f5dc8c4bf9a881913b0))

### Enhancements made

- Start ystore in a task [#303](https://github.com/jupyterlab/jupyter-collaboration/pull/303) ([@davidbrochart](https://github.com/davidbrochart))

### Bugs fixed

- Fix writing settings in page_config [#304](https://github.com/jupyterlab/jupyter-collaboration/pull/304) ([@fcollonval](https://github.com/fcollonval))

### Maintenance and upkeep improvements

- Update JupyterLab 4.2.0 and fix test start store [#305](https://github.com/jupyterlab/jupyter-collaboration/pull/305) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-05-01&to=2024-05-08&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-05-01..2024-05-08&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Afcollonval+updated%3A2024-05-01..2024-05-08&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-05-01..2024-05-08&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AZsailer+updated%3A2024-05-01..2024-05-08&type=Issues)

## 3.0.0alpha1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@3.0.0-alpha.0...6753b2aaab7ce0beac29da9978d8350d1eeaaff4))

### Enhancements made

- Log (instead of raise) exceptions when running as a server extension [#295](https://github.com/jupyterlab/jupyter-collaboration/pull/295) ([@Zsailer](https://github.com/Zsailer))
- handle exception when websocket server start room failed [#289](https://github.com/jupyterlab/jupyter-collaboration/pull/289) ([@jzhang20133](https://github.com/jzhang20133))

### Bugs fixed

- Rename the docprovider destination name to avoid conficts [#285](https://github.com/jupyterlab/jupyter-collaboration/pull/285) ([@brichet](https://github.com/brichet))

### Maintenance and upkeep improvements

- Update pycrdt-websocket v0.13.0 [#293](https://github.com/jupyterlab/jupyter-collaboration/pull/293) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-04-16&to=2024-04-30&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-04-16..2024-04-30&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-04-16..2024-04-30&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-04-16..2024-04-30&type=Issues) | [@jzhang20133](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajzhang20133+updated%3A2024-04-16..2024-04-30&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AZsailer+updated%3A2024-04-16..2024-04-30&type=Issues)

## 3.0.0alpha0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.11...a3b498471ace2b47f430984531ef8b98e68bc40f))

### Enhancements made

- Split up the backend, frontend, and the docprovider [#280](https://github.com/jupyterlab/jupyter-collaboration/pull/280) ([@krassowski](https://github.com/krassowski))
- Support server-side execution [#279](https://github.com/jupyterlab/jupyter-collaboration/pull/279) ([@davidbrochart](https://github.com/davidbrochart))
- Add a public API for getting a read-only view of the shared model [#275](https://github.com/jupyterlab/jupyter-collaboration/pull/275) ([@krassowski](https://github.com/krassowski))

### Maintenance and upkeep improvements

- Only include `docprovider` packages in its sdist [#282](https://github.com/jupyterlab/jupyter-collaboration/pull/282) ([@krassowski](https://github.com/krassowski))
- Workaround shutdown issue with `aiosqlite` for now [#278](https://github.com/jupyterlab/jupyter-collaboration/pull/278) ([@krassowski](https://github.com/krassowski))
- Fix UI tests [#277](https://github.com/jupyterlab/jupyter-collaboration/pull/277) ([@krassowski](https://github.com/krassowski))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-03-28&to=2024-04-16&type=c))

[@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2024-03-28..2024-04-16&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-03-28..2024-04-16&type=Issues) | [@ellisonbg](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aellisonbg+updated%3A2024-03-28..2024-04-16&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-03-28..2024-04-16&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajtpio+updated%3A2024-03-28..2024-04-16&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2024-03-28..2024-04-16&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AZsailer+updated%3A2024-03-28..2024-04-16&type=Issues)

## 2.0.11

### Enhancements made

- Make user's cursor "tooltip-on-hover" faster and wider [#259](https://github.com/jupyterlab/jupyter-collaboration/pull/259) ([@jzhang20133](https://github.com/jzhang20133))

### Bugs fixed

- Fix releaser [#268](https://github.com/jupyterlab/jupyter-collaboration/pull/268) ([@davidbrochart](https://github.com/davidbrochart))
- Fix slow room opening [#264](https://github.com/jupyterlab/jupyter-collaboration/pull/264) ([@davidbrochart](https://github.com/davidbrochart))
- Use WebSocket \_room_id attribute directly [#266](https://github.com/jupyterlab/jupyter-collaboration/pull/266) ([@davidbrochart](https://github.com/davidbrochart))

## 2.0.10

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.9...ffcdc6f917b9dc0768d8e056c14ada1dd0baebdd))

### Enhancements made

- Make user's cursor "tooltip-on-hover" faster and wider [#259](https://github.com/jupyterlab/jupyter-collaboration/pull/259) ([@jzhang20133](https://github.com/jzhang20133))

### Bugs fixed

- Fix releaser [#268](https://github.com/jupyterlab/jupyter-collaboration/pull/268) ([@davidbrochart](https://github.com/davidbrochart))
- Fix slow room opening [#264](https://github.com/jupyterlab/jupyter-collaboration/pull/264) ([@davidbrochart](https://github.com/davidbrochart))
- Use WebSocket \_room_id attribute directly [#266](https://github.com/jupyterlab/jupyter-collaboration/pull/266) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-03-28&to=2024-03-28&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-03-28..2024-03-28&type=Issues)

## 2.0.9

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.8...0682d45797bb0b90c3efdfb9525d485b932ba1d9))

### Enhancements made

- Make user's cursor "tooltip-on-hover" faster and wider [#259](https://github.com/jupyterlab/jupyter-collaboration/pull/259) ([@jzhang20133](https://github.com/jzhang20133))

### Bugs fixed

- Fix slow room opening [#264](https://github.com/jupyterlab/jupyter-collaboration/pull/264) ([@davidbrochart](https://github.com/davidbrochart))
- Use WebSocket \_room_id attribute directly [#266](https://github.com/jupyterlab/jupyter-collaboration/pull/266) ([@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Update Release Scripts [#267](https://github.com/jupyterlab/jupyter-collaboration/pull/267) ([@blink1073](https://github.com/blink1073))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-03-28&to=2024-03-28&type=c))

[@blink1073](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ablink1073+updated%3A2024-03-28..2024-03-28&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-03-28..2024-03-28&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-03-28..2024-03-28&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Awelcome+updated%3A2024-03-28..2024-03-28&type=Issues)

## 2.0.8

No merged PRs

## 2.0.7

No merged PRs

## 2.0.6

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.5...8f55ea5e62f22a49619d19e846d1b16f06bc47e1))

### Enhancements made

- Make user's cursor "tooltip-on-hover" faster and wider [#259](https://github.com/jupyterlab/jupyter-collaboration/pull/259) ([@jzhang20133](https://github.com/jzhang20133))

### Bugs fixed

- Fix slow room opening [#264](https://github.com/jupyterlab/jupyter-collaboration/pull/264) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-03-21&to=2024-03-28&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-03-21..2024-03-28&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-03-21..2024-03-28&type=Issues) | [@jzhang20133](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajzhang20133+updated%3A2024-03-21..2024-03-28&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AZsailer+updated%3A2024-03-21..2024-03-28&type=Issues)

## 2.0.5

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.4...1b87ab211de72e92757fb0149dba54c6e12d9841))

### Bugs fixed

- Fix concurrent room initialization [#255](https://github.com/jupyterlab/jupyter-collaboration/pull/255) ([@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Bump jupyter_events to 0.10.0 [#258](https://github.com/jupyterlab/jupyter-collaboration/pull/258) ([@Zsailer](https://github.com/Zsailer))
- Fix concurrent room initialization [#255](https://github.com/jupyterlab/jupyter-collaboration/pull/255) ([@davidbrochart](https://github.com/davidbrochart))
- Add test for document dirty attribute [#251](https://github.com/jupyterlab/jupyter-collaboration/pull/251) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-03-19&to=2024-03-21&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-03-19..2024-03-21&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-03-19..2024-03-21&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Awelcome+updated%3A2024-03-19..2024-03-21&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AZsailer+updated%3A2024-03-19..2024-03-21&type=Issues)

## 2.0.4

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.3...265df161774ae08f2baa828b95abfcf1c40c6a1a))

### Enhancements made

- adding awareness event when open and close websockets [#246](https://github.com/jupyterlab/jupyter-collaboration/pull/246) ([@jzhang20133](https://github.com/jzhang20133))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-03-04&to=2024-03-19&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-03-04..2024-03-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-03-04..2024-03-19&type=Issues) | [@jzhang20133](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ajzhang20133+updated%3A2024-03-04..2024-03-19&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Awelcome+updated%3A2024-03-04..2024-03-19&type=Issues)

## 2.0.3

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.2...4538d02c43ec696277b91e27052e17bb0e66f4e1))

### Bugs fixed

- Fix cancellation of file save operation [#241](https://github.com/jupyterlab/jupyter-collaboration/pull/241) ([@davidbrochart](https://github.com/davidbrochart))
- Call get with options of type IFetchOptions [#238](https://github.com/jupyterlab/jupyter-collaboration/pull/238) ([@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Call get with options of type IFetchOptions [#238](https://github.com/jupyterlab/jupyter-collaboration/pull/238) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2024-02-13&to=2024-03-04&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2024-02-13..2024-03-04&type=Issues) | [@ellisonbg](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Aellisonbg+updated%3A2024-02-13..2024-03-04&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2024-02-13..2024-03-04&type=Issues) | [@Zsailer](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AZsailer+updated%3A2024-02-13..2024-03-04&type=Issues)

## 2.0.2

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.1...d4ec54a78ee60c364805643f72019852f62ac516))

### Enhancements made

- Handle last_modified only in FileLoader [#232](https://github.com/jupyterlab/jupyter-collaboration/pull/232) ([@davidbrochart](https://github.com/davidbrochart))

### Bugs fixed

- Handle last_modified only in FileLoader [#232](https://github.com/jupyterlab/jupyter-collaboration/pull/232) ([@davidbrochart](https://github.com/davidbrochart))
- Fix file saving [#231](https://github.com/jupyterlab/jupyter-collaboration/pull/231) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2023-12-26&to=2024-02-13&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2023-12-26..2024-02-13&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2023-12-26..2024-02-13&type=Issues)

## 2.0.1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@2.0.0...b11cc72c439d0fa50b5423b820b670a3feaf0ef8))

### Bugs fixed

- Revert PR #170 [#228](https://github.com/jupyterlab/jupyter-collaboration/pull/228) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2023-12-12&to=2023-12-26&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Acodecov-commenter+updated%3A2023-12-12..2023-12-26&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2023-12-12..2023-12-26&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2023-12-12..2023-12-26&type=Issues)

## 2.0.0

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@1.0.1...8fee21f7cd338057c69febb5508f9b6c8bfd2392))

### Enhancements made

- Adds a flag to disable RTC [#177](https://github.com/jupyterlab/jupyter-collaboration/pull/177) ([@hbcarlos](https://github.com/hbcarlos))
- Improves chat [#173](https://github.com/jupyterlab/jupyter-collaboration/pull/173) ([@hbcarlos](https://github.com/hbcarlos))
- Adds restore and ovewrite messages [#170](https://github.com/jupyterlab/jupyter-collaboration/pull/170) ([@hbcarlos](https://github.com/hbcarlos))

### Bugs fixed

- Improves error handling when the file does not exist [#175](https://github.com/jupyterlab/jupyter-collaboration/pull/175) ([@hbcarlos](https://github.com/hbcarlos))
- Use fileId instead of path in the store [#174](https://github.com/jupyterlab/jupyter-collaboration/pull/174) ([@hbcarlos](https://github.com/hbcarlos))
- Adds restore and ovewrite messages [#170](https://github.com/jupyterlab/jupyter-collaboration/pull/170) ([@hbcarlos](https://github.com/hbcarlos))

### Maintenance and upkeep improvements

- Fix CI [#221](https://github.com/jupyterlab/jupyter-collaboration/pull/221) ([@davidbrochart](https://github.com/davidbrochart))
- Use pycrdt-websocket instead of ypy-websocket [#220](https://github.com/jupyterlab/jupyter-collaboration/pull/220) ([@davidbrochart](https://github.com/davidbrochart))
- Switch from hub to gh CLI [#199](https://github.com/jupyterlab/jupyter-collaboration/pull/199) ([@hbcarlos](https://github.com/hbcarlos))
- Pin jupyter_events [#186](https://github.com/jupyterlab/jupyter-collaboration/pull/186) ([@hbcarlos](https://github.com/hbcarlos))
- Tests [#182](https://github.com/jupyterlab/jupyter-collaboration/pull/182) ([@hbcarlos](https://github.com/hbcarlos))
- Adds tests for rooms [#181](https://github.com/jupyterlab/jupyter-collaboration/pull/181) ([@hbcarlos](https://github.com/hbcarlos))
- Fix package name of integration tests [#176](https://github.com/jupyterlab/jupyter-collaboration/pull/176) ([@brichet](https://github.com/brichet))
- Remove print [#172](https://github.com/jupyterlab/jupyter-collaboration/pull/172) ([@martinRenou](https://github.com/martinRenou))
- Add UI-tests [#157](https://github.com/jupyterlab/jupyter-collaboration/pull/157) ([@brichet](https://github.com/brichet))

### Documentation improvements

- Update README.md [#212](https://github.com/jupyterlab/jupyter-collaboration/pull/212) ([@1reverseengineer](https://github.com/1reverseengineer))
- docs: 📝 update configuration doc [#195](https://github.com/jupyterlab/jupyter-collaboration/pull/195) ([@yambottle](https://github.com/yambottle))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2023-06-29&to=2023-12-12&type=c))

[@1reverseengineer](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3A1reverseengineer+updated%3A2023-06-29..2023-12-12&type=Issues) | [@brichet](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Abrichet+updated%3A2023-06-29..2023-12-12&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2023-06-29..2023-12-12&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Afcollonval+updated%3A2023-06-29..2023-12-12&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2023-06-29..2023-12-12&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ahbcarlos+updated%3A2023-06-29..2023-12-12&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Akrassowski+updated%3A2023-06-29..2023-12-12&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3AmartinRenou+updated%3A2023-06-29..2023-12-12&type=Issues) | [@SylvainCorlay](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3ASylvainCorlay+updated%3A2023-06-29..2023-12-12&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Awelcome+updated%3A2023-06-29..2023-12-12&type=Issues) | [@yambottle](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ayambottle+updated%3A2023-06-29..2023-12-12&type=Issues)

## 1.0.1

([Full Changelog](https://github.com/jupyterlab/jupyter-collaboration/compare/@jupyter/collaboration-extension@1.0.0...e97855f7ad4160cc4e6f5dbe9361806d6b9f3c31))

### Enhancements made

- Support ypy-websocket v0.12 [#168](https://github.com/jupyterlab/jupyter-collaboration/pull/168) ([@davidbrochart](https://github.com/davidbrochart))
- Chat subprotocol [#167](https://github.com/jupyterlab/jupyter-collaboration/pull/167) ([@hbcarlos](https://github.com/hbcarlos))

### Maintenance and upkeep improvements

- Support ypy-websocket v0.12 [#168](https://github.com/jupyterlab/jupyter-collaboration/pull/168) ([@davidbrochart](https://github.com/davidbrochart))
- Fix npm tag for publication of final version [#158](https://github.com/jupyterlab/jupyter-collaboration/pull/158) ([@fcollonval](https://github.com/fcollonval))

### Documentation improvements

- Remove link share mention [#169](https://github.com/jupyterlab/jupyter-collaboration/pull/169) ([@fcollonval](https://github.com/fcollonval))
- Fix install instructions to use correct name [#166](https://github.com/jupyterlab/jupyter-collaboration/pull/166) ([@fperez](https://github.com/fperez))
- Fix package name in README [#159](https://github.com/jupyterlab/jupyter-collaboration/pull/159) ([@fcollonval](https://github.com/fcollonval))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter-collaboration/graphs/contributors?from=2023-06-02&to=2023-06-29&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Acodecov-commenter+updated%3A2023-06-02..2023-06-29&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Adavidbrochart+updated%3A2023-06-02..2023-06-29&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Afcollonval+updated%3A2023-06-02..2023-06-29&type=Issues) | [@fperez](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Afperez+updated%3A2023-06-02..2023-06-29&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Agithub-actions+updated%3A2023-06-02..2023-06-29&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter-collaboration+involves%3Ahbcarlos+updated%3A2023-06-02..2023-06-29&type=Issues)

## 1.0.0

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.9...4da43013daa89869035d77417971a80143b0ac61))

### Maintenance and upkeep improvements

- Remove spurious `'` [#156](https://github.com/jupyterlab/jupyter_collaboration/pull/156) ([@krassowski](https://github.com/krassowski))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-05-30&to=2023-06-02&type=c))

[@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Akrassowski+updated%3A2023-05-30..2023-06-02&type=Issues)

## 1.0.0alpha9

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.8...fbae4ff5054bf98507ac87429e0322c22be6b830))

### Enhancements made

- Add share link feature [#150](https://github.com/jupyterlab/jupyter_collaboration/pull/150) ([@fcollonval](https://github.com/fcollonval))
- Improve code architecture [#146](https://github.com/jupyterlab/jupyter_collaboration/pull/146) ([@fcollonval](https://github.com/fcollonval))
- Add logger for file editor [#145](https://github.com/jupyterlab/jupyter_collaboration/pull/145) ([@fcollonval](https://github.com/fcollonval))
- Emit events for collaborative sessions [#139](https://github.com/jupyterlab/jupyter_collaboration/pull/139) ([@hbcarlos](https://github.com/hbcarlos))

### Bugs fixed

- Support file types [#154](https://github.com/jupyterlab/jupyter_collaboration/pull/154) ([@hbcarlos](https://github.com/hbcarlos))
- Fix injecting user menu bar in top bar. [#149](https://github.com/jupyterlab/jupyter_collaboration/pull/149) ([@fcollonval](https://github.com/fcollonval))
- Wait for the document to be synced [#148](https://github.com/jupyterlab/jupyter_collaboration/pull/148) ([@fcollonval](https://github.com/fcollonval))
- Fix asyncio.Task type for python\<=3.8 [#143](https://github.com/jupyterlab/jupyter_collaboration/pull/143) ([@davidbrochart](https://github.com/davidbrochart))

### Maintenance and upkeep improvements

- Fix binder env [#152](https://github.com/jupyterlab/jupyter_collaboration/pull/152) ([@fcollonval](https://github.com/fcollonval))
- Add license to files automatically [#147](https://github.com/jupyterlab/jupyter_collaboration/pull/147) ([@fcollonval](https://github.com/fcollonval))
- Add JavaScript and lab extension test in CI [#144](https://github.com/jupyterlab/jupyter_collaboration/pull/144) ([@fcollonval](https://github.com/fcollonval))
- Fix asyncio.Task type for python\<=3.8 [#143](https://github.com/jupyterlab/jupyter_collaboration/pull/143) ([@davidbrochart](https://github.com/davidbrochart))
- Update lab [#141](https://github.com/jupyterlab/jupyter_collaboration/pull/141) ([@hbcarlos](https://github.com/hbcarlos))
- Fix typo and punctuation [#140](https://github.com/jupyterlab/jupyter_collaboration/pull/140) ([@krassowski](https://github.com/krassowski))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-04-24&to=2023-05-30&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov-commenter+updated%3A2023-04-24..2023-05-30&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Adavidbrochart+updated%3A2023-04-24..2023-05-30&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Afcollonval+updated%3A2023-04-24..2023-05-30&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Agithub-actions+updated%3A2023-04-24..2023-05-30&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ahbcarlos+updated%3A2023-04-24..2023-05-30&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Akrassowski+updated%3A2023-04-24..2023-05-30&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Awelcome+updated%3A2023-04-24..2023-05-30&type=Issues)

## 1.0.0alpha8

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.7...2e5a6cc66961a5552e8a89c0850c7483c1e1acb2))

### Enhancements made

- Follow up #133 [#136](https://github.com/jupyterlab/jupyter_collaboration/pull/136) ([@hbcarlos](https://github.com/hbcarlos))
- Creates a new FileLoader class to separate the logic of watching files [#121](https://github.com/jupyterlab/jupyter_collaboration/pull/121) ([@hbcarlos](https://github.com/hbcarlos))

### Bugs fixed

- Fix metadata [#138](https://github.com/jupyterlab/jupyter_collaboration/pull/138) ([@hbcarlos](https://github.com/hbcarlos))

### Maintenance and upkeep improvements

- Upgrade jupyter ydoc [#135](https://github.com/jupyterlab/jupyter_collaboration/pull/135) ([@fcollonval](https://github.com/fcollonval))

### Documentation improvements

- Upgrade jupyter ydoc [#135](https://github.com/jupyterlab/jupyter_collaboration/pull/135) ([@fcollonval](https://github.com/fcollonval))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-03-29&to=2023-04-24&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov-commenter+updated%3A2023-03-29..2023-04-24&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Adavidbrochart+updated%3A2023-03-29..2023-04-24&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Afcollonval+updated%3A2023-03-29..2023-04-24&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Agithub-actions+updated%3A2023-03-29..2023-04-24&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ahbcarlos+updated%3A2023-03-29..2023-04-24&type=Issues)

## 1.0.0alpha7

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.6...9d8475f5cc333e22b50160ec32e508a4e8c75c06))

### Enhancements made

- Allow other extensions to register shared models [#133](https://github.com/jupyterlab/jupyter_collaboration/pull/133) ([@hbcarlos](https://github.com/hbcarlos))

### Maintenance and upkeep improvements

- Update dependencies [#134](https://github.com/jupyterlab/jupyter_collaboration/pull/134) ([@hbcarlos](https://github.com/hbcarlos))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-03-27&to=2023-03-29&type=c))

[@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Agithub-actions+updated%3A2023-03-27..2023-03-29&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ahbcarlos+updated%3A2023-03-27..2023-03-29&type=Issues) | [@trungleduc](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Atrungleduc+updated%3A2023-03-27..2023-03-29&type=Issues)

## 1.0.0alpha6

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.5...01836212bc693eae5404453785a591d15770880e))

### Bugs fixed

- Justify content in side panel [#131](https://github.com/jupyterlab/jupyter_collaboration/pull/131) ([@martinRenou](https://github.com/martinRenou))
- Fix missing scrollbar when there are many collaborators [#130](https://github.com/jupyterlab/jupyter_collaboration/pull/130) ([@martinRenou](https://github.com/martinRenou))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-03-24&to=2023-03-27&type=c))

[@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Agithub-actions+updated%3A2023-03-24..2023-03-27&type=Issues) | [@martinRenou](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3AmartinRenou+updated%3A2023-03-24..2023-03-27&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Awelcome+updated%3A2023-03-24..2023-03-27&type=Issues)

## 1.0.0alpha5

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.4...d57df5b1f03593997674d0698ca69893bf4db987))

### Enhancements made

- Removes deprecated endpoints [#126](https://github.com/jupyterlab/jupyter_collaboration/pull/126) ([@hbcarlos](https://github.com/hbcarlos))
- Display remote user cursors [#122](https://github.com/jupyterlab/jupyter_collaboration/pull/122) ([@fcollonval](https://github.com/fcollonval))

### Bugs fixed

- Removes drive name from file path [#127](https://github.com/jupyterlab/jupyter_collaboration/pull/127) ([@hbcarlos](https://github.com/hbcarlos))
- Fix yarn on releaser [#125](https://github.com/jupyterlab/jupyter_collaboration/pull/125) ([@fcollonval](https://github.com/fcollonval))

### Maintenance and upkeep improvements

- Bump dependencies [#123](https://github.com/jupyterlab/jupyter_collaboration/pull/123) ([@fcollonval](https://github.com/fcollonval))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-03-15&to=2023-03-24&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov-commenter+updated%3A2023-03-15..2023-03-24&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Afcollonval+updated%3A2023-03-15..2023-03-24&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Agithub-actions+updated%3A2023-03-15..2023-03-24&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ahbcarlos+updated%3A2023-03-15..2023-03-24&type=Issues)

## 1.0.0alpha4

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.3...12b606cf87c6b64b87ef3adfb5927a49eeaed5bc))

### Enhancements made

- Save if the document has no provider [#120](https://github.com/jupyterlab/jupyter_collaboration/pull/120) ([@fcollonval](https://github.com/fcollonval))

### Maintenance and upkeep improvements

- Fix pre-commit EOF error [#119](https://github.com/jupyterlab/jupyter_collaboration/pull/119) ([@fcollonval](https://github.com/fcollonval))
- Remove a console.debug for plugin activate [#118](https://github.com/jupyterlab/jupyter_collaboration/pull/118) ([@jtpio](https://github.com/jtpio))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-03-07&to=2023-03-15&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov-commenter+updated%3A2023-03-07..2023-03-15&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Afcollonval+updated%3A2023-03-07..2023-03-15&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Agithub-actions+updated%3A2023-03-07..2023-03-15&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ajtpio+updated%3A2023-03-07..2023-03-15&type=Issues)

## 1.0.0alpha3

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.2...0d7d5e8bfbcde0e7915c3785ea0bc04fe00016ed))

### Bugs fixed

- Fixes experimental document-wide undo/redo flag [#117](https://github.com/jupyterlab/jupyter_collaboration/pull/117) ([@hbcarlos](https://github.com/hbcarlos))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-03-05&to=2023-03-07&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov-commenter+updated%3A2023-03-05..2023-03-07&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ahbcarlos+updated%3A2023-03-05..2023-03-07&type=Issues)

## 1.0.0alpha2

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/@jupyter/collaboration-extension@1.0.0-alpha.1...416b164be2489dfabb21b6257d225b3fd7285fd8))

### Bugs fixed

- Update ydoc [#114](https://github.com/jupyterlab/jupyter_collaboration/pull/114) ([@hbcarlos](https://github.com/hbcarlos))
- Creates document session [#108](https://github.com/jupyterlab/jupyter_collaboration/pull/108) ([@hbcarlos](https://github.com/hbcarlos))
- Keep reference to asyncio tasks [#106](https://github.com/jupyterlab/jupyter_collaboration/pull/106) ([@davidbrochart](https://github.com/davidbrochart))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-02-21&to=2023-03-05&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Adavidbrochart+updated%3A2023-02-21..2023-03-05&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Agithub-actions+updated%3A2023-02-21..2023-03-05&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ahbcarlos+updated%3A2023-02-21..2023-03-05&type=Issues)

## 1.0.0alpha1

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/v0.7.0...1d87cf141558ce28f64c671398bb4c4f82a4b0ac))

### Enhancements made

- Setup a monorepo with a JupyterLab extension [#77](https://github.com/jupyterlab/jupyter_collaboration/pull/77) ([@hbcarlos](https://github.com/hbcarlos))
- Move rtc packages [#76](https://github.com/jupyterlab/jupyter_collaboration/pull/76) ([@hbcarlos](https://github.com/hbcarlos))

### Bugs fixed

- Include style from dependencies [#103](https://github.com/jupyterlab/jupyter_collaboration/pull/103) ([@fcollonval](https://github.com/fcollonval))
- Remove `PageConfig` [#97](https://github.com/jupyterlab/jupyter_collaboration/pull/97) ([@fcollonval](https://github.com/fcollonval))
- Add missing argument for format string (#92) [#93](https://github.com/jupyterlab/jupyter_collaboration/pull/93) ([@cghanke](https://github.com/cghanke))

### Maintenance and upkeep improvements

- Bump dependencies [#98](https://github.com/jupyterlab/jupyter_collaboration/pull/98) ([@fcollonval](https://github.com/fcollonval))
- Publish 1.0.0alpha0 [#96](https://github.com/jupyterlab/jupyter_collaboration/pull/96) ([@fcollonval](https://github.com/fcollonval))
- Add releaser workflows [#95](https://github.com/jupyterlab/jupyter_collaboration/pull/95) ([@fcollonval](https://github.com/fcollonval))
- Rename to `jupyter_collaboration` and `@jupyter/collaboration` [#91](https://github.com/jupyterlab/jupyter_collaboration/pull/91) ([@fcollonval](https://github.com/fcollonval))
- Renames python package and lab extension [#88](https://github.com/jupyterlab/jupyter_collaboration/pull/88) ([@hbcarlos](https://github.com/hbcarlos))
- Drop pytest_tornasync [#87](https://github.com/jupyterlab/jupyter_collaboration/pull/87) ([@fcollonval](https://github.com/fcollonval))
- Fix releaser job [#82](https://github.com/jupyterlab/jupyter_collaboration/pull/82) ([@fcollonval](https://github.com/fcollonval))

### Documentation improvements

- Add binder [#99](https://github.com/jupyterlab/jupyter_collaboration/pull/99) ([@fcollonval](https://github.com/fcollonval))
- Link to the `jupyter_ydoc` repo in README.md [#90](https://github.com/jupyterlab/jupyter_collaboration/pull/90) ([@jtpio](https://github.com/jtpio))
- Improve readme [#86](https://github.com/jupyterlab/jupyter_collaboration/pull/86) ([@fcollonval](https://github.com/fcollonval))
- Improve the documentation [#85](https://github.com/jupyterlab/jupyter_collaboration/pull/85) ([@fcollonval](https://github.com/fcollonval))
- Moves documentation from JupyterLab [#84](https://github.com/jupyterlab/jupyter_collaboration/pull/84) ([@hbcarlos](https://github.com/hbcarlos))
- Adds documentation [#80](https://github.com/jupyterlab/jupyter_collaboration/pull/80) ([@hbcarlos](https://github.com/hbcarlos))
- Update links [#79](https://github.com/jupyterlab/jupyter_collaboration/pull/79) ([@hbcarlos](https://github.com/hbcarlos))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-01-26&to=2023-02-21&type=c))

[@cghanke](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acghanke+updated%3A2023-01-26..2023-02-21&type=Issues) | [@codecov](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov+updated%3A2023-01-26..2023-02-21&type=Issues) | [@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov-commenter+updated%3A2023-01-26..2023-02-21&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Afcollonval+updated%3A2023-01-26..2023-02-21&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ahbcarlos+updated%3A2023-01-26..2023-02-21&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ajtpio+updated%3A2023-01-26..2023-02-21&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Apre-commit-ci+updated%3A2023-01-26..2023-02-21&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Awelcome+updated%3A2023-01-26..2023-02-21&type=Issues)

## 1.0.0alpha0

([Full Changelog](https://github.com/jupyterlab/jupyter_collaboration/compare/v0.7.0...fd69ba94af56f069434b2c8638ada90500ef4be5))

### Enhancements made

- Setup a monorepo with a JupyterLab extension [#77](https://github.com/jupyterlab/jupyter_collaboration/pull/77) ([@hbcarlos](https://github.com/hbcarlos))
- Move rtc packages [#76](https://github.com/jupyterlab/jupyter_collaboration/pull/76) ([@hbcarlos](https://github.com/hbcarlos))

### Bugs fixed

- Add missing argument for format string (#92) [#93](https://github.com/jupyterlab/jupyter_collaboration/pull/93) ([@cghanke](https://github.com/cghanke))

### Maintenance and upkeep improvements

- Add releaser workflows [#95](https://github.com/jupyterlab/jupyter_collaboration/pull/95) ([@fcollonval](https://github.com/fcollonval))
- Rename to `jupyter_collaboration` and `@jupyter/collaboration` [#91](https://github.com/jupyterlab/jupyter_collaboration/pull/91) ([@fcollonval](https://github.com/fcollonval))
- Renames python package and lab extension [#88](https://github.com/jupyterlab/jupyter_collaboration/pull/88) ([@hbcarlos](https://github.com/hbcarlos))
- Drop pytest_tornasync [#87](https://github.com/jupyterlab/jupyter_collaboration/pull/87) ([@fcollonval](https://github.com/fcollonval))
- Fix releaser job [#82](https://github.com/jupyterlab/jupyter_collaboration/pull/82) ([@fcollonval](https://github.com/fcollonval))

### Documentation improvements

- Link to the `jupyter_ydoc` repo in README.md [#90](https://github.com/jupyterlab/jupyter_collaboration/pull/90) ([@jtpio](https://github.com/jtpio))
- Improve readme [#86](https://github.com/jupyterlab/jupyter_collaboration/pull/86) ([@fcollonval](https://github.com/fcollonval))
- Improve the documentation [#85](https://github.com/jupyterlab/jupyter_collaboration/pull/85) ([@fcollonval](https://github.com/fcollonval))
- Moves documentation from JupyterLab [#84](https://github.com/jupyterlab/jupyter_collaboration/pull/84) ([@hbcarlos](https://github.com/hbcarlos))
- Adds documentation [#80](https://github.com/jupyterlab/jupyter_collaboration/pull/80) ([@hbcarlos](https://github.com/hbcarlos))
- Update links [#79](https://github.com/jupyterlab/jupyter_collaboration/pull/79) ([@hbcarlos](https://github.com/hbcarlos))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlab/jupyter_collaboration/graphs/contributors?from=2023-01-26&to=2023-02-20&type=c))

[@cghanke](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acghanke+updated%3A2023-01-26..2023-02-20&type=Issues) | [@codecov](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov+updated%3A2023-01-26..2023-02-20&type=Issues) | [@codecov-commenter](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Acodecov-commenter+updated%3A2023-01-26..2023-02-20&type=Issues) | [@fcollonval](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Afcollonval+updated%3A2023-01-26..2023-02-20&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ahbcarlos+updated%3A2023-01-26..2023-02-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Ajtpio+updated%3A2023-01-26..2023-02-20&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Apre-commit-ci+updated%3A2023-01-26..2023-02-20&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyterlab%2Fjupyter_collaboration+involves%3Awelcome+updated%3A2023-01-26..2023-02-20&type=Issues)

## 0.x

The version prior to 1.0.0 were containing only the Jupyter Server backend code and were released under the name
[`jupyter-server-ydoc`](https://pypi.org/project/jupyter-server-ydoc/).

### 0.7.0

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.6.1...1ead1e4fea73b561439254d1e4df870309f304a4))

#### Maintenance and upkeep improvements

- Update ydoc [#75](https://github.com/jupyter-server/jupyter_server_ydoc/pull/75) ([@hbcarlos](https://github.com/hbcarlos))
- Add target to document change callback [#72](https://github.com/jupyter-server/jupyter_server_ydoc/pull/72) ([@davidbrochart](https://github.com/davidbrochart))
- Ignore ImportWarning in PyPy tests [#71](https://github.com/jupyter-server/jupyter_server_ydoc/pull/71) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-12-06&to=2023-01-25&type=c))

[@codecov](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov+updated%3A2022-12-06..2023-01-25&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-12-06..2023-01-25&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Ahbcarlos+updated%3A2022-12-06..2023-01-25&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-12-06..2023-01-25&type=Issues)

### 0.6.1

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.6.0...c7da14326ce8af586a5282a739eef2fa4cc042ca))

#### Enhancements made

- Allow to set SQLiteYStore's database path and document time-to-live [#66](https://github.com/jupyter-server/jupyter_server_ydoc/pull/66) ([@davidbrochart](https://github.com/davidbrochart))

#### Bugs fixed

- Allow to set SQLiteYStore's database path and document time-to-live [#66](https://github.com/jupyter-server/jupyter_server_ydoc/pull/66) ([@davidbrochart](https://github.com/davidbrochart))

#### Maintenance and upkeep improvements

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-11-25&to=2022-12-06&type=c))

[@codecov](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov+updated%3A2022-11-25..2022-12-06&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-11-25..2022-12-06&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-11-25..2022-12-06&type=Issues)

### 0.6.0

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.5.1...93511865dfa0b0cc16d4fd72150b824a6a5500df))

#### Enhancements made

- Remove metadata [#64](https://github.com/jupyter-server/jupyter_server_ydoc/pull/64) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-11-23&to=2022-11-25&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-11-23..2022-11-25&type=Issues)

### 0.5.1

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.5.0...5d5f6dd96121beea37c4c646dd4feeb0579063fc))

#### Enhancements made

- Pass logger to YStore [#63](https://github.com/jupyter-server/jupyter_server_ydoc/pull/63) ([@davidbrochart](https://github.com/davidbrochart))

#### Bugs fixed

- Revert #61 [#62](https://github.com/jupyter-server/jupyter_server_ydoc/pull/62) ([@davidbrochart](https://github.com/davidbrochart))

#### Maintenance and upkeep improvements

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-11-22&to=2022-11-23&type=c))

[@codecov](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov+updated%3A2022-11-22..2022-11-23&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-11-22..2022-11-23&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-11-22..2022-11-23&type=Issues)

### 0.5.0

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.4.0...a8d0e59096b313cbdfc2595a9977041162b4e6b1))

#### Bugs fixed

- Add base_url to routes [#61](https://github.com/jupyter-server/jupyter_server_ydoc/pull/61) ([@davidbrochart](https://github.com/davidbrochart))

#### Maintenance and upkeep improvements

- Update ypy-websocket [#59](https://github.com/jupyter-server/jupyter_server_ydoc/pull/59) ([@hbcarlos](https://github.com/hbcarlos))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-11-17&to=2022-11-22&type=c))

[@codecov](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov+updated%3A2022-11-17..2022-11-22&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-11-17..2022-11-22&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Ahbcarlos+updated%3A2022-11-17..2022-11-22&type=Issues)

### 0.4.0

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.3.0...7a024df7b96763d2e065a259728233101dd328e3))

#### Enhancements made

- Pass logger to YRoom, require ypy-websocket >=0.5.0 [#58](https://github.com/jupyter-server/jupyter_server_ydoc/pull/58) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-11-15&to=2022-11-17&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-11-15..2022-11-17&type=Issues)

### 0.3.0

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.2.0...c1354de8fd9bc7a1f1f36197135924ea7f2e189d))

#### Enhancements made

- Add monitor [#55](https://github.com/jupyter-server/jupyter_server_ydoc/pull/55) ([@davidbrochart](https://github.com/davidbrochart))
- Move configuration from JupyterLab [#54](https://github.com/jupyter-server/jupyter_server_ydoc/pull/54) ([@davidbrochart](https://github.com/davidbrochart))

#### Bugs fixed

- Require jupyter_server_fileid [#51](https://github.com/jupyter-server/jupyter_server_ydoc/pull/51) ([@davidbrochart](https://github.com/davidbrochart))

#### Maintenance and upkeep improvements

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-11-02&to=2022-11-15&type=c))

[@codecov](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov+updated%3A2022-11-02..2022-11-15&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-11-02..2022-11-15&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-11-02..2022-11-15&type=Issues)

### 0.2.0

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.14...9fb989e5fba5a2144a9ccff0f6ea1694a284d1e4))

#### Enhancements made

- Adds a new setting for saving document delay [#46](https://github.com/jupyter-server/jupyter_server_ydoc/pull/46) ([@hbcarlos](https://github.com/hbcarlos))

#### Maintenance and upkeep improvements

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-10-28&to=2022-11-02&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov-commenter+updated%3A2022-10-28..2022-11-02&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Ahbcarlos+updated%3A2022-10-28..2022-11-02&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-10-28..2022-11-02&type=Issues)

### 0.1.14

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.13...547667399adeefcf2729a2c76b4526e752efdbf6))

#### Enhancements made

- Use Jupyter file ID service if installed [#41](https://github.com/jupyter-server/jupyter_server_ydoc/pull/41) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-10-26&to=2022-10-28&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-10-26..2022-10-28&type=Issues)

### 0.1.13

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.12...43ec5733539b1679f82b71d76db8946f59aad534))

#### Enhancements made

- Don't unobserve and observe again [#39](https://github.com/jupyter-server/jupyter_server_ydoc/pull/39) ([@davidbrochart](https://github.com/davidbrochart))

#### Maintenance and upkeep improvements

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-09-26&to=2022-10-26&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov-commenter+updated%3A2022-09-26..2022-10-26&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-09-26..2022-10-26&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-09-26..2022-10-26&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Awelcome+updated%3A2022-09-26..2022-10-26&type=Issues)

### 0.1.12

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.11...91e48a84163d5a812a16ed61287d0ce345981ee7))

#### Enhancements made

#### Maintenance and upkeep improvements

- Switch to hatch version [#33](https://github.com/jupyter-server/jupyter_server_ydoc/pull/33) ([@davidbrochart](https://github.com/davidbrochart))
- Update to YDoc 0.2 [#32](https://github.com/jupyter-server/jupyter_server_ydoc/pull/32) ([@hbcarlos](https://github.com/hbcarlos))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-08-08&to=2022-09-26&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov-commenter+updated%3A2022-08-08..2022-09-26&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-08-08..2022-09-26&type=Issues) | [@hbcarlos](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Ahbcarlos+updated%3A2022-08-08..2022-09-26&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-08-08..2022-09-26&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Awelcome+updated%3A2022-08-08..2022-09-26&type=Issues)

### 0.1.11

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.10...d7e728b0c773977c6a307d7a8878b40c6be3a13d))

#### Enhancements made

- Implement filtering in on_message [#25](https://github.com/jupyter-server/jupyter_server_ydoc/pull/25) ([@davidbrochart](https://github.com/davidbrochart))

#### Maintenance and upkeep improvements

- [pre-commit.ci] pre-commit autoupdate [#24](https://github.com/jupyter-server/jupyter_server_ydoc/pull/24) ([@pre-commit-ci](https://github.com/pre-commit-ci))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-30&to=2022-08-08&type=c))

[@codecov-commenter](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Acodecov-commenter+updated%3A2022-07-30..2022-08-08&type=Issues) | [@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-30..2022-08-08&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-07-30..2022-08-08&type=Issues)

### 0.1.10

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.9...821fd7124480b5a1dbe723f1188da6083ad1f332))

#### Enhancements made

- Add TransientRoom [#22](https://github.com/jupyter-server/jupyter_server_ydoc/pull/22) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-29&to=2022-07-30&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-29..2022-07-30&type=Issues)

### 0.1.9

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.8...1eb8c61f9962b9d0b9b67538946e2041d816e317))

#### Bugs fixed

- Support Jupyter server base URL [#20](https://github.com/jupyter-server/jupyter_server_ydoc/pull/20) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-27&to=2022-07-29&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-27..2022-07-29&type=Issues)

### 0.1.8

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.7...8c8e3f086a80c07b58257adfe19887385fd2ff4c))

#### Enhancements made

- Bump dependencies [#18](https://github.com/jupyter-server/jupyter_server_ydoc/pull/18) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-26&to=2022-07-27&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-26..2022-07-27&type=Issues)

### 0.1.7

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.6...1a43251c35a4a59fa2b8439d72fc8a5e2db669f9))

#### Enhancements made

- Bump jupyter_ydoc=0.1.14 [#16](https://github.com/jupyter-server/jupyter_server_ydoc/pull/16) ([@davidbrochart](https://github.com/davidbrochart))

#### Maintenance and upkeep improvements

- [pre-commit.ci] pre-commit autoupdate [#15](https://github.com/jupyter-server/jupyter_server_ydoc/pull/15) ([@pre-commit-ci](https://github.com/pre-commit-ci))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-25&to=2022-07-26&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-25..2022-07-26&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-07-25..2022-07-26&type=Issues)

### 0.1.6

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.5...a90fec40d3b79e0fea564308e93d0868674250e5))

#### Bugs fixed

- Fix typing for python <=3.8 [#13](https://github.com/jupyter-server/jupyter_server_ydoc/pull/13) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-25&to=2022-07-25&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-25..2022-07-25&type=Issues)

### 0.1.5

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.4...382cfd1d2a2676880cfcb210e3a15dc7e342c070))

#### Enhancements made

- Save Y updates using YStore [#2](https://github.com/jupyter-server/jupyter_server_ydoc/pull/2) ([@davidbrochart](https://github.com/davidbrochart))

#### Maintenance and upkeep improvements

- [pre-commit.ci] pre-commit autoupdate [#11](https://github.com/jupyter-server/jupyter_server_ydoc/pull/11) ([@pre-commit-ci](https://github.com/pre-commit-ci))
- [pre-commit.ci] pre-commit autoupdate [#10](https://github.com/jupyter-server/jupyter_server_ydoc/pull/10) ([@pre-commit-ci](https://github.com/pre-commit-ci))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-11&to=2022-07-25&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-11..2022-07-25&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Apre-commit-ci+updated%3A2022-07-11..2022-07-25&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Awelcome+updated%3A2022-07-11..2022-07-25&type=Issues)

### 0.1.4

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.3...3b6db1b0cb6e4a060af9f350b1d62396992931f9))

#### Merged PRs

- Fix changelog [#8](https://github.com/jupyter-server/jupyter_server_ydoc/pull/8) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-11&to=2022-07-11&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-11..2022-07-11&type=Issues)

### 0.1.3

### 0.1.2

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/v0.1.1...36bf3c1908d850fc11fb784a6adead4be86f3e4a))

#### Bugs fixed

- Fix jupyter_server import [#5](https://github.com/jupyter-server/jupyter_server_ydoc/pull/5) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-11&to=2022-07-11&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-11..2022-07-11&type=Issues)

### 0.1.1

([Full Changelog](https://github.com/jupyter-server/jupyter_server_ydoc/compare/d175b8a607985886ef0fd51af994ae186b527c12...e91f593a4213e314508418e951dc3aa3bb66cdcf))

#### Bugs fixed

- Remove docs link for now [#3](https://github.com/jupyter-server/jupyter_server_ydoc/pull/3) ([@davidbrochart](https://github.com/davidbrochart))

#### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyter-server/jupyter_server_ydoc/graphs/contributors?from=2022-07-10&to=2022-07-10&type=c))

[@davidbrochart](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Adavidbrochart+updated%3A2022-07-10..2022-07-10&type=Issues) | [@welcome](https://github.com/search?q=repo%3Ajupyter-server%2Fjupyter_server_ydoc+involves%3Awelcome+updated%3A2022-07-10..2022-07-10&type=Issues)

### 0.1.0


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to JupyterLab Real-Time Collaboration

If you're reading this section, you're probably interested in contributing to
JupyterLab Real-Time Collaboration. Welcome and thanks for your interest in contributing!

Please take a look at Contributing to this extension on
[Read the Docs](https://jupyterlab-realtime-collaboration.readthedocs.io/en/latest/developer/contributing.html) or
[Repo docs](docs/source/developer/contributing.md) (for the latest).


================================================
FILE: LICENSE
================================================
# Licensing terms

This project is licensed under the terms of the Modified BSD License
(also known as New or Revised or 3-Clause BSD), as follows:

- Copyright (c) 2021-, Jupyter Development Team

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.

Neither the name of the Jupyter Development Team nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

## About the Jupyter Development Team

The Jupyter Development Team is the set of all contributors to the Jupyter project.
This includes all of the Jupyter subprojects.

The core team that coordinates development on GitHub can be found here:
https://github.com/jupyter/.

## Our Copyright Policy

Jupyter uses a shared copyright model. Each contributor maintains copyright
over their contributions to Jupyter. But, it is important to note that these
contributions are typically only changes to the repositories. Thus, the Jupyter
source code, in its entirety is not the copyright of any single person or
institution. Instead, it is the collective copyright of the entire Jupyter
Development Team. If individual contributors want to maintain a record of what
changes/contributions they have specific copyright on, they should indicate
their copyright in the commit message of the change, when they commit the
change to one of the Jupyter repositories.

With this in mind, the following banner should be used in any source code file
to indicate the copyright and license terms:

    # Copyright (c) Jupyter Development Team.
    # Distributed under the terms of the Modified BSD License.


================================================
FILE: README.md
================================================
# Jupyter Real-Time Collaboration

[![Build Status](https://github.com/jupyterlab/jupyter_collaboration/actions/workflows/test.yml/badge.svg?query=branch%3Amain++)](https://github.com/jupyterlab/jupyter_collaboration/actions?query=branch%3Amain++)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyterlab/jupyter_collaboration/main)
[![PyPI](https://img.shields.io/pypi/v/jupyter-collaboration)](https://pypi.org/project/jupyter-collaboration)
[![npm](https://img.shields.io/npm/v/@jupyter/collaboration-extension)](https://www.npmjs.com/package/@jupyter/collaboration-extension)

JupyterLab Real-Time Collaboration is a Jupyter Server Extension and JupyterLab extensions providing support for [Y documents](https://github.com/jupyter-server/jupyter_ydoc) and adding collaboration UI elements in JupyterLab.

![Real-Time Collaboration Demonstration](./docs/source/images/rtc_shared_cursors.png)

## Installation and Basic usage

To install the latest release locally, make sure you have
[pip installed](https://pip.readthedocs.io/en/stable/installing/) and run:

```bash
pip install jupyter-collaboration
```

Or using ``conda``/``mamba``:

```bash
conda install -c conda-forge jupyter-collaboration
```

### Testing

See [CONTRIBUTING](./docs/source/developer/contributing.md#running-tests).

## Contributing

If you are interested in contributing to the project, see [CONTRIBUTING](./docs/source/developer/contributing.md).


================================================
FILE: RELEASE.md
================================================
# Making a jupyter-collaboration Release

## Using `jupyter_releaser`

The recommended way to make a release is to use [`jupyter_releaser`](https://github.com/jupyter-server/jupyter_releaser#checklist-for-adoption).

## Version specification

Here is an example of how version numbers progress through a release process.
Input appropriate specifier into the `jupyter-releaser` workflow dispatch dialog to bump version numbers for this release.

| Command   | Python Version Change | NPM Version change                 |
| --------- | --------------------- | ---------------------------------- |
| `major`   | x.y.z-> (x+1).0.0.a0  | All a.b.c -> a.(b+10).0-alpha.0    |
| `minor`   | x.y.z-> x.(y+1).0.a0  | All a.b.c -> a.(b+1).0-alpha.0     |
| `build`   | x.y.z.a0-> x.y.z.a1   | All a.b.c-alpha.0 -> a.b.c-alpha.1 |
| `release` | x.y.z.a1-> x.y.z.b0   | All a.b.c-alpha.1 -> a.b.c-beta.0  |
| `release` | x.y.z.b1-> x.y.z.rc0  | All a.b.c-beta.1 -> a.b.c-rc.0     |
| `release` | x.y.z.rc0-> x.y.z     | All a.b.c-rc0 -> a.b.c             |
| `patch`   | x.y.z -> x.y.(z+1)    | Changed a.b.c -> a.b.(c+1)         |


================================================
FILE: binder/environment.yml
================================================
name: example-environment
channels:
  - conda-forge
  - nodefaults
dependencies:
  - jupyterlab >=4.0.0
  - nodejs >=18,<19
  - python >=3.11,<3.12
  - yarn >=3,<4
  # build
  - hatchling >=1.5.0
  - hatch-jupyter-builder >=0.3.2
  - hatch-nodejs-version
  # dependencies
  - jupyter_server >=2.0.0
  # Use pip to get the the latest version
  - pip:
    - jupyter_server_fileid >=0.7.0
    - jupyter_ydoc >=1.0.0
    - ypy-websocket >=0.12.0


================================================
FILE: binder/jupyter_config.py
================================================
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.
import logging

c.ServerApp.log_level = logging.DEBUG

c.ContentsManager.allow_hidden = True
# Use advance file ID service for out of band rename support
c.FileIdExtension.file_id_manager_class = "jupyter_server_fileid.manager.LocalFileIdManager"


================================================
FILE: binder/postBuild
================================================
#!/usr/bin/env bash

# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.

source activate ${NB_PYTHON_PREFIX}

set -euxo pipefail

yarn || yarn

python -m pip install -vv -e . --no-build-isolation
jupyter server extension enable jupyter_collaboration

mkdir -p ~/.jupyter/

cp binder/jupyter_config.py ~/.jupyter/

# FIXME until jupyter-server is the default on binder
cp ${NB_PYTHON_PREFIX}/bin/jupyter-lab ${NB_PYTHON_PREFIX}/bin/jupyter-notebook

jupyter troubleshoot
jupyter notebook --show-config
jupyter lab --show-config
jupyter labextension list
jupyter server extension list


================================================
FILE: codecov.yml
================================================
coverage:
  status:
    project:
      default:
        target: auto
        threshold: 10
    patch:
      default:
        target: 0%


================================================
FILE: docs/Makefile
================================================
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.

# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS    ?=
SPHINXBUILD   ?= sphinx-build
SOURCEDIR     = source
BUILDDIR      = build

# Put it first so that "make" without argument is like "make help".
help:
	@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

clean:
	# clean api build as well
	-rm -rf "$(SOURCEDIR)/ts"
	@$(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)


================================================
FILE: docs/make.bat
================================================
rem Copyright (c) Jupyter Development Team.
rem Distributed under the terms of the Modified BSD License.

@ECHO OFF

pushd %~dp0

REM Command file for Sphinx documentation

if "%SPHINXBUILD%" == "" (
	set SPHINXBUILD=sphinx-build
)
set SOURCEDIR=source
set BUILDDIR=build

%SPHINXBUILD% >NUL 2>NUL
if errorlevel 9009 (
	echo.
	echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
	echo.installed, then set the SPHINXBUILD environment variable to point
	echo.to the full path of the 'sphinx-build' executable. Alternatively you
	echo.may add the Sphinx directory to PATH.
	echo.
	echo.If you don't have Sphinx installed, grab it from
	echo.https://www.sphinx-doc.org/
	exit /b 1
)

if "%1" == "" goto help

%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
goto end

:help
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%

:end
popd


================================================
FILE: docs/source/conf.py
================================================
# Copyright (c) Jupyter Development Team.
# Distributed under the terms of the Modified BSD License.

# Configuration file for the Sphinx documentation builder.
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

import shutil
import time
from pathlib import Path
from subprocess import check_call

HERE = Path(__file__).parent.resolve()

# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information

project = "jupyter_collaboration"
copyright = f"2022-{time.localtime().tm_year}, Jupyter Development Team"  # noqa
author = "Jupyter Development Team"
release = "0.3.0"

# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

extensions = ["myst_parser", "sphinx.ext.autodoc", "sphinxcontrib.mermaid"]

templates_path = ["_templates"]
exclude_patterns = ["ts/**"]
source_suffix = {
    ".rst": "restructuredtext",
    ".md": "markdown",
}

# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

html_extra_path = ["ts"]
html_theme = "pydata_sphinx_theme"
html_logo = "_static/jupyter_logo.svg"
html_favicon = "_static/logo-icon.png"
# Theme options are theme-specific and customize the look and feel of a theme
# further.  For a list of options available for each theme, see the
# documentation.
#
html_theme_options = {
    "logo": {
        "text": "Real-Time Collaboration",
        "image_dark": "jupyter_logo.svg",
        "alt_text": "JupyterLab Real-Time Collaboration",
    },
    "icon_links": [
        {
            "name": "jupyter.org",
            "url": "https://jupyter.org",
            "icon": "_static/jupyter_logo.svg",
            "type": "local",
        }
    ],
    "github_url": "https://github.com/jupyterlab/jupyter-collaboration",
    "use_edit_page_button": True,
    "show_toc_level": 1,
    "navbar_align": "left",
    "navbar_end": ["navbar-icon-links.html"],
    "footer_start": ["copyright.html"],
}

# Output for github to be used in links
html_context = {
    "github_user": "jupyterlab",  # Username
    "github_repo": "jupyter-collaboration",  # Repo name
    "github_version": "main",  # Version
    "doc_path": "docs/source",  # Path from repo root to the docs folder
    "conf_py_path": "/docs/source",  # Path in the checkout to the docs root
}

myst_heading_anchors = 3


def setup(app):
    # Copy changelog.md file
    dest = HERE / "changelog.md"
    shutil.copy(str(HERE.parent.parent / "CHANGELOG.md"), str(dest))

    # Build JavaScript Docs
    js = HERE.parent.parent
    js_docs = HERE / "ts" / "api"
    if js_docs.exists():
        shutil.rmtree(js_docs)

    print("Building JavaScript API docs")
    check_call(["jlpm", "install"], cwd=str(js))
    check_call(["jlpm", "run", "docs"], cwd=str(js))


================================================
FILE: docs/source/configuration.md
================================================
# Configuration

User Settings
-----------------

The user identity is managed by `jupyter-server` and is configurable starting from `jupyter-server` v2.17.0 and `jupyter-collaboration` v4.1.0.

To change your username, display name, or color:

1. Click the **Collaboration** icon in the left sidebar.
2. In the **User Info** section, click your user icon.
3. Edit your details in the form that appears.

![User settings](images/rtc_user_settings.png)

> **Note**: This functionality works only for standalone servers and is not supported in JupyterHub.

Storage Configuration
---------------------

By default, any change made to a document is saved to disk in an SQLite database file called
`.jupyter_ystore.db` in the directory where JupyterLab was launched. This file helps in
preserving the timeline of documents, for instance between JupyterLab sessions, or when a user
looses connection and goes offline for a while. You should never have to touch it, and it is
fine to just ignore it, including in your version control system (don't commit this file). If
you happen to delete it, there shouldn't be any serious consequence either.

There are a number of settings that you can change:

```bash
# To enable or disable RTC (Real-Time Collaboration) (default: False).
# If True, RTC will be disabled.
jupyter lab --YDocExtension.disable_rtc=True

# The delay of inactivity (in seconds) after which a document is saved to disk (default: 1).
# If None, the document will never be saved.
jupyter lab --YDocExtension.document_save_delay=0.5

# The period (in seconds) to check for file changes on disk (default: 1).
# If 0, file changes will only be checked when saving.
jupyter lab --YDocExtension.file_poll_interval=2

# The delay (in seconds) to keep a document in memory in the back-end after all clients disconnect (default: 60).
# If None, the document will be kept in memory forever.
jupyter lab --YDocExtension.document_cleanup_delay=100

# The YStore class to use for storing Y updates (default: JupyterSQLiteYStore).
jupyter lab --YDocExtension.ystore_class=pycrdt.store.TempFileYStore
```

There is an experimental feature that is currently only supported by the
[Jupyverse](https://github.com/jupyter-server/jupyverse) server
(not yet with [jupyter-server](https://github.com/jupyter-server/jupyter_server),
see the [issue #900](https://github.com/jupyter-server/jupyter_server/issues/900)):
server-side execution. With this, running notebook code cells is not done in the frontend through
the low-level kernel protocol over WebSocket API, but through a high-level REST API. Communication
with the kernel is then delegated to the server, and cell outputs are populated in the notebook
shared document. The frontend gets these outputs changes and shows them live. What this means is
that the notebook state can be recovered even if the frontend disconnects, because cell outputs are
not populated frontend-side but server-side.

This feature is disabled by default, and can be enabled like so:
```bash
pip install "jupyterlab>=4.2.0b0"
pip install "jupyverse[jupyterlab, auth]>=0.4.2"
jupyverse --set kernels.require_yjs=true --set jupyterlab.server_side_execution=true
```


================================================
FILE: docs/source/developer/architecture.md
================================================
# Code Architecture

## Current Implementation

Jupyter Collaboration consists of several Python packages and frontend extensions:

- **jupyter_server_ydoc**:
  A Jupyter Server extension providing core collaborative models. It manages YDocument data structures tied to notebook files and exposes WebSocket endpoints for real-time updates. It integrates CRDTs into Jupyter’s file management and kernel system.

- **jupyter_collaboration**:
  A meta-package that bundles the backend (`jupyter_server_ydoc`) and frontend (JupyterLab and Notebook 7 UI extensions). It connects the collaborative frontend UX (status badges, shared cursors, etc.) with the backend.

### Key dependencies:

- **pycrdt-websocket**:
  WebSocket provider library used by the collaboration layer. It runs an async WebSocket server that synchronizes pycrdt documents by managing CRDT updates between clients and the shared server YDoc.

- **pycrdt-store**:
  Persistence layer for CRDT documents. Uses an SQLite-backed store (`.jupyter_ystore.db`) by default to checkpoint document history. Enables autosave and document state recovery after restarts or offline periods.

<div align="center">

```{mermaid}
  graph TD
    subgraph "Frontend Clients"
      JL["JupyterLab Client"]
      NB["Notebook Client"]
    end

    subgraph "Jupyter Server"
      COLLAB["Collaboration Layer"]
      WS["WebSocket Provider (pycrdt-websocket)"]
      YDOC["Shared YDoc"]
      STORE["Persistent Store (pycrdt-store)"]
    end

    JL -->|WebSocket| COLLAB
    NB -->|WebSocket| COLLAB
    COLLA
Download .txt
gitextract_bz7cwb94/

├── .eslintignore
├── .eslintrc.js
├── .flake8
├── .gitconfig
├── .github/
│   └── workflows/
│       ├── binder-badge.yml
│       ├── check-release.yml
│       ├── enforce-label.yml
│       ├── license-header.yml
│       ├── prep-release.yml
│       ├── publish-changelog.yml
│       ├── publish-release.yml
│       ├── test.yml
│       └── update_galata_references.yaml
├── .gitignore
├── .licenserc.yaml
├── .npmignore
├── .pre-commit-config.yaml
├── .prettierignore
├── .prettierrc
├── .readthedocs.yaml
├── .stylelintrc
├── .yarnrc.yml
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── RELEASE.md
├── binder/
│   ├── environment.yml
│   ├── jupyter_config.py
│   └── postBuild
├── codecov.yml
├── docs/
│   ├── Makefile
│   ├── make.bat
│   └── source/
│       ├── conf.py
│       ├── configuration.md
│       ├── developer/
│       │   ├── architecture.md
│       │   ├── contributing.md
│       │   ├── javascript_api.md
│       │   └── python_api.md
│       └── index.md
├── install.json
├── lerna.json
├── package.json
├── packages/
│   ├── collaboration/
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── collaboratorspanel.tsx
│   │   │   ├── components.tsx
│   │   │   ├── cursors.ts
│   │   │   ├── index.ts
│   │   │   ├── menu.ts
│   │   │   ├── sharedlink.ts
│   │   │   ├── tokens.ts
│   │   │   ├── userinfopanel.tsx
│   │   │   └── users-item.tsx
│   │   ├── style/
│   │   │   ├── base.css
│   │   │   ├── index.css
│   │   │   ├── index.js
│   │   │   ├── menu.css
│   │   │   ├── sharedlink.css
│   │   │   ├── sidepanel.css
│   │   │   └── users-item.css
│   │   └── tsconfig.json
│   ├── collaboration-extension/
│   │   ├── README.md
│   │   ├── package.json
│   │   ├── schema/
│   │   │   ├── shared-link.json
│   │   │   └── user-menu-bar.json
│   │   ├── src/
│   │   │   ├── collaboration.ts
│   │   │   ├── index.ts
│   │   │   └── sharedlink.ts
│   │   ├── style/
│   │   │   ├── index.css
│   │   │   └── index.js
│   │   └── tsconfig.json
│   ├── collaborative-drive/
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── index.ts
│   │   │   └── tokens.ts
│   │   └── tsconfig.json
│   ├── docprovider/
│   │   ├── babel.config.js
│   │   ├── jest.config.js
│   │   ├── package.json
│   │   ├── src/
│   │   │   ├── TimelineSlider.tsx
│   │   │   ├── __tests__/
│   │   │   │   ├── forkManager.spec.ts
│   │   │   │   └── yprovider.spec.ts
│   │   │   ├── awareness.ts
│   │   │   ├── component.tsx
│   │   │   ├── forkManager.ts
│   │   │   ├── index.ts
│   │   │   ├── notebookCellExecutor.ts
│   │   │   ├── requests.ts
│   │   │   ├── tokens.ts
│   │   │   ├── ydrive.ts
│   │   │   └── yprovider.ts
│   │   ├── style/
│   │   │   ├── base.css
│   │   │   ├── index.css
│   │   │   ├── index.js
│   │   │   └── slider.css
│   │   ├── tsconfig.json
│   │   └── tsconfig.test.json
│   └── docprovider-extension/
│       ├── README.md
│       ├── babel.config.js
│       ├── package.json
│       ├── src/
│       │   ├── executor.ts
│       │   ├── filebrowser.ts
│       │   ├── forkManager.ts
│       │   ├── index.ts
│       │   └── yprovider.ts
│       ├── style/
│       │   ├── index.css
│       │   └── index.js
│       └── tsconfig.json
├── projects/
│   ├── jupyter-collaboration/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── jupyter_collaboration/
│   │   │   ├── __init__.py
│   │   │   └── _version.py
│   │   ├── pyproject.toml
│   │   └── setup.py
│   ├── jupyter-collaboration-ui/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── install.json
│   │   ├── jupyter_collaboration_ui/
│   │   │   ├── __init__.py
│   │   │   └── _version.py
│   │   ├── pyproject.toml
│   │   └── setup.py
│   ├── jupyter-docprovider/
│   │   ├── LICENSE
│   │   ├── README.md
│   │   ├── install.json
│   │   ├── jupyter_docprovider/
│   │   │   ├── __init__.py
│   │   │   └── _version.py
│   │   ├── pyproject.toml
│   │   └── setup.py
│   └── jupyter-server-ydoc/
│       ├── LICENSE
│       ├── README.md
│       ├── jupyter-config/
│       │   └── jupyter_server_ydoc.json
│       ├── jupyter_server_ydoc/
│       │   ├── __init__.py
│       │   ├── _version.py
│       │   ├── app.py
│       │   ├── events/
│       │   │   ├── awareness.yaml
│       │   │   ├── fork.yaml
│       │   │   └── session.yaml
│       │   ├── handlers.py
│       │   ├── loaders.py
│       │   ├── pytest_plugin.py
│       │   ├── rooms.py
│       │   ├── stores.py
│       │   ├── test_utils.py
│       │   ├── utils.py
│       │   └── websocketserver.py
│       ├── pyproject.toml
│       └── setup.py
├── pyproject.toml
├── scripts/
│   ├── bump_version.py
│   └── dev_install.py
├── setup.py
├── tests/
│   ├── __init__.py
│   ├── conftest.py
│   ├── test_app.py
│   ├── test_documents.py
│   ├── test_handlers.py
│   ├── test_loaders.py
│   ├── test_rooms.py
│   └── test_session_store.py
├── tsconfig.json
├── tsconfig.test.json
├── typedoc.json
└── ui-tests/
    ├── README.md
    ├── jupyter_server_test_config.py
    ├── package.json
    ├── playwright.config.js
    ├── playwright.timeline.config.js
    └── tests/
        ├── collaborationpanel.spec.ts
        ├── data/
        │   └── OutputExamples.ipynb
        ├── file.spec.ts
        ├── hub-share.spec.ts
        ├── notebook.spec.ts
        ├── timeline-slider.spec.ts
        └── user-menu.spec.ts
Download .txt
SYMBOL INDEX (408 symbols across 45 files)

FILE: docs/source/conf.py
  function setup (line 81) | def setup(app):

FILE: packages/collaboration-extension/src/collaboration.ts
  method factory (line 191) | factory(options) {

FILE: packages/collaboration/src/collaboratorspanel.tsx
  constant COLLABORATORS_PANEL_CLASS (line 25) | const COLLABORATORS_PANEL_CLASS = 'jp-CollaboratorsPanel';
  constant COLLABORATORS_LIST_CLASS (line 30) | const COLLABORATORS_LIST_CLASS = 'jp-CollaboratorsList';
  constant COLLABORATOR_CLASS (line 35) | const COLLABORATOR_CLASS = 'jp-Collaborator';
  constant COLLABORATOR_HEADER_CLASS (line 40) | const COLLABORATOR_HEADER_CLASS = 'jp-CollaboratorHeader';
  constant COLLABORATOR_HEADER_COLLAPSER_CLASS (line 45) | const COLLABORATOR_HEADER_COLLAPSER_CLASS = 'jp-CollaboratorHeaderCollap...
  constant CLICKABLE_COLLABORATOR_CLASS (line 50) | const CLICKABLE_COLLABORATOR_CLASS = 'jp-ClickableCollaborator';
  constant COLLABORATOR_ICON_CLASS (line 55) | const COLLABORATOR_ICON_CLASS = 'jp-CollaboratorIcon';
  constant COLLABORATOR_FILES_CLASS (line 60) | const COLLABORATOR_FILES_CLASS = 'jp-CollaboratorFiles';
  constant COLLABORATOR_FILE_CLASS (line 65) | const COLLABORATOR_FILE_CLASS = 'jp-CollaboratorFile';
  class CollaboratorsPanel (line 67) | class CollaboratorsPanel extends Panel {
    method constructor (line 68) | constructor(
  function CollaboratorsBody (line 128) | function CollaboratorsBody(props: {
  function Collaborator (line 160) | function Collaborator(props: {

FILE: packages/collaboration/src/components.tsx
  type UserIconProps (line 9) | type UserIconProps = {
  function UserIconComponent (line 26) | function UserIconComponent(props: UserIconProps): JSX.Element {
  type UserDetailsBodyProps (line 86) | type UserDetailsBodyProps = {
  class UserDetailsBody (line 96) | class UserDetailsBody extends ReactWidget {
    method constructor (line 100) | constructor(props: UserDetailsBodyProps) {
    method getValue (line 108) | getValue(): UserUpdate {
    method render (line 130) | render() {
  type UserUpdate (line 170) | type UserUpdate = {

FILE: packages/collaboration/src/cursors.ts
  type EditorAwareness (line 42) | type EditorAwareness = {
  type ICursorState (line 53) | interface ICursorState {
  type IAwarenessState (line 79) | interface IAwarenessState extends Record<string, any> {
  method combine (line 97) | combine(configs: readonly EditorAwareness[]) {
  class RemoteMarker (line 131) | class RemoteMarker implements LayerMarker {
    method constructor (line 138) | constructor(
    method draw (line 143) | draw(): HTMLDivElement {
    method eq (line 152) | eq(other: RemoteMarker): boolean {
    method update (line 158) | update(dom: HTMLElement, oldMarker: RemoteMarker): boolean {
  method markers (line 172) | markers(view) {
  method update (line 227) | update(update, layer) {
  method markers (line 293) | markers(view) {
  method update (line 341) | update(update, layer) {
  method constructor (line 361) | constructor(view: EditorView) {
  method destroy (line 378) | destroy(): void {
  method update (line 385) | update(update: ViewUpdate): void {
  function remoteUserCursors (line 457) | function remoteUserCursors(config: EditorAwareness): Extension {

FILE: packages/collaboration/src/menu.ts
  class RendererUserMenu (line 12) | class RendererUserMenu extends MenuBar.Renderer {
    method constructor (line 20) | constructor(user: User.IManager) {
    method renderItem (line 32) | renderItem(data: MenuBar.IRenderData): VirtualElement {
    method renderLabel (line 51) | renderLabel(data: MenuBar.IRenderData): VirtualElement {
    method _createUserIcon (line 64) | private _createUserIcon(): VirtualElement {
  class UserMenu (line 117) | class UserMenu extends Menu {
    method constructor (line 118) | constructor(options: UserMenu.IOptions) {
  type IOptions (line 130) | interface IOptions extends Menu.IOptions {

FILE: packages/collaboration/src/sharedlink.ts
  type ISharedLinkDialogOptions (line 21) | interface ISharedLinkDialogOptions {
  type IShare (line 34) | interface IShare {
  type IUser (line 57) | interface IUser {
  type IGroup (line 73) | interface IGroup {
  type IShareData (line 88) | interface IShareData {
  function showSharedLinkDialog (line 109) | async function showSharedLinkDialog({
  type ShareRecipient (line 257) | type ShareRecipient = (HubAPI.IUser | HubAPI.IGroup) & {
  class ManageSharesBody (line 261) | class ManageSharesBody extends Widget implements Dialog.IBodyWidget {
    method constructor (line 268) | constructor(
    method getValue (line 292) | getValue(): string {
    method onAfterAttach (line 296) | protected onAfterAttach(msg: Message): void {
    method onBeforeDetach (line 300) | protected onBeforeDetach(msg: Message): void {
    method _loadUsers (line 304) | private async _loadUsers(): Promise<void> {
    method _loadShares (line 366) | private async _loadShares(): Promise<void> {
    method _createShare (line 383) | private async _createShare(
    method _deleteShare (line 413) | private async _deleteShare(
    method _populateBody (line 431) | private _populateBody(dialogBody: HTMLElement): void {
    method _updateSearchResults (line 479) | private _updateSearchResults(): void {
    method _updateSharesList (line 515) | private async _updateSharesList(): Promise<void> {
  class SharedLinkBody (line 601) | class SharedLinkBody extends Widget implements Dialog.IBodyWidget {
    method constructor (line 605) | constructor(
    method getValue (line 620) | getValue(): string {
    method onAfterAttach (line 632) | protected onAfterAttach(msg: Message): void {
    method onBeforeDetach (line 637) | protected onBeforeDetach(msg: Message): void {
    method _updateContent (line 642) | private _updateContent(withToken: boolean): void {
    method _populateBody (line 714) | private _populateBody(dialogBody: HTMLElement): void {

FILE: packages/collaboration/src/tokens.ts
  type IUserMenu (line 21) | interface IUserMenu {
  type ICollaboratorAwareness (line 74) | interface ICollaboratorAwareness {

FILE: packages/collaboration/src/userinfopanel.tsx
  type UserInfoProps (line 21) | type UserInfoProps = {
  class UserInfoPanel (line 27) | class UserInfoPanel extends Panel {
    method constructor (line 32) | constructor(options: UserInfoProps) {
  class UserInfoBody (line 66) | class UserInfoBody
    method constructor (line 76) | constructor(props: UserInfoProps) {
    method user (line 84) | get user(): User.IManager {
    method user (line 88) | set user(user: User.IManager) {
    method render (line 137) | render(): JSX.Element {

FILE: packages/collaboration/src/users-item.tsx
  constant USERS_ITEM_CLASS (line 11) | const USERS_ITEM_CLASS = 'jp-toolbar-users-item';
  type IProps (line 20) | interface IProps {
  type IState (line 37) | interface IState {
  type IIconRendererProps (line 47) | interface IIconRendererProps
  type IUserData (line 63) | type IUserData = {
  class UsersItem (line 78) | class UsersItem extends React.Component<
    method constructor (line 82) | constructor(props: UsersItem.IProps) {
    method createWidget (line 92) | static createWidget(options: UsersItem.IProps): ReactWidget {
    method componentDidMount (line 96) | componentDidMount(): void {
    method filterDuplicated (line 104) | private filterDuplicated(
    method render (line 121) | render(): React.ReactNode {
  function DefaultIconRenderer (line 166) | function DefaultIconRenderer(

FILE: packages/collaborative-drive/src/tokens.ts
  type ICollaborativeContentProvider (line 29) | interface ICollaborativeContentProvider extends IContentProvider {
  type ISharedModelFactory (line 41) | interface ISharedModelFactory extends Contents.ISharedFactory {
  type IDocumentProvider (line 59) | interface IDocumentProvider extends IDisposable {

FILE: packages/docprovider-extension/src/filebrowser.ts
  constant DOCUMENT_TIMELINE_URL (line 47) | const DOCUMENT_TIMELINE_URL = 'api/collaboration/timeline';
  constant TWO_SESSIONS_WARNING (line 49) | const TWO_SESSIONS_WARNING =

FILE: packages/docprovider-extension/src/yprovider.ts
  constant PLUGIN_ID (line 24) | const PLUGIN_ID = '@jupyter/docprovider-extension:websocket-provider';
  class WebSocketDocumentProviderFactory (line 29) | class WebSocketDocumentProviderFactory implements IDocumentProviderFacto...
    method constructor (line 30) | constructor(private _trans: TranslationBundle) {}
    method create (line 32) | create(options: IDocumentProviderFactory.IOptions) {
  class WebSocketAwarenessProviderFactory (line 48) | class WebSocketAwarenessProviderFactory implements IAwarenessProviderFac...
    method create (line 49) | create(options: IAwarenessProviderFactory.IOptions) {

FILE: packages/docprovider/src/TimelineSlider.tsx
  class TimelineWidget (line 12) | class TimelineWidget extends ReactWidget {
    method constructor (line 20) | constructor(
    method render (line 38) | render(): JSX.Element {
    method updateContent (line 51) | updateContent(apiURL: string, provider: IForkProvider): void {

FILE: packages/docprovider/src/__tests__/yprovider.spec.ts
  type IMockWsProvider (line 22) | interface IMockWsProvider {
  method constructor (line 31) | constructor(_url: string, roomname: string) {
  method on (line 35) | on(eventName: string, listener: (payload: any) => void): void {
  method off (line 45) | off(eventName: string, listener: (payload: any) => void): void {
  method destroy (line 49) | destroy(): void {
  method emit (line 53) | emit(eventName: string, payload: any): void {
  function waitForProviderConnect (line 63) | async function waitForProviderConnect(
  function createProvider (line 76) | function createProvider(

FILE: packages/docprovider/src/awareness.ts
  type IContent (line 14) | interface IContent {
  class WebSocketAwarenessProvider (line 25) | class WebSocketAwarenessProvider
    method constructor (line 34) | constructor(options: WebSocketAwarenessProvider.IOptions) {
    method isDisposed (line 48) | get isDisposed(): boolean {
    method dispose (line 52) | dispose(): void {
    method _onUserChanged (line 62) | private _onUserChanged(user: User.IManager): void {
  type IOptions (line 78) | interface IOptions {

FILE: packages/docprovider/src/component.tsx
  type Props (line 18) | type Props = {
  function fetchTimeline (line 51) | async function fetchTimeline(notebookPath: string) {
  function determineAction (line 155) | function determineAction(currentTimestamp: number): 'undo' | 'redo' {
  function extractFilenameFromURL (line 158) | function extractFilenameFromURL(url: string): string {

FILE: packages/docprovider/src/forkManager.ts
  constant JUPYTER_COLLABORATION_FORK_EVENTS_URI (line 20) | const JUPYTER_COLLABORATION_FORK_EVENTS_URI =
  class ForkManager (line 23) | class ForkManager implements IForkManager {
    method constructor (line 24) | constructor(options: ForkManager.IOptions) {
    method isDisposed (line 32) | get isDisposed(): boolean {
    method forkAdded (line 35) | get forkAdded(): ISignal<ForkManager, IForkChangedEvent> {
    method forkDeleted (line 38) | get forkDeleted(): ISignal<ForkManager, IForkChangedEvent> {
    method dispose (line 42) | dispose(): void {
    method createFork (line 49) | async createFork(options: {
    method getAllForks (line 69) | async getAllForks(rootId: string) {
    method deleteFork (line 80) | async deleteFork(options: { forkId: string; merge: boolean }): Promise...
    method getProvider (line 87) | getProvider(options: {
    method _handleEvent (line 104) | private _handleEvent(_: Event.IManager, emission: Event.Emission) {
  type IOptions (line 130) | interface IOptions {

FILE: packages/docprovider/src/notebookCellExecutor.ts
  class NotebookCellServerExecutor (line 16) | class NotebookCellServerExecutor implements INotebookCellExecutor {
    method constructor (line 24) | constructor(options: { serverSettings?: ServerConnection.ISettings }) {
    method runCell (line 35) | async runCell({

FILE: packages/docprovider/src/requests.ts
  constant DOC_SESSION_URL (line 13) | const DOC_SESSION_URL = 'api/collaboration/session';
  constant DOC_FORK_URL (line 14) | const DOC_FORK_URL = 'api/collaboration/undo_redo';
  constant TIMELINE_URL (line 15) | const TIMELINE_URL = 'api/collaboration/timeline';
  constant ROOM_FORK_URL (line 17) | const ROOM_FORK_URL = 'api/collaboration/fork';
  type ISessionModel (line 22) | interface ISessionModel {
  function requestAPI (line 48) | async function requestAPI<T = any>(
  function requestDocSession (line 81) | async function requestDocSession(
  function requestDocumentTimeline (line 122) | async function requestDocumentTimeline(
  function requestUndoRedo (line 146) | async function requestUndoRedo(

FILE: packages/docprovider/src/tokens.ts
  type IForkInfo (line 15) | interface IForkInfo {
  type IForkCreationResponse (line 22) | interface IForkCreationResponse {
  type IAllForksResponse (line 28) | interface IAllForksResponse {
  type IForkChangedEvent (line 32) | interface IForkChangedEvent {
  type IForkManager (line 45) | interface IForkManager extends IDisposable {
  type IDocumentProviderFactory (line 127) | interface IDocumentProviderFactory {
  type IOptions (line 146) | interface IOptions {
  type IAwarenessProvider (line 204) | interface IAwarenessProvider extends IDisposable {
  type IAwarenessProviderFactory (line 214) | interface IAwarenessProviderFactory {
  type IOptions (line 231) | interface IOptions {
  type ISessionClosePayload (line 261) | interface ISessionClosePayload {

FILE: packages/docprovider/src/ydrive.ts
  constant DISABLE_RTC (line 31) | const DISABLE_RTC =
  type IForkProvider (line 34) | interface IForkProvider {
  type IOptions (line 43) | interface IOptions {
  class RtcContentProvider (line 62) | class RtcContentProvider implements IContentProvider {
    method constructor (line 63) | constructor(options: RtcContentProvider.IOptions) {
    method providers (line 82) | get providers(): Map<string, IDocumentProvider> {
    method get (line 95) | async get(
    method save (line 148) | async save(
    method fileChanged (line 184) | get fileChanged(): ISignal<this, Contents.IChangedArgs> {
  class SharedModelFactory (line 421) | class SharedModelFactory implements ISharedModelFactory {
    method constructor (line 429) | constructor(
    method registerDocumentFactory (line 449) | registerDocumentFactory(
    method createNew (line 464) | createNew(

FILE: packages/docprovider/src/yprovider.ts
  constant DOCUMENT_PROVIDER_URL (line 30) | const DOCUMENT_PROVIDER_URL = 'api/collaboration/room';
  constant RAW_MESSAGE_TYPE (line 35) | const RAW_MESSAGE_TYPE = 2;
  class WebSocketProvider (line 43) | class WebSocketProvider implements IDocumentProvider, IForkProvider {
    method constructor (line 49) | constructor(options: WebSocketProvider.IOptions) {
    method isDisposed (line 77) | get isDisposed(): boolean {
    method ready (line 84) | get ready(): Promise<void> {
    method contentType (line 87) | get contentType(): string {
    method format (line 91) | get format(): string {
    method dispose (line 97) | dispose(): void {
    method reconnect (line 109) | async reconnect(): Promise<void> {
    method save (line 114) | async save(): Promise<void> {
    method _serverUrl (line 172) | private get _serverUrl() {
    method _connect (line 179) | private async _connect(): Promise<void> {
    method connectToForkDoc (line 208) | async connectToForkDoc(forkRoomId: string, sessionId: string): Promise...
    method wsProvider (line 228) | get wsProvider() {
    method _disconnect (line 231) | private _disconnect(): void {
    method _onUserChanged (line 238) | private _onUserChanged(user: User.IManager): void {
    method _buildSessionExpiredMessage (line 242) | private _buildSessionExpiredMessage(
    method _getCloseReasonMessage (line 337) | private _getCloseReasonMessage(code: 4400 | 4404 | 4500): string {
  type IOptions (line 376) | interface IOptions {

FILE: projects/jupyter-collaboration-ui/jupyter_collaboration_ui/__init__.py
  function _jupyter_labextension_paths (line 7) | def _jupyter_labextension_paths():

FILE: projects/jupyter-docprovider/jupyter_docprovider/__init__.py
  function _jupyter_labextension_paths (line 7) | def _jupyter_labextension_paths():

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/__init__.py
  function _jupyter_server_extension_points (line 10) | def _jupyter_server_extension_points() -> list[dict[str, Any]]:

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/app.py
  class YDocExtension (line 38) | class YDocExtension(ExtensionApp):
    method initialize (line 98) | def initialize(self):
    method initialize_settings (line 104) | def initialize_settings(self):
    method initialize_handlers (line 114) | def initialize_handlers(self):
    method get_document (line 182) | async def get_document(
    method stop_extension (line 281) | async def stop_extension(self):

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/handlers.py
  class YDocWebSocketHandler (line 48) | class YDocWebSocketHandler(WebSocketHandler, JupyterHandler):
    method _room_lock (line 72) | def _room_lock(self, room_id: str) -> asyncio.Lock:
    method create_task (line 77) | def create_task(self, aw):
    method prepare (line 82) | async def prepare(self):
    method initialize (line 176) | def initialize(
    method path (line 199) | def path(self):
    method max_message_size (line 207) | def max_message_size(self):
    method __aiter__ (line 213) | def __aiter__(self):
    method __anext__ (line 217) | async def __anext__(self):
    method get (line 224) | async def get(self, *args, **kwargs):
    method open (line 233) | async def open(self, room_id: str) -> None:  # type:ignore[override]
    method send (line 330) | async def send(self, message: bytes) -> None:
    method recv (line 340) | async def recv(self):
    method on_message (line 347) | async def on_message(self, message):
    method _encode_json_message (line 382) | def _encode_json_message(self, message: dict) -> bytes:
    method on_close (line 388) | def on_close(self) -> None:
    method _emit (line 402) | def _emit(self, level: LogLevel, action: str | None = None, msg: str |...
    method _emit_awareness_event (line 414) | def _emit_awareness_event(self, username: str, action: str, msg: str |...
    method _clean_room (line 421) | async def _clean_room(self) -> None:
    method _on_global_awareness_event (line 459) | def _on_global_awareness_event(self, topic: str, changes: tuple[dict[s...
    method check_origin (line 483) | def check_origin(self, origin):
  class DocSessionHandler (line 490) | class DocSessionHandler(APIHandler):
    method put (line 499) | async def put(self, path: str) -> asyncio.Future[Any]:
  class TimelineHandler (line 547) | class TimelineHandler(APIHandler):
    method initialize (line 548) | def initialize(
    method get (line 554) | async def get(self, path: str) -> None:
  class UndoRedoHandler (line 610) | class UndoRedoHandler(APIHandler):
    method initialize (line 611) | def initialize(self, ywebsocket_server: JupyterWebsocketServer) -> None:
    method put (line 614) | async def put(self, room_id):
    method _perform_undo_or_redo (line 664) | async def _perform_undo_or_redo(
    method _cleanup_undo_manager (line 676) | async def _cleanup_undo_manager(self, room_id: str) -> None:
  class DocForkHandler (line 682) | class DocForkHandler(APIHandler):
    method initialize (line 692) | def initialize(
    method get (line 700) | async def get(self, root_roomid):
    method put (line 714) | async def put(self, root_roomid):
    method delete (line 755) | async def delete(self, fork_roomid):
    method _emit_fork_event (line 776) | def _emit_fork_event(

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/loaders.py
  class FileLoader (line 24) | class FileLoader:
    method __init__ (line 29) | def __init__(
    method file_id (line 57) | def file_id(self) -> str:
    method path (line 62) | def path(self) -> str:
    method number_of_subscriptions (line 72) | def number_of_subscriptions(self) -> int:
    method clean (line 78) | async def clean(self) -> None:
    method observe (line 92) | def observe(
    method unobserve (line 109) | def unobserve(self, id: str) -> None:
    method load_content (line 120) | async def load_content(self, format: str, file_type: str) -> dict[str,...
    method maybe_save_content (line 147) | async def maybe_save_content(self, model: dict[str, Any]) -> dict[str,...
    method _save_content (line 195) | async def _save_content(
    method _watch_file (line 214) | async def _watch_file(self) -> None:
    method maybe_notify (line 275) | async def maybe_notify(self) -> None:
  class FileLoaderMapping (line 307) | class FileLoaderMapping:
    method __init__ (line 310) | def __init__(
    method contents_manager (line 331) | def contents_manager(self) -> AsyncContentsManager | ContentsManager:
    method file_id_manager (line 335) | def file_id_manager(self) -> BaseFileIdManager:
    method __contains__ (line 338) | def __contains__(self, file_id: str) -> bool:
    method __getitem__ (line 342) | def __getitem__(self, file_id: str) -> FileLoader:
    method __delitem__ (line 365) | async def __delitem__(self, file_id: str) -> None:
    method clear (line 369) | async def clear(self) -> None:
    method remove (line 378) | async def remove(self, file_id: str) -> None:

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/pytest_plugin.py
  function rtc_document_save_delay (line 29) | def rtc_document_save_delay():
  function rtc_document_cleanup_delay (line 34) | def rtc_document_cleanup_delay():
  function jp_server_config (line 39) | def jp_server_config(
  function rtc_create_file (line 66) | def rtc_create_file(jp_root_dir, jp_serverapp, rtc_add_doc_to_store):
  function rtc_create_notebook (line 95) | def rtc_create_notebook(jp_root_dir, jp_serverapp, rtc_add_doc_to_store):
  function rtc_fetch_session (line 130) | def rtc_fetch_session(jp_fetch):
  function rtc_connect_awareness_client (line 143) | def rtc_connect_awareness_client(jp_http_port, jp_base_url):
  function rtc_connect_doc_client (line 153) | def rtc_connect_doc_client(jp_http_port, jp_base_url, rtc_fetch_session):
  function rtc_connect_fork_client (line 169) | def rtc_connect_fork_client(jp_http_port, jp_base_url, rtc_fetch_session):
  function rtc_get_forks_client (line 179) | def rtc_get_forks_client(jp_fetch):
  function rtc_create_fork_client (line 191) | def rtc_create_fork_client(jp_fetch):
  function rtc_delete_fork_client (line 215) | def rtc_delete_fork_client(jp_fetch):
  function rtc_add_doc_to_store (line 228) | def rtc_add_doc_to_store(rtc_connect_doc_client):
  function rtc_create_SQLite_store_factory (line 252) | def rtc_create_SQLite_store_factory(jp_serverapp):
  function rtc_create_SQLite_store (line 277) | def rtc_create_SQLite_store(jp_serverapp):
  function rtc_create_mock_document_room (line 282) | def rtc_create_mock_document_room():

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/rooms.py
  class DocumentRoom (line 23) | class DocumentRoom(YRoom):
    method __init__ (line 28) | def __init__(
    method file_format (line 63) | def file_format(self) -> str:
    method file_type (line 68) | def file_type(self) -> str:
    method room_id (line 73) | def room_id(self) -> str:
    method cleaner (line 80) | def cleaner(self) -> asyncio.Task | None:
    method cleaner (line 87) | def cleaner(self, value: asyncio.Task) -> None:
    method initialize (line 93) | async def initialize(self) -> None:
    method _apply_deterministic_source_content (line 178) | async def _apply_deterministic_source_content(self, content: Any) -> N...
    method _emit (line 194) | def _emit(self, level: LogLevel, action: str | None = None, msg: str |...
    method stop (line 203) | async def stop(self) -> None:
    method create_task (line 220) | def create_task(self, aw):
    method _broadcast_updates (line 225) | async def _broadcast_updates(self):
    method _on_outofband_change (line 232) | async def _on_outofband_change(self) -> None:
    method _on_filepath_change (line 252) | def _on_filepath_change(self) -> None:
    method _on_document_change (line 258) | def _on_document_change(self, target: str, event: Any) -> None:
    method _save_to_disc (line 296) | def _save_to_disc(self):
    method _maybe_save_document (line 308) | async def _maybe_save_document(
  class TransientRoom (line 381) | class TransientRoom(YRoom):
    method __init__ (line 384) | def __init__(
    method room_id (line 395) | def room_id(self) -> str:
    method _broadcast_updates (line 401) | async def _broadcast_updates(self):
    method stop (line 408) | async def stop(self) -> None:

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/stores.py
  class TempFileYStoreMetaclass (line 10) | class TempFileYStoreMetaclass(type(LoggingConfigurable), type(_TempFileY...
  class TempFileYStore (line 14) | class TempFileYStore(LoggingConfigurable, _TempFileYStore, metaclass=Tem...
  class SQLiteYStoreMetaclass (line 18) | class SQLiteYStoreMetaclass(type(LoggingConfigurable), type(_SQLiteYStor...
  class SQLiteYStore (line 22) | class SQLiteYStore(LoggingConfigurable, _SQLiteYStore, metaclass=SQLiteY...

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/test_utils.py
  class FakeFileIDManager (line 13) | class FakeFileIDManager:
    method __init__ (line 14) | def __init__(self, mapping: dict):
    method get_path (line 17) | def get_path(self, id: str) -> str:
    method move (line 20) | def move(self, id: str, new_path: str) -> None:
  class FakeContentsManager (line 24) | class FakeContentsManager:
    method __init__ (line 25) | def __init__(self, model: dict):
    method get (line 42) | def get(
    method save (line 55) | def save(self, model: dict[str, Any], path: str) -> dict:
    method save_content (line 59) | def save_content(self, model: dict[str, Any], path: str) -> dict:
  class FakeEventLogger (line 64) | class FakeEventLogger:
    method emit (line 65) | def emit(self, schema_id: str, data: dict) -> None:

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/utils.py
  class MessageType (line 26) | class MessageType(IntEnum):
  class LogLevel (line 33) | class LogLevel(Enum):
  class OutOfBandChanges (line 41) | class OutOfBandChanges(Exception):
  class ReadError (line 45) | class ReadError(Exception):
  class WriteError (line 49) | class WriteError(Exception):
  function decode_file_path (line 53) | def decode_file_path(path: str) -> tuple[str, str, str]:
  function encode_file_path (line 69) | def encode_file_path(format: str, file_type: str, file_id: str) -> str:
  function room_id_from_encoded_path (line 85) | def room_id_from_encoded_path(encoded_path: str) -> str:
  function _get_jupyter_session_store (line 90) | def _get_jupyter_session_store(root_dir: str) -> Path:
  function _load_previous_sessions (line 103) | def _load_previous_sessions(root_dir: str) -> dict:
  function save_current_session (line 122) | async def save_current_session(
  function check_session_compatibility (line 152) | def check_session_compatibility(

FILE: projects/jupyter-server-ydoc/jupyter_server_ydoc/websocketserver.py
  class RoomNotFound (line 16) | class RoomNotFound(LookupError):
  function exception_logger (line 20) | def exception_logger(exception: Exception, log: Logger) -> bool:
  class JupyterWebsocketServer (line 31) | class JupyterWebsocketServer(WebsocketServer):
    method __init__ (line 40) | def __init__(
    method clean (line 60) | async def clean(self):
    method room_exists (line 92) | def room_exists(self, path: str) -> bool:
    method add_room (line 104) | def add_room(self, path: str, room: YRoom) -> None:
    method get_room (line 114) | async def get_room(self, path: str) -> YRoom:
    method serve (line 136) | async def serve(self, websocket: Channel) -> None:
    method _monitor (line 143) | async def _monitor(self):

FILE: scripts/bump_version.py
  function increment_version (line 16) | def increment_version(current, spec):
  function bump (line 60) | def bump(force, skip_if_dirty, spec):

FILE: scripts/dev_install.py
  function execute (line 8) | def execute(cmd: str, cwd: Path | None = None) -> None:
  function install_dev (line 12) | def install_dev() -> None:

FILE: tests/test_app.py
  function test_default_settings (line 12) | def test_default_settings(jp_serverapp):
  function test_settings_should_disable_rtc (line 22) | def test_settings_should_disable_rtc(jp_configurable_serverapp):
  function test_settings_should_change_file_poll (line 31) | def test_settings_should_change_file_poll(jp_configurable_serverapp):
  function test_settings_should_change_document_cleanup (line 40) | def test_settings_should_change_document_cleanup(jp_configurable_servera...
  function test_settings_should_change_save_delay (line 49) | def test_settings_should_change_save_delay(jp_configurable_serverapp):
  function test_settings_should_change_ystore_class (line 58) | def test_settings_should_change_ystore_class(jp_configurable_serverapp):
  function test_document_ttl_from_settings (line 67) | async def test_document_ttl_from_settings(rtc_create_mock_document_room,...
  function test_squash_after_inactivity_of_from_settings (line 81) | async def test_squash_after_inactivity_of_from_settings(
  function test_get_document_file (line 97) | async def test_get_document_file(rtc_create_file, jp_serverapp, copy):
  function test_get_document_create_room (line 107) | async def test_get_document_create_room(rtc_create_file, jp_serverapp):
  function test_get_document_notebook (line 126) | async def test_get_document_notebook(rtc_create_notebook, jp_serverapp, ...
  function test_get_document_file_copy_is_independent (line 144) | async def test_get_document_file_copy_is_independent(

FILE: tests/test_documents.py
  function rtc_document_save_delay (line 21) | def rtc_document_save_delay():
  function test_dirty (line 25) | async def test_dirty(
  function cleanup (line 44) | async def cleanup(jp_serverapp):
  function test_room_concurrent_initialization (line 52) | async def test_room_concurrent_initialization(
  function test_room_sequential_opening (line 78) | async def test_room_sequential_opening(
  function _notebook_model (line 104) | def _notebook_model() -> dict:
  function _create_notebook_room (line 122) | async def _create_notebook_room(notebook: dict, room_id: str) -> tuple[D...
  function _sync_documents (line 143) | def _sync_documents(client_doc: YNotebook, room: DocumentRoom) -> dict:
  function test_notebook_reconnect_with_divergent_history_does_not_duplicate_initial_cell (line 149) | async def test_notebook_reconnect_with_divergent_history_does_not_duplic...

FILE: tests/test_handlers.py
  function test_session_handler_should_create_session_id (line 18) | async def test_session_handler_should_create_session_id(
  function test_session_handler_should_respond_with_session_id (line 38) | async def test_session_handler_should_respond_with_session_id(
  function test_session_handler_should_respond_with_not_found (line 59) | async def test_session_handler_should_respond_with_not_found(rtc_fetch_s...
  function test_room_handler_doc_client_should_connect (line 71) | async def test_room_handler_doc_client_should_connect(rtc_create_file, r...
  function test_room_handler_doc_client_should_emit_awareness_event (line 91) | async def test_room_handler_doc_client_should_emit_awareness_event(
  function rtc_document_cleanup_delay (line 138) | def rtc_document_cleanup_delay():
  function test_room_handler_doc_client_should_stop_file_watcher (line 142) | async def test_room_handler_doc_client_should_stop_file_watcher(
  function test_room_handler_doc_client_should_cleanup_room_file (line 202) | async def test_room_handler_doc_client_should_cleanup_room_file(
  function test_fork_handler (line 294) | async def test_fork_handler(

FILE: tests/test_loaders.py
  function test_FileLoader_with_watcher (line 14) | async def test_FileLoader_with_watcher():
  function test_FileLoader_with_watcher_errors (line 47) | async def test_FileLoader_with_watcher_errors(caplog):
  function test_FileLoader_clean_logs_cancellation (line 86) | async def test_FileLoader_clean_logs_cancellation(caplog):
  function test_FileLoader_without_watcher (line 107) | async def test_FileLoader_without_watcher():
  function test_FileLoaderMapping_with_watcher (line 139) | async def test_FileLoaderMapping_with_watcher():

FILE: tests/test_rooms.py
  function test_should_initialize_document_room_without_store (line 13) | async def test_should_initialize_document_room_without_store(rtc_create_...
  function test_should_initialize_document_room_from_store (line 21) | async def test_should_initialize_document_room_from_store(
  function test_should_overwrite_the_store (line 37) | async def test_should_overwrite_the_store(rtc_create_SQLite_store, rtc_c...
  function test_defined_save_delay_should_save_content_after_document_change (line 52) | async def test_defined_save_delay_should_save_content_after_document_cha...
  function test_undefined_save_delay_should_not_save_content_after_document_change (line 67) | async def test_undefined_save_delay_should_not_save_content_after_docume...
  function test_should_not_save_content_when_all_clients_have_autosave_disabled (line 82) | async def test_should_not_save_content_when_all_clients_have_autosave_di...
  function test_should_save_content_when_at_least_one_client_has_autosave_enabled (line 104) | async def test_should_save_content_when_at_least_one_client_has_autosave...
  function test_manual_save_should_not_have_delay (line 126) | async def test_manual_save_should_not_have_delay(
  function test_manual_save_with_pending_autosave_should_cancel_autosave (line 144) | async def test_manual_save_with_pending_autosave_should_cancel_autosave(
  function test_manual_save_should_execute_immediately_even_with_long_delay (line 173) | async def test_manual_save_should_execute_immediately_even_with_long_delay(
  function test_autosave_should_still_have_delay (line 189) | async def test_autosave_should_still_have_delay(
  function test_manual_save_should_work_when_save_delay_is_none_and_save_now_is_true (line 211) | async def test_manual_save_should_work_when_save_delay_is_none_and_save_...
  function test_on_outofband_change_skips_aset_when_content_unchanged (line 250) | async def test_on_outofband_change_skips_aset_when_content_unchanged(
  function test_on_outofband_change_calls_aset_when_content_changed (line 265) | async def test_on_outofband_change_calls_aset_when_content_changed(
  function test_save_oob_skips_aset_when_content_unchanged (line 283) | async def test_save_oob_skips_aset_when_content_unchanged(
  function test_save_oob_calls_aset_when_content_changed (line 305) | async def test_save_oob_calls_aset_when_content_changed(

FILE: tests/test_session_store.py
  function test_allows_reconnect_same_dir_same_version (line 13) | async def test_allows_reconnect_same_dir_same_version(tmp_path):
  function test_rejects_reconnect_version_mismatch (line 22) | async def test_rejects_reconnect_version_mismatch(tmp_path):
  function test_rejects_reconnect_different_directory (line 31) | async def test_rejects_reconnect_different_directory(tmp_path):
  function test_rejects_unknown_session (line 43) | def test_rejects_unknown_session(tmp_path):
  function test_allows_reconnect_with_document_version (line 51) | async def test_allows_reconnect_with_document_version(tmp_path):
  function test_rejects_reconnect_document_version_mismatch (line 71) | async def test_rejects_reconnect_document_version_mismatch(tmp_path):
  function test_allows_reconnect_without_document_version_in_old_session (line 92) | async def test_allows_reconnect_without_document_version_in_old_session(...

FILE: ui-tests/tests/notebook.spec.ts
  function writeCell (line 13) | async function writeCell(page: IJupyterLabPageFixture, cellIndex: number...

FILE: ui-tests/tests/timeline-slider.spec.ts
  function capturePageErrors (line 9) | async function capturePageErrors(page: Page) {
  function openNotebook (line 15) | async function openNotebook(page: Page, notebookPath: string) {
Condensed preview — 174 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,248K chars).
[
  {
    "path": ".eslintignore",
    "chars": 308,
    "preview": "**/lib\n**/node_modules\n**/style\n**/package.json\n**/tsconfig.json\n**/tsconfig.test.json\n**/*.d.ts\n**/test\n**/ui-tests\n**/"
  },
  {
    "path": ".eslintrc.js",
    "chars": 1026,
    "preview": "module.exports = {\n  extends: [\n    'eslint:recommended',\n    'plugin:@typescript-eslint/eslint-recommended',\n    'plugi"
  },
  {
    "path": ".flake8",
    "chars": 419,
    "preview": "[flake8]\nignore = E501, W503, E402\nbuiltins = c, get_config\nexclude =\n    .cache,\n    .github,\n    docs,\n    setup.py\nen"
  },
  {
    "path": ".gitconfig",
    "chars": 52,
    "preview": "[blame]\n    ignoreRevsFile = .git-blame-ignore-revs\n"
  },
  {
    "path": ".github/workflows/binder-badge.yml",
    "chars": 304,
    "preview": "name: Binder Badge\non:\n  pull_request_target:\n    types: [opened]\n\njobs:\n  binder:\n    runs-on: ubuntu-latest\n    permis"
  },
  {
    "path": ".github/workflows/check-release.yml",
    "chars": 728,
    "preview": "name: Check Release\non:\n  push:\n    branches: [\"main\"]\n  pull_request:\n    branches: [\"*\"]\n\npermissions:\n  contents: wri"
  },
  {
    "path": ".github/workflows/enforce-label.yml",
    "chars": 320,
    "preview": "name: Enforce PR label\n\non:\n  pull_request:\n    types: [labeled, unlabeled, opened, edited, synchronize]\njobs:\n  enforce"
  },
  {
    "path": ".github/workflows/license-header.yml",
    "chars": 1617,
    "preview": "name: Fix License Headers\n\non:\n  pull_request_target:\n\njobs:\n  header-license-fix:\n    runs-on: ubuntu-latest\n\n    permi"
  },
  {
    "path": ".github/workflows/prep-release.yml",
    "chars": 1689,
    "preview": "name: \"Step 1: Prep Release\"\non:\n  workflow_dispatch:\n    inputs:\n      version_spec:\n        description: \"New Version "
  },
  {
    "path": ".github/workflows/publish-changelog.yml",
    "chars": 928,
    "preview": "name: \"Publish Changelog\"\non:\n  release:\n    types: [published]\n\n  workflow_dispatch:\n    inputs:\n      branch:\n        "
  },
  {
    "path": ".github/workflows/publish-release.yml",
    "chars": 1857,
    "preview": "name: \"Step 2: Publish Release\"\non:\n  workflow_dispatch:\n    inputs:\n      branch:\n        description: \"The target bran"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 9267,
    "preview": "name: Tests\non:\n  push:\n    branches: [\"main\"]\n  pull_request:\n\n  schedule:\n    - cron: \"0 8 * * *\"\n\njobs:\n  # Run \"pre-"
  },
  {
    "path": ".github/workflows/update_galata_references.yaml",
    "chars": 904,
    "preview": "name: Update Galata References\n\non:\n  issue_comment:\n    types: [created, edited]\n\npermissions:\n  contents: write\n  pull"
  },
  {
    "path": ".gitignore",
    "chars": 1749,
    "preview": "*.bundle.*\nlib/\nnode_modules/\n*.log\n.eslintcache\n.stylelintcache\n*.egg-info/\n.ipynb_checkpoints\n*.tsbuildinfo\npackage-lo"
  },
  {
    "path": ".licenserc.yaml",
    "chars": 596,
    "preview": "header:\n  license:\n    spdx-id: BSD-3-Clause\n    copyright-owner: Jupyter Development Team\n    software-name: JupyterLab"
  },
  {
    "path": ".npmignore",
    "chars": 13,
    "preview": "node_modules\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 1947,
    "preview": "ci:\n  # skip any check that needs internet access\n  skip: [prettier, eslint, stylelint]\n\ndefault_language_version:\n  nod"
  },
  {
    "path": ".prettierignore",
    "chars": 182,
    "preview": "**/lib\n**/node_modules\n**/style\n**/package.json\n**/tsconfig.json\n**/tsconfig.test.json\n**/*.d.ts\n**/test\n**/labextension"
  },
  {
    "path": ".prettierrc",
    "chars": 102,
    "preview": "{\n  \"singleQuote\": true,\n  \"trailingComma\": \"none\",\n  \"arrowParens\": \"avoid\",\n  \"endOfLine\": \"auto\"\n}\n"
  },
  {
    "path": ".readthedocs.yaml",
    "chars": 392,
    "preview": "# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details\n\nversion:"
  },
  {
    "path": ".stylelintrc",
    "chars": 296,
    "preview": "{\n  \"extends\": [\n    \"stylelint-config-recommended\",\n    \"stylelint-config-standard\",\n    \"stylelint-prettier/recommende"
  },
  {
    "path": ".yarnrc.yml",
    "chars": 46,
    "preview": "nodeLinker: node-modules\nenableScripts: false\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 153655,
    "preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n<!-- <START NEW CHANGELOG ENTRY> -->\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 463,
    "preview": "# Contributing to JupyterLab Real-Time Collaboration\n\nIf you're reading this section, you're probably interested in cont"
  },
  {
    "path": "LICENSE",
    "chars": 2833,
    "preview": "# Licensing terms\n\nThis project is licensed under the terms of the Modified BSD License\n(also known as New or Revised or"
  },
  {
    "path": "README.md",
    "chars": 1456,
    "preview": "# Jupyter Real-Time Collaboration\n\n[![Build Status](https://github.com/jupyterlab/jupyter_collaboration/actions/workflow"
  },
  {
    "path": "RELEASE.md",
    "chars": 1120,
    "preview": "# Making a jupyter-collaboration Release\n\n## Using `jupyter_releaser`\n\nThe recommended way to make a release is to use ["
  },
  {
    "path": "binder/environment.yml",
    "chars": 442,
    "preview": "name: example-environment\nchannels:\n  - conda-forge\n  - nodefaults\ndependencies:\n  - jupyterlab >=4.0.0\n  - nodejs >=18,"
  },
  {
    "path": "binder/jupyter_config.py",
    "chars": 348,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\nimport logging\n\nc.S"
  },
  {
    "path": "binder/postBuild",
    "chars": 633,
    "preview": "#!/usr/bin/env bash\n\n# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License"
  },
  {
    "path": "codecov.yml",
    "chars": 136,
    "preview": "coverage:\n  status:\n    project:\n      default:\n        target: auto\n        threshold: 10\n    patch:\n      default:\n   "
  },
  {
    "path": "docs/Makefile",
    "chars": 876,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n# Minimal makefile"
  },
  {
    "path": "docs/make.bat",
    "chars": 910,
    "preview": "rem Copyright (c) Jupyter Development Team.\nrem Distributed under the terms of the Modified BSD License.\n\n@ECHO OFF\r\n\r\np"
  },
  {
    "path": "docs/source/conf.py",
    "chars": 3072,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n# Configuration fi"
  },
  {
    "path": "docs/source/configuration.md",
    "chars": 3185,
    "preview": "# Configuration\n\nUser Settings\n-----------------\n\nThe user identity is managed by `jupyter-server` and is configurable s"
  },
  {
    "path": "docs/source/developer/architecture.md",
    "chars": 2048,
    "preview": "# Code Architecture\n\n## Current Implementation\n\nJupyter Collaboration consists of several Python packages and frontend e"
  },
  {
    "path": "docs/source/developer/contributing.md",
    "chars": 4407,
    "preview": "% Copyright (c) Jupyter Development Team.\n\n% Distributed under the terms of the Modified BSD License.\n\n# Developer docum"
  },
  {
    "path": "docs/source/developer/javascript_api.md",
    "chars": 394,
    "preview": "% Copyright (c) Jupyter Development Team.\n\n% Distributed under the terms of the Modified BSD License.\n\n# JavaScript API\n"
  },
  {
    "path": "docs/source/developer/python_api.md",
    "chars": 920,
    "preview": "% Copyright (c) Jupyter Development Team.\n\n% Distributed under the terms of the Modified BSD License.\n\n# Python API\n\n`ju"
  },
  {
    "path": "docs/source/index.md",
    "chars": 3561,
    "preview": "<!--\njupyter-ydoc documentation master file, created by\nsphinx-quickstart on Wed Nov 23 12:45:39 2022.\nYou can adapt thi"
  },
  {
    "path": "install.json",
    "chars": 203,
    "preview": "{\n  \"packageManager\": \"python\",\n  \"packageName\": \"jupyter_collaboration\",\n  \"uninstallInstructions\": \"Use your Python pa"
  },
  {
    "path": "lerna.json",
    "chars": 73,
    "preview": "{\n  \"version\": \"4.4.0\",\n  \"npmClient\": \"yarn\",\n  \"useWorkspaces\": true\n}\n"
  },
  {
    "path": "package.json",
    "chars": 2401,
    "preview": "{\n  \"name\": \"@jupyter/real-time-collaboration\",\n  \"private\": true,\n  \"version\": \"4.4.0\",\n  \"description\": \"JupyterLab Ex"
  },
  {
    "path": "packages/collaboration/README.md",
    "chars": 108,
    "preview": "# @jupyter/collaboration\n\nA JupyterLab package which provides a set of widgets for Real Time Collaboration.\n"
  },
  {
    "path": "packages/collaboration/package.json",
    "chars": 1983,
    "preview": "{\n  \"name\": \"@jupyter/collaboration\",\n  \"version\": \"4.4.0\",\n  \"description\": \"JupyterLab - Real-Time Collaboration Widge"
  },
  {
    "path": "packages/collaboration/src/collaboratorspanel.tsx",
    "chars": 7472,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { ReactWi"
  },
  {
    "path": "packages/collaboration/src/components.tsx",
    "chars": 4054,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { User } "
  },
  {
    "path": "packages/collaboration/src/cursors.ts",
    "chars": 11956,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  Annot"
  },
  {
    "path": "packages/collaboration/src/index.ts",
    "chars": 370,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDo"
  },
  {
    "path": "packages/collaboration/src/menu.ts",
    "chars": 3633,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { userIco"
  },
  {
    "path": "packages/collaboration/src/sharedlink.ts",
    "chars": 23136,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { Dialog,"
  },
  {
    "path": "packages/collaboration/src/tokens.ts",
    "chars": 2079,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport type { Me"
  },
  {
    "path": "packages/collaboration/src/userinfopanel.tsx",
    "chars": 3817,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { Dialog,"
  },
  {
    "path": "packages/collaboration/src/users-item.tsx",
    "chars": 4883,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "packages/collaboration/style/base.css",
    "chars": 438,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/collaboration/style/index.css",
    "chars": 291,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/collaboration/style/index.js",
    "chars": 283,
    "preview": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team"
  },
  {
    "path": "packages/collaboration/style/menu.css",
    "chars": 890,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/collaboration/style/sharedlink.css",
    "chars": 1281,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/collaboration/style/sidepanel.css",
    "chars": 3750,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n/********"
  },
  {
    "path": "packages/collaboration/style/users-item.css",
    "chars": 556,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/collaboration/tsconfig.json",
    "chars": 133,
    "preview": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\":"
  },
  {
    "path": "packages/collaboration-extension/README.md",
    "chars": 118,
    "preview": "# @jupyter/collaboration-extension\n\nA JupyterLab package which provides a set of plugins for Real Time Collaboration.\n"
  },
  {
    "path": "packages/collaboration-extension/package.json",
    "chars": 3694,
    "preview": "{\n  \"name\": \"@jupyter/collaboration-extension\",\n  \"version\": \"4.4.0\",\n  \"description\": \"JupyterLab - Real-Time Collabora"
  },
  {
    "path": "packages/collaboration-extension/schema/shared-link.json",
    "chars": 356,
    "preview": "{\n  \"title\": \"Shared link\",\n  \"description\": \"Shared link settings\",\n  \"jupyter.lab.toolbars\": {\n    \"TopBar\": [\n      {"
  },
  {
    "path": "packages/collaboration-extension/schema/user-menu-bar.json",
    "chars": 268,
    "preview": "{\n  \"title\": \"User Menu Bar\",\n  \"description\": \"User Menu Bar settings.\",\n  \"jupyter.lab.toolbars\": {\n    \"TopBar\": [\n  "
  },
  {
    "path": "packages/collaboration-extension/src/collaboration.ts",
    "chars": 5994,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDo"
  },
  {
    "path": "packages/collaboration-extension/src/index.ts",
    "chars": 651,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDo"
  },
  {
    "path": "packages/collaboration-extension/src/sharedlink.ts",
    "chars": 1545,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  Jupyt"
  },
  {
    "path": "packages/collaboration-extension/style/index.css",
    "chars": 320,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/collaboration-extension/style/index.js",
    "chars": 310,
    "preview": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team"
  },
  {
    "path": "packages/collaboration-extension/tsconfig.json",
    "chars": 133,
    "preview": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\":"
  },
  {
    "path": "packages/collaborative-drive/package.json",
    "chars": 1583,
    "preview": "{\n  \"name\": \"@jupyter/collaborative-drive\",\n  \"version\": \"4.4.0\",\n  \"description\": \"JupyterLab - Collaborative Drive\",\n "
  },
  {
    "path": "packages/collaborative-drive/src/index.ts",
    "chars": 353,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/collaborative-drive/src/tokens.ts",
    "chars": 1584,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { IAwaren"
  },
  {
    "path": "packages/collaborative-drive/tsconfig.json",
    "chars": 167,
    "preview": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\":"
  },
  {
    "path": "packages/docprovider/babel.config.js",
    "chars": 177,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nmodule.ex"
  },
  {
    "path": "packages/docprovider/jest.config.js",
    "chars": 808,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nconst jes"
  },
  {
    "path": "packages/docprovider/package.json",
    "chars": 2500,
    "preview": "{\n  \"name\": \"@jupyter/docprovider\",\n  \"version\": \"4.4.0\",\n  \"description\": \"JupyterLab - Document Provider\",\n  \"homepage"
  },
  {
    "path": "packages/docprovider/src/TimelineSlider.tsx",
    "chars": 1824,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider/src/__tests__/forkManager.spec.ts",
    "chars": 3086,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { ICollab"
  },
  {
    "path": "packages/docprovider/src/__tests__/yprovider.spec.ts",
    "chars": 6995,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\n/// <reference t"
  },
  {
    "path": "packages/docprovider/src/awareness.ts",
    "chars": 2170,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "packages/docprovider/src/component.tsx",
    "chars": 6760,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider/src/forkManager.ts",
    "chars": 4110,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "packages/docprovider/src/index.ts",
    "chars": 562,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider/src/notebookCellExecutor.ts",
    "chars": 4590,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider/src/requests.ts",
    "chars": 4627,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider/src/tokens.ts",
    "chars": 6554,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "packages/docprovider/src/ydrive.ts",
    "chars": 16592,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport { IChange"
  },
  {
    "path": "packages/docprovider/src/yprovider.ts",
    "chars": 11722,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "packages/docprovider/style/base.css",
    "chars": 293,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider/style/index.css",
    "chars": 291,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider/style/index.js",
    "chars": 283,
    "preview": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team"
  },
  {
    "path": "packages/docprovider/style/slider.css",
    "chars": 733,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider/tsconfig.json",
    "chars": 167,
    "preview": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\":"
  },
  {
    "path": "packages/docprovider/tsconfig.test.json",
    "chars": 87,
    "preview": "{\n  \"extends\": \"../../tsconfig.test.json\",\n  \"include\": [\"src/*\", \"src/__tests__/*\"]\n}\n"
  },
  {
    "path": "packages/docprovider-extension/README.md",
    "chars": 120,
    "preview": "# @jupyter/docprovider-extension\n\nA JupyterLab package which provides a set of plugins for collaborative shared models.\n"
  },
  {
    "path": "packages/docprovider-extension/babel.config.js",
    "chars": 200,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n/* eslint"
  },
  {
    "path": "packages/docprovider-extension/package.json",
    "chars": 3835,
    "preview": "{\n  \"name\": \"@jupyter/docprovider-extension\",\n  \"version\": \"4.4.0\",\n  \"description\": \"JupyterLab - Collaborative Shared "
  },
  {
    "path": "packages/docprovider-extension/src/executor.ts",
    "chars": 1084,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDo"
  },
  {
    "path": "packages/docprovider-extension/src/filebrowser.ts",
    "chars": 11517,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport {\n"
  },
  {
    "path": "packages/docprovider-extension/src/forkManager.ts",
    "chars": 911,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "packages/docprovider-extension/src/index.ts",
    "chars": 853,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n/**\n * @packageDo"
  },
  {
    "path": "packages/docprovider-extension/src/yprovider.ts",
    "chars": 2780,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider-extension/style/index.css",
    "chars": 320,
    "preview": "/* -----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Tea"
  },
  {
    "path": "packages/docprovider-extension/style/index.js",
    "chars": 310,
    "preview": "/*-----------------------------------------------------------------------------\n| Copyright (c) Jupyter Development Team"
  },
  {
    "path": "packages/docprovider-extension/tsconfig.json",
    "chars": 133,
    "preview": "{\n  \"extends\": \"../../tsconfig.json\",\n  \"compilerOptions\": {\n    \"outDir\": \"lib\",\n    \"rootDir\": \"src\"\n  },\n  \"include\":"
  },
  {
    "path": "projects/jupyter-collaboration/LICENSE",
    "chars": 2833,
    "preview": "# Licensing terms\n\nThis project is licensed under the terms of the Modified BSD License\n(also known as New or Revised or"
  },
  {
    "path": "projects/jupyter-collaboration/README.md",
    "chars": 116,
    "preview": "# jupyter-collaboration\n\nA meta-package for:\n- jupyter-collaboration-ui\n- jupyter-docprovider\n- jupyter-server-ydoc\n"
  },
  {
    "path": "projects/jupyter-collaboration/jupyter_collaboration/__init__.py",
    "chars": 144,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom ._version imp"
  },
  {
    "path": "projects/jupyter-collaboration/jupyter_collaboration/_version.py",
    "chars": 22,
    "preview": "__version__ = \"4.4.0\"\n"
  },
  {
    "path": "projects/jupyter-collaboration/pyproject.toml",
    "chars": 1847,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n[build-system]\nbui"
  },
  {
    "path": "projects/jupyter-collaboration/setup.py",
    "chars": 194,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n# setup.py shim fo"
  },
  {
    "path": "projects/jupyter-collaboration-ui/LICENSE",
    "chars": 2833,
    "preview": "# Licensing terms\n\nThis project is licensed under the terms of the Modified BSD License\n(also known as New or Revised or"
  },
  {
    "path": "projects/jupyter-collaboration-ui/README.md",
    "chars": 135,
    "preview": "# jupyter-collaboration-ui\n\nJupyterLab/Jupyter Notebook 7+ extension providing user interface integration for real time "
  },
  {
    "path": "projects/jupyter-collaboration-ui/install.json",
    "chars": 209,
    "preview": "{\n  \"packageManager\": \"python\",\n  \"packageName\": \"jupyter-collaboration-ui\",\n  \"uninstallInstructions\": \"Use your Python"
  },
  {
    "path": "projects/jupyter-collaboration-ui/jupyter_collaboration_ui/__init__.py",
    "chars": 262,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom ._version imp"
  },
  {
    "path": "projects/jupyter-collaboration-ui/jupyter_collaboration_ui/_version.py",
    "chars": 22,
    "preview": "__version__ = \"2.4.0\"\n"
  },
  {
    "path": "projects/jupyter-collaboration-ui/pyproject.toml",
    "chars": 2797,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n[build-system]\nbui"
  },
  {
    "path": "projects/jupyter-collaboration-ui/setup.py",
    "chars": 194,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n# setup.py shim fo"
  },
  {
    "path": "projects/jupyter-docprovider/LICENSE",
    "chars": 2833,
    "preview": "# Licensing terms\n\nThis project is licensed under the terms of the Modified BSD License\n(also known as New or Revised or"
  },
  {
    "path": "projects/jupyter-docprovider/README.md",
    "chars": 225,
    "preview": "# jupyter-docprovider\n\nJupyterLab/Jupyter Notebook 7+ extension integrating collaborative shared models.\n\nThe collaborat"
  },
  {
    "path": "projects/jupyter-docprovider/install.json",
    "chars": 199,
    "preview": "{\n  \"packageManager\": \"python\",\n  \"packageName\": \"jupyter-docprovider\",\n  \"uninstallInstructions\": \"Use your Python pack"
  },
  {
    "path": "projects/jupyter-docprovider/jupyter_docprovider/__init__.py",
    "chars": 260,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom ._version imp"
  },
  {
    "path": "projects/jupyter-docprovider/jupyter_docprovider/_version.py",
    "chars": 22,
    "preview": "__version__ = \"2.4.0\"\n"
  },
  {
    "path": "projects/jupyter-docprovider/pyproject.toml",
    "chars": 2830,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n[build-system]\nbui"
  },
  {
    "path": "projects/jupyter-docprovider/setup.py",
    "chars": 194,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n# setup.py shim fo"
  },
  {
    "path": "projects/jupyter-server-ydoc/LICENSE",
    "chars": 2833,
    "preview": "# Licensing terms\n\nThis project is licensed under the terms of the Modified BSD License\n(also known as New or Revised or"
  },
  {
    "path": "projects/jupyter-server-ydoc/README.md",
    "chars": 209,
    "preview": "# jupyter-server-ydoc\n\njupyter-server extension integrating collaborative shared models.\n\nThe collaborative shared model"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter-config/jupyter_server_ydoc.json",
    "chars": 94,
    "preview": "{\n  \"ServerApp\": {\n    \"jpserver_extensions\": {\n      \"jupyter_server_ydoc\": true\n    }\n  }\n}\n"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/__init__.py",
    "chars": 334,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom typing import"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/_version.py",
    "chars": 22,
    "preview": "__version__ = \"2.4.0\"\n"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/app.py",
    "chars": 10954,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\nfrom __future__ imp"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/events/awareness.yaml",
    "chars": 755,
    "preview": "\"$id\": https://schema.jupyter.org/jupyter_collaboration/awareness/v1\n\"$schema\": \"http://json-schema.org/draft-07/schema\""
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/events/fork.yaml",
    "chars": 1303,
    "preview": "\"$id\": https://schema.jupyter.org/jupyter_collaboration/fork/v1\n\"$schema\": \"http://json-schema.org/draft-07/schema\"\nvers"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/events/session.yaml",
    "chars": 1596,
    "preview": "\"$id\": https://schema.jupyter.org/jupyter_collaboration/session/v1\n\"$schema\": \"http://json-schema.org/draft-07/schema\"\nv"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/handlers.py",
    "chars": 31408,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/loaders.py",
    "chars": 13792,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/pytest_plugin.py",
    "chars": 8936,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\nfrom __future__ imp"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/rooms.py",
    "chars": 14859,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/stores.py",
    "chars": 1431,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom pycrdt.store "
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/test_utils.py",
    "chars": 1769,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/utils.py",
    "chars": 5907,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\nimport asyncio\nimpo"
  },
  {
    "path": "projects/jupyter-server-ydoc/jupyter_server_ydoc/websocketserver.py",
    "chars": 5126,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "projects/jupyter-server-ydoc/pyproject.toml",
    "chars": 2314,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n[build-system]\nbui"
  },
  {
    "path": "projects/jupyter-server-ydoc/setup.py",
    "chars": 194,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n# setup.py shim fo"
  },
  {
    "path": "pyproject.toml",
    "chars": 4749,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n[build-system]\nbui"
  },
  {
    "path": "scripts/bump_version.py",
    "chars": 4665,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nimport json\nfrom p"
  },
  {
    "path": "scripts/dev_install.py",
    "chars": 1318,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nimport subprocess\n"
  },
  {
    "path": "setup.py",
    "chars": 194,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n# setup.py shim fo"
  },
  {
    "path": "tests/__init__.py",
    "chars": 101,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n"
  },
  {
    "path": "tests/conftest.py",
    "chars": 243,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\npytest_plugins = ["
  },
  {
    "path": "tests/test_app.py",
    "chars": 5738,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "tests/test_documents.py",
    "chars": 5111,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom copy import d"
  },
  {
    "path": "tests/test_handlers.py",
    "chars": 14715,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "tests/test_loaders.py",
    "chars": 4247,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "tests/test_rooms.py",
    "chars": 9848,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nfrom __future__ im"
  },
  {
    "path": "tests/test_session_store.py",
    "chars": 3571,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\nimport asyncio\n\nfr"
  },
  {
    "path": "tsconfig.json",
    "chars": 532,
    "preview": "{\n  \"compilerOptions\": {\n    \"allowSyntheticDefaultImports\": true,\n    \"composite\": true,\n    \"declaration\": true,\n    \""
  },
  {
    "path": "tsconfig.test.json",
    "chars": 443,
    "preview": "{\n  \"compilerOptions\": {\n    \"declaration\": true,\n    \"noImplicitAny\": true,\n    \"noEmitOnError\": true,\n    \"noUnusedLoc"
  },
  {
    "path": "typedoc.json",
    "chars": 3239,
    "preview": "{\n  \"entryPointStrategy\": \"packages\",\n  \"entryPoints\": [\n    \"packages/collaboration\",\n    \"packages/collaborative-drive"
  },
  {
    "path": "ui-tests/README.md",
    "chars": 2910,
    "preview": "# Integration Testing\n\nThis folder contains the integration tests of *jupyter_collaboration*.\n\nThey are defined using [P"
  },
  {
    "path": "ui-tests/jupyter_server_test_config.py",
    "chars": 539,
    "preview": "# Copyright (c) Jupyter Development Team.\n# Distributed under the terms of the Modified BSD License.\n\n\"\"\"Server configur"
  },
  {
    "path": "ui-tests/package.json",
    "chars": 786,
    "preview": "{\n  \"name\": \"jupyter-collaboration-ui-tests\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Jupyter collaboration Integration "
  },
  {
    "path": "ui-tests/playwright.config.js",
    "chars": 616,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n/**\n * Co"
  },
  {
    "path": "ui-tests/playwright.timeline.config.js",
    "chars": 758,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\n/**\n * Co"
  },
  {
    "path": "ui-tests/tests/collaborationpanel.spec.ts",
    "chars": 11006,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "ui-tests/tests/data/OutputExamples.ipynb",
    "chars": 5598330,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Output Examples\"\n   ]\n  },\n  {\n  "
  },
  {
    "path": "ui-tests/tests/file.spec.ts",
    "chars": 4269,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  expec"
  },
  {
    "path": "ui-tests/tests/hub-share.spec.ts",
    "chars": 2859,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "ui-tests/tests/notebook.spec.ts",
    "chars": 10688,
    "preview": "// Copyright (c) Jupyter Development Team.\n// Distributed under the terms of the Modified BSD License.\n\nimport {\n  expec"
  },
  {
    "path": "ui-tests/tests/timeline-slider.spec.ts",
    "chars": 2073,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  },
  {
    "path": "ui-tests/tests/user-menu.spec.ts",
    "chars": 3365,
    "preview": "/*\n * Copyright (c) Jupyter Development Team.\n * Distributed under the terms of the Modified BSD License.\n */\n\nimport { "
  }
]

About this extraction

This page contains the full source code of the jupyterlab/jupyter-collaboration GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 174 files (5.9 MB), approximately 1.6M tokens, and a symbol index with 408 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!