Edgewall Software

1.2 | 1.4

Release Notes for Trac development releases 1.3.x

1.3.x releases are "stable" and tested snapshots of trunk. They can be seen as sub-milestones on the road towards 1.4.

As opposed to maintenance releases, we offer no guarantees on feature and API compatibility from one 1.3.x release to the next.

However, by following 1.3.x you get a chance to use new features earlier, and therefore be able to contribute feedback when things are still in flux. It's also less risky than just getting the latest trunk, as we won't cut a 1.3.x release in the middle of a series of changes (though we had and still intend to have a good record of keeping things always working on trunk).

If you're a plugin developer, be sure to also check the ApiChanges/1.3 page.


  • Switch to Jinja2 template engine for faster and more memory lenient server-side content generation (#12639)
  • Modernized the code to support Python 2.7 idioms (earlier versions are no longer supported) (#12046, #12148, #12558, #12569)
  • Removed lots of backward compatibility APIs from pre-1.0 days; in particular, the database API is now exclusively based on the context managers (#9612, #11901)

Development Releases



5 / 5


10 / 10


13 / 13


30 / 30


71 / 71


17 / 17

Tickets with release notes

Milestone: 1.3.6 (9 matches)

Ticket Release Notes

Permission groups in the CC list are resolved to the users that are members of the group.


The auto preview timeout value can be configured for a session through the User Interface preferences page.


Replaced uses of __import__ with importlib.import_module.

  • Improved error reporting.
  • Error is not sent when the response has already started.
  • [trac] use_chunked_encoding is enabled by default and the error page is never sent as iterable content.

Macros can be hidden from the MacroList index.


Added link to wiki diff view on delete confirmation page.


TICKET_EDIT_CC is required for editing the CC list as a text field for the new ticket form.


Ticket change entry for default value of custom field is not added to existing tickets when a new custom field is added.


Fixed regression in ticket list changes that led to display of empty property change.

Milestone: 1.3.4 (10 matches)

Ticket Release Notes

Added support for HTTPS protocol to tracd (TracStandalone).


Fix a visual glitch in the way the first group in a TracQuery tabular results is presented.


Replaced term deleted in ticket property changes with removed, in order to unify terminology.


Use sha1 rather than md5 for generating ETag header.


Improved styling of wiki and ticket pages.


The BR macro takes an optional "clear" parameters, which adds the corresponding CSS styling (i.e. [[br(clear:left)]] generates the HTML <br style="clear: left"/>, same thing for "right" or "clear"). Note that [[br(clear)]] stands for [[br(clear:both)]].


Changed Genshi requirement to 0.7 or later.


Fix 'int' is undefined error in report_view.html.


Fix "Environment needs to be upgraded" when an exception is raised from plugin.


Fix ticket clone button missing when ticket description empty.

Milestone: 1.3.3 (22 matches)

Ticket Release Notes

Repository cannot be added from the admin page if a repository of the same name is already defined in the [repositories] section of trac.ini.

  • Ticket preview is disabled when there are no workflow actions.
  • The default reset action is not added if there is no new state in the workflow.

Redirect to the query module after deleting a ticket. If the deleted ticket is in the list of results from the last query, the last query is displayed, otherwise the default query is displayed.


Added comment edit link to wiki diff view.


trac-svn-hook can be configured using the hook script environment configuration, available in Subversion 1.8 and later.


Fix TracHTMLSanitizer raising exceptions and decoding refs twice in title attributes.


Fixed duplicate ids on page when more than one wiki toolbar.


Values in owner, reporter and CC property changes are decorated with trac-author-* classes (by Chrome.authorinfo).

  • Removed repostype and repospath arguments from trac-admin initenv command.
  • All cached repositories are synchronized on environment creation.

TracGuide wiki pages are set readonly when creating an environment.

  • Improved wording of ticket edit conflict message.
  • Fixed conflict not highlighted when comment is edited.

Fix malformed html being rendered when a report has only one column.


Improved coding style of sample-plugins/workflow.


The behavior user can edit CC field for new ticket without possessing TICKET_EDIT_CC is implemented in DefaultTicketPolicy. This allows the behavior to be modified by replacing DefaultTicketPolicy.

  • The installed wiki pages are not printed to the console when creating an environment with trac-admin initenv. The information is logged at INFO level to $ENV/log/trac.log.
  • The log_type defaults to file rather than none.
  • The log_level defaults to INFO rather than DEBUG.

Fix unbalanced </p> in preview_file.html.


Fix broken timeline rss when entry's title has xml special characters.


Fixed PostgreSQL server version reported incorrectly for version ≥ 10.


Fixed TypeError rendering error page with [trac] use_chunked_encoding = enabled.


Fix malformed html when the column ended with _ is used in report.


Changed styling and position of the You may use WikiFormatting here hint.


Restored support for the Universal Edit Button.

Milestone: 1.3.2 (56 matches)

Ticket Release Notes

The template engine used by Trac is now Jinja2. Genshi templates rendering in plugins will be supported until Trac 1.5.1.


Use relative font sizes in Trac CSS stylesheets


Added autopreviews to all textareas that accept wiki markup.


The TICKET_CHG_MILESTONE action is used internally to grant/deny changing the ticket milestone. DefaultPermissionPolicy grants the action when the user has MILESTONE_VIEW for the milestone. See CookBook/PermissionPolicies#RestrictChangingTicketMilestone for details on implementing fine-grained access control for changing the ticket milestone.


Extracted variables in WikiModule for the start page and title index page, so they can be overridden by a plugin.


Respect spacing within inline code style in the wiki


5 times speed-up when rendering query results, thanks to the migration from Genshi to Jinja2.


Added ticket delete_comment command to TracAdmin.


The tracopt.ticket.clone optional component makes it possible to clone a ticket starting from one of its comment, which can be useful to create "sub-tickets".


Made the navigation more configurable.

  • Entries can be added to the navigation
  • Entries provided by Trac and plugins can be moved the between meta and main navigation
  • Added a permission attribute for controlling visibility of the entry

Milestone admin page can be accessed by a user possessing MILESTONE_ADMIN. TICKET_ADMIN is required to set the default ticket milestone and default retarget milestone.

  • Traceback is not shown when existing resource is added using TracAdmin (e.g. trac-admin $env milestone add <milestone>.
  • Cached fields returned by TicketSystem.get_ticket_fields were not updated when milestone due or completed dates were changed.

Added test coverage for TracAdmin help commands.


Added description field to ticket enums.

  • Ticket manipulators are called in batch modify request.

Leading whitespace (indentation) is removed from extracted messages.


Workflow macro can render files from the repository.


Report sort order is preserved when changing Max items per page.


Report dynamic variables are autocompleted in the preferences form.


Absolute path to wiki page can be passed in the template argument by prefixing path with / (e.g. /TheTemplate). This is useful for plugins and links that wish to use a template that shouldn't be visible in the templates dropdown of the wiki new page form. Relative paths are still prefixed with PageTemplates/.


Added TracAdmin convert_db command, which migrates a database to the same or new environment while changing the database backend.


Fixed now button in jQuery timepicker not using session timezone preference.


Added test coverage for Request.__repr__.


Added max_size attribute to text and textarea custom fields.


Restyles the wiki and allow toggling the page between narrow and full width.


Fixed case-insensitive usernames in AuthzPolicy, a regression introduced in Trac 1.2.


Improve interoperability on Windows with the Windows subsystem for Linux (WSL). Repository paths stored as Windows paths will be converted at runtime to the equivalent POSIX paths if needed.


Use setUpModule and tearDownModule in trac.ticket.tests.notification to avoid test failures when running individual test cases rather than all tests in the module.


The path /milestone redirects to /roadmap even when a user doesn't have MILESTONE_VIEW.


Improved exception trapping and logging when executing ExtensionPoints: IEnvironmentSetupParticipant, INavigationContributor and ITimelineEventProvider.


Fixed exceptions due to req.args.get unexpectedly returning a list.


Fixed timeline date headings not localized (regression in Jinja2 porting).


Fixed TypeError when report is saved with an empty Query.

  • Added a new permission policy for the ticket system (DefaultTicketPolicy):
    • Authenticated user with TICKET_APPEND or TICKET_CHGPROP can modify description of ticket they reported.
  • Renamed ReadonlyWikiPolicy to DefaultWikiPolicy.
  • Modified LegacyAttachmentPolicy to allow authenticated users to delete their own attachments.

Timeline Ticket updates filter is enabled by default and the filter value defaults to True.

  • Ticket comment edits are validated. ITicketManipulators are called and [ticket] max_comment_size is enforced.
  • Added ticket warnings above the preview.

Empty Comment field is not displayed when viewing diff of a comment.


Fixed TypeError when deleting wiki page with more than one version.


Avoid extra spaces in each title of diff block.


No Changes is shown in side-by-side wiki diff mode when there are no differences.


The version release date is shown in the title of the Version link of the ticket box.

  • Fix typo, __slot__, in trac.util.html.
  • Fix UnicodeEncodeError raised from Element.__str__.
  • Fix TemplateRuntimeError raised in error.html when faulty plugins are more than one.

The allowed ticket owners can be programmatically controlled by subclassing ConfigurableTicketWorkflow and overriding the get_allowed_owner method.


Added help links to documentation on various pages.


PyMySQL is the supported MySQL library, with support dropped for MySQL-python.


Use url-regexp for tc.follow() rather than text-regexp to avoid modifying incorrect textarea value by twill.

  • The workflow is upgraded in db21.py rather than ConfigurableTicketWorkflow.upgrade_environment.
  • The wiki-macros directory is removed in db26.py rather than EnvironmentAdmin._do_upgrade.

The authenticated user is used as the reporter when cloning a ticket.


The cloned ticket description is quoted when cloning a ticket.


Fix wrong msgid_plural in wiki_delete.html.


Fix distutils.log has no attribute warning.


Improve check_catalog command to check whether same markups are used between msgid and msgstr in translations.


Added attachment move command to TracAdmin.


Fix switch to plain-text/interactive mode in error.html when preferred language is not English.


Remove unnecessary __FORM_TOKEN from ticketdeleter forms.


Fixed regression in r15010 that resulted in TypeError when exporting iCal from the roadmap.

Milestone: 1.3.1 (16 matches)

Ticket Release Notes

Default values for TracReports dynamic variables can be specified in the SQL query itself, inside SQL comments.


EnvironmentStub logs to a MemoryHandler and a list of (debug_level, message) tuples can be retrieved through the log_messages property.


Removed deprecated functions, classes, attributes and methods.


Replaced StringIO.StringIO and cStringIO.StringIO with io.StringIO and io.BytesIO.


Replaced uses of optparse with argparse throughout codebase.


Ticket changes can be used to format the subject template. changes is the dictionary returned from Ticket.get_change.


The trac-admin permission add command is atomic when operating on a list of permissions. If the user already possesses one of the permissions, a warning will be printed and the other permissions in the list will be granted. If one of the permissions raises a TracError (e.g. not a valid action), none of the permissions in the list are granted.

  • PostgreSQL version is shown in System Information table.
  • The minimum PostgreSQL version is now 9.1.0.

Fixed regression in r14888.


Refactored code to use Popen context manager.


Dropped support for PostgreSQL < 9.1.


Refactored code to use open and contextlib.closing context managers.


Remove ipnr from attachment and wiki models.


The search box is only visible when the SEARCH_VIEW permission is defined and granted to the user.


Load libpq library to call libpq_version only if it is dynamically linked.


Remember last selected search filters in the session

Developer-visible changes

A detailed view of the API changes since 1.2.x can be found in TracDev/ApiChanges/1.3.

Code Name

The 0.11 release was dubbed "Genshi" and 0.12 "Babel", after the names of the Python packages that became closely associated to these Trac versions. Therefore, it seems appropriate to name 1.4 "Jinja".

Last modified 8 months ago Last modified on Aug 14, 2019, 7:44:22 AM
Note: See TracWiki for help on using the wiki.