diff --git a/.gitignore b/.gitignore
index dec1746..2b5e3d6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,7 @@
 *.pyc
 *.py~
-*.comp.js
 .DS_Store
-patch.log
-lib
 conf.py
-version.num
 locale
+latest_updates.json
 .wnf-lang-status
diff --git a/home/page/latest_updates/latest_updates.js b/home/page/latest_updates/latest_updates.js
index 910c1b1..0d4165b 100644
--- a/home/page/latest_updates/latest_updates.js
+++ b/home/page/latest_updates/latest_updates.js
@@ -1,292 +1,3 @@
-erpnext.updates = [
-	["17th May", ["Patch: Set Conversion Factor for purchase invoice item in all old records. And repost JV to book Stock Received But Not Billed account, if Auto Inventory Integration enabed."
-	]],
-	["2nd May", ["Buying: Warehouse must belong to same company as transaction",
-		"Price List: Added Currency Field. One price list can have only one currency",
-		"Item: Naming can now be by series or item code",
-		"Naming Series: Set number of digits in series (optionally)",
-		"Login: Disable Signup link in the login page"]],
-	["30th April", ["Price List: Valid for all countries or only valid for specific countries"]],
-	["18th April", ["Cost Center: Set a default Cost Center for a Company"]],
-	["12th April", ["Employee: List of Leave Approvers who can approve the Employee's Leave Applications"]],
-	["10th April", ["Redesigned File Uploads and added File Manager in Setup"]],
-	["3rd April", ["Update Manager: Open source users can update their ERPNext instance from Setup > Update Manager"]],
-	["27th March", ["Rename multiple items together. Go to Setup > Rename Tool"]],
-	["26th March", ["Added project to Stock Ledger and Balance",
-		"Added Default Cash Account in Company."]],
-	["19th March", ["Sales and Purchase Return Tool deprecated. Use Stock Entry instead."]],
-	["12th March", ["Updates to website module. Added more options in Style Settings and Website Settings."]],
-	["5th March", ["Refactored Upload Attendance Tool"]],
-	["4th March", ["Lead organization added in Quotation classic/spartan/modern print format"]],
-	["1st March", [
-		"Time Log, Time Log Batch: Created feature to batch Time Logs so that they can be tracked for billing.",
-		"Sub-contracting code refactored for PO",
-	]],
-	["28th February", [
-	"Datatype validation in Voucher Import Tool",
-	"Fixes for conversion factor in old invoices",
-	"Fixed asynchronus issue in purchase cycle"
-	]],
-	["27th February", [
-		"Time Log: Created Time Log System, with Calendar View."
-	]],
-	["26th February", [
-		"Gross Profit: The report has been rewritten and now it is under Accounts module"
-	]],
-	["25th February", [
-		"Employee Leave Balance: New Report",
-		"Scripted Reports: Ability to create reports via Script",
-	]],
-	["21st February, 2013", [
-		"Item: Warehouse-wise Re-order Level and Quantity",
-		"Buying: Purchase Request renamed to Material Request",
-		"Website: Dynamic (mobile friendly) layouts using Bootstrap Responsive layouts"
-	]],
-	["20th February, 2013", [
-		"Disable Rounded Total: If disable in 'Global Defaults', Rounding related fields \
-			in sales cycle transactions and in corresponding print formats will not be visible"
-	]],
-	["15th February, 2013", [
-		"Calendar: Added new FullCalendar, and Calendar Views",
-		"Leave Application: Added email notifications on Leave Application",
-	]],
-	["13th February, 2013", [
-		"Employee: If Employee is linked to a Profile, copy Full Name, Date of Birth, \
-			Image and Gender to Profile",
-		"Leave Application: Select Leave Approver by their Full Name",
-		"Fixes in C-Form",
-	]],
-	["12th February, 2013", ["Fixes in Payment Reconciliation "]],
-	["6th February, 2013", [
-		"Bookmarks: Add bookmarks via toolbar by clicking on the <i class='icon-star'></i> sign.",
-		"Fixes in Voucher Import Tool",
-	]],
-	["5th February, 2013", [
-		"Block Negative Account Balance: If enabled, system will not allow to post entry \
-			if balance goes into negative",
-		"Leave Block List: Block users from taking leave on certain days.",
-		"Added project column in 'To Be Delivered/Billed' report ",
-	]],
-	["4th February, 2013", [
-		"Make gl entry only if amount is there",
-		"Fixes in Stock Ledger Report"
-	]],
-	["2nd February, 2013", [
-		"Warehouse: Added table Warehouse User to restrict Warehouse Entry per user.",
-		"Fixes in Gl Entry for Purchase Invoice",
-	]],
-	["1st February, 2013", [
-		"Removed sales order pending items report",
-		"Fixes in Salary Register Report, Sales Invoice and Budget Control",
-	]],
-	["31st January, 2013", [
-		"New Report:  Purchase order items pending to be received",
-		"GL Mapper deprecated",
-	]],
-	["28st January, 2013", [
-		"List Views are now configurable: To set list views, check 'In List View' in Setup > Customize Form View in the fields table.",
-		"Fixes in Financial Statements and Features Setup",
-	]],
-	["25th January, 2013", [
-		"Fixes for currency in all Modern/Classic/Spartan print formats",
-		"Stock Ageing Report: Added show zero values option"
-	]],
-	["24th January, 2013", [
-		"Sales Analytics based on Sales Order/Delivery Note/Sales Invoice",
-		"Integrated Languages in Profile and via browser settings. To set your language, click on your name in the toolbar then 'My Settings...'",
-		"Fixes in Recurring Invoice",
-		"Fixes for Territory link to Sales Browser ",
-		"Check item/item group with same name while creating item group/item",
-	]],
-	["22nd January, 2013", [
-		"Valuation Rate mandatory for opening Stock Reconciliation",
-		"Show analytics value based on valuation method defined in item master",
-	]],
-	["21st January, 2013", [
-		"Number Formatting: Added Number Format to Global Defaults & Currency",
-	]],
-	["20th January, 2013", [
-		"In payment matching tool only show outstanding invoices"
-	]],
-	["18th January, 2013", [
-		"Buying: Added Price List to purchase cycle",
-		"C-Form now submittable",
-	]],
-	["16th January, 2013", [
-		"Incoming rate for sales return as per delivery note outgoing rate",
-		"Job Applicant: Track Job Applicants and extract them from a mailbox like 'jobs@example.com'. See <a href='#Form/Jobs Email Settings'>Jobs Email Settings</a>.",
-		"Extract leads: Extract Leads from a mailbox like 'sales@example.com'. See <a href='#Form/Sales Email Settings'>Sales Email Settings</a>.",
-	]],
-	["14th January, 2013", [
-		"Stock Reconciliation: Ability to update Valuation Rate",
-		"Time Field: Added Datetime and new Time Picker",
-		"Task, Support Ticket, Customer Issue: Added script to update resolution times"
-	]],
-	["10th January 2013", [
-		"Modules: New module pages with open item count and multi-lingual.",
-		"Permissions: Added new 'Report' permission. Only users with report permissions will be allowed.",
-	]],
-	["7th January 2013", [
-		"Language (backend): Integrated language libraries."]],
-	["4th January 2013", [
-		"Support Analytics: Simple Tool to Plot Number Tickets and time to Closing",
-		"Workflow: Added Workflow Help",
-	]],
-	["2nd January 2013", [
-		"Permission Manager: New Design with better help and better advanced permission selection.",
-		"User Properties: Better way to set User Properties (defaults).",
-	]],
-	["1st January 2013", [
-		"Trial Balance: Added an option to see the report <b>without period closing entry</b>\
-			You will find this checkbox at the bottom of the report.",
-		"General Ledger: Now, on filter of any account group, you will have an option to see \
-			the report <b>grouped by ledgers</b> under that group and with opening \
-			and closing balance for each of them."
-	]],
-	["28th December 2012", [
-		"Workflow: Added System for Multi-level approval before Submission. \
-			<br>See video at <a href='https://www.youtube.com/watch?v=zuGv59_wJKw' \
-			target='_blank'>https://www.youtube.com/watch?v=zuGv59_wJKw</a>.",
-		"Stock Level Report: New report to see available and estimated qty of stock",
-	]],
-	["27th December 2012", [
-		"Website: Added auto-generated Contact Us and About Us Pages",
-		"Website: Added option to create slideshows and add them to Pages, Products and Product Groups",
-	]],
-	["25th December 2012", [
-		"Stock Balance Report: Inflow, outflow and balance of stock within a defined period",
-		"Stock Reports: Added Brand filter on some of the reports"
-	]],
-	["21st December 2012", [
-		"Manufacturing: For Material Transfer against Production Order, \
-			fetch quantity pending to be transferred for each item.",
-		"Desktop: New Icons and now sortable by dragging."
-	]],
-	["20th December 2012", [
-		"Website: Create Product Search Page, Product Group Page on the website.",
-		"Manufacturing: \
-			<a href=\"https://github.com/webnotes/erpnext/wiki/Changes-in-Manufacturing-Module\" \
-				target=\"_blank\">Refactored code, improved usability.</a>"
-	]],
-	["14th December 2012", [
-		"Website Module: Major Refactor - removed framework code from website."
-	]],
-	["12th December 2012", [
-		"Attachments: Attachments can be set as URLs or File Uploads. This will help if people want to share documents from Google Docs, Dropbox and other such services (esp for the Product listings on websites).",
-		"Global Defaults: Session Expiry can now be set in Global Defaults.",
-	]],
-	["6th December 2012", [
-		"Rename: Cost Center, Item Group, Customer Group, Supplier Type, Territory, Sales Person can now be renamed.",
-		"Newsletter: Send newsletter to a list of email addresses.",
-	]],
-	["5th December 2012", [
-		"Leave Application: Now can set approver.",
-		"New Roles Added: Leave Approver and Expense Approver.",
-		"Production Order: Now linked with Sales Order.",
-		"Production Planning Tool: The field 'Allow SA items as raw material' has been renamed to 'Use multi-level BOM', 'Include in plan' column from SO table has been deleted",
-		"Batch Numbers: Batch nos are now filtered with Item and available qty at time of selection in transactions.",
-		"BOM: 'Update Costing' button has been deleted, once submitted cost are fixed.",
-		"[For indian customer only] Deprecated TDS related documents and fields. Old TDS amount added into tax table in Purchase Invoice and entries table in case of JV",
-	]],
-	["4th December 2012", [
-		"POS / Mode of Payment: Select default bank / cash account in Mode of Payment and it will be automatically selected in POS Invoice.",
-		"Email: Add contact name as 'Dear so-and-so' in Email.",
-		"Report Builder: Remember last column setup for users",
-		"Report Builder: Autoset column width (remember)",
-	]],
-	["3rd December 2012", [
-		"Linked With: Added new Linked with in all Forms.",
-		"Rename Tool: Documents that can be renamed will have a 'Rename' option in the sidebar (wherever applicable).",
-		"Chart of Accounts: Ability to rename / delete from Chart of Accounts.",
-		"Delivery and Billing status now updated in sales order, if POS made against that sales order"
-	]],
-	["30th November 2012", [
-		"Auto Notifications: System will prompt user with pre-set message for auto-notification.",
-		"Employee: Users with role Employee will only be able to see their Employee Records.",
-		"Leave Application: Users with role Employee can now apply for leaves. HR User will be able to set Approval or Rejection.",
-	]],
-	["29th November 2012", [
-		"EMail: Form Emails are now via Communication (with Rich Text Etc.).",
-	]],
-	["28th November 2012", [
-		"Profile: Profile Settings (My Settings...) is now the Profile Form.",
-		"Financial Analytics: Show Net Profit/Loss",
-	]],
-	["27th November 2012", [
-		"Communication: Made common communication thread and added it in Lead, Contact.",
-	]],
-	["26th November 2012", [
-		"Email: Added User Signature",
-		"Support Ticket: Added link to Lead / Contact. If incoming ticket is not from an existing Lead / Contact, create a new Lead",
-	]],
-	["24ht November 2012", [
-		"Support Ticket: Support Ticket Response is now Communication",
-	]],
-	["23rd November 2012", [
-		"General Ledger: Auto-suggest Accounts for filtering",
-		"Calendar: User Interface Fixes, small text for events",
-		"Email Settings: Setup outgoing email without a login id \
-			(applicable for a local email server)",
-		"Delivered Items To Be Billed: New report in 'Accounts'",
-	]],
-	["22nd November 2012", [
-		"Support Ticket: Compose a reply using Markdown",
-		"Supplier Link Field: Search by Supplier Name instead of ID",
-		"Supplier Link Field: Show only ID in auto-suggest \
-			if ID created using Supplier Name (as defined in Global Defaults)",
-	]],
-	["21st November 2012", [
-		"Tree Report: Added missing expand / collapse buttons.",
-		"List View: Do not show restricted records, as defined in Permission Manager.",
-		"Customer Link Field: Search by Customer Name instead of ID",
-		"Customer Link Field: Show only ID in auto-suggest \
-			if ID created using Customer Name (as defined in Global Defaults)",
-		"Letter Head: Fixed bug causing cursor position to reset in Content",
-	]],
-	["20th November 2012", [
-		"Auto-suggest: Show main label in bold",
-		"Data Import Tool: Fixed #Name error faced by MS Excel users in import template",
-	]],
-	["19th November 2012", [
-		"Sales Order: Bugfix - Shipping Address should be a Link field.",
-		"Link Fields: Search Profile, Employee and Lead using Full Names instead of ID.",
-		"Knowledge Base: Always open links, embedded in an answer, in a new tab."
-	]],
-	["16th November 2012", [
-		"Appraisal: Cleaned up form and logic. Removed complex and unnecessary approval logic, \
-			the appraiser can select the template and role and make an appraisal. \
-			Normal user can see self created Appraisals. HR Manager can see all Appraisals.",
-		"Project: Bugfix in Gantt Chart (caused due to jquery conflict)",
-		"Serial No: Ability to rename.",
-		"Rename Tool: Added Serial No to rename tool.",
-	]],
-	["15th November 2012", [
-		"Customer Issue: Moved all allocations to 'Assigned' so that there is avoid duplication fo features.",
-		"Letter Head: Show preview, make upload button more visible.",
-		"Price List: Removed import, now import from Data Import Tool.",
-		"Data Import Tool: More help in template.",
-	]],
-	["14th November 2012", [
-		"Employee: If User ID is set, Employee Name will be updated in defaults and will appear automatically in all relevant forms.",
-		"Backups: Link to download both database and files.",
-	]],
-	["13th November 2012", [
-		"Customize Form View: Validate correct 'Options' for Link and Table fields.",
-		"Report Builder (new): Added formatters for Date, Currency, Links etc.",
-		"Trial Balance (new): Feature to export Ledgers or Groups selectively. Indent Groups with spaces.",
-		"General Ledger (new): Will show entries with 'Is Opening' as Opening.",
-		"General Ledger (new): Show against account entries if filtered by account.",
-	]],
-	["12th November 2012", [
-		"Document Lists: Automatically Refresh lists when opened (again).",	
-		"Messages: Popups will not be shown (annoying).",	
-		"Email Digest: New option to get ten latest Open Support Tickets.",
-		"Journal Voucher: 'Against JV' will now be filtered by the Account selected.",
-		"Query Report: Allow user to rename and save reports.",
-		"Employee Leave Balance Report: Bugfix"
-	]]
-];
-
 wn.pages['latest-updates'].onload = function(wrapper) { 
 	wn.ui.make_app_page({
 		parent: wrapper,
@@ -295,16 +6,40 @@
 	});
 		
 	var parent = $(wrapper).find(".layout-main");
+	parent.html('<div class="progress progress-striped active">\
+		<div class="progress-bar" style="width: 100%;"></div></div>')
 	
-	$("<p class='help'>Report issues by sending a mail to <a href='mailto:support@erpnext.com'>support@erpnext.com</a> or \
-		via <a href='https://github.com/webnotes/erpnext/issues'>GitHub Issues</a></p><hr>").appendTo(parent);
-	
-	
-	$.each(erpnext.updates, function(i, day) {
-		$("<h4>" + day[0] + "</h4>").appendTo(parent);
-		$.each(day[1], function(j, item) {
-			$("<p>").html(item).appendTo(parent);
-		});
-		$("<hr>").appendTo(parent);
-	});
+	wn.call({
+		method:"home.page.latest_updates.latest_updates.get",
+		callback: function(r) {
+			parent.empty();
+			$("<p class='help'>Report issues at\
+				<a href='https://github.com/webnotes/erpnext/issues'>GitHub Issues</a></p>\
+				<hr><h3>Commit Log</h3>")
+					.appendTo(parent);
+				
+			var $tbody = $('<table class="table table-bordered"><tbody></tbody></table>')
+				.appendTo(parent).find("tbody");
+			$.each(r.message, function(i, log) {
+				if(log.message.indexOf("[")!==-1) {
+					log.message = log.message.replace(/(\[[^\]]*\])/g, 
+						function(match, p1, offset, string) { 
+							match = match.toLowerCase();
+							var color_class = "";
+							$.each(["bug", "fix"], function(i, v) {
+								if(!color_class && match.indexOf(v)!==-1)
+									color_class = "label-danger";
+							});
+							return  '<span class="label ' + color_class +'">' + p1.slice(1,-1) + '</span> ' 
+						});
+					log.repo = log.repo==="lib" ? "wnframework" : "erpnext";
+					$(repl('<tr>\
+						<td><b><a href="https://github.com/webnotes/%(repo)s/commit/%(commit)s" \
+							target="_blank">%(message)s</b>\
+						<br><span class="text-muted">By %(author)s on %(date)s</span></td></tr>', log)).appendTo($tbody);
+				}
+				
+			})
+		}
+	})
 };
