From b79d1e93f5f54a64f8d33fb0a73bdeb71f1ccef0 Mon Sep 17 00:00:00 2001
From: fuzzgun <bob@sluggish.dyndns.org>
Date: Mon, 1 Apr 2013 20:23:32 +0100
Subject: [PATCH 1/5] Debian packaging

---
 COPYING                                       |   2 +-
 LICENSE                                       |   2 +-
 Makefile                                      |  45 +++++
 README.md                                     |   2 +-
 debian.sh                                     |  21 +++
 debian/changelog                              |   9 +
 debian/compat                                 |   1 +
 debian/control                                |  21 +++
 debian/copyright                              |  30 +++
 debian/docs                                   |   1 +
 debian/files                                  |   1 +
 debian/pybm                                   |   4 +
 debian/rules                                  |  68 +++++++
 debian/source/format                          |   1 +
 debian/source/include-binaries                |  15 ++
 desktop/can-icon.svg                          | 173 ++++++++++++++++++
 desktop/pybitmessage.desktop                  |   9 +
 about.py => src/about.py                      |   0
 about.ui => src/about.ui                      |   0
 addresses.py => src/addresses.py              |   0
 api client.py => src/api client.py            |   0
 .../bitmessage_icons.qrc                      |   0
 .../bitmessage_icons_rc.py                    |   0
 bitmessagemain.py => src/bitmessagemain.py    |   0
 bitmessageui.py => src/bitmessageui.py        |   0
 bitmessageui.ui => src/bitmessageui.ui        |   0
 .../defaultKnownNodes.py                      |   0
 help.py => src/help.py                        |   0
 help.ui => src/help.ui                        |   0
 highlevelcrypto.py => src/highlevelcrypto.py  |   0
 iconglossary.py => src/iconglossary.py        |   0
 iconglossary.ui => src/iconglossary.ui        |   0
 {images => src/images}/addressbook.png        | Bin
 {images => src/images}/blacklist.png          | Bin
 {images => src/images}/can-icon-16px.png      | Bin
 {images => src/images}/can-icon-24px.png      | Bin
 {images => src/images}/can-icon.ico           | Bin
 {images => src/images}/greenicon.png          | Bin
 {images => src/images}/identities.png         | Bin
 {images => src/images}/inbox.png              | Bin
 {images => src/images}/networkstatus.png      | Bin
 {images => src/images}/redicon.png            | Bin
 {images => src/images}/send.png               | Bin
 {images => src/images}/sent.png               | Bin
 {images => src/images}/subscriptions.png      | Bin
 {images => src/images}/yellowicon.png         | Bin
 .../messages.dat reader.py                    |   0
 .../newaddressdialog.py                       |   0
 .../newaddressdialog.ui                       |   0
 .../newsubscriptiondialog.py                  |   0
 .../newsubscriptiondialog.ui                  |   0
 {pyelliptic => src/pyelliptic}/LICENSE        |   0
 {pyelliptic => src/pyelliptic}/README.md      |   0
 {pyelliptic => src/pyelliptic}/__init__.py    |   0
 {pyelliptic => src/pyelliptic}/arithmetic.py  |   0
 {pyelliptic => src/pyelliptic}/cipher.py      |   0
 {pyelliptic => src/pyelliptic}/ecc.py         |   0
 {pyelliptic => src/pyelliptic}/hash.py        |   0
 {pyelliptic => src/pyelliptic}/openssl.py     |   0
 .../regenerateaddresses.py                    |   0
 .../regenerateaddresses.ui                    |   0
 settings.py => src/settings.py                |   0
 settings.ui => src/settings.ui                |   0
 {socks => src/socks}/BUGS                     |   0
 {socks => src/socks}/LICENSE                  |   0
 {socks => src/socks}/README                   |   0
 {socks => src/socks}/__init__.py              |   0
 .../specialaddressbehavior.py                 |   0
 .../specialaddressbehavior.ui                 |   0
 69 files changed, 402 insertions(+), 3 deletions(-)
 create mode 100755 Makefile
 create mode 100755 debian.sh
 create mode 100644 debian/changelog
 create mode 100644 debian/compat
 create mode 100644 debian/control
 create mode 100644 debian/copyright
 create mode 100644 debian/docs
 create mode 100644 debian/files
 create mode 100644 debian/pybm
 create mode 100755 debian/rules
 create mode 100644 debian/source/format
 create mode 100644 debian/source/include-binaries
 create mode 100644 desktop/can-icon.svg
 create mode 100644 desktop/pybitmessage.desktop
 rename about.py => src/about.py (100%)
 rename about.ui => src/about.ui (100%)
 rename addresses.py => src/addresses.py (100%)
 rename api client.py => src/api client.py (100%)
 rename bitmessage_icons.qrc => src/bitmessage_icons.qrc (100%)
 rename bitmessage_icons_rc.py => src/bitmessage_icons_rc.py (100%)
 rename bitmessagemain.py => src/bitmessagemain.py (100%)
 rename bitmessageui.py => src/bitmessageui.py (100%)
 rename bitmessageui.ui => src/bitmessageui.ui (100%)
 rename defaultKnownNodes.py => src/defaultKnownNodes.py (100%)
 rename help.py => src/help.py (100%)
 rename help.ui => src/help.ui (100%)
 rename highlevelcrypto.py => src/highlevelcrypto.py (100%)
 rename iconglossary.py => src/iconglossary.py (100%)
 rename iconglossary.ui => src/iconglossary.ui (100%)
 rename {images => src/images}/addressbook.png (100%)
 rename {images => src/images}/blacklist.png (100%)
 rename {images => src/images}/can-icon-16px.png (100%)
 rename {images => src/images}/can-icon-24px.png (100%)
 rename {images => src/images}/can-icon.ico (100%)
 rename {images => src/images}/greenicon.png (100%)
 rename {images => src/images}/identities.png (100%)
 rename {images => src/images}/inbox.png (100%)
 rename {images => src/images}/networkstatus.png (100%)
 rename {images => src/images}/redicon.png (100%)
 rename {images => src/images}/send.png (100%)
 rename {images => src/images}/sent.png (100%)
 rename {images => src/images}/subscriptions.png (100%)
 rename {images => src/images}/yellowicon.png (100%)
 rename messages.dat reader.py => src/messages.dat reader.py (100%)
 rename newaddressdialog.py => src/newaddressdialog.py (100%)
 rename newaddressdialog.ui => src/newaddressdialog.ui (100%)
 rename newsubscriptiondialog.py => src/newsubscriptiondialog.py (100%)
 rename newsubscriptiondialog.ui => src/newsubscriptiondialog.ui (100%)
 rename {pyelliptic => src/pyelliptic}/LICENSE (100%)
 rename {pyelliptic => src/pyelliptic}/README.md (100%)
 rename {pyelliptic => src/pyelliptic}/__init__.py (100%)
 rename {pyelliptic => src/pyelliptic}/arithmetic.py (100%)
 rename {pyelliptic => src/pyelliptic}/cipher.py (100%)
 rename {pyelliptic => src/pyelliptic}/ecc.py (100%)
 rename {pyelliptic => src/pyelliptic}/hash.py (100%)
 rename {pyelliptic => src/pyelliptic}/openssl.py (100%)
 rename regenerateaddresses.py => src/regenerateaddresses.py (100%)
 rename regenerateaddresses.ui => src/regenerateaddresses.ui (100%)
 rename settings.py => src/settings.py (100%)
 rename settings.ui => src/settings.ui (100%)
 rename {socks => src/socks}/BUGS (100%)
 rename {socks => src/socks}/LICENSE (100%)
 rename {socks => src/socks}/README (100%)
 rename {socks => src/socks}/__init__.py (100%)
 rename specialaddressbehavior.py => src/specialaddressbehavior.py (100%)
 rename specialaddressbehavior.ui => src/specialaddressbehavior.ui (100%)

