Changelog 4.1.x

4.1.1 (2020-04-06)

[Accounts / authentication]

  • Defect #32793: Email address with Punycode top-level domain is not accepted

[Administration]

  • Defect #33176: Sort order icon is missing in users index
  • Feature #32945: Show module names in bold in permission report

[Attachments]

  • Defect #32656: Drag and drop objects from Outlook to Redmine deletes the objects
  • Defect #32785: X-Sendfile header field is not set if rack 2.1.0 is installed

[Custom fields]

  • Defect #33085: Unable to update the values of a custom field for enumerations when multiple values option is enabled
  • Defect #33183: Unable to edit user or group that has custom fields with text formatting enabled

[Database]

  • Defect #30285: Microsoft SQL server support is broken

[Documentation]

  • Patch #32787: Redmine 4.0 no longer supports Ruby 2.2

[Gantt]

  • Defect #19248: End markers in gantt PDF are misaligned
  • Defect #23645: Gantt bars for single-day tasks may be rendered wrongly in PDF
  • Defect #32812: Clicking on a parent object in gantt wrongly collapses objects at the same level
  • Defect #33082: Links in the last column in gantt are unclickable

[Gems support]

  • Defect #32839: Redmine 4.1 installation fails due to an attempt to install sprockets 4.0.0 if bundler prior to 1.15.2 is used on Ruby prior to 2.5

[Importers]

  • Defect #33027: Fix missing closing div in _time_entries_fields_mapping.html.erb

[Issues]

  • Defect #32737: Duplicate sort keys for issue query cause SQL error with SQL Server
  • Defect #33169: Issues CSV export does not include custom fields with "Full width layout" enabled

[Issues list]

  • Defect #33110: Sort does not work with group by datetime columns
  • Defect #33163: Parent task subject column should be in the same style as Subject column

[Issues workflow]

  • Defect #33059: "Role" dropdown in Workflow page is unexpectedly expanded when selecting "all"

[PDF export]

  • Defect #32477: Right-aligned TOC tag is displayed in exported PDF if the text formatting setting is Markdown
  • Defect #32832: FrozenError when exporting content to PDF in some languages
  • Defect #32858: Exporting issue as PDF fails when the issue has private journal
  • Defect #32859: Issue list: long text custom field missing in PDF export
  • Defect #33103: Export to PDF fails when subject of parent task is included in issue list

[Projects]

  • Defect #32769: Unable to sort projects table by custom field
  • Defect #32891: Bookmark link on project page should not use full path with hostname
  • Defect #32896: Totals not working in projects list view
  • Defect #33083: Projects filter "Subproject of" does not work when the given value is "My projects" or "My bookmarks"

[REST API]

  • Defect #33113: Default version and assignee are not exposed via projects API

[Rails support]

  • Patch #33196: Update Rails to 5.2.4.2

[Ruby support]

  • Patch #32788: Specify supported Ruby version in Gemfile and doc/INSTALL

[SCM]

  • Defect #32449: Diff view for .js files in repositories is broken

[Security]

  • Defect #32850: XSS vulnerability due to missing back_url validation
  • Defect #32934: XSS vulnerabilities in textile inline links
  • Defect #33075: Time entries csv export should check issue visibility

[Text formatting]

  • Defect #32754: Fix missing arrow icon of collapse macro
  • Defect #32765: ##123 syntax for linking to issues: Title cannot be distinguished from following text
  • Defect #32971: New line between list items break a list

[Time tracking]

  • Defect #32768: Internal Error when issue text custom field is shown in Spent time query results
  • Defect #32774: Creating time tracking entry for other user through rest API fails with 403
  • Defect #32959: Fix selected user on log time edit page when user has permissions to log time for another user
  • Defect #32973: Editing a time entry for a locked user changes the user to the current user
  • Defect #33052: Missing subject and tracker name in CSV export of time entries report
  • Feature #3800: Editing time entries should show the person involved

