diff --git a/4.29/images/.gitkeep b/4.29/images/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/4.29/images/.gitkeep
diff --git a/4.29/index.html b/4.29/index.html
new file mode 100644
index 0000000..89975fe
--- /dev/null
+++ b/4.29/index.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2018. This page is made available under license. For full details see: https://www.eclipse.org/legal/notice.html">
+<meta http-equiv="Content-Language" content="en-us">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<link rel="stylesheet" href="news.css" type="text/css">
+<title>Eclipse 4.29 - New and Noteworthy</title>
+</head>
+<body>
+
+  <h1>Eclipse 4.29 - New and Noteworthy</h1>
+  <p>
+    Welcome to the Eclipse SDK project!
+  </p>
+  <p>
+    The Eclipse SDK project is part of the Eclipse 2023-09 simultaneous release.
+    The Eclipse SDK and related resources can be downloaded from the <a href="https://download.eclipse.org/eclipse/downloads/">Eclipse Project downloads page</a>.
+    The Eclipse installer and other packages can be downloaded from the <a href="https://www.eclipse.org/downloads/packages/installer">Eclipse Installer</a> page.
+  </p>
+  
+  <!--
+  <p>
+  	The 4.29 release notes for the Eclipse SDK project can be found <a href="https://www.eclipse.org/eclipse/development/readme_eclipse_4.29.php">here</a>.
+  </p>
+  -->
+  
+  <p>Here are some of the more noteworthy items available in this release.</p>
+
+  <blockquote>
+    <ul>
+      <li><a href="platform.php">New features in the Platform and Equinox</a></li>
+      <li><a href="jdt.php">New features for Java developers</a></li>
+      <li><a href="platform_isv.php">New APIs in the Platform and Equinox</a></li>
+      <li><a href="pde.php">New features for plug-in developers</a></li>
+    </ul>
+  </blockquote>
+  <p>
+    <b>Windows 10 users:</b> <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=548443">Windows 10 Defender significantly slows down Eclipse</a>, reason being Windows 10 Defender scanning the JAR files.
+    The problem has been reported to Microsoft <a href="https://github.com/microsoft/java-wdb/issues/9">here</a>.
+    Until then, a workaround to this problem is to add Eclipse root directory to Windows 10 Defender's exclusion list, detailed steps are shared <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=548443#c28">here</a>.
+  </p>
+  <p>Note: This is not just an Eclipse issue on Windows 10.</p>
+
+</body>
+</html>
diff --git a/4.29/index.php b/4.29/index.php
new file mode 100644
index 0000000..dd14f02
--- /dev/null
+++ b/4.29/index.php
@@ -0,0 +1,10 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
+$App 	= new App();
+$Nav	= new Nav();
+$Menu 	= new Menu();
+$right_nav = FALSE;
+$keyword = 'news, new and noteworthy, eclipse';
+require("newsCommon.php");
diff --git a/4.29/jdt.html b/4.29/jdt.html
new file mode 100644
index 0000000..f3410ee
--- /dev/null
+++ b/4.29/jdt.html
@@ -0,0 +1,118 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2018, 2019. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."/>
+<meta http-equiv="Content-Language" content="en-us"/>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<link rel="STYLESHEET" href="news.css" type="text/css"/>
+<style type="text/css">
+body {max-width: 900px;}
+table.news col.title {width: 30%;}
+/*img {max-width: 520px;}*/
+table.news {table-layout: fixed; border-collapse: collapse; width: 100%;}
+table.news td {border-top: solid thin black; padding: 10px; overflow: visible;}
+table.news tr {vertical-align: top;}
+table.news tr td.section {font-size: 20px; font-weight: bold;}
+table.news tr td.title {vertical-align: top; font-weight: bold;}
+table.news tr td.content {vertical-align: top;}
+ul {padding-left: 13px;}
+</style>
+<title>Eclipse Project 4.29 - New and Noteworthy</title>
+</head>
+
+<body>
+<h2>Java development tools</h2>
+<ul>
+	<!--<li><a href="#JavaXX">Java&trade; XX Support</a></li>-->
+	<li><a href="#JUnit">JUnit</a></li>
+	<li><a href="#JavaEditor">Java Editor</a></li>
+	<li><a href="#JavaViewsAndDialogs">Java Views and Dialogs</a></li>
+	<li><a href="#JavaFormatter">Java Formatter</a></li>
+	<li><a href="#Debug">Debug</a></li>
+	<li><a href="#JDTDev">JDT Developers</a></li>
+</ul>
+
+<!-- ****************** START OF N&N TABLE ****************** -->
+<table class="news">
+<colgroup>
+  <col class="title" />
+  <col />
+</colgroup>
+<tbody>
+
+  <!-- ******************* Java XX Support ************************************* -->
+  <!--
+  <tr>
+    <td id="JavaXX" class="section" colspan="2">
+    <h2>Java&trade; XX Support </h2>
+    </td>
+  </tr>
+  -->
+  <!-- ******************* End of Java XX Support ************************************* -->
+
+  <!-- ******************* JUnit ************************************* -->
+  <tr>
+    <td id="JUnit" class="section" colspan="2">
+    <h2>JUnit</h2>
+    </td>
+  </tr>
+  <!-- ******************* End of JUnit ************************************* -->
+
+  <!-- ******************* Java Editor ************************************* -->
+  <tr>
+    <td id="JavaEditor" class="section" colspan="2">
+    <h2>Java Editor </h2>
+    </td>
+  </tr>
+  <!-- ******************* End of Java Editor ************************************* -->
+
+  <!-- ******************* Java Views and Dialogs ************************************* -->
+  <tr>
+    <td id="JavaViewsAndDialogs" class="section" colspan="2">
+    <h2>Java Views and Dialogs</h2>
+    </td>
+  </tr>
+  <!-- ******************* End of Java Views and Dialogs ************************************* -->
+
+  <!-- ******************* Java Compiler ************************************* -->
+  <tr>
+    <td id="JavaCompiler" class="section" colspan="2">
+    <h2>Java Compiler</h2>
+    </td>
+  </tr>
+  <!-- ******************* End of Java Compiler ************************************* -->
+
+  <!-- ******************* Java Formatter ************************************* -->
+  <tr>
+    <td id="JavaFormatter" class="section" colspan="2">
+    <h2>Java Formatter </h2>
+    </td>
+  </tr>
+  <!-- ******************* End of Java Formatter ************************************* -->
+  
+  <!-- *********************** Debug ******************************** -->
+  <tr>
+    <td id="Debug" class="section" colspan="2">
+    <h2>Debug</h2>
+    </td>
+  </tr>
+  <!--************************ End of Debug ******************************** -->
+
+  <!-- *********************** JDT Developers ******************************** -->
+  <tr>
+    <td id="JDTDev" class="section" colspan="2">
+    <h2>JDT Developers</h2>
+    </td>
+  </tr>
+  <!-- *********************** End of JDT Developers ******************************** -->
+  <tr><td colspan="2"/></tr>
+</tbody>
+</table>
+<!-- ****************** END OF N&N TABLE ****************** -->
+
+<script type="text/javascript" src="scripts.js"></script>
+  <p style="text-align:center">
+    <a href="platform.php">Previous</a> <a style="margin:1em" href=".">Up</a> <a href="platform_isv.php">Next</a>
+  </p>
+</body>
+</html>
diff --git a/4.29/jdt.php b/4.29/jdt.php
new file mode 100644
index 0000000..dd14f02
--- /dev/null
+++ b/4.29/jdt.php
@@ -0,0 +1,10 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
+$App 	= new App();
+$Nav	= new Nav();
+$Menu 	= new Menu();
+$right_nav = FALSE;
+$keyword = 'news, new and noteworthy, eclipse';
+require("newsCommon.php");
diff --git a/4.29/news.css b/4.29/news.css
new file mode 100644
index 0000000..0021f83
--- /dev/null
+++ b/4.29/news.css
@@ -0,0 +1,79 @@
+/* *** enable this section to preview the html files locally ***
+p, table, td, th {  font-family: verdana, arial, helvetica, geneva; font-size: 10pt}
+pre {  font-family: "Courier New", Courier, mono; font-size: 10pt}
+h2 { font-family: verdana, arial, helvetica, geneva; font-size: 18pt; font-weight: bold ; line-height: 14px}
+code {  font-family: "Courier New", Courier, mono; font-size: 10pt}
+sup {  font-family: verdana, arial, helvetica, geneva; font-size: 10px}
+h3 {  font-family: verdana, arial, helvetica, geneva; font-size: 14pt; font-weight: bold}
+li {  font-family: verdana, arial, helvetica, geneva; font-size: 10pt}
+h1 {  font-family: verdana, arial, helvetica, geneva; font-size: 24pt; font-weight: bold}
+body {  font-family: verdana, arial, helvetica, geneva; font-size: 10pt; margin-top: 5mm; margin-left: 3mm}
+.indextop { font-size: x-large; font-family: verdana, arial, helvetica, sans-serif; font-weight: bold}
+.indexsub { font-size: xx-small; font-family: verdana, arial, helvetica, sans-serif; color: #8080FF}
+a.bar:link {  text-decoration: none; color: #FFFFFF}
+a.bar:visited {  color: #FFFFFF; text-decoration: none}
+a.bar:hover {  color: #FFFFFF; text-decoration: underline}
+a.bar {  color: #FFFFFF}
+table.news tr td.title a { text-decoration: none; color: #000000; }
+table.news tr td.title a:hover { text-decoration: underline; color: #000000; }
+*/
+
+.indextop {
+  font-size: x-large;
+  font-family: verdana, arial, helvetica, sans-serif;
+  font-weight: bold
+}
+
+.indexsub {
+  font-size: xx-small;
+  font-family: verdana, arial, helvetica, sans-serif;
+  color: #8080FF
+}
+
+a.bar:link {
+  text-decoration: none;
+  color: #FFFFFF
+}
+
+a.bar:visited {
+  color: #FFFFFF;
+  text-decoration: none
+}
+
+a.bar:hover {
+  color: #FFFFFF;
+  text-decoration: underline
+}
+
+a.bar {
+  color: #FFFFFF
+}
+
+p {
+  margin: 1em 0; /* undo styles.min.css */
+}
+
+table.news td {
+  padding: 10px; /* undo styles.min.css */
+  border-top: solid thin black;
+}
+
+table.news tr {
+  vertical-align: top;
+}
+
+table.news tr td.section {
+  font-size: 20px;
+  font-weight: bold;
+}
+
+table.news tr td.title {
+  vertical-align: top;
+  width: 30%;
+  font-weight: bold;
+}
+
+table.news tr td.content {
+  vertical-align: top;
+  width: 70%;
+}
diff --git a/4.29/newsCommon.php b/4.29/newsCommon.php
new file mode 100644
index 0000000..295a641
--- /dev/null
+++ b/4.29/newsCommon.php
@@ -0,0 +1,44 @@
+<?php
+function innerHTML($el) {
+	$doc = new DOMDocument();
+	$doc->appendChild($doc->importNode($el, TRUE));
+	$html = trim($doc->saveHTML());
+	$tag = $el->nodeName;
+	$html =  preg_replace('@^<' . $tag . '[^>]*>|</' . $tag . '>$@', '', $html);
+	return $html;
+}
+
+if(!isset($keyword) OR $keyword == ""){
+	$keyword = "eclipse 4.8, photon, eclipse, new and noteworthy";
+}
+
+$file = basename($App->getScriptName(), ".php").'.html';
+
+$doc = new DOMDocument;
+$doc->loadhtmlfile($file);
+
+$body = $doc->getElementsByTagName('body')->item(0);
+$body = innerHTML($body);
+
+$title = $doc->getElementsByTagName('title')->item(0);
+$title = innerHTML($title);
+#
+# Begin: page-specific settings.  Change these.
+$pageTitle 		= $title;
+$pageKeywords	= $keyword;
+$pageAuthor		= "";
+
+
+$html = $body;
+//$html .='</div></div>';
+
+$html = mb_convert_encoding($html, "HTML-ENTITIES", "auto");
+$App->Promotion = FALSE;
+
+// if theme is not provided by caller, we specify "current one", explicitly hard-coded
+if (! isset($theme)) {
+  $theme = "solstice";
+}
+
+$App->AddExtraHtmlHeader('<link rel="stylesheet" href="news.css" type="text/css">');
+$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
diff --git a/4.29/pde.html b/4.29/pde.html
new file mode 100644
index 0000000..819f52d
--- /dev/null
+++ b/4.29/pde.html
@@ -0,0 +1,72 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2018. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."/>
+<meta http-equiv="Content-Language" content="en-us"/>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<link rel="STYLESHEET" href="news.css" type="text/css"/>
+<style type="text/css">
+body {max-width: 900px;}
+table.news col.title {width: 30%;}
+/*img {max-width: 520px;}*/
+table.news {table-layout: fixed; border-collapse: collapse; width: 100%;}
+table.news td {border-top: solid thin black; padding: 10px; overflow: visible;}
+table.news tr {vertical-align: top;}
+table.news tr td.section {font-size: 20px; font-weight: bold;}
+table.news tr td.title {vertical-align: top; font-weight: bold;}
+table.news tr td.content {vertical-align: top;}
+ul {padding-left: 13px;}
+</style>
+<title>Eclipse Project 4.29 - New and Noteworthy</title>
+</head>
+
+<body>
+<h2>Plug-in Development Environment</h2>
+<ul>
+	<li><a href="#dialogs-wizards-views">Dialogs, Wizards and Views</a></li>
+	<li><a href="#editors">Editors</a></li>
+	<li><a href="#APITools">API Tools</a></li>
+	<li><a href="#pde-compiler">PDE Compiler</a></li>
+</ul>
+
+<!-- ****************** START OF N&N TABLE****************** -->
+<table class="news">
+<colgroup>
+  <col class="title" />
+  <col />
+</colgroup>
+<tbody>
+  <!-- ******************** Dialogs, Wizard and Views ********************** -->
+  <tr>
+    <td id="dialogs-wizards-views" class="section" colspan="2"><h2>Dialogs, Wizards and Views</h2></td>
+  </tr>
+  <!-- ******************** End ofDialogs, Wizard and Views ********************** -->
+  
+  <!-- ******************** Editors ********************** -->
+  <tr>
+    <td id="editors" class="section" colspan="2"><h2>Editors</h2></td>
+  </tr>
+  <!-- ******************** End of Editors ********************** -->
+
+  <!-- ******************** APITools ********************** -->
+  <tr>
+    <td id="APITools" class="section" colspan="2"><h2>API Tools</h2></td>
+  </tr>
+  <!-- ******************** End of APITools ********************** -->
+  
+   <!-- ******************** PDE Compiler ********************** -->
+  <tr>
+    <td id="pde-compiler" class="section" colspan="2"><h2>PDE Compiler</h2></td>
+  </tr>
+   <!-- ******************** End of PDE Compiler ********************** --> 
+  <tr><td colspan="2"/></tr>
+</tbody>
+</table>
+<!-- ****************** END OF N&N TABLE ****************** -->
+
+<script type="text/javascript" src="scripts.js"></script>
+  <p style="text-align:center">
+    <a href="platform_isv.php">Previous</a> <a style="margin:1em" href=".">Up</a> <span style="color:#808080">Next</span>
+  </p>
+</body>
+</html>
diff --git a/4.29/pde.php b/4.29/pde.php
new file mode 100644
index 0000000..dd14f02
--- /dev/null
+++ b/4.29/pde.php
@@ -0,0 +1,10 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
+$App 	= new App();
+$Nav	= new Nav();
+$Menu 	= new Menu();
+$right_nav = FALSE;
+$keyword = 'news, new and noteworthy, eclipse';
+require("newsCommon.php");
diff --git a/4.29/platform.html b/4.29/platform.html
new file mode 100644
index 0000000..4005b6a
--- /dev/null
+++ b/4.29/platform.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2018, 2019. This page is made available under license. For full details, see the LEGAL section in the documentation that contains this page."/>
+<meta http-equiv="Content-Language" content="en-us"/>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<link rel="STYLESHEET" href="news.css" type="text/css"/>
+<style type="text/css">
+body {max-width: 900px;}
+table.news col.title {width: 30%;}
+/*img {max-width: 520px;}*/
+table.news {table-layout: fixed; border-collapse: collapse; width: 100%;}
+table.news td {border-top: solid thin black; padding: 10px; overflow: visible;}
+table.news tr {vertical-align: top;}
+table.news tr td.section {font-size: 20px; font-weight: bold;}
+table.news tr td.title {vertical-align: top; font-weight: bold;}
+table.news tr td.content {vertical-align: top;}
+ul {padding-left: 13px;}
+</style>
+<title>Eclipse Project 4.29 - New and Noteworthy</title>
+</head>
+
+<body>
+<h2>Platform and Equinox</h2>
+<ul>
+    <li><a href="#ViewsAndDialogs">Views, Dialogs and Toolbar</a></li>
+    <li><a href="#TextEditors">Text Editors</a></li>
+    <li><a href="#Preferences">Preferences</a></li>
+    <li><a href="#StylingThemes">Themes and Styling</a></li>
+    <li><a href="#GeneralUpdates">General Updates</a></li>
+</ul>
+
+<!-- ****************** START OF N&N TABLE ****************** -->
+<table class="news">
+<colgroup>
+  <col class="title" />
+  <col />
+</colgroup>
+<tbody>
+  <!-- ******************* Views, Dialogs and Toolbar ************************************* -->
+  <tr>
+    <td id="ViewsAndDialogs" class="section" colspan="2">
+    <h2>Views, Dialogs and Toolbar </h2>
+    </td>
+  </tr>
+  <!-- ******************* End of Views, Dialogs and Toolbar ************************************* -->
+
+  <!-- ******************* Text Editors ************************************* -->
+  <tr>
+    <td id="TextEditors" class="section" colspan="2">
+    <h2>Text Editors </h2>
+    </td>
+  </tr>
+  <!-- ******************* End of Text Editors ************************************* -->
+
+  <!-- ****************** Preferences ************************************* -->
+  <tr>
+    <td id="Preferences" class="section" colspan="2">
+    <h2>Preferences </h2>
+    </td>
+  </tr>
+  <!-- ****************** End of Preferences ************************************* -->
+
+  <!-- ******************* Themes and Styling ************************************* -->
+  <tr>
+    <td id="StylingThemes" class="section" colspan="2">
+    <h2>Themes and Styling </h2>
+    </td>
+  </tr>
+  <!-- ******************* End of Themes and Styling ************************************* -->
+
+  <!-- ******************* General Updates ************************************* -->
+  <tr>
+    <td id="GeneralUpdates" class="section" colspan="2">
+    <h2>General Updates </h2>
+    </td>
+  </tr>
+  <!-- ******************* End of General Updates ************************************* -->
+  <tr><td colspan="2"/></tr>
+</tbody>
+</table>
+<!-- ****************** END OF N&N TABLE ****************** -->
+
+<script type="text/javascript" src="scripts.js"></script>
+  <p style="text-align:center">
+    <span style="color:#808080">Previous</span> <a style="margin:1em" href=".">Up</a> <a href="jdt.php">Next</a>
+  </p>
+</body>
+</html>
diff --git a/4.29/platform.php b/4.29/platform.php
new file mode 100644
index 0000000..dd14f02
--- /dev/null
+++ b/4.29/platform.php
@@ -0,0 +1,10 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
+$App 	= new App();
+$Nav	= new Nav();
+$Menu 	= new Menu();
+$right_nav = FALSE;
+$keyword = 'news, new and noteworthy, eclipse';
+require("newsCommon.php");
diff --git a/4.29/platform_isv.html b/4.29/platform_isv.html
new file mode 100644
index 0000000..843e9e2
--- /dev/null
+++ b/4.29/platform_isv.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2018, 2019. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page."/>
+<meta http-equiv="Content-Language" content="en-us"/>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<link rel="STYLESHEET" href="news.css" type="text/css"/>
+<style type="text/css">
+body {max-width: 900px;}
+table.news col.title {width: 30%;}
+/*img {max-width: 520px;}*/
+table.news {table-layout: fixed; border-collapse: collapse; width: 100%;}
+table.news td {border-top: solid thin black; padding: 10px; overflow: visible;}
+table.news tr {vertical-align: top;}
+table.news tr td.section {font-size: 20px; font-weight: bold;}
+table.news tr td.title {vertical-align: top; font-weight: bold;}
+table.news tr td.content {vertical-align: top;}
+ul {padding-left: 13px;}
+</style>
+<title>Eclipse Project 4.29 - New and Noteworthy</title>
+</head>
+
+<body>
+<h2>Platform and Equinox API</h2>
+  <ul>
+    <li><a href="#Platform">Platform Changes</a></li>
+    <li><a href="#SWT">SWT Changes</a></li>
+  </ul>
+
+<!-- ****************** START OF N&N TABLE****************** -->
+<table class="news">
+<colgroup>
+  <col class="title" />
+  <col />
+</colgroup>
+<tbody>
+  <!-- ******************** Platform ********************** -->
+  <tr>
+    <td id="Platform" class="section" colspan="2"><h2>Platform Changes</h2></td>
+  </tr>
+  <!-- ******************** End of Platform ********************** -->
+
+  <!-- *********************** SWT *********************** -->
+  <tr>
+    <td id="SWT" class="section" colspan="2"><h2>SWT Changes</h2></td>
+  </tr>
+  <!-- *********************** End of SWT *********************** -->
+  <tr><td colspan="2"/></tr>
+</tbody>
+</table>
+<!-- ****************** END OF N&N TABLE ****************** -->
+
+<script type="text/javascript" src="scripts.js"></script>
+  <p style="text-align:center">
+    <a href="jdt.php">Previous</a> <a style="margin:1em" href=".">Up</a> <a href="pde.php">Next</a>
+  </p>
+</body>
+</html>
diff --git a/4.29/platform_isv.php b/4.29/platform_isv.php
new file mode 100644
index 0000000..dd14f02
--- /dev/null
+++ b/4.29/platform_isv.php
@@ -0,0 +1,10 @@
+<?php
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
+require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
+$App 	= new App();
+$Nav	= new Nav();
+$Menu 	= new Menu();
+$right_nav = FALSE;
+$keyword = 'news, new and noteworthy, eclipse';
+require("newsCommon.php");
diff --git a/4.29/scripts.js b/4.29/scripts.js
new file mode 100644
index 0000000..4a6f333
--- /dev/null
+++ b/4.29/scripts.js
@@ -0,0 +1,11 @@
+var titles = document.getElementsByClassName("title");
+for (var i = 0; i < titles.length; ++i) {
+  var title = titles[i];
+  if (title.parentNode.id) {
+    var link = document.createElement("a");
+    link.href = "#" + title.parentNode.id;
+    link.innerHTML = title.innerHTML;
+    title.innerHTML = "";
+    title.appendChild(link);
+  }
+}
\ No newline at end of file
