From 433b5f9259e71044a3149a81b791a4948fba120b Mon Sep 17 00:00:00 2001 From: KenanZhu <3471685733@qq.com> Date: Fri, 26 Jun 2026 14:27:38 +0800 Subject: [PATCH] fix(ink): prevent content overflow on mobile viewports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Five targeted fixes applied to all 11 ink templates: 1. Convert table/tr/tbody to display:block on mobile so the block-level stacking of elements works correctly. 2. Add box-sizing:border-box to all elements to prevent padding from pushing content beyond the viewport width. 3. Add word-break:break-word + overflow-wrap:break-word to table, td, th elements to force long text to wrap. 4. Add white-space:pre-wrap + word-break:break-all to
   and  to prevent horizontal scroll from code blocks.
5. Add max-width:100% + height:auto to all images, and
   max-width:100% to nested tables.
6. Remove invalid table-layout:fixed from 
tag (was CSS property on wrong element — had no effect). Also reduced mobile padding from 28px to 16px for more usable content width on narrow screens. Co-Authored-By: Claude --- themes/ink/mail/org/team_invite.tmpl | 14 +++++++++++--- themes/ink/mail/repo/actions/workflow_run.tmpl | 14 +++++++++++--- themes/ink/mail/repo/collaborator.tmpl | 14 +++++++++++--- themes/ink/mail/repo/issue/assigned.tmpl | 14 +++++++++++--- themes/ink/mail/repo/issue/default.tmpl | 14 +++++++++++--- themes/ink/mail/repo/release.tmpl | 14 +++++++++++--- themes/ink/mail/repo/transfer.tmpl | 14 +++++++++++--- themes/ink/mail/user/auth/activate.tmpl | 14 +++++++++++--- themes/ink/mail/user/auth/activate_email.tmpl | 14 +++++++++++--- themes/ink/mail/user/auth/register_notify.tmpl | 14 +++++++++++--- themes/ink/mail/user/auth/reset_passwd.tmpl | 14 +++++++++++--- 11 files changed, 121 insertions(+), 33 deletions(-) diff --git a/themes/ink/mail/org/team_invite.tmpl b/themes/ink/mail/org/team_invite.tmpl index 2669387..8b84826 100644 --- a/themes/ink/mail/org/team_invite.tmpl +++ b/themes/ink/mail/org/team_invite.tmpl @@ -52,17 +52,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/repo/actions/workflow_run.tmpl b/themes/ink/mail/repo/actions/workflow_run.tmpl index 27659bd..6460b76 100644 --- a/themes/ink/mail/repo/actions/workflow_run.tmpl +++ b/themes/ink/mail/repo/actions/workflow_run.tmpl @@ -54,17 +54,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/repo/collaborator.tmpl b/themes/ink/mail/repo/collaborator.tmpl index f290f30..8462017 100644 --- a/themes/ink/mail/repo/collaborator.tmpl +++ b/themes/ink/mail/repo/collaborator.tmpl @@ -52,17 +52,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/repo/issue/assigned.tmpl b/themes/ink/mail/repo/issue/assigned.tmpl index 991ac38..e14cb60 100644 --- a/themes/ink/mail/repo/issue/assigned.tmpl +++ b/themes/ink/mail/repo/issue/assigned.tmpl @@ -52,17 +52,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/repo/issue/default.tmpl b/themes/ink/mail/repo/issue/default.tmpl index 7b3fc92..dc50865 100644 --- a/themes/ink/mail/repo/issue/default.tmpl +++ b/themes/ink/mail/repo/issue/default.tmpl @@ -62,17 +62,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/repo/release.tmpl b/themes/ink/mail/repo/release.tmpl index 1506422..302170f 100644 --- a/themes/ink/mail/repo/release.tmpl +++ b/themes/ink/mail/repo/release.tmpl @@ -57,17 +57,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/repo/transfer.tmpl b/themes/ink/mail/repo/transfer.tmpl index 2d34c47..7bd8c25 100644 --- a/themes/ink/mail/repo/transfer.tmpl +++ b/themes/ink/mail/repo/transfer.tmpl @@ -52,17 +52,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/user/auth/activate.tmpl b/themes/ink/mail/user/auth/activate.tmpl index d33016f..443821d 100644 --- a/themes/ink/mail/user/auth/activate.tmpl +++ b/themes/ink/mail/user/auth/activate.tmpl @@ -52,17 +52,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/user/auth/activate_email.tmpl b/themes/ink/mail/user/auth/activate_email.tmpl index fd29051..cfa5a37 100644 --- a/themes/ink/mail/user/auth/activate_email.tmpl +++ b/themes/ink/mail/user/auth/activate_email.tmpl @@ -52,17 +52,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/user/auth/register_notify.tmpl b/themes/ink/mail/user/auth/register_notify.tmpl index a6a82ab..d2eae40 100644 --- a/themes/ink/mail/user/auth/register_notify.tmpl +++ b/themes/ink/mail/user/auth/register_notify.tmpl @@ -52,17 +52,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+
diff --git a/themes/ink/mail/user/auth/reset_passwd.tmpl b/themes/ink/mail/user/auth/reset_passwd.tmpl index c3978c8..ae28745 100644 --- a/themes/ink/mail/user/auth/reset_passwd.tmpl +++ b/themes/ink/mail/user/auth/reset_passwd.tmpl @@ -52,17 +52,25 @@ /* Responsive */ @media only screen and (max-width:480px) { + /* Stack layout — convert table rows to blocks */ + .email-wrap,.email-wrap tbody,.email-wrap tr{ display:block!important;width:100%!important } + .email-wrap td{ box-sizing:border-box!important } .email-header { padding-left:16px!important;padding-right:16px!important } - .email-card { width:100%!important;display:block!important;border-left:none!important;padding-left:28px!important;padding-right:28px!important;padding-top:0!important } - .email-sidebar { width:100%!important;display:block!important;padding:0 28px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } + .email-card { width:100%!important;display:block!important;border-left:none!important;padding:0 16px 16px!important } + .email-sidebar { width:100%!important;display:block!important;padding:0 16px 16px!important;border-left:none!important;border-top:1px solid #ddd!important } .email-btn { display:block!important;width:auto!important;text-align:center!important } .email-footer { padding-left:16px!important;padding-right:16px!important } + /* Prevent content overflow */ + .email-wrap,.email-wrap td,.email-wrap th{ word-break:break-word!important;overflow-wrap:break-word!important } + img{ max-width:100%!important;height:auto!important } + pre,code{ white-space:pre-wrap!important;word-break:break-all!important } + table{ max-width:100%!important } } -
+