Skip to content

Unable to disable autosave in collaborative mode #14619

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
goyalyashpal opened this issue May 31, 2023 · 7 comments · May be fixed by jupyterlab/jupyter-collaboration#479
Open

Unable to disable autosave in collaborative mode #14619

goyalyashpal opened this issue May 31, 2023 · 7 comments · May be fixed by jupyterlab/jupyter-collaboration#479
Assignees
Labels

Comments

@goyalyashpal
Copy link

continued from #14516

Description

Describe the bug clearly and concisely. Include screenshots if possible

The changes i am making are getting automatically saved always in jupyter lab 4 (all the --pre, 4.0, and 4.0.1)
despite having the option of "Autosave Documents < Settings" in jupyter lab turned off (shown as blank in the gutter)

vivaldi_Qz1RcIK5Nl.mp4

Reproduce

  1. launch jupyter lab >= 4.0
  2. open any file (you have write access to) in jupyter lab
  3. make sure the auto save documents is not checked
  4. make any changes
  5. see the "unsaved indicator" - the filled disc - in the file's tab in place of close tab 'x' button
  6. leave it for a few seconds

the unsaved indicating disc disappears (i.e. changes are saved to file) to be replaced by closing x

Expected behavior

file should not be autosaved

Context

  • Operating System and version: Win 10 22H2
  • Browser and version: Vivaldi 6.0.2979.18 (Stable channel) (64-bit) UA: Chrome/112.0.0.0
  • JupyterLab version: v4.0.1
Troubleshoot Output
Paste the output from running `jupyter troubleshoot` from the command line here.
You may want to sanitize the paths in the output.
C:\Users\RESUSER>jupyter troubleshoot
$PATH:
        C:\Program Files\ImageMagick-7.1.0-Q16-HDRI
        C:\Program Files\Common Files\Oracle\Java\javapath
        C:\Program Files (x86)\Common Files\Oracle\Java\javapath
        C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS\
        C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS\
        C:\Windows\system32
        C:\Windows
        C:\Windows\System32\Wbem
        C:\Windows\System32\WindowsPowerShell\v1.0\
        C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL
        C:\Program Files\Intel\Intel(R) Management Engine Components\DAL
        C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT
        C:\Program Files\Intel\Intel(R) Management Engine Components\IPT
        C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
        C:\Program Files\Intel\WiFi\bin\
        C:\Program Files\Common Files\Intel\WirelessCommon\
        C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR
        C:\WINDOWS\system32
        C:\WINDOWS
        C:\WINDOWS\System32\Wbem
        C:\WINDOWS\System32\WindowsPowerShell\v1.0\
        C:\WINDOWS\System32\OpenSSH\
        C:\Program Files (x86)\Windows Live\Shared
        C:\Program Files\dotnet\
        C:\Program Files\VSCodium\bin
        C:\Program Files\MiKTeX\miktex\bin\x64\
        D:\ProgramFiles\Git\cmd
        D:\ProgramFiles\WezTerm
        D:\ProgramFiles\Meld\
        D:\ProgramFiles\Pandoc\
        D:\ProgramFiles\Python\Python311\Scripts\
        D:\ProgramFiles\Python\Python311\
        D:\ProgramFiles\Python\Launcher\
        C:\Users\RESUSER\AppData\Local\Microsoft\WindowsApps
        C:\Users\RESUSER\AppData\Local\GitHubDesktop\bin
        D:\msys64\mingw64\bin
        D:\msys64\usr\bin
        C:\Program Files (x86)\Vim\vim82
        D:\StandalonePrograms\micro-2.0.10
        C:\Program Files\Notepad3
        D:\StandalonePrograms\wscite522
        C:\Program Files\Okular\bin\okular.exe
        C:\Program Files\7-Zip
        D:\s_mg\sile
        D:\ProgramFiles\Julia-1.8.5\bin
        C:\Program Files\R\R-4.2.0\bin\x64
        C:\Program Files\GNU Octave\Octave-7.1.0\mingw64\
        C:\Program Files\Qalculate
        D:\StandalonePrograms\helix-23.03-x86_64-windows
        D:\ProgramFiles\JetBrains\IntelliJ IDEA Community Edition 2022.2\plugins\Kotlin\kotlinc\bin\
        D:\StandalonePrograms\Neovim\bin
        C:\Program Files\Cppcheck
        D:\StandalonePrograms\LSP\\clangd\clangd_15.0.1\
        D:\5_setups\15_devt\android\android sdk adb tools\platform-tools
        C:\Program Files\texstudio
        D:\StandalonePrograms\sioyek-release-windows\
        D:\StandalonePrograms\LSP\\
        D:\StandalonePrograms\doublecmd\
        D:\StandalonePrograms\LSP\\clangd\clangd_snapshot_20230219\bin\
        C:\Program Files\Geany\bin
        D:\ProgramFiles\Kate-22.12\bin
        D:\ProgramFiles\Python\Python311
        D:\15_devt\abs\kakoune\src\kakoune-2022.10.31\src
        D:\ProgramFiles\Mozilla Thunderbird\
        D:\ProgramFiles\Pale Moon\


