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

Revise maxLength limit #26

Closed
AndrewLeedham opened this issue Dec 13, 2019 · 10 comments · Fixed by #27
Closed

Revise maxLength limit #26

AndrewLeedham opened this issue Dec 13, 2019 · 10 comments · Fixed by #27
Labels

Comments

@AndrewLeedham
Copy link
Contributor

I believe the maxLength limit here: https://github.com/juliuscc/semantic-release-slack-bot/blob/master/lib/success.js#L9 is outdated the docs seem to indicate that messages will be truncated on Slack's end at 40,000 characters.

Perhaps maxLength should be a config option and defaulted to 3000 as to not break things going forward, but allows a user to increase it as they please. Or maybe set it to 40,000 and bump the major version?

@hannesrabo
Copy link
Collaborator

hannesrabo commented Dec 14, 2019

Hi, this is something that has been previously discussed and it seems like the 3000 character limit still holds.

Here is the previous answer: comment

@hannesrabo
Copy link
Collaborator

Have you successfully tried the package with messages longer than 3000 character? I think it might be possible to have longer messages in case the section block is not used.

@AndrewLeedham
Copy link
Contributor Author

Yes I have experimented with very long messages and more character can get through, but not anywhere near 40000. I have a feeling the limit is based on displayed characters not actual characters, e.g. for a link that displays text is shorter than the full label and URL markup. Just a theory but increasing the max limit definitely allowed more characters through in my testing.

@juliuscc
Copy link
Owner

AFAIK the limit for a message is 40000 characters. However, there is a much stricter limit to consider. When using a section, the character limit in the section is only 3000. Have you tried using a section with more than 3000 characters or only a message?

We are considering to allow a much larger character length when the user inputs a template, but if they use a section the limit should be the same.

@AndrewLeedham
Copy link
Contributor Author

Hnmm I am on holiday this week, so I cannot check. But, I was using an attachment text field with more than 3000 characters, and saw more characters on slack with a higher max limit.

@AndrewLeedham
Copy link
Contributor Author

Ok so sending this in a message body to slack:

{
  "attachments": [
		{
			"title": "Length test",
			"text": "Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\nLorem ipsum dolor sit amet consectetur, adipisicing elit. Nihil natus voluptates quisquam assumenda doloremque, ducimus iste ullam, ut dolorum eius delectus quibusdam maxime voluptatum a. Tenetur quasi iste vero ipsum!\n\n"
		}
  ]
}

outputs all of the paragraphs in the message which is around 5500 characters:
image

@juliuscc
Copy link
Owner

The original limit is explicitly based on section, which of course is not mandatory in the case of using templates. Do you think it is possible to detect if there is a section in the template and limit that section to ~3000 characters, but otherwise raise the threshold to a much higher limit (~40,000)?

I do also agree that there should be a way to change the limits, but it should be very clear that it is an unsafe action, and having good defaults should be a priority.

Do you think it would be more clear that we do not recommend to change the config if it is called something like UNSAFE_MAX_LENGTH instead of MAX_LENGTH?

@AndrewLeedham
Copy link
Contributor Author

UNSAFE_MAX_LENGTH sounds sensible to me. It seems that the new blocks api has some more stringent guidelines, e.g: the fields array in a section can have a maximum text length of 2000 and only contain 10 items. Should that be sanitised as well?

I was trying to find some-sort of schema, but slack does not seem to provide anything outside of some TypeScript types (which don't include property length). Also their own node webhook API does not do any sanitisation.

I guess there are a few options:

  1. Always cap section text at 3000 characters, and default the UNSAFE_MAX_LIMIT to 3000 also but allow that to be configured for other fields at the users risk.
  2. Have separate options for different types of fields, so the user can increase the section text limit as well as the attachments text etc.
  3. Add exact sanitisation based on the limits specified in the docs, perhaps based on an JSON Schema file that would be easily updatable. Perhaps said schema can be overrode as an option, so the user can update limits as they see fit?

@juliuscc
Copy link
Owner

juliuscc commented Jan 1, 2020

This problem is more complicated than I first thought 😅 Thanks for the extensive explanation!

I think option 3 is the nicest, but it might not be feasible. I would suggest doing option 1 one until a better solution comes. It will give the control and responsibility to the users of the plugin.

juliuscc pushed a commit that referenced this issue Jan 3, 2020
* feat: add maxLength option

* refactor: prefix max length option with unsafe

* docs(readme): update max length option with unsafe

* docs(readme): revert indent

fixes: #26
@juliuscc
Copy link
Owner

juliuscc commented Jan 3, 2020

🎉 This issue has been resolved in version 1.4.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

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.

3 participants