[Translations]

  • Patch #32659: Russian translation update for 4.1-stable
  • Patch #32746: Italian translation update for 4.1-stable
  • Patch #32917: Bulgarian translation
  • Patch #32928: Czech translation for 4.1-stable
  • Patch #32995: Russian translation update for 4.1-stable
  • Patch #33070: Simplified Chinese translation update for 4.1-stable
  • Patch #33122: German translation update for 4.1-stable
  • Patch #33219: Persian translation update for 4.1-stable

[UI]

  • Defect #32772: Tabs are displayed on two lines when the total width of the tabs is greater than 2000px
  • Defect #32829: HTML entity is used in CSS string
  • Defect #32838: Typo in application.css: s/paddin-bottom/padding-bottom/
  • Defect #32981: Unable to distinguish disabled input fields
  • Patch #32991: Make group names bold on tracker summary view
  • Patch #33068: Update copyright year in the footer to 2020

[UI - Responsive]

  • Defect #32889: Responsive layout for issue tree and issue relation on issue page is broken
  • Feature #33156: Allow zooming on mobile devices

4.1.0 (2019-12-20)

[Accounts / authentication]

  • Feature #4221: Force passwords to contain specified character classes
  • Feature #9112: Libravatar and Gravatar-compatible servers support
  • Feature #26127: Display user logins on profiles

[Administration]

  • Defect #29601: Redmine::VERSION::revision may return wrong value
  • Feature #8343: Add wiki toolbar to "Email header" and "Email footer" in "Email notifications" admin tab
  • Feature #30853: Show warning when no workflow is defined for the role
  • Feature #30916: Show warning when no tracker uses the status in the workflows
  • Feature #31154: Reject setting RFC non-compliant emission email addresses
  • Feature #31361: Include a reason in the error message when an issue status cannot be deleted
  • Feature #32343: Ability to filter roles that are displayed on the permissions report
  • Patch #29589: Set the first status as a default status in "New tracker" form

[Attachments]

  • Defect #32289: Don't try to generate thumbnails if convert command is not available
  • Feature #3816: Allow pasting screenshots from clipboard
  • Feature #22481: Show thumbnails for PDF attachments
  • Feature #29752: Render Textile and Markdown attachments on the preview page
  • Feature #31553: Preview .webm as video instead of audio
  • Feature #32249: Show attachment thumbnails by default
  • Patch #13688: Chosen thumbnail has to be bigger than requested one and not smaller
  • Patch #30177: Thumbnail lifecycle: reuse thumbs from identical files, delete thumbs when diskfile is deleted

[Calendar]

  • Feature #27096: Mark non-working days in calendar view

