Edgewall Software

1.1 | 1.3

Release Notes for Trac 1.2 Hermes Release

Trac 1.2 is a stable version of Trac.
These notes reflect the final status.


  • Extensible notification system (#3517)
  • Notification preference panel (#4056)
  • Usernames replaced with full names (#7339)
  • Restyled ticket changelog (#11835)
  • Workflow controls on the New Ticket page (#2045)
  • Editable wiki page version comments (#6573)
  • Datetime custom fields (#1942)

Maintenance Releases



6 / 6


4 / 4


9 / 9


26 / 26


22 / 22


33 / 33

Tickets with release notes

Milestone: 1.2.6 (2 matches)

Ticket Release Notes

Modified text of error message when permission not granted because user with PERMISSION_GRANT doesn't possess the permission.


Fixed ticket autopreview triggering without a form change.

Milestone: 1.2.5 (3 matches)

Ticket Release Notes

Fix unit-test failing with non en_US locale.


Fixed KeyError in log file due to invalid query filter request.


List owner, reporter and updater of the ticket in To header, when [notification] use_public_cc option is enabled.

Milestone: 1.2.4 (8 matches)

Ticket Release Notes

Fixed TracError exception and preserve log level and log file options when the log type is changed to none.


Improved error message when environment is incorrect version.


Modified trac-pre-commit-hook to use Trac 1.0 database API.

  • TracStandalone checks for existence of environment and authorization file paths.
  • Fixed absolute path not used for pidfile.

Fix an error raised when custom field of type time is constrained by range on PostgreSQL.


Do not translate custom field's labels.


Fixed margins around quoted lines containing bullet points.


Fixed instance of empty comment block in timeline.

Milestone: 1.2.3 (22 matches)

Ticket Release Notes

Added a notification subscriber for new tickets.


Fixed poor layout of Basic Settings admin page.


A module in the plugins directory that raises SystemExit exception will no longer disable the Trac instance.


Query system returns None for time field being NULL rather than an empty string and fix query system crashing when time and/or changetime columns are NULL and saved query exists in the user's session.


Components that failed to load due to missing required dependencies would still show on the plugin admin page.


Empty configuration sections are listed in command completion output of trac-admin interactive mode.


LF is always used as separator when generating HTML rather than using platform-dependent line separator.


Fixed failure to save default version from admin panel when trac.ini was not writable.


Use public schema by default for the Postgres database.


Workflow action is not shown for set_owner_to_self operation when ticket status is equal to the new state and ticket owner is the logged-in user.


Fix incorrect None bytes in repository browser when Node.content_length is None.


Fixed wiki formatting hint not visible for ticket description when wiki toolbars disabled.


Removed unintended fieldset around ticket description field.


The Release field on the Version edit page is no longer populated with the current datetime when the version release date is not set.


Fixed incorrect logging of negated permission as invalid in AuthzPolicy.


Fixed incorrect rendering of TracError message containing a div.


Fixed some actions not available on batch modify page.


The 'summary' metadata is read for single file plugins.


Request headers are configurable through the [http-headers] section of trac.ini.


The psycopg2-binary package satisfies requirements for using the PostgreSQL database backend.


Fix ProgrammingError raised on postgresql when query sorting by custom time field.


Fixed incorrect rendering of child preference panels.

Milestone: 1.2.2 (19 matches)

Ticket Release Notes

Invalid logging configuration can no longer disable the Trac instance when saving the configuration through the WebAdmin. Invalid configuration changes are not saved and a warning is displayed with the exception message.


The ticket author is used in the notification from field when [notification] smtp_from_author = enabled, rather than the ticket reporter. This changes the behavior for users with TICKET_ADMIN, since they are allowed to edit the Reporter field.


Filename, module or package can be passed to make pylint.


Updated TracQuery documentation to clarify the results returned by querying a modified date range.


Fixed incorrect CC field when full name but not email set in preferences.


Message is printed to console when synchronizing a non-cached repository using trac-admin.


Extra entries and comments in htpasswd and htdigest files are ignored.


Fix a regression of #12658, ticket notification not sending for authenticated users without email.


Render message in place of diff when changeset is not rendered due to exceeding [changeset] max_diff_bytes or [changeset] max_diff_files.


Fix [notification] use_short_addr and smtp_default_domain options being ignored for subscriptions without email address.


Fix signature lines in notification mails.


Error message differs for Git control files not found vs path does not exist.


The post_process_request method can redirect during exception handling from an exception raised in process_request (fix for regression in r14604).


Workflow hint is not added in transition to *, which restores the behavior prior to Trac 1.2. The behavior is utilized by the AdvancedTicketWorkflowPlugin's triage operation.


The positional arguments of the initenv trac-admin command are optional when using the --config switch.


Fixed poor error message when resource id is empty or None.


Fixed missing report heading in first group when value is empty


Fix incorrectly stripping [ and ] characters from the filename given to Image macro.


Fixed [logging] log_level and log_type were incorrectly case-sensitive after Trac 1.1.3.

Milestone: 1.2.1 (29 matches)

Ticket Release Notes

Fixed recursive directory copies with the trac-admin deploy command. The target directory cannot be equal to or below any of the source directories (e.g. $env/htdocs is not allowed as a target).

  • Fix unable to save notification format with no subscription rules in prefs/notification.
  • Add Default format in prefs/notification.
  • Add [notification] default_format.email option.

Fixed recursion in permission policy checks.


Fixed ValueError when version or old_version argument to WikiModule not an int.


Fix ValueError from datetime with local timezone when the offset isn't a whole number of minutes.


Add section and option named arguments which do glob matching to [[TracIni]] macro.


A ConfigurationError exception is raised when there is an error parsing the authz file for AuthzSourcePolicy, or if the file can't be found.


Fix invalid xhtml being generated for definition list after paragraph.


AuthzPolicy will only raise a ConfigurationError if it's in the list of permission_policies.


Fix email address not resolving for user without email.


EmailDistributor.resolvers returns only configured resolvers.


The TracAdmin upgrade command documentation specifies that the backup location is governed by [trac] backup_dir.


Replaced use of deprecated encrypt method from passlib library with hash.


Improve usability of Reply and Edit buttons associated with ticket comments


Fixed regression from r14208 for Pygments < 1.4.


Reduce logging level from error to warning for TracError: Session ID must be alphanumeric.


Error message is displayed rather than traceback when QuerySyntaxError is raised in TicketQuery macro.


Fixed failure to add always_notify_updater = TicketUpdaterSubscriber and always_notify_previous_updater = TicketPreviousUpdatersSubscriber to [notification-subscribers] in trac.ini when the default value of always_notify_updater was not present in trac.ini.


Added wikitext class to input fields that accept wiki markup.


Added shortcut for modifying state of Column checkboxes on Custom Query page.


VersionConflict and ImportError exceptions from single file plugins are logged at ERROR level. Previously a traceback would result.


Buttons in report view are available even when no query.


Improved logging for classes inheriting from EmailDistributor.


Milestone that exists but user does not have permission to view is not rendered in the missing style.


Directory listing in the Browser and Revision Log views label the date column as Date when Time format is Absolute. The column is labeled as Age when Time format is Relative.


Fixed missing ticket field change conflict markers (regression).


Invalid actions in authz file are logged at warning level.


Fixed error when calling Image macro with no arguments: [[Image(,)]].


Added an anchor to each option and highlight the corresponding entry in [[TracIni]] macro.

Trac 1.2: Detailed User Visible Changes

Component: admin/web (5 matches)

Ticket Release Notes

Added Select All checkboxes to the admin Components, Milestones, Priorities, Repositories, Resolutions, Severities, Ticket Types and Versions tables.


Added a Copy Permissions form to the Permissions admin page.


Click on row label of Permissions admin page toggles all of the checkboxes in the group.


The [trac] default_handler option can be set from the Basic Settings admin page. A ConfigurationError is raised when navigating to the base url if [trac] default_handler is set to a class for which is_valid_default_handler is False.


The milestone table on the Milestone Admin page has a link from the ticket count to a query showing all tickets associated with the milestone, grouped by status. The link is only present when the ticket count is not zero.

Component: attachment (1 match)

Ticket Release Notes

Unicode control codes are replaced with spaces in attachment filenames.

Component: contrib (1 match)

Ticket Release Notes

Fixed htdigest appending newlines to every existing entry each time a new entry was added.

Component: database backend (4 matches)

Ticket Release Notes

Use mediumtext type for text columns on MySQL database since text type is too short.


Minimum version of pysqlite is enforced to be 2.4.1. Minimum version of SQLite is enforced to be 3.0.0.


Fixed regression in [13888] that resulted in KeyError when backing up a PostgreSQL database.


psycopg2 and MySQLdb are specified as dependencies in setup.py's extras_require.

Component: general (33 matches)

Ticket Release Notes

Fixed incorrect highlighting of unmodified values in the Configuration section of the About Trac page.


Preference panels are modular and can be individually enabled and disabled.


Handle case of report description being None for report variable substitution implemented in #10979.


Submit buttons are disabled if the required items are not selected.


Replaced HTML tt tags with code tags.


Removed duplicate linking of diff.css when rendering diff_view.html.


Moved inline styling in about.html template to external stylesheet, about.css.


Fix date/time picker not working with 24 hour time since updating to jquery-ui-addon v1.1.1

  • The default values of configuration options are written to trac.ini when a plugin is enabled through the web administration page or using TracAdmin, provided the options don't already exist in trac.ini or one of its parent configurations.
  • # option-name = <inherited> is not written to trac.ini when the option is specified in a parent configuration.

Removed old-style macro examples in sample-plugins directory.


Relative paths for the [authz_policy] authz_file option are resolved relative to the Environment's conf directory, rather than relative to the Environment directory.


Removed listing of default values from option documentation. The default values aren't needed in the description since the TracIni macro outputs a column with the default value, and removing them makes the documentation more accurate and easier to maintain.


List of attachments is shown on the wiki, ticket and milestone delete pages, along with a warning that the attachments will be deleted if the resource is deleted.


Reduced code duplication in the about.html and error.html templates.


The [trac] default_date_format and default_dateinfo_format, and the [logging] log_type and log_level options are now ChoiceOptions. A ConfigurationError exception will be raised if an invalid entry is specified for one of the options in trac.ini.


The GitConnector and SubversionConnector are required components when a repository of their type is configured. When required, the Component cannot be disabled from the plugin admin page and its version is displayed on the About and Error pages. With these changes the behavior of the repository connectors matches that of database connectors.


The default_handler can be set as a session preference.


Minimum required Python version is 2.6.


Submit buttons are consistently located below the fieldsets on forms (horizontal-forms excepted).


Model objects now use their name or id as part of their repr e.g. WikiPage u'StartPage@5'>.

  • Improved layout of elements on the Advanced, Date & Time and Language preferences panels.
  • Combined Date & Time and Language preference panels as Localization.
  • Moved default_handler from the General to the User Interface preferences panel.
  • Moved localization settings on the Basic Settings admin page to their own fieldset.
  • Renamed Date relative/absolute format label to Time format.

Fixed test execution failure when unit test components remained enabled in functional tests.

  • Removed deprecated compat attribute of InterTrac links.
  • Removed support for legacy admin pages contributed by the WebAdminPlugin (Trac < 0.11).
  • Removed support for Trac 0.10 ITimelineEventProviders.

Removed from documentation the version in which a configuration option was added for versions of Trac < 0.12.


Reduced size of editor symbols on wiki history page.


Removed support for missing email module (Python 2.1) and old module names (Python 2.4).


Replaced use of deprecated Environment.get_read_db() with transaction context manager db_query.


Fixed regression in [13323]: Default language was always selected even when a language had been set.


Replaced use of deprecated with_transaction decorator with transaction context manager.


The .order attributes of the options in the [mainnav] and [metanav] sections control navigation item sort order. The options [trac] mainnav and [trac] metanav have been removed.


Removed dependency on ConfigObj. The package was previously needed by AuthzPolicy.


Lazy attributes can be invalidated for re-evaluation even if not evaluated yet.


Replaced all print statements with print function calls.

Component: notification (14 matches)

Ticket Release Notes

Allow plugins to extend notification system.


Added a Notification preferences panel.


Updated notification options documentation using content that was previously on the TracNotification page.


Preference panels now support modular child panels.


Split up trac.notification module into a package of sub-modules.


Allow notification subscribers to watch individual resources etc.


Added a new [notification-subscriber] config section for general configuration of notification subscription defaults, and replacing the [notification] always_notify_* options. Added a new SubscriberListMacro.


Fix missing X-Trac-Ticket-URL and X-Trac-Ticket-ID headers in ticket notification mail.

  • Make EmailDistributor allow text/html format
  • Create always multipart/related message as root
  • Create multipart/alternative message with text/plain and text/html if text/html is preferred
  • Fallback to text/plain format when text/html formatter fails

Fixed regression in notification of previous owner when ticket is reassigned.

  • Fix not working smtp_always_cc and smtp_always_bcc options in [notification] section.
  • Fix not working smtp_from_author option in [notification] section.

Allow to reorder subscription rules using drag-and-drop and submit in bulk in notifications panel of preferences.


Fix issues with Add button in notifications panel.

  • Add button not working when no subscription rules.
  • Label of added rule is empty on Internet Explorer.

Fixed raising TypeError from parse_subscriber_config when an attribute is used in [notification-subscriptions].

Component: query system (1 match)

Ticket Release Notes

Added datepickers to time fields with the Relative format on the Query page. This change restores datepickers to the Created and Modified fields.

Component: rendering (1 match)

Ticket Release Notes

Removed support for SilverCity, Enscript and PhpRenderer syntax highlighters.

Component: report system (2 matches)

Ticket Release Notes

Dynamic variables can be used in the report title and description.

  • Fine-grained permissions can be used to restrict access to the Report List page using the resource id -1.
  • Fine-grained permission checks are implemented on the Report List resource (for ReportModule) and the ticket realm (for QueryModule) before displaying the mainnav and contextual navigation items.
  • Fine-grained permissions can be used to grant the REPORT_CREATE permission for the report realm (using [report:*] in the authz file).

Component: roadmap (1 match)

Ticket Release Notes

When editing or deleting a milestone and there are no tickets associated with the milestone, the retarget elements are not shown and a hint is shown in their place.

Component: ticket system (21 matches)

Ticket Release Notes

Added support for custom ticket fields of type time.


Added may_set_owner workflow operation which is like set_owner but the value defaults to the existing owner.

  • Added [ticket] allowed_empty_fields, which specifies ticket select fields for which an empty value is one of the selections. The option was named optional_fields prior to 1.1.6.
  • Added Clear Default button to the Component and Enum pages.

Fine-grained permission check is used to populate the list of owners when [ticket] restrict_owner = True.


In new tickets, custom time ticket fields may default to an absolute or relative date / time.


In TracBatchModify, custom time ticket fields can be changed with a date(time)picker popup control.


Fixed batch modification when no fields are changed.


The milestone select is hidden from the ticket form if the user doesn't have MILESTONE_VIEW. Previously an empty select would be rendered.


The default_milestone and default_version can be set to empty using the Clear default buttons on the corresponding Ticket System admin panels.

  • Changed styling of Milestone, Ticket System Admin and Repository Admin edit pages by removing fieldsets around the Descriptions.
  • When milestone edit validations fail on the Milestone Admin page, a warning is added rather than redirecting to the error page.

CommitTicketUpdater recognizes long-form ticket references with a trailing #comment:N or #comment:description in the token.


The usernames in the default workflow hints are wrapped in spans with class trac-author, trac-author-anonymous or trac-author-none.


The entire h3 is highlighted when linking to a ticket comment, rather than just the enclosed span.


The ticket prefs checkbox label was changed from Comments only to Show property changes.


Added label attribute to the TracWorkflow actions and deprecated the name attribute. If neither name nor label is specified, the label will be created from the action name by replacing underscores with whitespace.

If not specified, the label attribute of TracTicketsCustomFields will be created from the custom field name by replacing underscores with whitespace.


Groups and permissions can be specified in the comma-separated list of the set_owner workflow attribute.


The workflow controls in the batch modify section of the Query page are disabled until the associated action is selected.


Fixed: custom workflow attributes would raise a KeyError.


In the db33 upgrade step, the create_and_assign action is only added if the assigned state exists in the workflow.


Fixed warning The action "None" is not available when cloning a ticket.


Fixed: default milestone selected after ticket creation when milestone empty.

Component: timeline (5 matches)

Ticket Release Notes

Optionally display the component of tickets in their timeline entries ([timeline] ticket_show_component setting).


Milestone timeline filter label changed from Milestones reached to Milestones completed.


Reworded the timeline filter text.


Access to timeline can be controlled using TracFineGrainedPermissions.


Fixed timeline CSS rules interfering with styling of custom themes.

Component: version control (7 matches)

Ticket Release Notes

Add an auto-increment primary key to node_change table and indices (repos, rev, path) and (repos, path, rev).


Git and Mercurial raise a TracError rather than showing a traceback when attempting to view added and deleted files (#9775).


Removed deprecated [trac] repository_dir configuration option. An upgrade step attempts to move the configuration for the default repository to the [repositories] section.


The [trac] repository_sync_per_request option was removed and each repository now has a sync_per_request attribute. The default value of sync_per_request is False. An upgrade step handles the migration while preserving the behavior.

The sync_per_request attribute can be set on repositories defined in the database from the Repositories web admin page or using the trac-admin command. For repositories defined in the [repositories] section of trac.ini, the <name>.sync_per_request attribute can be edited.


Moved repository-related configuration options to new sections.

  • [trac] repository_type[versioncontrol] default_repository_type
  • [trac] authz_file[svn] authz_file
  • [trac] authz_module_name[svn] authz_module_name

Fixed regression in [13393] due to use of removed repository_sync_per_request attribute of RepositoryManager class.


Allow plugins to provide changeset bookmarks and render them in the browser, on the revision log and on the timeline.

Component: web frontend (2 matches)

Ticket Release Notes

jQuery upgraded to 1.8.3, jQuery UI upgraded to 1.9.2 and jQuery UI Timepicker upgraded to 1.1.1.


Fine-grained permission checks are implemented when rendering an author in the ticket workflow dialog.

Component: wiki system (7 matches)

Ticket Release Notes

Use some of the more common WikiCreole style markup in the wiki editor toolbar.


Line numbers and row highlighting can be specified for WikiProcessor code blocks.


The read-only attribute on wiki pages is now enforced using the ReadonlyWikiPolicy permission policy. ReadonlyWikiPolicy must be added to [trac] permission_policies before DefaultPermissionPolicy, LegacyAttachmentPolicy and, when present, after AuthzPermissionsPolicy. If additional permission policies are enabled, particular care should be given to the order of the policies when upgrading.


Added support for the prefix in TitleIndex macro to be resolved relative to current wiki page. (E.g. [[TitleIndex(./)]] lists all subpages.)


Comment and author boxes span width of forms on wiki edit and attachment pages.


Save notification on wiki page includes a link to the diff of the changes.


Image macro supports InterWiki prefixes.


  • This release requires a database upgrade when upgrading from the 1.0.x series:
    trac-admin $TRAC_ENV upgrade

Developer-visible changes

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

Last modified 4 years ago Last modified on Aug 28, 2019, 6:28:44 AM
Note: See TracWiki for help on using the wiki.