diff --git a/COPYING b/COPYING
index 078afb1b..e386f371 100644
--- a/COPYING
+++ b/COPYING
@@ -16,4 +16,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
+THE SOFTWARE.
diff --git a/LICENSE b/LICENSE
index daaa84e7..de7d6159 100644
--- a/LICENSE
+++ b/LICENSE
@@ -17,4 +17,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/Makefile b/Makefile
new file mode 100755
index 00000000..161285e2
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,45 @@
+APP=pybitmessage
+VERSION=0.2.7
+
+all:
+ 
+debug:
+
+source:
+	tar -cvzf ../$(APP)_$(VERSION).orig.tar.gz ../$(APP)-$(VERSION) --exclude=.git
+
+install:
+	mkdir -m 755 -p /usr/share/applications
+	mkdir -m 755 -p /usr/share/applications/$(APP)
+	mkdir -m 755 -p /usr/share/applications/$(APP)/images
+	mkdir -m 755 -p /usr/share/applications/$(APP)/pyelliptic
+	mkdir -m 755 -p /usr/share/applications/$(APP)/socks
+	mkdir -m 755 -p /usr/share/pixmaps
+	mkdir -m 755 -p /usr/share/icons
+	mkdir -m 755 -p /usr/share/icons/hicolor
+	mkdir -m 755 -p /usr/share/icons/hicolor/scalable
+	mkdir -m 755 -p /usr/share/icons/hicolor/scalable/apps
+	mkdir -m 755 -p /usr/share/icons/hicolor/24x24
+	mkdir -m 755 -p /usr/share/icons/hicolor/24x24/apps
+
+	install -m 644 src/*.ui /usr/share/applications/$(APP)
+	install -m 644 src/*.py /usr/share/applications/$(APP)
+	install -m 644 src/*.qrc /usr/share/applications/$(APP)
+
+	install -m 644 src/images/*.png /usr/share/applications/$(APP)/images
+	install -m 644 src/images/*.ico /usr/share/applications/$(APP)/images
+	install -m 644 src/pyelliptic/* /usr/share/applications/$(APP)/pyelliptic
+	install -m 644 src/socks/* /usr/share/applications/$(APP)/socks
+	install -m 755 debian/pybm /usr/bin
+
+	install -m 644 desktop/$(APP).desktop /usr/share/applications/$(APP)/$(APP).desktop
+	install -m 644 src/images/can-icon-24px.png /usr/share/icons/hicolor/24x24/apps/$(APP).png
+	install -m 644 desktop/can-icon.svg /usr/share/icons/hicolor/scalable/apps/$(APP).svg
+	install -m 644 desktop/can-icon.svg /usr/share/pixmaps/$(APP).svg
+
+clean:
+	rm -rf debian/$(APP)
+	rm -f ../$(APP)_*.deb ../$(APP)_*.asc ../$(APP)_*.dsc ../$(APP)*.changes
+	rm -f *.sh~ src/*.pyc src/socks/*.pyc src/pyelliptic/*.pyc
+	rm -f *.deb \#* \.#* debian/*.log debian/*.substvars
+	rm -f Makefile~
diff --git a/README.md b/README.md
index f124c30d..979872f9 100644
--- a/README.md
+++ b/README.md
@@ -14,4 +14,4 @@ references
 ----------
 * [project website](https://bitmessage.org)
 * [protocol specification](https://bitmessage.org/wiki/Protocol_specification)
-* [whitepaper](https://bitmessage.org/bitmessage.pdf)
\ No newline at end of file
+* [whitepaper](https://bitmessage.org/bitmessage.pdf)
diff --git a/debian.sh b/debian.sh
new file mode 100755
index 00000000..fe4f477c
--- /dev/null
+++ b/debian.sh
@@ -0,0 +1,21 @@
+# To build a debian package first ensure that the code exists
+# within a directory called pybitmessage-x.x.x (where the x's
+# are the version number), make sure that the VERSION parameter
+# within debian/rules and this script are correct, then run
+# this script.
+
+#!/bin/bash
+
+APP=pybitmessage
+VERSION=0.2.7
+ARCH_TYPE=all
+
+# Create a source archive
+make clean
+make source
+
+# Build the package
+fakeroot dpkg-buildpackage -A
+
+gpg -ba ../${APP}_${VERSION}-1_${ARCH_TYPE}.deb
+gpg -ba ../${APP}_${VERSION}.orig.tar.gz
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 00000000..b071b96f
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,9 @@
+pybitmessage (0.2.7-1) unstable; urgency=low
+
+  * Added debian packaging
+  * Script to generate debian packages
+  * SVG icon for Gnome shell, etc
+  * Source moved int src directory for debian standards compatibility
+  * Trailing carriage return on COPYING LICENSE and README.md
+
+ -- Bob Mottram (4096 bits) <bob@sluggish.dyndns.org>  Tue, 1 Apr 2013 17:12:14 +0100
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 00000000..45a4fb75
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+8
diff --git a/debian/control b/debian/control
new file mode 100644
index 00000000..d9f052fc
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,21 @@
+Source: pybitmessage
+Section: contrib/comm
+Priority: extra
+Maintainer: Jonathan Warren <jonathan@bitmessage.org>
+Build-Depends: debhelper (>= 8.0.0), python, openssl
+Standards-Version: 3.9.2
+Homepage: https://bitmessage.org/
+Vcs-Browser: https://github.com/Bitmessage/PyBitmessage
+Vcs-Git: https://github.com/Bitmessage/PyBitmessage.git
+
+Package: pybitmessage
+Architecture: all
+Depends: ${misc:Depends}, python, openssl
+Description: Send encrypted messages to another person or to many subscribers
+ Bitmessage is a P2P communications protocol used to send encrypted messages
+ to another person or to many subscribers. It is decentralized and trustless,
+ meaning that you need-not inherently trust any entities like root certificate
+ authorities. It uses strong authentication which means that the sender of a
+ message cannot be spoofed, and it aims to hide "non-content" data, like the
+ sender and receiver of messages, from passive eavesdroppers like those
+ running warrantless wiretapping programs.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 00000000..4c5f69f3
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,30 @@
+Format: http://dep.debian.net/deps/dep5
+Upstream-Name: PyBitmessage
+Source: https://github.com/Bitmessage/PyBitmessage
+
+Files: *
+Copyright: 2012 Jonathan Warren
+License: MIT
+
+Files: debian/*
+Copyright: 2012 Jonathan Warren
+License: MIT
+
+License: MIT
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ .
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ .
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
\ No newline at end of file
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1 @@
+
diff --git a/debian/files b/debian/files
new file mode 100644
index 00000000..dd2718fa
--- /dev/null
+++ b/debian/files
@@ -0,0 +1 @@
+pybitmessage_0.2.7-1_all.deb contrib/comm extra
diff --git a/debian/pybm b/debian/pybm
new file mode 100644
index 00000000..1d90ee60
--- /dev/null
+++ b/debian/pybm
@@ -0,0 +1,4 @@
+#!/bin/bash
+cd /usr/share/applications/pybitmessage
+python bitmessagemain.py
+
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 00000000..84eb9d38
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,68 @@
+#!/usr/bin/make -f
+APP=pybitmessage
+
+DEST_MAIN = $(CURDIR)/debian/$(APP)/usr/bin
+DEST_SHARE = $(CURDIR)/debian/$(APP)/usr/share
+
+build: build-stamp	
+	make
+build-stamp:
+	dh_testdir
+	touch build-stamp
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp
+	dh_clean
+install: build clean
+	dh_testdir
+	dh_testroot
+	dh_prep
+	dh_installdirs
+	mkdir -m 755 -p $(CURDIR)/debian/$(APP)/usr
+	mkdir -m 755 -p $(CURDIR)/debian/$(APP)/usr/bin
+	mkdir -m 755 -p $(DEST_SHARE)/applications
+	mkdir -m 755 -p $(DEST_SHARE)/applications/$(APP)
+	mkdir -m 755 -p $(DEST_SHARE)/applications/$(APP)/images
+	mkdir -m 755 -p $(DEST_SHARE)/applications/$(APP)/pyelliptic
+	mkdir -m 755 -p $(DEST_SHARE)/applications/$(APP)/socks
+	mkdir -m 755 -p $(DEST_SHARE)/pixmaps
+	mkdir -m 755 -p $(DEST_SHARE)/icons
+	mkdir -m 755 -p $(DEST_SHARE)/icons/hicolor
+	mkdir -m 755 -p $(DEST_SHARE)/icons/hicolor/scalable
+	mkdir -m 755 -p $(DEST_SHARE)/icons/hicolor/scalable/apps
+	mkdir -m 755 -p $(DEST_SHARE)/icons/hicolor/24x24
+	mkdir -m 755 -p $(DEST_SHARE)/icons/hicolor/24x24/apps
+
+	install -m 644 $(CURDIR)/src/*.ui $(DEST_SHARE)/applications/$(APP)
+	install -m 644 $(CURDIR)/src/*.py $(DEST_SHARE)/applications/$(APP)
+	install -m 644 $(CURDIR)/src/*.qrc $(DEST_SHARE)/applications/$(APP)
+
+	install -m 644 $(CURDIR)/src/images/*.png $(DEST_SHARE)/applications/$(APP)/images
+	install -m 644 $(CURDIR)/src/images/*.ico $(DEST_SHARE)/applications/$(APP)/images
+	install -m 644 $(CURDIR)/src/pyelliptic/* $(DEST_SHARE)/applications/$(APP)/pyelliptic
+	install -m 644 $(CURDIR)/src/socks/* $(DEST_SHARE)/applications/$(APP)/socks
+	install -m 755 $(CURDIR)/debian/pybm $(DEST_MAIN)
+
+	install -m 644 $(CURDIR)/desktop/$(APP).desktop $(DEST_SHARE)/applications/$(APP)/$(APP).desktop
+	install -m 644 $(CURDIR)/src/images/can-icon-24px.png $(DEST_SHARE)/icons/hicolor/24x24/apps/$(APP).png
+	install -m 644 $(CURDIR)/desktop/can-icon.svg $(DEST_SHARE)/icons/hicolor/scalable/apps/$(APP).svg
+	install -m 644 $(CURDIR)/desktop/can-icon.svg $(DEST_SHARE)/pixmaps/$(APP).svg
+binary-indep: build install
+	dh_shlibdeps
+	dh_testdir
+	dh_testroot
+	dh_installchangelogs
+	dh_installdocs
+#	dh_installexamples
+#	dh_installman
+	dh_link
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+binary-arch: build install
+binary: binary-indep
+.PHONY: build clean binary-indep binary install
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 00000000..163aaf8d
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (quilt)
diff --git a/debian/source/include-binaries b/debian/source/include-binaries
new file mode 100644
index 00000000..8569d576
--- /dev/null
+++ b/debian/source/include-binaries
@@ -0,0 +1,15 @@
+src/images/sent.png
+src/images/can-icon-16px.png
+src/images/addressbook.png
+src/images/networkstatus.png
+src/images/redicon.png
+src/images/subscriptions.png
+src/images/blacklist.png
+src/images/can-icon-24px.png
+src/images/identities.png
+src/images/yellowicon.png
+src/images/inbox.png
+src/images/greenicon.png
+src/images/can-icon.ico
+src/images/send.png
+desktop/can-icon.svg
diff --git a/desktop/can-icon.svg b/desktop/can-icon.svg
new file mode 100644
index 00000000..9b8a9ded
--- /dev/null
+++ b/desktop/can-icon.svg
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="can-icon.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.70710678"
+     inkscape:cx="334.69166"
+     inkscape:cy="680.44336"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="865"
+     inkscape:window-height="628"
+     inkscape:window-x="135"
+     inkscape:window-y="29"
+     inkscape:window-maximized="0"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g3793"
+       transform="matrix(0.89164023,0.51478873,-0.4891157,0.84717322,228.21472,-138.54027)">
+      <g
+         transform="translate(135.36044,60.609153)"
+         id="g3062">
+        <g
+           id="g3034"
+           transform="translate(-163.64471,-765.69563)">
+          <path
+             transform="matrix(0.94897167,0,0,0.90277282,75.32333,234.23474)"
+             d="m 482.85713,726.64789 c 0,31.55913 -62.04054,57.14285 -138.57142,57.14285 -76.53089,0 -138.57143,-25.58372 -138.57143,-57.14285 0,-31.55913 62.04054,-57.14286 138.57143,-57.14286 76.53088,0 138.57142,25.58373 138.57142,57.14286 z"
+             sodipodi:ry="57.142857"
+             sodipodi:rx="138.57143"
+             sodipodi:cy="726.64789"
+             sodipodi:cx="344.28571"
+             id="path2992-7"
+             style="fill:#000000"
+             sodipodi:type="arc" />
+          <rect
+             y="884.67688"
+             x="262.63968"
+             height="61.619308"
+             width="286.88333"
+             id="rect3032"
+             style="fill:#ffffff" />
+        </g>
+        <g
+           id="g3034-7"
+           transform="translate(-163.64473,-764.39834)"
+           style="fill:#ffffff">
+          <path
+             transform="matrix(0.94897167,0,0,0.90277282,75.32333,234.23474)"
+             d="m 482.85713,726.64789 c 0,31.55913 -62.04054,57.14285 -138.57142,57.14285 -76.53089,0 -138.57143,-25.58372 -138.57143,-57.14285 0,-31.55913 62.04054,-57.14286 138.57143,-57.14286 76.53088,0 138.57142,25.58373 138.57142,57.14286 z"
+             sodipodi:ry="57.142857"
+             sodipodi:rx="138.57143"
+             sodipodi:cy="726.64789"
+             sodipodi:cx="344.28571"
+             id="path2992-7-8"
+             style="fill:#ffffff"
+             sodipodi:type="arc" />
+          <rect
+             y="884.67688"
+             x="262.63968"
+             height="61.619308"
+             width="286.88333"
+             id="rect3032-3"
+             style="fill:#ffffff" />
+        </g>
+      </g>
+      <path
+         transform="translate(31.741031,-196.40731)"
+         d="m 482.85713,726.64789 c 0,31.55913 -62.04054,57.14285 -138.57142,57.14285 -76.53089,0 -138.57143,-25.58372 -138.57143,-57.14285 0,-31.55913 62.04054,-57.14286 138.57143,-57.14286 76.53088,0 138.57142,25.58373 138.57142,57.14286 z"
+         sodipodi:ry="57.142857"
+         sodipodi:rx="138.57143"
+         sodipodi:cy="726.64789"
+         sodipodi:cx="344.28571"
+         id="path2992"
+         style="fill:#000000"
+         sodipodi:type="arc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3105"
+         d="m 243.44676,179.33784 -6.06091,351.02801"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3109"
+         d="m 504.08363,179.6079 9.59206,351.52869"
+         style="fill:none;stroke:#000000;stroke-width:0.97375119px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3111"
+         d="M 267.14286,155.43361 260,499.50504"
+         style="fill:#808080;stroke:#000000;stroke-width:0.99762112px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.11949684" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path2997"
+         d="m 305.71429,480.96643 2.85714,-340.03282"
+         style="fill:none;stroke:#000000;stroke-width:1.00427675px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.06918239" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3775"
+         d="m 261.36651,484.45144 c 1.14322,-48.37725 6.2999,-307.63106 6.2999,-316.72991 l 0,-11.21031 7.76946,-3.54066 c 7.44069,-3.39083 31.41041,-11.16079 31.97304,-10.36429 0.14872,0.21056 -0.28631,61.52232 -0.96675,136.24835 -0.68044,74.72604 -1.27383,150.66786 -1.31864,168.75961 l -0.0815,32.89409 -8.33376,2.39262 c -10.52041,3.02039 -23.12524,7.92802 -30.18922,11.75403 l -5.46362,2.95923 0.31106,-13.16276 0,0 z"
+         style="fill:#ececec;stroke:#000000;stroke-width:1.01015258;stroke-opacity:0.06918239" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3777"
+         d="M 363.65492,472.53462 361.63461,133.12337"
+         style="fill:#ececec;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.07547171" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3783"
+         d="m 306.94944,433.11087 c 0.57037,-46.32488 2.49195,-263.52844 2.49195,-281.67524 l 0,-9.43296 5.25,-1.06084 c 9.67835,-1.95566 25.52023,-4.05586 35.5528,-4.71333 l 9.94474,-0.65172 0.62019,35.39205 c 0.3411,19.46563 0.90407,95.30274 1.25103,168.52692 l 0.63085,133.13486 -8.3748,0.66944 c -12.6783,1.01344 -30.94004,3.39169 -38.89842,5.06579 -3.90893,0.82226 -7.54293,1.49503 -8.07555,1.49503 -0.61893,0 -0.76068,-16.87064 -0.39279,-46.75 z"
+         style="fill:#f2f2f2;stroke:#000000;stroke-width:1;stroke-opacity:0.07547171" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3785"
+         d="m 238.93786,495.86087 c 0.32474,-14.025 1.70752,-91.13234 3.07284,-171.34966 2.68242,-157.60078 2.16493,-147.61575 8.01045,-154.56276 2.65137,-3.15098 15.23363,-12.6583 15.82581,-11.9582 0.17243,0.20384 -1.24233,76.87063 -3.1439,170.37063 l -3.45741,169.99999 -2.62564,2 c -6.36144,4.84563 -13.92321,12.73178 -16.00765,16.69433 l -2.26494,4.30567 0.59044,-25.5 z"
+         style="fill:#e6e6e6;stroke:#000000;stroke-width:1;stroke-opacity:0.11949684" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3787"
+         d="M 486,495.36218 479,155.36219"
+         style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.21383649" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3789"
+         d="m 510.31168,515.19017 c -2.07742,-4.01727 -11.11889,-12.29406 -17.89193,-16.37872 l -5.72164,-3.45058 -0.0284,-8.66451 c -0.0336,-10.25615 -5.73434,-292.44376 -6.35517,-314.58044 l -0.42754,-15.24495 4.02866,2.24495 c 5.68163,3.16607 13.59957,10.48401 16.80059,15.52751 2.56133,4.03561 2.72718,5.01587 2.87615,17 0.087,6.99459 2.10169,83.14245 4.4772,169.21745 2.37552,86.07499 4.18414,156.65431 4.01917,156.84292 -0.16497,0.18861 -0.96468,-0.94252 -1.77713,-2.51363 l 0,0 z M 457,484.36219 l -6,-342"
+         style="fill:#b3b3b3;stroke:#000000;stroke-width:1;stroke-opacity:0.21383649" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3791"
+         d="m 479.14139,491.50987 c -2.75,-1.27823 -8.71133,-3.63467 -13.24741,-5.23653 l -8.2474,-2.91247 -0.059,-15 c -0.0325,-8.25 -1.31094,-84.07499 -2.84107,-168.49999 -1.53013,-84.425 -2.65889,-153.65835 -2.50836,-153.85189 0.41658,-0.53559 10.03877,2.74274 18.08486,6.1616 l 7.18161,3.05153 0.53263,7.06938 c 0.70701,9.38373 6.8882,324.14473 6.44718,328.3059 l -0.34302,3.23653 -5,-2.32406 z"
+         style="fill:#cccccc;stroke:#000000;stroke-width:1;stroke-opacity:0.21383649" />
+    </g>
+  </g>
+</svg>
diff --git a/desktop/pybitmessage.desktop b/desktop/pybitmessage.desktop
new file mode 100644
index 00000000..affd63d1
--- /dev/null
+++ b/desktop/pybitmessage.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Name=PyBitmessage
+GenericName=PyBitmessage
+Comment=Send encrypted messages to another person or to many subscribers
+Exec=pybm %U
+Icon=pybitmessage
+Terminal=false
+Categories=Network
diff --git a/about.py b/src/about.py
similarity index 100%
rename from about.py
rename to src/about.py
diff --git a/about.ui b/src/about.ui
similarity index 100%
rename from about.ui
rename to src/about.ui
diff --git a/addresses.py b/src/addresses.py
similarity index 100%
rename from addresses.py
rename to src/addresses.py
diff --git a/api client.py b/src/api client.py
similarity index 100%
rename from api client.py
rename to src/api client.py
diff --git a/bitmessage_icons.qrc b/src/bitmessage_icons.qrc
similarity index 100%
rename from bitmessage_icons.qrc
rename to src/bitmessage_icons.qrc
diff --git a/bitmessage_icons_rc.py b/src/bitmessage_icons_rc.py
similarity index 100%
rename from bitmessage_icons_rc.py
rename to src/bitmessage_icons_rc.py
diff --git a/bitmessagemain.py b/src/bitmessagemain.py
similarity index 100%
rename from bitmessagemain.py
rename to src/bitmessagemain.py
diff --git a/bitmessageui.py b/src/bitmessageui.py
similarity index 100%
rename from bitmessageui.py
rename to src/bitmessageui.py
diff --git a/bitmessageui.ui b/src/bitmessageui.ui
similarity index 100%
rename from bitmessageui.ui
rename to src/bitmessageui.ui
diff --git a/defaultKnownNodes.py b/src/defaultKnownNodes.py
similarity index 100%
rename from defaultKnownNodes.py
rename to src/defaultKnownNodes.py
diff --git a/help.py b/src/help.py
similarity index 100%
rename from help.py
rename to src/help.py
diff --git a/help.ui b/src/help.ui
similarity index 100%
rename from help.ui
rename to src/help.ui
diff --git a/highlevelcrypto.py b/src/highlevelcrypto.py
similarity index 100%
rename from highlevelcrypto.py
rename to src/highlevelcrypto.py
diff --git a/iconglossary.py b/src/iconglossary.py
similarity index 100%
rename from iconglossary.py
rename to src/iconglossary.py
diff --git a/iconglossary.ui b/src/iconglossary.ui
similarity index 100%
rename from iconglossary.ui
rename to src/iconglossary.ui
diff --git a/images/addressbook.png b/src/images/addressbook.png
similarity index 100%
rename from images/addressbook.png
rename to src/images/addressbook.png
diff --git a/images/blacklist.png b/src/images/blacklist.png
similarity index 100%
rename from images/blacklist.png
rename to src/images/blacklist.png
diff --git a/images/can-icon-16px.png b/src/images/can-icon-16px.png
similarity index 100%
rename from images/can-icon-16px.png
rename to src/images/can-icon-16px.png
diff --git a/images/can-icon-24px.png b/src/images/can-icon-24px.png
similarity index 100%
rename from images/can-icon-24px.png
rename to src/images/can-icon-24px.png
diff --git a/images/can-icon.ico b/src/images/can-icon.ico
similarity index 100%
rename from images/can-icon.ico
rename to src/images/can-icon.ico
diff --git a/images/greenicon.png b/src/images/greenicon.png
similarity index 100%
rename from images/greenicon.png
rename to src/images/greenicon.png
diff --git a/images/identities.png b/src/images/identities.png
similarity index 100%
rename from images/identities.png
rename to src/images/identities.png
diff --git a/images/inbox.png b/src/images/inbox.png
similarity index 100%
rename from images/inbox.png
rename to src/images/inbox.png
diff --git a/images/networkstatus.png b/src/images/networkstatus.png
similarity index 100%
rename from images/networkstatus.png
rename to src/images/networkstatus.png
diff --git a/images/redicon.png b/src/images/redicon.png
similarity index 100%
rename from images/redicon.png
rename to src/images/redicon.png
diff --git a/images/send.png b/src/images/send.png
similarity index 100%
rename from images/send.png
rename to src/images/send.png
diff --git a/images/sent.png b/src/images/sent.png
similarity index 100%
rename from images/sent.png
rename to src/images/sent.png
diff --git a/images/subscriptions.png b/src/images/subscriptions.png
similarity index 100%
rename from images/subscriptions.png
rename to src/images/subscriptions.png
diff --git a/images/yellowicon.png b/src/images/yellowicon.png
similarity index 100%
rename from images/yellowicon.png
rename to src/images/yellowicon.png
diff --git a/messages.dat reader.py b/src/messages.dat reader.py
similarity index 100%
rename from messages.dat reader.py
rename to src/messages.dat reader.py
diff --git a/newaddressdialog.py b/src/newaddressdialog.py
similarity index 100%
rename from newaddressdialog.py
rename to src/newaddressdialog.py
diff --git a/newaddressdialog.ui b/src/newaddressdialog.ui
similarity index 100%
rename from newaddressdialog.ui
rename to src/newaddressdialog.ui
diff --git a/newsubscriptiondialog.py b/src/newsubscriptiondialog.py
similarity index 100%
rename from newsubscriptiondialog.py
rename to src/newsubscriptiondialog.py
diff --git a/newsubscriptiondialog.ui b/src/newsubscriptiondialog.ui
similarity index 100%
rename from newsubscriptiondialog.ui
rename to src/newsubscriptiondialog.ui
diff --git a/pyelliptic/LICENSE b/src/pyelliptic/LICENSE
similarity index 100%
rename from pyelliptic/LICENSE
rename to src/pyelliptic/LICENSE
diff --git a/pyelliptic/README.md b/src/pyelliptic/README.md
similarity index 100%
rename from pyelliptic/README.md
rename to src/pyelliptic/README.md
diff --git a/pyelliptic/__init__.py b/src/pyelliptic/__init__.py
similarity index 100%
rename from pyelliptic/__init__.py
rename to src/pyelliptic/__init__.py
diff --git a/pyelliptic/arithmetic.py b/src/pyelliptic/arithmetic.py
similarity index 100%
rename from pyelliptic/arithmetic.py
rename to src/pyelliptic/arithmetic.py
diff --git a/pyelliptic/cipher.py b/src/pyelliptic/cipher.py
similarity index 100%
rename from pyelliptic/cipher.py
rename to src/pyelliptic/cipher.py
diff --git a/pyelliptic/ecc.py b/src/pyelliptic/ecc.py
similarity index 100%
rename from pyelliptic/ecc.py
rename to src/pyelliptic/ecc.py
diff --git a/pyelliptic/hash.py b/src/pyelliptic/hash.py
similarity index 100%
rename from pyelliptic/hash.py
rename to src/pyelliptic/hash.py
diff --git a/pyelliptic/openssl.py b/src/pyelliptic/openssl.py
similarity index 100%
rename from pyelliptic/openssl.py
rename to src/pyelliptic/openssl.py
diff --git a/regenerateaddresses.py b/src/regenerateaddresses.py
similarity index 100%
rename from regenerateaddresses.py
rename to src/regenerateaddresses.py
diff --git a/regenerateaddresses.ui b/src/regenerateaddresses.ui
similarity index 100%
rename from regenerateaddresses.ui
rename to src/regenerateaddresses.ui
diff --git a/settings.py b/src/settings.py
similarity index 100%
rename from settings.py
rename to src/settings.py
diff --git a/settings.ui b/src/settings.ui
similarity index 100%
rename from settings.ui
rename to src/settings.ui
diff --git a/socks/BUGS b/src/socks/BUGS
similarity index 100%
rename from socks/BUGS
rename to src/socks/BUGS
diff --git a/socks/LICENSE b/src/socks/LICENSE
similarity index 100%
rename from socks/LICENSE
rename to src/socks/LICENSE
diff --git a/socks/README b/src/socks/README
similarity index 100%
rename from socks/README
rename to src/socks/README
diff --git a/socks/__init__.py b/src/socks/__init__.py
similarity index 100%
rename from socks/__init__.py
rename to src/socks/__init__.py
diff --git a/specialaddressbehavior.py b/src/specialaddressbehavior.py
similarity index 100%
rename from specialaddressbehavior.py
rename to src/specialaddressbehavior.py
diff --git a/specialaddressbehavior.ui b/src/specialaddressbehavior.ui
similarity index 100%
rename from specialaddressbehavior.ui
rename to src/specialaddressbehavior.ui

From 781e83566171ca5f976b0cfcc7a609c2e27d7b94 Mon Sep 17 00:00:00 2001
From: fuzzgun <bob@sluggish.dyndns.org>
Date: Tue, 2 Apr 2013 10:48:54 +0100
Subject: [PATCH 2/5] Qt4 dependencies

---
 debian/control | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/debian/control b/debian/control
index d9f052fc..3a9bc7a6 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: pybitmessage
 Section: contrib/comm
 Priority: extra
 Maintainer: Jonathan Warren <jonathan@bitmessage.org>
-Build-Depends: debhelper (>= 8.0.0), python, openssl
+Build-Depends: debhelper (>= 8.0.0), python, openssl, python-qt4, libqt4-dev, python-qt4-dev
 Standards-Version: 3.9.2
 Homepage: https://bitmessage.org/
 Vcs-Browser: https://github.com/Bitmessage/PyBitmessage
@@ -10,7 +10,7 @@ Vcs-Git: https://github.com/Bitmessage/PyBitmessage.git
 
 Package: pybitmessage
 Architecture: all
-Depends: ${misc:Depends}, python, openssl
+Depends: ${misc:Depends}, python, openssl, python-qt4, libqt4-dev, python-qt4-dev
 Description: Send encrypted messages to another person or to many subscribers
  Bitmessage is a P2P communications protocol used to send encrypted messages
  to another person or to many subscribers. It is decentralized and trustless,

From a53ade66e3982132aa09c0d0bd82c623d5dd3329 Mon Sep 17 00:00:00 2001
From: fuzzgun <bob@sluggish.dyndns.org>
Date: Tue, 2 Apr 2013 19:20:20 +0100
Subject: [PATCH 3/5] Fixed lintian duplicate license warnings

---
 Makefile     | 4 ++--
 debian/rules | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 161285e2..89888694 100755
--- a/Makefile
+++ b/Makefile
@@ -28,8 +28,8 @@ install:
 
 	install -m 644 src/images/*.png /usr/share/applications/$(APP)/images
 	install -m 644 src/images/*.ico /usr/share/applications/$(APP)/images
-	install -m 644 src/pyelliptic/* /usr/share/applications/$(APP)/pyelliptic
-	install -m 644 src/socks/* /usr/share/applications/$(APP)/socks
+	install -m 644 src/pyelliptic/*.py /usr/share/applications/$(APP)/pyelliptic
+	install -m 644 src/socks/*.py /usr/share/applications/$(APP)/socks
 	install -m 755 debian/pybm /usr/bin
 
 	install -m 644 desktop/$(APP).desktop /usr/share/applications/$(APP)/$(APP).desktop
diff --git a/debian/rules b/debian/rules
index 84eb9d38..ca977463 100755
--- a/debian/rules
+++ b/debian/rules
@@ -40,8 +40,8 @@ install: build clean
 
 	install -m 644 $(CURDIR)/src/images/*.png $(DEST_SHARE)/applications/$(APP)/images
 	install -m 644 $(CURDIR)/src/images/*.ico $(DEST_SHARE)/applications/$(APP)/images
-	install -m 644 $(CURDIR)/src/pyelliptic/* $(DEST_SHARE)/applications/$(APP)/pyelliptic
-	install -m 644 $(CURDIR)/src/socks/* $(DEST_SHARE)/applications/$(APP)/socks
+	install -m 644 $(CURDIR)/src/pyelliptic/*.py $(DEST_SHARE)/applications/$(APP)/pyelliptic
+	install -m 644 $(CURDIR)/src/socks/*.py $(DEST_SHARE)/applications/$(APP)/socks
 	install -m 755 $(CURDIR)/debian/pybm $(DEST_MAIN)
 
 	install -m 644 $(CURDIR)/desktop/$(APP).desktop $(DEST_SHARE)/applications/$(APP)/$(APP).desktop

From 57eef7707086d271d66214fb8966e614ffca0de2 Mon Sep 17 00:00:00 2001
From: fuzzgun <bob@sluggish.dyndns.org>
Date: Wed, 3 Apr 2013 12:45:08 +0100
Subject: [PATCH 4/5] sqlite3 dependency

---
 debian/control | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/debian/control b/debian/control
index 3a9bc7a6..975082c3 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: pybitmessage
 Section: contrib/comm
 Priority: extra
 Maintainer: Jonathan Warren <jonathan@bitmessage.org>
-Build-Depends: debhelper (>= 8.0.0), python, openssl, python-qt4, libqt4-dev, python-qt4-dev
+Build-Depends: debhelper (>= 8.0.0), python, openssl, python-qt4, libqt4-dev, python-qt4-dev, sqlite3, libsqlite3-dev
 Standards-Version: 3.9.2
 Homepage: https://bitmessage.org/
 Vcs-Browser: https://github.com/Bitmessage/PyBitmessage
@@ -10,7 +10,7 @@ Vcs-Git: https://github.com/Bitmessage/PyBitmessage.git
 
 Package: pybitmessage
 Architecture: all
-Depends: ${misc:Depends}, python, openssl, python-qt4, libqt4-dev, python-qt4-dev
+Depends: ${misc:Depends}, python, openssl, python-qt4, libqt4-dev, python-qt4-dev, sqlite3, libsqlite3-dev
 Description: Send encrypted messages to another person or to many subscribers
  Bitmessage is a P2P communications protocol used to send encrypted messages
  to another person or to many subscribers. It is decentralized and trustless,

From 45d90c0244576fb0e0216b11581efc7d867b3b2c Mon Sep 17 00:00:00 2001
From: fuzzgun <bob@sluggish.dyndns.org>
Date: Tue, 9 Apr 2013 17:59:33 +0100
Subject: [PATCH 5/5] Bumped version number to 0.2.8

---
 Makefile         |  2 +-
 debian.sh        |  2 +-
 debian/changelog | 43 +++++++++++++++++++++++++++++++++++++++++++
 debian/files     |  2 +-
 4 files changed, 46 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 89888694..21b9f793 100755
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 APP=pybitmessage
-VERSION=0.2.7
+VERSION=0.2.8
 
 all:
  
diff --git a/debian.sh b/debian.sh
index fe4f477c..4ffe1b87 100755
--- a/debian.sh
+++ b/debian.sh
@@ -7,7 +7,7 @@
 #!/bin/bash
 
 APP=pybitmessage
-VERSION=0.2.7
+VERSION=0.2.8
 ARCH_TYPE=all
 
 # Create a source archive
diff --git a/debian/changelog b/debian/changelog
index b071b96f..a7d2a84c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,46 @@
+pybitmessage (0.2.8-1) unstable; urgency=low
+
+  * Fixed Ubuntu & OS X issue:
+    Bitmessage wouldn't receive any objects from peers after restart.
+
+  * Inventory flush to disk when exiting program now vastly faster.
+
+  * Fixed address generation bug (kept Bitmessage from restarting).
+
+  * Improve deserialization of messages
+    before processing (a 'best practice').
+
+  * Change to help Macs find OpenSSL the way Unix systems find it.
+
+  * Do not share or accept IPs which are in the private IP ranges.
+
+  * Added time-fuzzing
+    to the embedded time in pubkey and getpubkey messages.
+
+  * Added a knownNodes lock
+    to prevent an exception from sometimes occurring when saving
+    the data-structure to disk.
+
+  * Show unread messages in bold
+    and do not display new messages automatically.
+
+  * Support selecting multiple items
+    in the inbox, sent box, and address book.
+
+  * Use delete key to trash Inbox or Sent messages.
+
+  * Display richtext(HTML) messages
+    from senders in address book or subscriptions (although not
+    pseudo-mailing-lists; use new right-click option).
+
+  * Trim spaces
+    from the beginning and end of addresses when adding to
+    address book, subscriptions, and blacklist.
+
+  * Improved the display of the time for foreign language users.
+
+ -- Bob Mottram (4096 bits) <bob@sluggish.dyndns.org>  Tue, 9 Apr 2013 17:44:00 +0100
+
 pybitmessage (0.2.7-1) unstable; urgency=low
 
   * Added debian packaging
diff --git a/debian/files b/debian/files
index dd2718fa..471f54a3 100644
--- a/debian/files
+++ b/debian/files
@@ -1 +1 @@
-pybitmessage_0.2.7-1_all.deb contrib/comm extra
+pybitmessage_0.2.8-1_all.deb contrib/comm extra