From a2c95abc26789f7dacade9ef566a576f5e94348c Mon Sep 17 00:00:00 2001 From: Archos Date: Sat, 17 Jan 2026 19:11:10 +0100 Subject: [PATCH 1/3] Add character limit patch (2500 chars) --- Dockerfile | 13 ++++++++++--- char-limit.patch | 17 +++++++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 char-limit.patch diff --git a/Dockerfile b/Dockerfile index 8cc2aac..b367669 100644 --- a/Dockerfile +++ b/Dockerfile @@ -90,8 +90,15 @@ RUN ldconfig && \ ffmpeg -version && \ ffprobe -version -RUN curl -L https://github.com/tootsuite/mastodon/archive/v${MASTODON_VERSION}.tar.gz | tar -xz --strip-components 1 -f - && \ - bundle config --local set deployment 'true' && \ +# Download Mastodon source +RUN curl -L https://github.com/tootsuite/mastodon/archive/v${MASTODON_VERSION}.tar.gz | tar -xz --strip-components 1 -f - + +# Apply character limit patch +COPY char-limit.patch /tmp/ +RUN patch -p1 < /tmp/char-limit.patch + +# Install Ruby dependencies +RUN bundle config --local set deployment 'true' && \ bundle config --local set without 'development test' && \ bundle config --local set silence_root_warning true && \ bundle install && \ @@ -100,7 +107,6 @@ RUN curl -L https://github.com/tootsuite/mastodon/archive/v${MASTODON_VERSION}.t RUN corepack enable && \ corepack prepare --activate - RUN yarn workspaces focus --production @mastodon/mastodon RUN yarn install @@ -134,3 +140,4 @@ RUN ln -fs /app/data/system /app/code/public/system COPY start.sh cleanup.sh config.sh env.template cache-env.sh.template /app/pkg/ CMD [ "/app/pkg/start.sh" ] + diff --git a/char-limit.patch b/char-limit.patch new file mode 100644 index 0000000..c1f9fa1 --- /dev/null +++ b/char-limit.patch @@ -0,0 +1,17 @@ +--- a/app/validators/status_length_validator.rb ++++ b/app/validators/status_length_validator.rb +@@ -3,7 +3,7 @@ + class StatusLengthValidator < ActiveModel::Validator +- MAX_CHARS = 500 ++ MAX_CHARS = 2500 + URL_PLACEHOLDER_CHARS = 23 + URL_PLACEHOLDER = 'x' * 23 + +--- a/app/javascript/mastodon/features/compose/containers/compose_form_container.js ++++ b/app/javascript/mastodon/features/compose/containers/compose_form_container.js +@@ -50,7 +50,7 @@ +- maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 500), ++ maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 2500), + }); + + export default connect(mapStateToProps, mapDispatchToProps)(ComposeForm); -- 2.43.0 From e749c862333a9278a55e9932bfaea487643653a3 Mon Sep 17 00:00:00 2001 From: Archos Date: Sat, 17 Jan 2026 19:29:29 +0100 Subject: [PATCH 2/3] Fix patch format --- char-limit.patch | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/char-limit.patch b/char-limit.patch index c1f9fa1..ef9662b 100644 --- a/char-limit.patch +++ b/char-limit.patch @@ -1,17 +1,25 @@ +diff --git a/app/validators/status_length_validator.rb b/app/validators/status_length_validator.rb +index 1234567..abcdefg 100644 --- a/app/validators/status_length_validator.rb +++ b/app/validators/status_length_validator.rb -@@ -3,7 +3,7 @@ +@@ -2,7 +2,7 @@ + class StatusLengthValidator < ActiveModel::Validator - MAX_CHARS = 500 + MAX_CHARS = 2500 URL_PLACEHOLDER_CHARS = 23 URL_PLACEHOLDER = 'x' * 23 +diff --git a/app/javascript/mastodon/features/compose/containers/compose_form_container.js b/app/javascript/mastodon/features/compose/containers/compose_form_container.js +index 1234567..abcdefg 100644 --- a/app/javascript/mastodon/features/compose/containers/compose_form_container.js +++ b/app/javascript/mastodon/features/compose/containers/compose_form_container.js -@@ -50,7 +50,7 @@ +@@ -71,7 +71,7 @@ const mapStateToProps = state => ({ + anyMedia: state.getIn(['compose', 'media_attachments']).size > 0, + isInReply: state.getIn(['compose', 'in_reply_to']) !== null, + lang: state.getIn(['compose', 'language']), - maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 500), + maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 2500), }); - export default connect(mapStateToProps, mapDispatchToProps)(ComposeForm); + const mapDispatchToProps = dispatch => ({ -- 2.43.0 From 83eccb8b9b5c882cfe802618ca74aaae85c3bcfc Mon Sep 17 00:00:00 2001 From: Archos Date: Sat, 17 Jan 2026 19:32:47 +0100 Subject: [PATCH 3/3] Use sed instead of patch for char limit --- Dockerfile | 5 ++--- char-limit.patch | 25 ------------------------- 2 files changed, 2 insertions(+), 28 deletions(-) delete mode 100644 char-limit.patch diff --git a/Dockerfile b/Dockerfile index b367669..8f91c80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -93,9 +93,8 @@ RUN ldconfig && \ # Download Mastodon source RUN curl -L https://github.com/tootsuite/mastodon/archive/v${MASTODON_VERSION}.tar.gz | tar -xz --strip-components 1 -f - -# Apply character limit patch -COPY char-limit.patch /tmp/ -RUN patch -p1 < /tmp/char-limit.patch +RUN sed -i 's/MAX_CHARS = 500/MAX_CHARS = 2500/g' app/validators/status_length_validator.rb && \ + sed -i "s/max_characters'], 500)/max_characters'], 2500)/g" app/javascript/mastodon/features/compose/containers/compose_form_container.js # Install Ruby dependencies RUN bundle config --local set deployment 'true' && \ diff --git a/char-limit.patch b/char-limit.patch deleted file mode 100644 index ef9662b..0000000 --- a/char-limit.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/app/validators/status_length_validator.rb b/app/validators/status_length_validator.rb -index 1234567..abcdefg 100644 ---- a/app/validators/status_length_validator.rb -+++ b/app/validators/status_length_validator.rb -@@ -2,7 +2,7 @@ - - class StatusLengthValidator < ActiveModel::Validator -- MAX_CHARS = 500 -+ MAX_CHARS = 2500 - URL_PLACEHOLDER_CHARS = 23 - URL_PLACEHOLDER = 'x' * 23 - -diff --git a/app/javascript/mastodon/features/compose/containers/compose_form_container.js b/app/javascript/mastodon/features/compose/containers/compose_form_container.js -index 1234567..abcdefg 100644 ---- a/app/javascript/mastodon/features/compose/containers/compose_form_container.js -+++ b/app/javascript/mastodon/features/compose/containers/compose_form_container.js -@@ -71,7 +71,7 @@ const mapStateToProps = state => ({ - anyMedia: state.getIn(['compose', 'media_attachments']).size > 0, - isInReply: state.getIn(['compose', 'in_reply_to']) !== null, - lang: state.getIn(['compose', 'language']), -- maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 500), -+ maxChars: state.getIn(['server', 'server', 'configuration', 'statuses', 'max_characters'], 2500), - }); - - const mapDispatchToProps = dispatch => ({ -- 2.43.0