[Code cleanup/refactoring]

  • Defect #30474: IssuesControllerTest#test_index_sort_by_total_estimated_hours tests practically nothing
  • Defect #30806: TimeEntryTest#test_create_should_validate_user_id occasionally fails
  • Defect #31053: Some issue fixtures are set inconsistent tracker id which is not available in the project
  • Defect #31074: TimelogTest#test_default_query_setting fails depending on the language of the browser
  • Defect #31093: Duplicate method definition: ProjectsControllerTest#test_jump_should_not_redirect_to_unknown_tab
  • Defect #31387: Don't rescue Exception class
  • Defect #31388: ApiTest fails if config.time_zone is set
  • Defect #31510: Fix missing closing tags in workflows/permissions.html.erb
  • Defect #31929: MarkdownFormatterTest#test_should_support_underlined_text is declared as private
  • Patch #29441: Remove code related to JRuby and unsupported Ruby versions
  • Patch #30163: Remove unnecessary tests in test/unit/initializers/patches_test.rb
  • Patch #30276: Add missing fixtures to several tests
  • Patch #30347: test_links_separated_with_line_break_should_link tests nothing
  • Patch #30445: Remove unnecessary bgl and bgr wrappers from the footer
  • Patch #30466: Remove unused i18n key "label_all_time"
  • Patch #30994: Refactor custom field css classes
  • Patch #31004: Decode hexadecimal-encoded literals in order to be frozen string literals friendly
  • Patch #31034: Remove encoding magic comments
  • Patch #31046: Remove unused method ApplicationHelper#generate_csv
  • Patch #31059: Use #b shortcut instead of #force_encoding
  • Patch #31088: Remove useless code in TimeEntryQuery#sql_for_activity_id_field
  • Patch #31131: CalendarsControllerTest#test_show fails depending on the date
  • Patch #31205: Replace jquery-rails with vanilla javascript ujs
  • Patch #31344: Remove unused i18n key "label_please_login"
  • Patch #31391: Small refactorization of avatar methods
  • Patch #31402: Add support for customization by block to IssueCustomField.generate!
  • Patch #31433: Use "icon icon-*" classes for sort-handler, collapsible fieldsets and collapsible versions
  • Patch #31506: Remove trailing whitespaces
  • Patch #31509: Add Rubocop to enforce some styles
  • Patch #31555: Use Redmine::Database.mysql? instead of a regular expression
  • Patch #31705: Add missing fixtures to AttachmentFormatVisibilityTest
  • Patch #31865: Add missing fixtures to ImportsControllerTest
  • Patch #31941: ThemesTest may fail if a third-party theme with a favicon is installed
  • Patch #31965: Add missing fixtures to Redmine::ApiTest::VersionsTest
  • Patch #31966: Add missing fixtures to Redmine::Helpers::GanttHelperTest
  • Patch #31967: IssueCustomFieldTest randomly fails
  • Patch #32023: Add missing fixtures to IssueStatusesControllerTest
  • Patch #32025: mail_body method in test/test_helper.rb raises an exception if the message is not multipart
  • Patch #32094: Remove unnecessary call to set_tmp_attachments_directory
  • Patch #32122: Fix test failure due to missing call to set_tmp_attachments_directory
  • Patch #32297: Remove code for unsupported versions of Rails from open_id_authentication
  • Patch #32400: Remove unused i18n key "button_duplicate"
  • Patch #32431: Invalid association IssueCustomField#issue_custom_values
  • Patch #32432: Avoid class name overlap that causes TypeError on `rake test:system test`

[Custom fields]

  • Defect #29209: Long text custom fields don't accept values longer than 64KB if backend database is MySQL
  • Feature #23997: Per role visibility settings for version custom fields
  • Feature #29712: Preview and wiki toolbar for full width custom fields
  • Feature #31159: "Create and continue" button for custom fields
  • Feature #31444: Add "<< me >>" option to user format issue custom fields
  • Feature #31859: Per role visibility settings for spent time custom fields
  • Feature #31925: Per role visibility settings for project custom fields
  • Patch #31320: Set an appropriate default type in New custom field page depending on the current tab

[Database]

  • Feature #31921: Changes to properly support 4 byte characters (emoji) when database is MySQL

[Documentation]

  • Feature #32119: Add TOC to wiki formatting help
  • Feature #32123: Add "Highlighted code" section in Wiki Syntax Quick Reference
  • Feature #32169: Add links to the detailed Wiki formatting help in Quick Reference
  • Patch #30970: Small improvements in appearance of the code coverage index page
  • Patch #31169: Wiki syntax help for document image pasting and drag/drop embedding
  • Patch #31327: Update CONTRIBUTING.md

[Documents]

  • Feature #29725: Show recent documents first when sorting documents by date

[Email notifications]

  • Defect #13888: Daylight savings causes inconsistency of Message-Id in emails
  • Defect #14792: Don't add a display name and extra angle brackets in List-Id header field
  • Defect #17096: Issue emails cannot be threaded by some mailers due to inconsistent Message-ID and References field
  • Defect #31501: reminder.rake should ignore blank parameters
  • Feature #5913: Authors name in from address of email notifications
  • Feature #10378: Don't show empty fields in email notifications
  • Feature #13111: New setting to include the status changes in issue mail notifications subject
  • Feature #13307: Start date and due date in email notifications
  • Feature #17840: Option to send email notification on "Target version updated"
  • Feature #22771: Option to send email notifications while importing issues from CSV files
  • Feature #31104: Show the total number of open issues in a reminder
  • Feature #31225: Show the number of days left until the due date in reminders
  • Feature #31910: Add additional mail headers for issue tracker