sys.path:
        D:\ProgramFiles\Python\Python311\Scripts\jupyter-troubleshoot.EXE
        D:\ProgramFiles\Python\Python311\python311.zip
        D:\ProgramFiles\Python\Python311\DLLs
        D:\ProgramFiles\Python\Python311\Lib
        D:\ProgramFiles\Python\Python311
        D:\ProgramFiles\Python\Python311\Lib\site-packages
        D:\ProgramFiles\Python\Python311\Lib\site-packages\win32
        D:\ProgramFiles\Python\Python311\Lib\site-packages\win32\lib
        D:\ProgramFiles\Python\Python311\Lib\site-packages\Pythonwin

sys.executable:
        D:\ProgramFiles\Python\Python311\python.exe

sys.version:
        3.11.2 (tags/v3.11.2:878ead1, Feb  7 2023, 16:38:35) [MSC v.1934 64 bit
(AMD64)]

platform.platform():
        Windows-10-10.0.19045-SP0

where jupyter:
        D:\ProgramFiles\Python\Python311\Scripts\jupyter.exe

pip list:
        Package                  Version
        ------------------------ ------------
        aiofiles                 23.1.0
        aiosqlite                0.19.0
        altair                   5.0.0
        anyio                    3.6.2
        appdirs                  1.4.4
        argon2-cffi              21.3.0
        argon2-cffi-bindings     21.2.0
        arrow                    1.2.3
        astroid                  2.15.4
        asttokens                2.2.1
        async-lru                2.0.2
        attrs                    23.1.0
        autopep8                 2.0.2
        Babel                    2.12.1
        backcall                 0.2.0
        beautifulsoup4           4.12.2
        black                    23.3.0
        bleach                   6.0.0
        blinker                  1.6.2
        cachetools               5.3.0
        certifi                  2022.12.7
        cffi                     1.15.1
        charset-normalizer       3.1.0
        click                    8.1.3
        colorama                 0.4.6
        comm                     0.1.3
        commonmark               0.9.1
        contourpy                1.0.7
        cs50                     9.2.5
        cycler                   0.11.0
        debugpy                  1.6.7
        decorator                5.1.1
        defusedxml               0.7.1
        dill                     0.3.6
        docstring-to-markdown    0.12
        entrypoints              0.4
        executing                1.2.0
        fastjsonschema           2.16.3
        flake8                   6.0.0
        Flask                    2.2.3
        fonttools                4.39.3
        fqdn                     1.5.1
        gitdb                    4.0.10
        GitPython                3.1.31
        greenlet                 2.0.2
        idna                     3.4
        imgcat                   0.5.0
        importlib-metadata       6.6.0
        iniconfig                2.0.0
        ipykernel                6.23.1
        ipython                  8.13.2
        ipython-genutils         0.2.0
        ipywidgets               8.0.6
        isoduration              20.11.0
        isort                    5.12.0
        itsdangerous             2.1.2
        jedi                     0.18.2
        Jinja2                   3.1.2
        json5                    0.9.11
        jsonpointer              2.3
        jsonschema               4.17.3
        jupyter                  1.0.0
        jupyter_client           8.2.0
        jupyter_collaboration    1.0.0a8
        jupyter-console          6.6.3
        jupyter_core             5.3.0
        jupyter-events           0.6.3
        jupyter-lsp              2.2.0
        jupyter_server           2.6.0
        jupyter_server_fileid    0.9.0
        jupyter_server_terminals 0.4.4
        jupyter_server_ydoc      0.8.0
        jupyter-ydoc             1.0.2
        jupyterlab               4.0.1
        jupyterlab-pygments      0.2.2
        jupyterlab_server        2.22.1
        jupyterlab-widgets       3.0.7
        jupytext                 1.14.5
        kiwisolver               1.4.4
        lazy-object-proxy        1.9.0
        line-profiler            4.0.3
        markdown-it-py           2.2.0
        MarkupSafe               2.1.2
        matplotlib               3.7.1
        matplotlib-inline        0.1.6
        mccabe                   0.7.0
        mdit-py-plugins          0.3.5
        mdurl                    0.1.2
        memory-profiler          0.61.0
        mistune                  2.0.5
        mypy-extensions          1.0.0
        nbclassic                1.0.0
        nbclient                 0.8.0
        nbconvert                7.4.0
        nbformat                 5.8.0
        nest-asyncio             1.5.6
        networkx                 3.1
        notebook                 6.5.4
        notebook_shim            0.2.3
        numpy                    1.24.3
        overrides                7.3.1
        packaging                23.0
        pandas                   2.0.2
        pandocfilters            1.5.0
        parso                    0.8.3
        pathspec                 0.11.1
        pickleshare              0.7.5
        Pillow                   9.5.0
        pip                      23.1.2
        platformdirs             3.2.0
        pluggy                   1.0.0
        prometheus-client        0.16.0
        prompt-toolkit           3.0.38
        protobuf                 3.20.3
        psutil                   5.9.4
        pure-eval                0.2.2
        py-cpuinfo               9.0.0
        pyarrow                  12.0.0
        pycodestyle              2.10.0
        pycparser                2.21
        pydeck                   0.8.1b0
        pydocstyle               6.3.0
        pydot                    1.4.2
        pyflakes                 3.0.1
        Pygments                 2.15.1
        pylint                   2.17.4
        Pympler                  1.0.1
        pyparsing                3.0.9
        pypng                    0.20220715.0
        pyrsistent               0.19.3
        pytest                   7.3.1
        pytest-benchmark         4.0.0
        python-dateutil          2.8.2
        python-json-logger       2.0.7
        python-lsp-jsonrpc       1.0.0
        python-lsp-server        1.7.3
        pytoolconfig             1.2.5
        pytz                     2023.3
        pytz-deprecation-shim    0.1.0.post0
        pywin32                  306
        pywinpty                 2.0.10
        PyYAML                   6.0
        pyzmq                    25.0.2
        qrcode                   7.4.2
        qtconsole                5.4.3
        QtPy                     2.3.1
        requests                 2.28.2
        rfc3339-validator        0.1.4
        rfc3986-validator        0.1.1
        rich                     13.3.5
        rope                     1.7.0
        Send2Trash               1.8.0
        setuptools               67.8.0
        six                      1.16.0
        smmap                    5.0.0
        sniffio                  1.3.0
        snowballstemmer          2.2.0
        soupsieve                2.4.1
        SQLAlchemy               2.0.12
        sqlparse                 0.4.4
        stack-data               0.6.2
        streamlit                1.22.0
        tenacity                 8.2.2
        termcolor                2.3.0
        terminado                0.17.1
        tinycss2                 1.2.1
        toml                     0.10.2
        tomli                    2.0.1
        tomlkit                  0.11.7
        toolz                    0.12.0
        tornado                  6.3.1
        traitlets                5.9.0
        typing_extensions        4.5.0
        tzdata                   2023.3
        tzlocal                  4.3
        ujson                    5.7.0
        uri-template             1.2.0
        urllib3                  1.26.15
        validators               0.20.0
        watchdog                 3.0.0
        wcwidth                  0.2.6
        webcolors                1.13
        webencodings             0.5.1
        websocket-client         1.5.1
        Werkzeug                 2.2.3
        whatthepatch             1.0.5
        wheel                    0.40.0
        widgetsnbextension       4.0.7
        wrapt                    1.15.0
        y-py                     0.6.0
        yapf                     0.33.0
        ypy-websocket            0.9.0
        zipp                     3.15.0