\ No newline at end of file
diff --git a/home/page/latest_updates/latest_updates.py b/home/page/latest_updates/latest_updates.py
new file mode 100644
index 0000000..697f6c4
--- /dev/null
+++ b/home/page/latest_updates/latest_updates.py
@@ -0,0 +1,58 @@
+from __future__ import unicode_literals
+import webnotes, os, subprocess, tempfile, json, datetime
+
+@webnotes.whitelist()
+def get():
+	with open("../app/home/page/latest_updates/latest_updates.json", "r") as lufile:
+		return json.loads(lufile.read())
+
+def make():
+	def add_to_logs(out, repo):
+		out.seek(0)
+		last_commit = None
+		for l in out.readlines():
+			if last_commit is not None:
+				if l.startswith("Date:"):
+					last_commit["date"] = l[8:-1]
+					last_commit["datetime"] = datetime.datetime.strptime(last_commit["date"][:-6], "%a %b %d %H:%M:%S %Y")
+				if l.startswith("Author:"):
+					last_commit["author"] = l[8:-1]
+				if l.startswith("    "):
+					last_commit["message"] = l[4:-1]
+			if l.startswith("commit"):
+				last_commit = {
+					"repo": repo,
+					"commit": l.split(" ")[1][:-1]
+				}
+				logs.append(last_commit)
+
+	os.chdir("lib")
+	logs = []
+	out_lib = tempfile.TemporaryFile()
+	subprocess.call("git --no-pager log -n 200", shell=True, stdout=out_lib)
+	add_to_logs(out_lib, "lib")
+
+	os.chdir("../app")
+	out_app = tempfile.TemporaryFile()
+	subprocess.call("git --no-pager log -n 200", shell=True, stdout=out_app)
+	add_to_logs(out_app, "app")
+	
+	logs.sort(key=lambda a: a["datetime"], reverse=True)
+	for a in logs:
+		del a["datetime"]
+		
+	for i in xrange(len(logs)):
+		if i and logs[i]["message"]==logs[i-1]["message"]:
+			logs[i]["delete"] = True
+			
+		if logs[i]["message"].startswith("Merge branch") or "[" not in logs[i]["message"]:
+			logs[i]["delete"] = True
+	
+	logs = filter(lambda a: a if not a.get("delete") else None, logs)
+	
+	os.chdir("..")
+	with open("app/home/page/latest_updates/latest_updates.json", "w") as lufile:
+		lufile.write(json.dumps(logs, indent=1, sort_keys=True))
+	
+if __name__=="__main__":
+	make()
\ No newline at end of file
diff --git a/public/js/toolbar.js b/public/js/toolbar.js
index 4becb23..91427b3 100644
--- a/public/js/toolbar.js
+++ b/public/js/toolbar.js
@@ -31,6 +31,8 @@
 		'+wn._('Live Chat')+'</a></li>')
 	
 	erpnext.toolbar.set_new_comments();
+
+	$("#toolbar-tools").append('<li><a href="#latest-updates">Latest Updates</li>');
 }
 
 erpnext.toolbar.set_new_comments = function(new_comments) {