[Email receiving]

  • Defect #31232: Text may unexpectedly be enclosed in pre tags when an issue is created via HTML email
  • Defect #31549: LF line terminators cause misparse of a multi-part email when rdm-mailhandler.rb is invoked from /etc/aliases
  • Defect #31695: Convert HTML links to Textile/Markdown links when creating an issue from an email
  • Defect #31946: No log message when MailHandler ignored a reply to a nonexistent issue, journal, or message
  • Feature #17699: Parse author's name enclosed in parentheses in the From field when creating a user account from an email
  • Feature #19903: Change textfield to textarea for "Exclude attachments by name"
  • Feature #30838: Option to parse HTML part of multipart (HTML) emails first
  • Feature #31231: Better handling of HTML tables when creating an issue from an email
  • Patch #31324: Allow to set is_private flag through a keyword in emails
  • Patch #31899: Improve MailHandler logging for unauthorized attempts

[Gantt]

  • Feature #6417: Allow collapse/expand in gantt chart
  • Feature #14654: Allow a bigger range for the gantt timeline
  • Feature #27672: Show selected columns in gantt chart
  • Feature #31373: Previous and next month links in gantt

[Gems support]

  • Defect #31657: Update capybara (~> 3.25.0)
  • Defect #32223: Disable sprockets to avoid Sprockets::Railtie::ManifestNeededError raised by sprockets 4.0.0
  • Feature #29946: Update i18n gem (~> 1.6.0)
  • Feature #30492: Replace RMagick with MiniMagick
  • Feature #30963: Update simplecov gem (~> 0.17.0)
  • Feature #31911: Update request_store gem to 1.4
  • Patch #31126: Update sqlite3 gem (~> 1.4.0)
  • Patch #31556: Update Rouge to 3.12.0
  • Patch #31611: Update csv gem (~> 3.1.1)
  • Patch #31847: Update redcarpet to 3.5.0
  • Patch #31877: Update rbpdf (~> 1.20.0)
  • Patch #31919: Update roadie-rails gem (~> 2.1.0)

[Groups]

  • Feature #12796: Display user's groups on profile

[Hook requests]

  • Patch #7975: Hook for adding content to the side bar of Wiki page

[I18n]

  • Defect #5820: Hard-coded string "no subject" in app/models/mail_handler.rb

[Importers]

  • Defect #21766: CSV import does not keep the project it was clicked from
  • Feature #28213: Support external ID when importing issues
  • Feature #28234: Add CSV Import for Time Entries
  • Feature #31450: Support "YYYY/MM/DD" date format when importing issues

[Issues]

  • Defect #28502: Support issue[assigned_to_id]=me when prefilling issues
  • Feature #442: Add a description for trackers
  • Feature #3058: Show issue history using tabs
  • Feature #22368: Ability to add private comments from the issue bulk edit page
  • Feature #25540: Unify fields of subtasks and related issues on issue page
  • Feature #31418: Stacked bar charts in the issue details report
  • Feature #31427: Insert a link to the source to the attribution line when quoting a note or a message
  • Feature #31499: Show "Due in X days" in issue details page
  • Patch #28138: Add link to add a new issue on the version page
  • Patch #31493: Add a link to project_issues_report from project_issues_report_details
  • Patch #31994: Allow issue auto complete to return 10 issues when there is not search term provided

[Issues filter]

  • Defect #32546: Issue relations filter lacks "is not"
  • Feature #13803: Implement grouping issues by date (start, due, creation, update, closing dates)
  • Feature #16904: Add anonymous user to users list in query filters
  • Feature #26826: Issue filtering by spent time
  • Feature #30482: Multiple issue ids in "Parent task" filter
  • Feature #30808: Multiple issue ids in "Subtasks" filter
  • Feature #31328: Change the "+" button in the issues filter to a larger one
  • Feature #31879: "starts with" and "ends with" filter operators for string values
  • Patch #4502: New date filter operators: tomorrow, next week, next month
  • Patch #25265: QueriesController can not handle subclass of IssueQuery

