Kallithea 0.1 released

We're still not where we want to be for a 1.0 release, but we'd like to share what we've got so far. Kallithea 0.1 contains a lot of development since the project was announced, including both bug fixes and improvements. Kallithea 0.1 is production ready. The development branch is kept stable and is continuously used in production.

To install Kallithea 0.1:

virtualenv --no-site-packages dist/v
. dist/v/bin/activate
pip install kallithea
paster make-config Kallithea my.ini
paster setup-db my.ini --user=user \
    --email=user@example.com --password=password --repos=/tmp
paster serve my.ini &
firefox http://127.0.0.1:5000/

A summary of the changes in Kallithea 0.1 since the initial 0.0 announcement:

Bug fixes:

  • Fix undefined c.EXTERN_TYPE_INTERNAL for user edit (Issue #3).
  • Set RC_SCM_DATA together with KALLITHEA_EXTRAS to remain backwards compatible.
  • Fix handling of built-in Python hook names in brand compatibility mode.
  • Show error instead of crashing when comparing across repos.
  • Don't crash when trying to remove removed changeset comment.
  • Fix links in compare and PRs pointing at the wrong repo or wrong revision.
  • Fixes for Git pull requests.
  • Fix escaping of shell commands for Git backend.
  • Fix urlification of hashes separated by a single whitespace.
  • Fix urlification of URLs with #target.
  • Fix recognition of @mentions with single or odd separator characters.
  • Fix issue with path element separator when running indexer on Windows.

Improvements:

  • Admin:

    • Support newer versions of dulwich, doctuils, pycrypto, mako, whoosh, babel, formencode, bcrypt, ... and Mercurial 3.1.x.
    • Setup: remove http://www.pylonshq.com as it is no longer available.
    • Drop interactive db_manage prompt for following symlink — just show a warning instead.
    • Disable special hardcoded https hacks, introduce https_fixup config setting to enable them.
    • Less mangling of removed repos: just rename them without mangling .hg/.git directories.
    • Make it possible to remove repository groups.
    • Explicitly disable browser password saving on user admin pages.
    • Support other analytics systems than just Google Analytics.
    • Display users and groups sorted when granting permissions.
    • Performance improvements, especially for big repos.
  • UI:

    • Redirect less on fatal errors and catch exceptions less aggressively; instead, show an error at the right URL so problems can be diagnosed and fixed.
    • Error conditions in JavaScript give slightly more informative error messages than just 'error'.
    • Fix and improve UI styling in HTML and CSS.
    • Make labels for branches link to the changelog for the branch; labels for bookmarks and tags link to the changeset — not to its files.
    • Don't truncate tags on display.
    • Obey show_revision_number in more places — SVN style 'rXXX:' with ephemeral numbers is rarely useful; showing a graph and "most recent is topmost" is more helpful.
    • JavaScript cleanup — more parts converted from YUI to jQuery.
  • Changelog and graph:

    • More clever and fancy use of colors and gradients — make colors stick to the branch name when possible.
    • Optimize graph layout for better readability — reorder columns and don't show dead ends all the way to the bottom.
    • Show branch close markers.
    • Redraw graph when page size/layout changes so it doesn't get of sync.
    • Make it possible to both expand and collapse changelog commit messages.
    • Use select2 for changelog branch selector.
  • Pull requests:

    • PR from a specific revision (non branch head) still records the branch name.
    • PR from tip should always be considered from the branch head — tip is a confusing and moving target.
    • Show ‘my pull requests’ more prominently, not hidden under personal
    • settings.
    • PR reviewers are not mandatory — they can be added and removed freely.
    • Show '*' and strikethrough to make it more visible that reviewers only are added/removed after save.
    • Notify newly added reviewers, just like initial reviewers when the PR is created.
    • Don't load branch info for all peer repos up front — load it on demand when repo is selected.
    • Show more details in the dynamic preview when creating PRs.
    • Show currently selected revision hash when creating PR — not just symbolic name.
    • Tweak the selection of repos and branches for creating a PR.
    • Show more info for PR: owner and destination and ancestor.
    • Handle @mention in PR description; currently without fancy auto completion.
    • Make PR description and title editable.
    • Show information on what happened on the branch since the PR was created.
    • Make it possible to ‘update’ PRs by creating a new PR based on the old one.
    • Show graph, comment, and status flags when creating and displaying PR.
    • Allow closing of PRs in all states (undo #677 / 91492a72b2dc).
    • Don't allow update of closed PRs.
    • Make it possible to add comments to closed PRs.
    • Show links to next/previous comment — don't get lost navigating huge PRs.
    • Use select2 for branch and revision selection.
    • Show changeset comment and status flags in the changelog for PRs.
    • Show more helpful URLs that include a comment with branch name and PR title.
    • Links to other parts of the page now just use anchors, so the page doesn't reload losing any query parameters.
  • Diff:

    • Don't show content of deleted files.
    • Fix links to added, deleted, and modified file versions.
    • Add options for ignoring whitespace and increasing the context.
    • Make whitespace visible.
    • Don't ask for confirmation before showing diff — we already showed a warning with the link.
    • Improvements for display of ancestor and changes.
    • Show the number of changesets that the ancestor is behind the target.
  • Comments and notifications:

    • Don't hide comments made to lines outside the current diff context.
    • Introduce JavaScript confirm prompt for deleting comments — it was too easy to accidentally delete them.
    • Always show vote controls — no magic link to show it.
    • Use ‘No change’ as default for comments instead of current review status.
    • The comment icon must be clicked to make a comment — not just somewhere on the line.
    • Show comment icon to the left of the code where it is more visible, but only when hovering the line.
    • Improve Email texts (especially URL markup) and include status changes and 'Closing' in subjects.
    • Insert ‘References’ mail headers to help MUA threading.
    • Don't spam admins with messages that don't have any recipients — they can't do anything about it.
  • Other:

    • Preserve current revision when navigating between changelog, changeset, and file view.
    • Make it possible to use revision specifications with '/' (e.g. branch names) in changeset URLs.
    • Generally just show ‘username’ for known users — there is often not much space and the full name would be truncated and is often not unique.
    • Show and link to graft or transplant source on changeset page.
    • Show images in file view and in diffs.
    • Show a select2 branch selector on the files page.