Trac 0.12.3 (February 6, 2012)
http://svn.edgewall.org/repos/trac/tags/trac-0.12.3

Trac 0.12.3 contains a few minor fixes and a few minor features:
 - added compatibility with Subversion 1.7 (#10414)
 - make it easier to troubleshoot common startup errors (#10024)
 - jQuery upgraded to 1.4.4 (#10001)
 - improved fine-grained permission handling in the source browser 
   (#9976, #10208, #10110)
 - ... and dozens more fixes!

Trac 0.12.2 (January 31, 2011)
http://svn.edgewall.org/repos/trac/tags/trac-0.12.2

This list contains only a few highlights:
 - install: improved robustness of Trac installation if Babel is
   installed after the fact (#9439, #9595, #9961)
 - notifications: support for Asian character width (#4717)
 - roadmap: fix display of progress bar in some corner cases (#9718)
   and respect the overall_completion milestone group setting (#9721)
 - reports: reports and queries look much better, as the columns now
   keep the same width across groups; the absence of word wrapping in
   reports has been fixed (#9825)
 - web admin: improved layout (#8866, #9963)
 - web: it's now possible to log in different Trac instances sharing
   the same URL prefix (e.g. /project and /project-test) (#9951)

Trac 0.12.1 (October 9, 2010)
http://svn.edgewall.org/repos/trac/tags/trac-0.12.1

This list contains only a few highlights:
 - db: improve concurrency behavior (#9111)
 - fcgi: add an environment variable `TRAC_USE_FLUP` to control the usage of flup vs. bundled _fcgi.py (defaults to 0, i.e. use bundled as before)
 - svn authz: improve compatibility with svn 1.5 format (#8289)
 - milestone: allow to set the time for the due date (#6369, #9582)
 - ticket: fixes for the CC: property (#8597, #9522)
 - notification: improved the formatting of ticket fields in notification e-mails (#9484, #9494) 
 - i18n: added a configuration option to set the default language (#8117)
 - several fixes for upgrade (#9400, #9416, #9483, #9556)

Trac 0.12 'Babel' (June 13, 2010)
http://svn.edgewall.org/repos/trac/tags/trac-0.12

Trac 0.12 is a major release introducing i18n and multiple repository support as the most visible changes.

The following list contains only a few highlights:
 - The user interface is translated in a dozen of languages, provided the
   [Babel:] package is installed
 - Multiple repositories can be associated to a single Trac environment; the
   repositories can be of heterogeneous types (svn, hg, git, darcs...)
 - Usability improvements for the Wiki, with a nice side-by-side edit mode with
   automatic preview
 - Richer Wiki syntax, with much improved support for tables, partial
   WikiCreole compatibility and numerous smaller improvements
 - Usability improvements for the Ticket module, with automatic preview of
   comments while you type and possibility to edit or remove them later
 - Improved Custom Queries (time fields, multiple disjoint conditions,
   a.k.a. OR queries)
 - Timeline filtering by user
 - ... and numerous smaller features added and bugs fixed since 0.11!

Trac 0.12rc1 'Babel' (June 03, 2010)
http://svn.edgewall.org/repos/trac/tags/trac-0.12rc1

  See 0.12.

Trac 0.11.7 (March 10, 2010)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.7

 Trac 0.11.7 is nearly identical to 0.11.7rc1 except for a few more fixes:
  - avoid an infinite loop when using an AtomicFile in a read-only 
    directory (#9081) 
  - don't report client disconnects during writes as internal errors (#9103)
  - don't reuse a closed cursor, which could happen in one specific case
    for the pysqlite backend (#9104)

Trac 0.11.7rc1 (February 23, 2010)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.7rc1

Security fixes:
 - Fixed a ticket validation issue that would allow unauthorized users to modify the status and resolution of a ticket (#8884)

Performance improvements:
 - Trac wiki had some trouble handling very long unicode words (#9025) [[comment(intentionally kept vague, we don't want to advertize a DOS, do we?)]]
 - Full text search was very slow if lots of custom fields were used (#8935)

Bug fixes:
 - Fixed a race condition that could lead to the destruction of the trac.ini file (#8623)
 - Fixed creation of new milestone which could have been a rename if performed after a name clash has been detected (#8816)
 - Fixed display of value 0 in report cells (#7512)

Trac 0.11.6 (November 28, 2009)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.6

 Trac 0.11.6 contains two security fixes and a number of bug fixes,
 performance improvements and minor enhancements. The following list
 contains only a few highlights:

Security fixes:
 * Fixed the policy checks in report results when using alternate formats.
 * Added a check for the "raw" role that is missing in docutils < 0.6.

Performance improvements:
 * Re-enabled connection pooling with SQLite (#3446).
 * Added caching of configuration options (#8510).

Bug fixes:
 * Fixed the "database is locked" issue with SQLite (#3446, #8468).
 * Deprecated SQLite 2.x support (#8625).
 * Fixed hanlding of times in timezones with DST (#8240).
 * Avoid corruption of trac.ini during write (#8623).
 * Improved support for revision ranges in revision log view (#8349)

Trac 0.11.5 (July 17, 2009)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.5

 Trac 0.11.5 is identical to 0.11.5rc2 except for fixing a minor
 incompatibility issue when using IIS via AJP as frontend (#8475).

Trac 0.11.5rc2 (July 11, 2009)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.5rc2

 Trac 0.11.5rc2 fixes two regressions found in rc1 and one minor enhancement:

 * Fixed workaround for zipped Genshi eggs, [8354], #7823
 * Fixed internal error when removing a wiki page version [8343].
 * Fixed display of merge properties for scoped repositories #7715.

Trac 0.11.5rc1 (June 30, 2009)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.5rc1

 Trac 0.11.5rc1 contains a number of bug fixes and minor enhancements.
 The following list contains only a few highlights:

Bug fixes:
 * Implemented pre-upgrade backup support for PostgreSQL and MySQL (#2304)
 * Fixed PostgreSQL upgrade issue (#8378)
 * More robust diff parsing (#2672)
 * Avoid intermittent hangs by not calling apr_terminate explicitly (#7785)

Trac 0.11.4 (March 30, 2009)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.4

 Trac 0.11.4 is identical to the second release candidate.

 Trac 0.11.4 contains a number of bug fixes and minor enhancements.
 The following list contains only a few highlights:

 * Custom mainnav links regression (#8153)
 * Fixed Python 2.3 incompatibility (#8061)
 * Fixed Python 2.6 notification issue (#8083)
 * Fixed PostgreSQL multi column index issue (#7600)

Trac 0.11.4rc2 (March 25, 2009)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.4rc2

 * Custom mainnav links regression (#8153)

Trac 0.11.4rc1 (March 18, 2009)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.4rc1

 Trac 0.11.4rc1 contains a number of bug fixes and minor enhancements.
 The following list contains only a few highlights:

Bug fixes:
 * Fixed Python 2.3 incompatibility (#8061)
 * Fixed Python 2.6 notification issue (#8083)
 * Fixed PostgreSQL multi column index issue (#7600)

Trac 0.11.3 (February 15, 2009)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.3

 Trac 0.11.3 contains a number of bug fixes and minor enhancements.
 The following list contains only a few highlights:

Bug fixes:

 * Compatibility with Python 2.6 (#7876, #7458)
 * PostgreSQL db backend improvement (#4987, #7600)
 * Highlighting of search results is more robust (#7324, #7830)
 * Unicode related fixes (#7672, #7959, #7845, #7935, #8024)
 * Fixed Trac link rendering in ReST (#7712)

Minor improvements:

 * Custom fields can now contain wiki text (#1791)
 * A few usability and documentation improvements (#8000, #8004, #8016)

Trac 0.11.2.1 (November 17, 2008)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.2.1

 Trac 0.11.2.1 fixes a Python 2.3 incompatibility introduced in Trac 0.11.2.
 Python 2.4+ users already running Trac 0.11.2 do not need to upgrade.
  
Trac 0.11.2 (November 8, 2008)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.2

 Trac 0.11.2 contains two security fixes and a couple of bug fixes.
 The following list contains only a few highlights:

Bug fixes:

 * Fixes potential DOS vulnerability with certain wiki markup. Reported by
   Matt Murphy.
 * Improved HTML sanitizer filter to detect possible phishing attempts.
   Reported by Simon Willison.
 * MySQL db backend improvement (reconnect after idle timeout #4465)
 * TicketQuery speed improvements (#6436)
 * Fixes for RSS feeds (timeline entries no longer truncated #7316, no longer
   download some feeds under Firefox #3899)
 * Search now works for custom fields (#2530)
 * Same order for ticket fields for new and existing tickets (#7018)
 * Enforce fine-grained permission for "quickjump" search results (#7655)
 * E-mail obfuscation was not done in a few remaining places (#7688, #6532)
 * Uninstall of plugins from WebAdmin was not working - feature disabled 
   for now
 * More robust pagination of results for reports and custom queries (#7424,
   #7544)
 * Support for newer version of pygments (#7622)
 * Documentation updated (#7603, #7205, #7318)

Minor improvements:

 * Better support for Wiki page hierarchy (show path #2780, link to 
   parent #2150)
 * Custom query allow to search in description and other text fields (#4824)

Trac 0.11.1 (August 6, 2008)
http://svn.edgewall.org/repos/trac/tags/trac-0.11.1

 Trac 0.11.1 contains a number of bug fixes and minor enhancements.
 The following list contains only a few highlights:

 * Improved DB connection handling (new connection pool)
 * Better MySQL backend unicode support. "utf8" and "utf8_bin" is the
   recommended database charset and collation settings.
 * Fixes intermittent "constraint violation" and "invalid form token"
   error messages.
 * Fixes roadmap layout glitch in Firefox 3.
 * Safer default umask value for tracd (can be set using --umask option)
 * Better default PYTHON_EGG_CACHE value.

 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.11.1

Trac 0.11 'Genshi' (June 22, 2008)
http://svn.edgewall.org/repos/trac/tags/trac-0.11

 Trac 0.11 contains a great number of new features, improvements and
 bug fixes. The following list contains only a few highlights:

 * New template engine for generating content (Genshi)
 * New configurable workflow in the ticket subsystem
 * Finer-grained control of permissions
 * Support for Pygments as the default syntax highlighter
 * Improved repository browser ("blame" support, dynamic in-place
   expansion of folders)
 * Improved user preferences subsystem, among which the possibility for
 * any user to select their time zone and disable access keys
 * The WebAdmin plugin is now an integral part of Trac
 * Paging of timeline and query results.

 A more complete list of new features can be found in the RELEASE file.
 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.11

Trac 0.11rc2 'Genshi' (June 9, 2008)
http://svn.edgewall.org/repos/trac/tags/trac-0.11rc2

  See 0.11

Trac 0.11rc1 'Genshi' (April 30, 2008)
http://svn.edgewall.org/repos/trac/tags/trac-0.11rc1

  See 0.11rc2

Trac 0.11b2 'Genshi' (March 12, 2008)
http://svn.edgewall.org/repos/trac/tags/trac-0.11b2

  See 0.11rc1

Trac 0.11b1 'Genshi' (December 18, 2007)
http://svn.edgewall.org/repos/trac/tags/trac-0.11b1

 See 0.11b2.

Trac 0.10.5 (Jun 23, 2008)
http://svn.edgewall.org/repos/trac/tags/trac-0.10.5

 Trac 0.10.5 contains two security fixes and a couple of bug fixes.
 The following list contains only a few highlights:
 
 * Fixes a cross-site redirection vulnerability in the quickjump function
   reported by Russ McRee.
 * Fixes a wiki engine XSS vulnerability found by Nathan Collins.
 * Added PostgreSQL 8.3 support.
 * Fixes FineGrainedPermissions for scoped repositories.
 * Fixes problem with repository syncing raising exceptions.

 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.10.5

Trac 0.10.4 (April 20, 2007)
http://svn.edgewall.org/repos/trac/tags/trac-0.10.4

 Trac 0.10.4 is a bug fix release. The following list contains only a 
 few highlights:

 * Repository cache improvements. The new syncing scheme is incompatible with
   the previous one and requires a database schema upgrade in order to prevent
   the old and the new codebase to be mixed. A repository resync is not needed,
   though. The 0.10.4 scheme is compatible with the 0.11 one.
   (#3837, #4043 and #4586)
 * Fix a possible freeze under heavy load (#4465)

 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.10.4

Trac 0.10.3.1 (Mar 8, 2007)
http://svn.edgewall.org/repos/trac/tags/trac-0.10.3.1

 Trac 0.10.3.1 is a security fix release.
	
 * Always send "Content-Disposition: attachment" headers where potentially 
   unsafe (user provided) content is available for download. This behaviour
   can be altered using the "render_unsafe_content" option in the 
   "attachment" and "browser" sections of trac.ini.
 * Fixed XSS vulnerability in "download wiki page as text" in combination with 
   Microsoft IE. Reported by Yoshinori Oota, Business Architects Inc.

Trac 0.10.3 (Dec 12, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.10.3

 Trac 0.10.3 is a bug fix release. The following list contains only a 
 few highlights:

 * Timeline fail to load with a "!NoSuchChangeset" error message (#4132).
 * Timed out MySQL connections not handled properly (#3645).
 * Subversion repository resync broken. (#4204).

 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.10.3

Trac 0.10.3rc1 (Dec 7, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.10.3rc1

 See 0.10.3

Trac 0.10.2 (Nov 13, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.10.2

 Trac 0.10.2 is a bug fix release. The following list contains only a 
 few highlights:

 * Fixes deadlock when using authz_file config option (#3996).
 * Makes the CSRF code play nice with the XmlRpcPlugin (#4122).
 * Fixes Timeline breakage after svn commit when using sqlite (#4120).

 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.10.2

Trac 0.10.1 (Nov 8, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.10.1

 Trac 0.10.1 contains a security fix and a number of bug fixes.
 The following list contains only a few highlights:

 * Fixed CSRF vulnerability (#4049), reported by Daniel Kahn Gillmor.
 * Improved DB connection handling (#3503)
 * Tracd no longer tries to resolve client's IP address (#3481).

 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.10.1

Trac 0.10 'Zengia' (Sep 28, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.10

 Trac 0.10 contains a great number of new features, improvements and
 bug fixes. The following list contains only a few highlights:

 * Support for spam protection.
 * Advanced diff support.
 * InterWiki and InterTrac support.
 * Improved notification system.
 * WSGI Used as web server protocol.

 A more complete list of new features can be found in the RELEASE file.
 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.10

Trac 0.10-rc1  (Sep 22, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.10rc1

 See 0.10

Trac 0.10-beta1  (Aug 28, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.10b1

 See 0.10

----

Trac 0.9.6  (Jul 6, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.9.6

 * Fixed reStructuredText breach of privacy and denial of service vulnerability
   found by Felix Wiemann.
 * trac-post-commit-hook fixes.
 * Fixed bugs: #2894, #3058, #3209 #3325.

Trac 0.9.5  (Apr 18, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.9.5

 * Fixed wiki macro XSS vulnerability found by Mr. Kazuhiro Nishiyama:
   http://jvn.jp/jp/JVN%2384091359/index.html
 * Smaller memory usage when accessing subversion history.
 * Fixed issue with incorrectly generated urls when installed behind a web 
   proxy (#2531).
 * Fixed bugs: #2531, #2777, #3020.

Trac 0.9.4  (Feb 15, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.9.4

 * Deletion of reports has been fixed.
 * Various encoding issues with the timeline RSS feed have been fixed.
 * Fixed a memory leak when syncing with the repository.
 * Milestones in the roadmap are now ordered more intelligently.
 * Fixed bugs: #1064, #1150, #2006, #2253, #2324, #2330, #2408, #2430,
   #2431, #2459, #2544, #2459, #2481, #2485, #2536, #2544, #2553,
   #2580, #2583, #2606, #2613, #2621, #2664, #2666, #2680, #2706,
   #2707, #2735

Trac 0.9.3  (Jan 8, 2006)
http://svn.edgewall.org/repos/trac/tags/trac-0.9.3

 * Fixed XSS vulnerabilities.
 * Timeline RSS feed validity issue resolved.
 * "trac-admin initenv" now handles empty repositories.
 * Textile unicode support.
 * Fixed bugs: #1158, #2290, #2337, #2416, #2440, #2468, #2473, #2484,
   #2490, #2493, #2512, #2517, #2519, #2527, #2548, #2558, #2558

Trac 0.9.2  (Dec 5, 2005)
http://svn.edgewall.org/repos/trac/tags/trac-0.9.2

 * Fixed SQL injection vulnerability in ticket search module.
 * Fixed broken ticket email notifications.

Trac 0.9.1  (Dec 1, 2005)
http://svn.edgewall.org/repos/trac/tags/trac-0.9.1

 * Fixed SQL injection vulnerability in ticket query module.
 * Fixed bugs: #1633, #2167, #2283, #2284, #2285, #2291, #2292, #2300,
   #2318, #2329, #2366, #2369, #2373, #2383, #2416, #2457


Trac 0.9 'Vodun' (Oct 31, 2005)
http://svn.edgewall.org/repos/trac/tags/trac-0.9

 * Support for a global trac.ini configuration file.
 * Changed logic for enabling plugins/components.
 * Improved support for handling repository subsets.
 * Fixes problems with Trac links when using multiple environments in the
   same Python interpreter.
 * Improvements to email notification layout and encoding.
 * Fixes for database locking with SQLite, in particular in a multi-threaded
   environment.
 * PostgreSQL compatibility fixes.
 * Fixed bugs: #804, #861, #927, #1044, #1051, #1123, #1153, #1169,
   #1239, #1344, #1463, #1562, #1881, #1886, #1895, #1909, #1921, #1930,
   #1983, #1988, #2019, #2051, #2061, #2229, #2106, #2107, #2116, #2120,
   #2124, #2129, #2135, #2136, #2138, #2140, #2144, #2164, #2166, #2170,
   #2172, #2191, #2192, #2196, #2201, #2202, #2203, #2208, #2215, #2218,
   #2223, #2230, #2232, #2239, #2240, #2241, #2243, #2251, 


Trac 0.9-beta2  (Sept 25, 2005)
http://svn.edgewall.org/repos/trac/tags/trac-0.9b2

 * Support for setuptools 0.6.
 * Allow insertion of a custom HTML snippet above the new ticket form
   to explain site-specific policies and/or guidelines.
 * Much improved Bugzilla import script.
 * Fixed a bug where deleting a wiki page version would sometimes delete
   the entire page.
 * Fixes for the rendering of diffs and patches.
 * Fixes for the Subversion authz support.
 * Fixed bugs: #2008, #2032, #2034, #1801, #1893, #1040, #2040,
   #1036, #1944, #1081, #1863, #2052, #2066, #2016, #2090, #1985,
   #2012, #2089, #2079, #1999, #2029, #2079, #1960, #2080, #2021,
   #2042, #2088, #1345, #2011, #2100, #2103, #2113, #2116, #2109


Trac 0.9-beta1  (Sept 5, 2005)
http://svn.edgewall.org/repos/trac/tags/trac-0.9b1

 Trac 0.9 contains a great number of new features, improvements and
 bug fixes. The following list contains only a few highlights:

 * License changed from GPL to modified BSD (See the file COPYING).
 * Improved modularity and extendibility (plugin support).
 * Support for both pysqlite 1.x and pysqlite 2.x.
 * Postgresql database support (with psycopg or pyPgSQL).
 * Repository subsets. Multiple Trac environments can share a single 
   repository.
 * Version control abstraction layer making it possible to support 
   other version control systems besides subversion in the future.
 * FastCGI frontend support.
 * Python version >= 2.3 is now required.

 The complete list of closed tickets can be found here:
   http://trac.edgewall.org/query?status=closed&milestone=0.9

----

Trac 0.8.3  (Jun 15, 2005)
http://svn.edgewall.org/repos/trac/tags/trac-0.8.3

 * Fix compatibility of 'trac-admin resync' with Subversion >= 1.2.
 * Settings page now works correctly when Trac is deployed at the
   root of a host.
 * Windows packaging issues resolved.
 * Fixed bugs: #1282, #1500, #1648


Trac 0.8.2  (Jun 1, 2005)
http://svn.edgewall.org/repos/trac/tags/trac-0.8.2

 * Compatibility with Subversion >= 1.2 fixed.
 * Compatibility with Docutils >= 0.3.7 fixed.
 * Fixed bugs: #1020, #1302, #1500, #1182, #1339, #1518
   #1525, #1618


Trac 0.8.1  (Feb 28, 2005)
http://svn.edgewall.org/repos/trac/tags/trac-0.8.1

 * Improved Python 2.1 compatibility.
 * Layout of navigation bar in Opera fixed.
 * Execution of Javascript through event handler attributes
   in HTML code is now forbidden.
 * Fixed bugs: #157, #371, #556, #683, #970, #971, #972,
   #974, #979, #983, #1001, #1003, #1007, #1008, #1011,
   #1020, #1026, #1030, #1045, #1054, #1070, #1072, #1074,
   #1076, #1087, #1090, #1103, #1108, #1111, #1136, #1159,
   #1164, #1190, #1195, #1220


Trac 0.8 'Qualia'  (Nov 15, 2004)
http://svn.edgewall.org/repos/trac/tags/trac-0.8

 * Roadmap module.
 * Support for custom ticket properties.
 * Wiki administration features.
 * Advanced ticket queries.
 * Improved diff display.
 * User preferences.
 * Wiki editing (near-wysiwyg) aids a la wikipedia.
 * Improved email notification.
 * Fixed bugs: #13, #63, #99, #100, #158, #164, #203, #210, 
   #225, #264, #304, #306, #326, #346, #347, #351, 
   #352, #364, #373, #375, #405, #411, #416, #431, 
   #433, #434, #436, #438, #443, #445, #446, #447, 
   #450, #452, #453, #455, #458, #460, #465, #468, 
   #471, #472, #473, #474, #477, #478, #479, #480, 
   #482, #483, #486, #487, #489, #491, #492, #494, 
   #496, #501, #503, #506, #510, #512, #513, #514, 
   #516, #522, #524, #526, #527, #528, #530, #532, 
   #536, #537, #538, #539, #542, #543, #545, #546, 
   #550, #551, #552, #553, #555, #556, #557, #558, 
   #559, #560, #565, #567, #568, #570, #572, #574, 
   #577, #578, #580, #581, #583, #587, #589, #591, 
   #593, #594, #597, #598, #599, #600, #601, #602, 
   #606, #609, #610, #612, #613, #616, #618, #619, 
   #620, #622, #623, #626, #627, #628, #630, #631, 
   #634, #644, #647, #648, #651, #652, #657, #658, 
   #660, #664, #668, #669, #670, #671, #674, #675, 
   #676, #677, #678, #680, #690, #692, #696, #698, 
   #699, #703, #705, #706, #708, #709, #713, #714, 
   #715, #716, #718, #720, #721, #722, #726, #727, 
   #730, #732, #734, #735, #736, #737, #738, #741, 
   #742, #743, #744, #745, #748, #749, #750, #751, 
   #752, #759, #762, #764, #768, #769, #770, #771, 
   #774, #775, #776, #778, #779, #780, #785, #789, 
   #793, #798, #800, #806, #807, #815, #816, #817, 
   #818, #829, #830, #831, #833, #836, #844, #846, 
   #848, #850, #851, #852, #872, #873, #877, #878, 
   #885, #888, #889, #892, #901, #903, #907, #912, 
   #916, #923, #929, #931, #932, #935

----

Trac 0.7.1 'Argento'  (Jun, 2004)
http://svn.edgewall.org/repos/trac/tags/trac-0.7.1

 * Bugfixes for 0.7
 * Fixes security hole in auth.py
 * Experimental support for mod_python
 * Improved MIME-types
 * Fixed bugs: #93, #202, #307, #312, #342, #345, #350, #353, #355, #391,
   #393, #401, #404, #406, #415, #417, #419, #420, #421, #422, #424,
   #425, #428, #429, #432, #435, #437, #441, #442, #448, #451, #452,
   #456, #457, #461, #463, #466, #467, #470, #497, #498, #502, #504


Trac 0.7 'Fulci'  (May 18, 2004)
http://svn.edgewall.org/repos/trac/tags/trac-0.7

 * Revised database format (requires manual upgrade).
 * Trac standalone daemon, tracd (Experimental).
 * Greatly improved browser.
 * Many usability improvements.
 * Clean-up of CSS and templates.
 * UTF-8 character encoding support.
 * Wiki page attachments.
 * Syntax coloring supporting >35 languages, using SilverCity or GNU Enscript.
 * Better support for ReStructuredText.
 * Logging support, including syslog and windows eventlog.
 * Ticket attachments.
 * Import tickets from Bugzilla (contributed by Mark Rowe).
 * Import tickets from SourceForge (contributed by Dmitry Yusupov).
 * New ticket field: keywords
 * Ticket email notification.
 * Localized date and time display.
 * Viewable SQL for reports.
 * Improved search facilities.
 * Windows installer package.
 * More documentation.
 * Fixed bugs: #14, #19, #27, #62, #87, #96, #106, #111, #115, #127, #146,
   #161, #166, #171, #180, #182, #183, #188, #190, #191, #192, #193,
   #195, #196, #197, #201, #205, #207, #211, #212, #213, #220, #224,
   #227, #228, #231, #233, #235, #236, #240, #241, #243, #244, #246,
   #247, #248, #249, #251, #252, #253, #254, #255, #258, #259, #261,
   #262, #263, #265, #270, #271, #273, #275, #277, #278, #281, #284,
   #285,  #88, #289, #292, #293, #294, #296, #300, #302, #310, #313,
   #314, #315, #316, #320, #322, #328, #332, #333, #337, #338, #339,
   #340, #341, #344, #348, #349, #358, #361, #362, #363, #368, #370,
   #371, #372, #376, #377, #378, #381, #384, #385, #386, #387, #388,
   #392, #394, #396, #397, #398, #399, #402, #403, #410

----

Trac 0.6.1 '245 Trioxin' (April 12, 2004)
http://svn.edgewall.org/repos/trac/tags/trac-0.6.1

 * RSS now escapes entities in summary.
 * Search results won't highlight dates anymore.
 * RPM for SuSE Linux.
 * Preliminary Windows Installer.
 * More documentation.
 * Fixed bugs: #163, #165, #189, #198, #200, #206, #209, #214, #223


Trac 0.6 'Solanum' (March 23, 2004)
http://svn.edgewall.org/repos/trac/tags/trac-0.6

 * View diffs between wiki page edits.
 * Improved Search module.
 * Support for tables in the wiki. (Thanks to Stephen Hansen)
 * Colored reports. Use colors to show priority, etc. 
 * Support for custom wiki processor macros.
 * ReStructuredText markup support (through a processor macro)
 * HTML markup support (through a processor macro)
 * Report groups. Group results by a column.
 * Multi-line report rows.
 * Download report in CSV (Comma Separated Value) and tab-separated format
 * RSS 2.0 content syndication support in Timeline, Reports and Log/Browser
 * Better, locale-based date and time formatting. 
 * Wiki RecentChanges support.
 * Overall usability, consistency and cosmetic improvements.
 * More documentation.
 * Fixed bugs: #16, #68, #81, #88, #98, #101, #102, #103, #104, #105,
   #110, #112, #113, #114, #117, #119, #120, #131, #132, #134,
   #135, #136, #138, #142, #145, #147, #151, #155, #170, #173,
   #174, #175, #177, #179

----

Trac 0.5.2 'Nameless' (March 2, 2004)
http://svn.edgewall.org/repos/trac/tags/trac-0.5.2

 * Performance improvements.
 * Better unicode support in commit-messages.
 * TRAC_ADMIN is now a real "meta-permission" containing all other permissions.
 * Wiki-links of the svn:/path format can now also link to directories.
 * Handle subversion changesets without any "author" specified.
 * "view" checkboxes in the timeline view now reflect the current state.
 * The subversion repository is now indexed by "svnadmin initdb" instead of
   trac.cgi at first execution.
 * trac-admin now has a 'wiki dump' and 'wiki load' commands to
    export/import all pages to/from a directory.
 * Most of the inline css is removed.
 * IE6 navbar problem fixed.
 * Fixed bugs: #69, #73, #77, #78, #79, #80, #84, #85, #86, #89, #90, 
   #91, #93, #97


Trac 0.5.1 'Unnamed' (February 25, 2004)
http://svn.edgewall.org/repos/trac/tags/trac-0.5.1

 * Navbar now works properly on error pages.
 * Cleaned up source code. Removed ugly tabs.
 * Added missing COPYING, AUTHORS etc. Cleaned up package.
 * trac-admin now works with python 2.1.
 * Fixed bugs: #74, #75, #76, #77


Trac 0.5 'Incognito' (February 23, 2004)
http://svn.edgewall.org/repos/trac/tags/trac-0.5

 * First release.