[Issues list]

  • Defect #29581: Issues in paginated views may be lost because sorting criteria are not unique
  • Feature #19371: Add a new query column for the parent task subject
  • Feature #26081: Allow full_width_layout long-text custom fields to appear in the issue list like 'Description' (as a block column)
  • Patch #31280: Left align long text custom fields in the issues list

[My page]

  • Feature #30975: New My page block: Updated issues

[PDF export]

  • Patch #30162: Wiki page collapse block image is not displayed in exported PDF

[Performance]

  • Feature #26561: Enable frozen string literals
  • Patch #28940: Use Regexp#match? to reduce allocations of MatchData object
  • Patch #30249: Performance improvement when rendering news or calendar block on My page
  • Patch #30828: Refactor GitAdapter#default_branch not to unnecessarily iterate through all elements
  • Patch #31855: Speed up workflow edit page rendering

[Permissions and roles]

  • Defect #17219: Rename label for "Issues can be assigned to this role"
  • Defect #30431: Useless "Delete issues" tracker permission is shown on the role page for Anonymous and Non-member
  • Feature #1248: New Permission: Edit own issues
  • Patch #27625: Increase maximum size for role name

[Plugin API]

  • Patch #27659: redmine_plugin_model_generator improvements(fixes and timestamps)
  • Patch #31110: Raise an exception if the plugin directory name differs from the plugin id
  • Patch #31457: Add support for reloading plugin assets automatically in development mode
  • Patch #31485: Add support for :sql ActiveRecord::Base.schema_format in redmine:plugins:migrate
  • Patch #31498: Add redmine_plugin_migration generator
  • Patch #31746: Add redmine:plugins:test:system task

[Project settings]

  • Defect #27101: Project identifier model constraint doesn't match with text_project_identifier_info and JS-generated identifiers
  • Feature #22090: Make project settings more accessible
  • Feature #31032: Display details about inheritance when editing a member roles
  • Patch #30203: Add links to administration pages in project settings

[Projects]

  • Feature #29482: Query system for Projects page
  • Feature #31355: Bookmarks and recently used projects for the project jump box
  • Feature #32306: Add a link to projects administration page on projects page
  • Patch #31356: replace icon-fav with icon-user for 'my projects'
  • Patch #31465: Add an icon linked to trackers detail report on the project overview page

[REST API]

  • Defect #30073: Ajax Request Returns 200 but an error event is fired instead of success
  • Feature #26237: Support wiki_page_title attribute in Versions REST API
  • Feature #30086: Use HTTP status code 403 instead of 401 when REST API is disabled
  • Feature #31559: Support "active" attribute in Enumerations REST API
  • Feature #32002: Add inherit_members to projects API response
  • Feature #32242: Add estimated hours and spent hours to Versions API
  • Patch #13468: REST API for News
  • Patch #31399: make /my/account endpoint accessible through API

[Roadmap]

  • Defect #30949: Roadmap shows 100%, but one of its tasks is still set to 90%
  • Patch #28510: Show issue assignee gravatar in roadmap and version page
  • Patch #29391: Show version status in Roadmap and Version pages
  • Patch #31424: Add issue css classes to issue rows in Roadmap and Version pages

[Ruby support]

  • Defect #30967: "rake test:coverage" fails in Ruby 2.5 and 2.6
  • Feature #30356: Drop Ruby 2.2 support

[SCM]

  • Defect #16881: Git: repository page crashes when non-ascii character in tag or branch name

[Text formatting]

  • Defect #30259: URLs end with "-" are rendered incorrectly in Textile
  • Feature #29489: Issue macro for flexible linking to issues
  • Feature #30829: Simpler link syntax "#note-123" to make a link to a note of the current issue
  • Patch #32359: Markdown: Fix sections parsing with code blocks

[Third-party libraries]

  • Feature #31196: Updates jQuery to 2.2.4 and adds jQuery Migrate library
  • Feature #31434: Update Chart.js to 2.8.0
  • Feature #31436: Update raphael.js to 2.3.0

[Time tracking]

  • Feature #3322: Setting to restrict spent times on future dates
  • Feature #3848: Permission to log time for another user
  • Feature #5061: Show time log entries in issue history
  • Feature #30233: Allow grouping of time entries by creation date
  • Feature #30346: Add "Target Version" to the list of "Available columns" in "Spent time" Tab
  • Feature #30464: Show estimated hours on the overview page as well as spent hours

[Translations]

  • Defect #31269: Fix Japanese translation for status_locked
  • Defect #32354: Fix inconsistent capitalization in Italian translation
  • Patch #10702: Change "Create and Continue" translation to "Create and add another"
  • Patch #29142: Japanese translation change for "lost password"
  • Patch #29151: Add honorific suffixes ("san") in Japanese translation
  • Patch #30170: Change Japanese translation for "note"
  • Patch #31256: german translation for missing parts
  • Patch #31260: Improvement of Japanese translation for permission names
  • Patch #32358: Fix incomplete Italian translation for notice_successful keys

[UI]

  • Defect #27330: "Name" field in the 'edit version' form has no "maxlength"
  • Defect #30467: Footer is not placed at the bottom on pages with little content
  • Defect #31496: Switch between toggle plus and minus icons for toggle multi select
  • Feature #6831: Add different style for group names in the New member modal window
  • Feature #23392: Link to remove a subtask from its parent task
  • Feature #30207: Hide menu item in the cross-project menu if the module is not enabled in any project
  • Feature #31294: Add "robohash" to "Default Gravatar image" options
  • Feature #31989: Inline issue auto complete (#) in fields with text-formatting enabled
  • Feature #32052: Auto-complete issues #id in search form
  • Patch #5899: Display user's gravatar when editing profile
  • Patch #26604: Set a random name attribute on all forms to prevent overwritten values after soft reload with Firefox
  • Patch #26646: Remove hardcoded width in query column selects
  • Patch #29289: Wrap subprojects in the overview section with an unordered list to improve customisation
  • Patch #30168: Wrap "splitcontentright" and "splitcontentleft" containers with a flexbox
  • Patch #30294: Move the links (View all issues, Summary, Import) from the Issues section of the issues list sidebar under a dropdown
  • Patch #30421: Issue tracking table on user profile page
  • Patch #30435: Replace float rules with flexbox for content and sidebar block
  • Patch #31022: Always use HTTPS when accessing gravatar.com
  • Patch #31066: Show projects using a table instead of an unordered list in the user profile page
  • Patch #31147: Add custom styles for all fields
  • Patch #31204: Add hover styles to buttons
  • Patch #31343: Visually distinguishable style for code tag
  • Patch #31441: Show elements titles using jQuery UI tooltips
  • Patch #31598: Move the links (All time entries, Import) from Spent time section of the spent time list sidebar under a dropdown
  • Patch #31640: Add clear query icon next to selected query in sidebar
  • Patch #31697: Show closed date in a tooltip if the issue is closed
  • Patch #31950: Add CSS class to "journal" and "reply" headers
  • Patch #31971: Change the color of the input field frame when in focus
  • Patch #32013: Rounded corners of the main menu
  • Patch #32014: Rounded corners on table.list elements
  • Patch #32015: Rounded corners of "my page" blocks
  • Patch #32037: Constrain sidebar width on different resolutions
  • Patch #32165: Rounded corners on table.cal

[Wiki]

  • Defect #11359: Wiki diff doesn't keep spaces
  • Defect #20910: Hierarchy in TOC is not preserved when Wiki index is exported to HTML
  • Feature #9634: Show locked badge for locked wiki pages