Command Line Output
Paste the output from your command line running `jupyter lab` here, use `--debug` if possible.
[I 2023-05-31 14:37:11.189 ServerApp] Package jupyterlab took 0.0000s to import
[I 2023-05-31 14:37:11.256 ServerApp] Package jupyter_collaboration took 0.0672s to import
[I 2023-05-31 14:37:11.292 ServerApp] Package jupyter_lsp took 0.0353s to
import
[W 2023-05-31 14:37:11.293 ServerApp] A `_jupyter_server_extension_points` function was not found in jupyter_lsp. Instead, a `_jupyter_server_extension_paths` function was found and will be used for now. This function name will be deprecated in future releases of Jupyter Server.
[I 2023-05-31 14:37:11.298 ServerApp] Package jupyter_server_fileid took 0.0051s to import
[I 2023-05-31 14:37:11.304 ServerApp] Package jupyter_server_ydoc took 0.0057s to import
[I 2023-05-31 14:37:11.733 ServerApp] Package jupytext took 0.4286s to import
[I 2023-05-31 14:37:11.736 ServerApp] Package nbclassic took 0.0025s to import
[W 2023-05-31 14:37:11.740 ServerApp] A `_jupyter_server_extension_points` function was not found in nbclassic. Instead, a `_jupyter_server_extension_paths` function was found and will be used for now. This function name will be deprecated in future releases of Jupyter Server.
[I 2023-05-31 14:37:11.741 ServerApp] Package notebook_shim took 0.0000s to import
[W 2023-05-31 14:37:11.741 ServerApp] A `_jupyter_server_extension_points` function was not found in notebook_shim. Instead, a `_jupyter_server_extension_paths` function was found and will be used for now. This function name will be deprecated in future releases of Jupyter Server.
[I 2023-05-31 14:37:11.748 ServerApp] jupyter_collaboration | extension was successfully linked.
[I 2023-05-31 14:37:11.748 ServerApp] jupyter_lsp | extension was successfully linked.
[I 2023-05-31 14:37:11.754 ServerApp] jupyter_server_fileid | extension was successfully linked.
[I 2023-05-31 14:37:11.760 ServerApp] jupyter_server_ydoc | extension was
successfully linked.
[I 2023-05-31 14:37:11.769 ServerApp] jupyterlab | extension was successfully linked.
[I 2023-05-31 14:37:11.769 ServerApp] jupytext | extension was successfully linked.
[I 2023-05-31 14:37:11.778 ServerApp] nbclassic | extension was successfully linked.
[I 2023-05-31 14:37:12.252 ServerApp] notebook_shim | extension was successfully linked.
[I 2023-05-31 14:37:12.409 ServerApp] notebook_shim | extension was successfully loaded.
[I 2023-05-31 14:37:12.409 ServerApp] jupyter_collaboration | extension was successfully loaded.
[I 2023-05-31 14:37:12.412 ServerApp] jupyter_lsp | extension was successfully loaded.
[I 2023-05-31 14:37:12.412 FileIdExtension] Configured File ID manager: ArbitraryFileIdManager
[I 2023-05-31 14:37:12.412 FileIdExtension] ArbitraryFileIdManager : Configured root dir: D:/
[I 2023-05-31 14:37:12.413 FileIdExtension] ArbitraryFileIdManager : Configured database path: C:\Users\RESUSER\AppData\Roaming\jupyter\file_id_manager.db
[I 2023-05-31 14:37:12.413 FileIdExtension] ArbitraryFileIdManager : Successfully connected to database file.
[I 2023-05-31 14:37:12.413 FileIdExtension] ArbitraryFileIdManager : Creating File ID tables and indices with journal_mode = DELETE
[I 2023-05-31 14:37:12.414 FileIdExtension] Attached event listeners.
[I 2023-05-31 14:37:12.414 ServerApp] jupyter_server_fileid | extension was successfully loaded.
[I 2023-05-31 14:37:12.415 ServerApp] jupyter_server_ydoc | extension was
successfully loaded.
[I 2023-05-31 14:37:12.416 LabApp] JupyterLab extension loaded from D:\ProgramFiles\Python\Python311\Lib\site-packages\jupyterlab
[I 2023-05-31 14:37:12.416 LabApp] JupyterLab application directory is D:\ProgramFiles\Python\Python311\share\jupyter\lab
[I 2023-05-31 14:37:12.417 LabApp] Extension Manager is 'pypi'.
[I 2023-05-31 14:37:12.419 ServerApp] jupyterlab | extension was successfully loaded.
[W 2023-05-31 14:37:12.420 ServerApp] [Jupytext Server Extension] Async contents managers like AsyncLargeFileManager are not supported at the moment (https://github.com/mwouts/jupytext/issues/1020). We will derive a contents manager from LargeFileManager instead.
[I 2023-05-31 14:37:12.420 ServerApp] [Jupytext Server Extension] Deriving a JupytextContentsManager from LargeFileManager
[I 2023-05-31 14:37:12.421 ServerApp] jupytext | extension was successfully loaded.

  _   _          _      _
 | | | |_ __  __| |__ _| |_ ___
 | |_| | '_ \/ _` / _` |  _/ -_)
  \___/| .__/\__,_\__,_|\__\___|
       |_|


Read the migration plan to Notebook 7 to learn about the new features and
the actions to take if you are using extensions.

https://jupyter-notebook.readthedocs.io/en/latest/migrate_to_notebook7.html

Please note that updating to Notebook 7 might break some of your extensions.

[I 2023-05-31 14:37:12.429 ServerApp] nbclassic | extension was successfully loaded.
[I 2023-05-31 14:37:12.431 ServerApp] Serving notebooks from local directory: D:/
[I 2023-05-31 14:37:12.431 ServerApp] Jupyter Server 2.6.0 is running at:
[I 2023-05-31 14:37:12.431 ServerApp] http://localhost:8888/lab?token=9930b735c8f5da5cde86126a4617134d059aaa16853484bf
[I 2023-05-31 14:37:12.431 ServerApp]     http://127.0.0.1:8888/lab?token=9930b735c8f5da5cde86126a4617134d059aaa16853484bf
[I 2023-05-31 14:37:12.431 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 2023-05-31 14:37:12.653 ServerApp]

    To access the server, open this file in a browser:
        file:///C:/Users/RESUSER/AppData/Roaming/jupyter/runtime/jpserver-12636-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/lab?token=9930b735c8f5da5cde86126a4617134d059aaa16853484bf
        http://127.0.0.1:8888/lab?token=9930b735c8f5da5cde86126a4617134d059aaa16853484bf
[I 2023-05-31 14:37:12.701 ServerApp] Creating FileLoader for: College/2023.04 internal-a-thon-attendence/docs/untitled.py
[I 2023-05-31 14:37:12.702 ServerApp] Watching file: College/2023.04 internal-a-thon-attendence/docs/untitled.py
[I 2023-05-31 14:37:12.712 ServerApp] Initializing room text:file:d9814d9a-c2a2-46a2-b192-88f68163079b
[I 2023-05-31 14:37:12.758 ServerApp] Content in room text:file:d9814d9a-c2a2-46a2-b192-88f68163079b loaded from the ystore SQLiteYStore
[I 2023-05-31 14:37:12.759 ServerApp] Cleaning room: text:file:d9814d9a-c2a2-46a2-b192-88f68163079b
[I 2023-05-31 14:37:13.564 ServerApp] Skipped non-installed server(s): bash-language-server, dockerfile-language-server-nodejs, javascript-typescript-langserver, jedi-language-server, julia-language-server, pyright, python-language-server, r-languageserver, sql-language-server, typescript-language-server, unified-language-server, vscode-css-languageserver-bin, vscode-html-languageserver-bin, vscode-json-languageserver-bin, yaml-language-server
0.00s - Debugger warning: It seems that frozen modules are being used, which may
0.00s - make the debugger miss breakpoints. Please pass -Xfrozen_modules=off
0.00s - to python to disable frozen modules.
0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.
[W 2023-05-31 14:37:17.075 LabApp] Could not determine jupyterlab build status without nodejs
[I 2023-05-31 14:37:21.937 ServerApp] Request for Y document 'untitled.py' with room ID: 852e0668-3914-4bab-b6a4-d06ddc6ca5aa
[I 2023-05-31 14:37:22.001 ServerApp] Creating FileLoader for: untitled.py
[I 2023-05-31 14:37:22.002 ServerApp] Watching file: untitled.py
[I 2023-05-31 14:37:22.004 ServerApp] Initializing room text:file:852e0668-3914-4bab-b6a4-d06ddc6ca5aa
[I 2023-05-31 14:37:22.044 ServerApp] Content in room text:file:852e0668-3914-4bab-b6a4-d06ddc6ca5aa loaded from file untitled.py
[I 2023-05-31 14:37:23.079 ServerApp] Saving the content from room text:file:852e0668-3914-4bab-b6a4-d06ddc6ca5aa
[I 2023-05-31 14:37:23.081 ServerApp] Saving file: untitled.py
[I 2023-05-31 14:37:37.109 ServerApp] Saving the content from room text:file:852e0668-3914-4bab-b6a4-d06ddc6ca5aa
[I 2023-05-31 14:37:37.111 ServerApp] Saving file: untitled.py
[I 2023-05-31 14:37:40.207 ServerApp] Saving the content from room text:file:852e0668-3914-4bab-b6a4-d06ddc6ca5aa
[I 2023-05-31 14:37:40.209 ServerApp] Saving file: untitled.py
[I 2023-05-31 14:37:44.988 ServerApp] Saving the content from room text:file:852e0668-3914-4bab-b6a4-d06ddc6ca5aa
[I 2023-05-31 14:37:44.990 ServerApp] Saving file: untitled.py
[I 2023-05-31 14:37:53.029 ServerApp] Saving the content from room text:file:852e0668-3914-4bab-b6a4-d06ddc6ca5aa
[I 2023-05-31 14:37:53.031 ServerApp] Saving file: untitled.py
[I 2023-05-31 14:38:02.979 ServerApp] Interrupted...
Browser Output
Paste the output from your browser Javascript console here, if applicable.
@jupyterlab-probot jupyterlab-probot bot added the status:Needs Triage Applied to new issues that need triage label May 31, 2023
@davidbrochart
Copy link
Contributor

In collaborative mode it is not possible to disable auto-save.
If you want to do so, you need to uninstall or disable jupyter-collaboration.

@goyalyashpal
Copy link
Author

goyalyashpal commented May 31, 2023

ohw, i thought it was available as a toggle....

so, as it currently stands, there's no way to:

  • only enable reload from disk if not changed in the jupyter lab, but
  • leave untouched i.e. do not autosave if changed in jupyter lab

right? ( this is behaviour in other editors. )

if yes, then any near future plans for that?

@davidbrochart
Copy link
Contributor

I don't know if it makes sense to not auto-save in collaboration mode. A user might not want to save, but they cannot prevent other users to do so anyway.

@fcollonval
Copy link
Member

I don't know if it makes sense to not auto-save in collaboration mode. A user might not want to save, but they cannot prevent other users to do so anyway.

Yes but the extension may be installed in the current environment but not always be in used. So it makes sense to be able to turn off auto-save in collaboration mode; Microsoft office as a obvious toggle to do that for example:

Office 365 example

@JasonWeill JasonWeill changed the title how to Stop collaborative mode? Unable to disable autosave in collaborative mode Jun 6, 2023
@JasonWeill JasonWeill removed the status:Needs Triage Applied to new issues that need triage label Jun 6, 2023
@JasonWeill
Copy link
Contributor

To summarize, there are two issues here:

  1. We have a setting to disable autosave that is ignored in collaborative mode (possible UI/documentation issue)
  2. It is not possible to disable autosave in collaborative mode (feature request?)

@goyalyashpal
Copy link
Author

goyalyashpal commented Jun 7, 2023

one more reference of the implementation of the intended behaviour:

reload_clean_doc_on_file_change

Whether to automatically reload documents that have no changes but which have changed on disk.
If unsaved changes exist then the user is prompted to reload manually.

- https://www.geany.org/manual/current/#various-preferences:~:text=reload_clean_doc_on_file_change

@krassowski
Copy link
Member

It is not possible to disable autosave in collaborative mode (feature request?)

I think it is fair to allow users to disable auto-save and only save manually. Yes, there are caveats such that another user can save when in collaborative mode, but I think this is fine as long as it is documented and UI can display that the file was saved by someone else.

I think the pattern is to enforce autosave in cloud-synced documents, not in collaborative documents; yes most collaborative documents are cloud-synced nowadays, but in cases where they are not, the user still has to deal with their file system limitations and auto-save can lead to inadvertent side-effects, for example if users have file system watch scripts, such as performing expensive anti-virus scans on each modification (which is sometimes enforced and user has no way to disable it).

Technically, I think we only want to:

  • hold off writing the file to disk when autosave is disabled (modify _maybe_save_document in jupyter-server-ydoc)
  • restore save action (currently disabled in RTC) and make it trigger write to disk
  • pass autosave interval configured on frontend to the jupyter-collaboration's autosave logic so that this is respected

We may also want to:

  • display a notification if autosave is disabled and another user saves the document? Not sure here.
  • warn user that if they disable autosave in collaborative mode (is there anything that we should warn them about? I am not sure)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants