Skip to content
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

Text can suddenly be trapped into a not-very-wide box for no apparent reason #35

Open
paulproteus opened this issue Nov 17, 2016 · 7 comments

Comments

@paulproteus
Copy link

Steps to reproduce:

  • Create a new Etherpad grain

  • Clear all text within it

  • Copy this single line of text, with a space at the end of it, to the clipboard:

But maybe the rain isn't really to blame. So I'll remove the cause, but not the symptom.

  • Paste it a few times

Expected behavior:

  • Every line (except possibly the last line) in the paragraph takes up the full width of the page.

Actual behavior:

  • Etherpad appears to introduce some line wrapping, sometimes mid-word.

Screenshot:

screenshot from 2016-11-17 11 21 11

@paulproteus
Copy link
Author

The user who reported this to support@ found that their text was trapped in a much skinnier width than mine is, so the title of the bug report may seem like exaggeration, but I believe it accurately expresses the intent of the person who originally reported it to support@.

@kentonv
Copy link
Owner

kentonv commented Nov 18, 2016

This appears to be happening here:

https://github.com/kentonv/etherpad-lite/blob/sandstorm/src/static/js/contentcollector.js#L718

This forces a wrap at 2000 characters. You can actually go back and delete the newline to get the line longer than 2000 chars again, but as soon as you edit the line, it breaks again.

Possibly our friend on support@ ended up with multiple breaks because he went back and added more text earlier in the paragraph, causing the end of the paragraph to be repeatedly chopped off.

2000 chars seems like a weirdly low limit for a paragraph. But Etherpad was originally meant to be a code editor, I think. Perhaps this limit goes all the way back to AppJet days. It does appear to go back to the first days of etherpad-lite.

It's weird that none of us have run into this problem before.

Probably, we can increase the limit, though the comments around it suggest that making it infinite would be problematic. What would be a good number?

@paulproteus
Copy link
Author

4096000 seems like a good number. What are the trade-offs involved?

@paulproteus
Copy link
Author

I went and read the source. Thank you for the link, btw!

https://developer.mozilla.org/en-US/docs/Web/API/Document/designMode doesn't show me much about design mode's performance trade-offs. I think little is documented about the performance trade-offs.

I think my friend @RoanKattouw might have more input on this, since he used to work on the Wikimedia Foundation's VisualEditor. Roan, how bad would it be if we have a 4096K-byte line in designMode? :)

@kentonv
Copy link
Owner

kentonv commented Nov 18, 2016

What if I were to tag @dgreensp and ask him since it looks like this code may be so old that he may have written it? :D

David, do you remember why Etherpad limits lines to 2000 characters? Is this limit likely obsolete these days?

@dgreensp
Copy link

I wrote this code. :)

The limit was originally put there with unwrapped documents in mind. The relevant case is:

  1. User pastes in some giant text, with no line endings
  2. Document is not in wrap mode, so the text appears on one line that extends very far to the right-- hundreds of thousands of pixels
  3. Firefox used to crap out when coordinates exceeded 32k pixels, because it positioned platform-native widgets in 16-bit coordinates. It also seemed unlikely that the user really wanted such a ginormous line.

A low limit shouldn't be necessary from a technical standpoint.

@kentonv
Copy link
Owner

kentonv commented Nov 27, 2016

Hooray! Since Etherpad on Sandstorm almost always operates in wrapped mode I suppose we should simply remove this limit.

SurajDadral pushed a commit to GreatDevelopers/etherpad-lite that referenced this issue Sep 21, 2020
This upgrade should be backward compatible, but still suffers form major
vulnerabilities in its https-proxy-agent transitive dependency (see
https://www.npmjs.com/advisories/1184).

Changelog:
- https://github.com/npm/cli/releases

6.12.0 (2019-10-08):
    Now npm ci runs prepare scripts for git dependencies, and respects the
    --no-optional argument. Warnings for engine mismatches are printed again.
    Various other fixes and cleanups.

    BUG FIXES
    890b245dc ether#252 ci: add dirPacker to options (@claudiahdz)
    f3299acd0 ether#257 npm.community#4792 warn message on engine mismatch
                   (@ruyadorno)
    bbc92fb8f ether#259 npm.community#10288 Fix figgyPudding error in npm token
                   (@benblank)
    70f54dcb5 ether#241 doctor: Make OK more consistent (@gemal)

    FEATURES
    ed993a29c ether#249 Add CI environment variables to user-agent (@isaacs)
    f6b0459a4 ether#248 Add option to save package-lock without formatting Adds a new
                   config --format-package-lock, which defaults to true.
                   (@bl00mber)

DEPENDENCIES
    0ca063c5d npm-lifecycle@3.1.4:
        fix: filter functions and undefined out of makeEnv (@isaacs)
    5df6b0ea2 libcipm@4.0.4:
        fix: pack git directories properly (@claudiahdz)
        respect no-optional argument (@cruzdanilo)
    7e04f728c tar@4.4.12
    5c380e5a3 stringify-package@1.0.1 (@isaacs)
    62f2ca692 node-gyp@5.0.5 (@isaacs)
    0ff0ea47a npm-install-checks@3.0.2 (@isaacs)
    f46edae94 hosted-git-info@2.8.5 (@isaacs)

TESTING
    44a2b036b ether#262 fix root-ownership race conditions in meta-test (@isaacs)

6.11.3 (2019-09-03):
    Fix npm ci regressions and npm outdated depth.

    BUG FIXES
    235ed1d28 ether#239 Don't override user specified depth in outdated. Restores
                   ability to update packages using --depth as suggested by npm audit. (@G-Rath)
    1fafb5151 ether#242 npm.community#9586 Revert "install: do not descend into
                   directory deps' child modules" (@isaacs)
    cebf542e6 ether#243 npm.community#9720 ci: pass appropriate configs for file/dir
                   modes (@isaacs)

    DEPENDENCIES
    e5fbb7ed1 read-cmd-shim@1.0.4 (@claudiahdz)
    23ce65616 npm-pick-manifest@3.0.2 (@claudiahdz)

6.11.2 (2019-08-22):
    Fix a recent Windows regression, and two long-standing Windows bugs. Also,
    get CI running on Windows, so these things are less likely in the future.

    DEPENDENCIES
    9778a1b87 cmd-shim@3.0.3: Fix regression where shims fail to preserve exit
              code (@isaacs)
    bf93e91d8 npm-package-arg@6.1.1: Properly handle git+file: urls on Windows
              when a drive letter is included. (@isaacs)

    BUGFIXES
    6cc4cc66f escape args properly on Windows Bash Despite being bash, Node.js
              running on windows git mingw bash still executes child processes
              using cmd.exe. As a result, arguments in this environment need to
              be escaped in the style of cmd.exe, not bash. (@isaacs)

    TESTS
    291aba7b8 make tests pass on Windows (@isaacs)
    fea3a023a travis: run tests on Windows as well (@isaacs)

6.11.1 (2019-08-20):
    Fix a regression for windows command shim syntax.

    37db29647 cmd-shim@3.0.2 (@isaacs)

v6.11.0 (2019-08-20):
    A few meaty bugfixes, and introducing peerDependenciesMeta.

    FEATURES
    a12341088 ether#224 Implements peerDependenciesMeta (@arcanis)
    2f3b79bba ether#234 add new forbidden 403 error code (@claudiahdz)

    BUGFIXES
    24acc9fc8 and 45772af0d ether#217 npm.community#8863 npm.community#9327 do not
              descend into directory deps' child modules, fix shrinkwrap files
              that inappropriately list child nodes of symlink packages (@isaacs
              and @salomvary)
    50cfe113d ether#229 fixed typo in semver doc (@gall0ws)
    e8fb2a1bd ether#231 Fix spelling mistakes in CHANGELOG-3.md (@XhmikosR)
    769d2e057 npm/uid-number#7 Better error on invalid --user/--group configs.
              This addresses the issue when people fail to install binary
              packages on Docker and other environments where there is no
              'nobody' user. (@isaacs)
    8b43c9624 nodejs/node#28987 npm.community#6032 npm.community#6658
              npm.community#6069 npm.community#9323 Fix the regression where
              random config values in a .npmrc file are not passed to lifecycle
              scripts, breaking build processes which rely on them. (@isaacs)
    8b85eaa47 save files with inferred ownership rather than relying on SUDO_UID
              and SUDO_GID. (@isaacs)
    b7f6e5f02 Infer ownership of shrinkwrap files (@isaacs)
    54b095d77 ether#235 Add spec to dist-tag remove function (@theberbie)

    DEPENDENCIES
    dc8f9e52f pacote@9.5.7: Infer the ownership of all unpacked files in
              node_modules, so that we never have user-owned files in root-owned
              folders, or root-owned files in user-owned folders. (@isaacs)
    bb33940c3 cmd-shim@3.0.0:
        9c93ac3 kentonv#2 npm#3380 Handle environment variables properly (@basbossink)
        2d277f8 kentonv#25 kentonv#36 kentonv#35 Fix 'no shebang' case by always providing $basedir
                in shell script (@igorklopov)
        adaf20b kentonv#26 Fix $* causing an error when arguments contain parentheses
                (@satazor)
        49f0c13 kentonv#30 Fix paths for MSYS/MINGW bash (@dscho)
        51a8af3 kentonv#34 Add proper support for PowerShell (@ExE-Boss)
        4c37e04 kentonv#10 Work around quoted batch file names (@isaacs)
    a4e279544 npm-lifecycle@3.1.3 (@isaacs):
        fail properly if uid-number raises an error
    7086a1809 libcipm@4.0.3 (@isaacs)
    8845141f9 read-package-json@2.1.0 (@isaacs)
    51c028215 bin-links@1.1.3 (@isaacs)
    534a5548c read-cmd-shim@1.0.3 (@isaacs)
    3038f2fd5 gentle-fs@2.2.1 (@isaacs)
    a609a1648 graceful-fs@4.2.2 (@isaacs)
    f0346f754 cacache@12.0.3 (@isaacs)
    ca9c615c8 npm-pick-manifest@3.0.0 (@isaacs)
    b417affbf pacote@9.5.8 (@isaacs)

    TESTS
    b6df0913c ether#228 Proper handing of /usr/bin/node lifecycle-path test (@olivr70)
    aaf98e88c npm-registry-mock@1.3.0 (@isaacs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants