"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Omar Polo <op@omarpolo.com>
Subject:
gotwebd: class-ify some CSS selector and close a couple of divs
To:
gameoftrees@openbsd.org
Cc:
Tracey Emery <tracey@traceyemery.net>
Date:
Sat, 06 Aug 2022 18:41:24 +0200

Download raw body.

Thread
i noticed that gotwebd uses a lot of ids for element that are present
multiple times in a page.  Diff below moves all such ids to classes
(well, only the one that I've spotted so far.)  We could even consider
to move everything from ids to classes to simplify the work in the
future.

While here i've also deleted some unused css (or maybe i should keep
it for the future?) and fixed two HTML errors: one extra div closed in
one place and one missing div closed in another place.

I'm running my gotwebd with this applied and seems fine.


diff /home/op/w/got
commit - 14aa6a729393403e45e3c78a2224d1c323fe0c06
path + /home/op/w/got
blob - 4b9d5d8b3a18a88189f1c92d789387f654bd25ac
file + gotwebd/files/htdocs/gotwebd/gotweb.css
--- gotwebd/files/htdocs/gotwebd/gotweb.css
+++ gotwebd/files/htdocs/gotwebd/gotweb.css
@@ -60,12 +60,12 @@ body {
 #logo {
 	height: 50px;
 }
-#refs_str {
+.refs_str {
 	background-color: #243647;
 	color: #ffffff;
 	font-style: italic;
 }
-#dotted_line {
+.dotted_line {
 	clear: left;
 	float: left;
 	width: 100%;
@@ -106,12 +106,6 @@ body {
 	color: #ffffff;
 	text-decoration: none;
 }
-#search {
-	float: right;
-	padding-right: 10px;
-	padding-top: 5px;
-	padding-bottom: 5px;
-}
 #got_link {
 	float: left;
 	padding-bottom: 10px;
@@ -142,13 +136,13 @@ body {
 	text-align: right;
 	overflow: hidden;
 }
-#navs_wrapper {
+.navs_wrapper {
 	clear: left;
 	float: left;
 	width: 100%;
 	background-color: #ced7e0;
 }
-#navs {
+.navs {
 	padding-left: 10px;
 	padding-top: 2px;
 	padding-bottom: 2px;
@@ -225,7 +219,7 @@ body {
 	white-space: pre-wrap;
 }
 
-#header_commit_title {
+.header_commit_title {
 	clear: left;
 	float: left;
 	width: 6.5em;
@@ -233,7 +227,7 @@ body {
 	padding-top: 2px;
 	padding-bottom: 2px;
 }
-#header_commit {
+.header_commit {
 	float: left;
 	width: 72%;
 	padding-top: 2px;
@@ -253,7 +247,7 @@ body {
 	padding-top: 2px;
 	padding-bottom: 2px;
 }
-#header_author_title {
+.header_author_title {
 	clear: left;
 	float: left;
 	width: 6.5em;
@@ -261,13 +255,13 @@ body {
 	padding-top: 2px;
 	padding-bottom: 2px;
 }
-#header_author {
+.header_author {
 	float: left;
 	width: 72%;
 	padding-top: 2px;
 	padding-bottom: 2px;
 }
-#header_committer_title {
+.header_age_title {
 	clear: left;
 	float: left;
 	width: 6.5em;
@@ -275,26 +269,12 @@ body {
 	padding-top: 2px;
 	padding-bottom: 2px;
 }
-#header_committer {
+.header_age {
 	float: left;
 	width: 72%;
 	padding-top: 2px;
 	padding-bottom: 2px;
 }
-#header_age_title {
-	clear: left;
-	float: left;
-	width: 6.5em;
-	padding-left: 10px;
-	padding-top: 2px;
-	padding-bottom: 2px;
-}
-#header_age {
-	float: left;
-	width: 72%;
-	padding-top: 2px;
-	padding-bottom: 2px;
-}
 #header_commit_msg_title {
 	clear: left;
 	float: left;
@@ -351,7 +331,7 @@ body {
 	float: left;
 	width: 100%;
 }
-#briefs_age {
+.briefs_age {
 	padding-left: 10px;
 	padding-top: 5px;
 	padding-bottom: 5px;
@@ -359,7 +339,7 @@ body {
 	width: 7.5em;
 	overflow: auto;
 }
-#briefs_author {
+.briefs_author {
 	float: left;
 	padding-top: 5px;
 	padding-bottom: 5px;
@@ -367,7 +347,7 @@ body {
 	font-style: italic;
 	overflow: auto;
 }
-#briefs_log {
+.briefs_log {
 	float: left;
 	padding-left: 10px;
 	padding-right: 10px;
@@ -393,7 +373,7 @@ body {
 	float: left;
 	width: 100%;
 }
-#tag_age {
+.tag_age {
 	padding-left: 10px;
 	padding-top: 5px;
 	padding-bottom: 5px;
@@ -401,7 +381,7 @@ body {
 	width: 7.5em;
 	overflow: auto;
 }
-#tags_log {
+.tag_log {
 	float: left;
 	padding-left: 10px;
 	padding-right: 10px;
@@ -423,7 +403,7 @@ body {
 	padding-bottom: 2px;
 	width: 80%;
 }
-#tag {
+.tag {
 	float: left;
 	width: 8.5em;
 	font-style: italic;
@@ -465,51 +445,43 @@ body {
 	padding: 10px;
 	overflow: hidden;
 }
-#index_wrapper {
+.index_wrapper {
 	clear: left;
 	float: left;
 	width: 100%;
 }
-#index_project {
+.index_project {
 	float: left;
 	width: 20%;
 	padding: 10px;
 	overflow: hidden;
 }
-#index_project_description {
+.index_project_description {
 	float: left;
 	width: 30%;
 	padding: 10px;
 	overflow: auto;
 }
-#index_project_owner {
+.index_project_owner {
 	float: left;
 	width: 12%;
 	padding: 10px;
 	overflow: hidden;
 }
-#index_project_age {
+.index_project_age {
 	float: left;
 	width: 14%;
 	padding: 10px;
 	overflow: visible;
 }
-#index_project a {
+.index_project a {
 	color: #444444;
 	text-decoration: none;
 }
-#index_project a:hover {
+.index_project a:hover {
 	color: SteelBlue;
 	text-decoration: none;
 }
-#index_project_navs a {
-	color: #444444;
-	text-decoration: none;
-}
-#index_project_navs a:hover {
-	color: SteelBlue;
-	text-decoration: none;
-}
 #index_next a {
 	color: #444444;
 	text-decoration: none;
@@ -527,45 +499,41 @@ body {
 	text-decoration: none;
 }
 
-#commits_title_wrapper {
+.commits_title_wrapper {
 	clear: left;
 	float: left;
 	width: 100%;
 	background-color: LightSlateGray;
 	color: #ffffff;
 }
-#commits_title {
+.commits_title {
 	padding-left: 10px;
 	padding-top: 5px;
 	padding-bottom: 5px;
 }
-#commits_content {
+.commits_content {
 	clear: left;
 	float: left;
 	width: 100%;
 }
-#commits_header_wrapper {
+.commits_header_wrapper {
 	float: left;
 	background-color: #f5fcfb;
 	width: 100%;
 }
-#commits_header {
+.commits_header {
 	float: left;
 	padding-top: 5px;
 	padding-bottom: 2px;
 	width: 80%;
 }
-#commit {
+.commit {
 	clear: left;
 	float: left;
 	padding-left: 20px;
 	padding-bottom: 20px;
 	white-space: pre-wrap;
 }
-#commits_line {
-	clear: left;
-	float: left;
-}
 
 #blame_title_wrapper {
 	clear: left;
@@ -605,32 +573,32 @@ body {
 	white-space: pre;
 	overflow: auto;
 }
-#blame_wrapper {
+.blame_wrapper {
 	clear: left;
 	float: left;
 	width: 100%;
 }
-#blame_number {
+.blame_number {
 	float: left;
 	width: 6em;
 	overflow: hidden;
 }
-#blame_hash {
+.blame_hash {
 	float: left;
 	width: 6em;
 	overflow: auto;
 }
-#blame_date {
+.blame_date {
 	float: left;
 	width: 7em;
 	overflow: auto;
 }
-#blame_author {
+.blame_author {
 	float: left;
 	width: 6em;
 	overflow: hidden;
 }
-#blame_code {
+.blame_code {
 	float:left;
 	width: 50%;
 	overflow: visible;
@@ -674,27 +642,22 @@ body {
 	margin-bottom: 20px;
 	font-family: monospace;
 }
-#tree_wrapper {
+.tree_wrapper {
 	clear: left;
 	float: left;
 	width: 100%;
 }
-#tree_line {
+.tree_line {
 	clear: left;
 	float: left;
 	width: 20em;
 	padding: 1px;
 }
-#tree_line_blank {
+.tree_line_blank {
 	float: left;
 	padding: 1px;
 	width: 9.5em;
 }
-#tree_line_navs {
-	float: left;
-	text-align: right;
-	padding: 1px;
-}
 
 #diff_title_wrapper {
 	clear: left;
@@ -733,7 +696,7 @@ body {
 	font-family: monospace;
 	white-space: pre;
 }
-#diff_line {
+.diff_line {
 	clear: left;
 	float: left;
 }
@@ -763,12 +726,12 @@ body {
 	width: 100%;
 }
 
-#branches_wrapper {
+.branches_wrapper {
 	clear: left;
 	float: left;
 	width: 100%;
 }
-#branches_age {
+.branches_age {
 	padding-left: 10px;
 	padding-top: 5px;
 	padding-bottom: 5px;
@@ -776,7 +739,7 @@ body {
 	width: 7.5em;
 	overflow: auto;
 }
-#branches_space {
+.branches_space {
 	padding-left: 10px;
 	padding-top: 5px;
 	padding-bottom: 5px;
@@ -784,7 +747,7 @@ body {
 	width: 8.5em;
 	overflow: auto;
 }
-#branch {
+.branch {
 	float: left;
 	padding-right: 10px;
 	padding-top: 5px;
blob - 2ae01968126f6f9afdd84baa6e5766e042c53a25
file + gotwebd/got_operations.c
--- gotwebd/got_operations.c
+++ gotwebd/got_operations.c
@@ -947,10 +947,10 @@ got_output_repo_tree(struct request *c)
 			}
 
 			if (fcgi_gen_response(c,
-			    "<div id='tree_wrapper'>\n") == -1)
+			    "<div class='tree_wrapper'>\n") == -1)
 			goto done;
 
-			if (fcgi_gen_response(c, "<div id='tree_line' "
+			if (fcgi_gen_response(c, "<div class='tree_line' "
 			    "class='") == -1)
 				goto done;
 			if (fcgi_gen_response(c, class) == -1)
@@ -989,7 +989,7 @@ got_output_repo_tree(struct request *c)
 			if (fcgi_gen_response(c, "</div>\n") == -1)
 				goto done;
 
-			if (fcgi_gen_response(c, "<div id='tree_line_blank' "
+			if (fcgi_gen_response(c, "<div class='tree_line_blank' "
 			    "class='") == -1)
 				goto done;
 			if (fcgi_gen_response(c, class) == -1)
@@ -1013,9 +1013,9 @@ got_output_repo_tree(struct request *c)
 			}
 
 			if (fcgi_gen_response(c,
-			    "<div id='tree_wrapper'>\n") == -1)
+			    "<div class='tree_wrapper'>\n") == -1)
 				goto done;
-			if (fcgi_gen_response(c, "<div id='tree_line' "
+			if (fcgi_gen_response(c, "<div class='tree_line' "
 			    "class='") == -1)
 				goto done;
 			if (fcgi_gen_response(c, class) == -1)
@@ -1066,7 +1066,7 @@ got_output_repo_tree(struct request *c)
 			if (fcgi_gen_response(c, "</div>\n") == -1)
 				goto done;
 
-			if (fcgi_gen_response(c, "<div id='tree_line_blank' "
+			if (fcgi_gen_response(c, "<div class='tree_line_blank' "
 			    "class='") == -1)
 				goto done;
 			if (fcgi_gen_response(c, class) == -1)
@@ -1400,9 +1400,9 @@ got_gotweb_blame_cb(void *arg, int nlines, int lineno,
 		if (nl)
 			*nl = '\0';
 
-		if (fcgi_gen_response(c, "<div id='blame_wrapper'>") == -1)
+		if (fcgi_gen_response(c, "<div class='blame_wrapper'>") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='blame_number'>") == -1)
+		if (fcgi_gen_response(c, "<div class='blame_number'>") == -1)
 			goto done;
 		if (snprintf(out_buff, strlen(out_buff), "%.*d", a->nlines_prec,
 		    a->lineno_cur) < 0)
@@ -1412,7 +1412,7 @@ got_gotweb_blame_cb(void *arg, int nlines, int lineno,
 		if (fcgi_gen_response(c, "</div>") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='blame_hash'>") == -1)
+		if (fcgi_gen_response(c, "<div class='blame_hash'>") == -1)
 			goto done;
 
 		if (fcgi_gen_response(c, "<a href='?index_page=") == -1)
@@ -1436,21 +1436,21 @@ got_gotweb_blame_cb(void *arg, int nlines, int lineno,
 		if (fcgi_gen_response(c, "</a></div>") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='blame_date'>") == -1)
+		if (fcgi_gen_response(c, "<div class='blame_date'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, bline->datebuf) == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='blame_author'>") == -1)
+		if (fcgi_gen_response(c, "<div class='blame_author'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, committer) == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='blame_code'>") == -1)
+		if (fcgi_gen_response(c, "<div class='blame_code'>") == -1)
 			goto done;
 		err = gotweb_escape_html(&eline, line);
 		if (err)
@@ -1806,7 +1806,7 @@ got_output_repo_diff(struct request *c)
 				goto done;
 			}
 		}
-		if (fcgi_gen_response(c, "<div id='diff_line' class='") == -1)
+		if (fcgi_gen_response(c, "<div class='diff_line' class='") == -1)
 			goto done;
 		if (fcgi_gen_response(c, color ? color : "") == -1)
 			goto done;
blob - 20fd0e5d226524aa6c41eb30f31b5fddcc38ecdb
file + gotwebd/gotweb.c
--- gotwebd/gotweb.c
+++ gotwebd/gotweb.c
@@ -1128,9 +1128,9 @@ gotweb_render_index(struct request *c)
 render:
 		d_disp++;
 		t->prev_disp++;
-		if (fcgi_gen_response(c, "<div id='index_wrapper'>\n") == -1)
+		if (fcgi_gen_response(c, "<div class='index_wrapper'>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='index_project'>") == -1)
+		if (fcgi_gen_response(c, "<div class='index_project'>") == -1)
 			goto done;
 
 		if (fcgi_gen_response(c, "<a href='?index_page=") == -1)
@@ -1153,7 +1153,7 @@ render:
 
 		if (srv->show_repo_description) {
 			if (fcgi_gen_response(c,
-			    "<div id='index_project_description'>\n") == -1)
+			    "<div class='index_project_description'>\n") == -1)
 				goto done;
 			if (fcgi_gen_response(c, repo_dir->description) == -1)
 				goto done;
@@ -1163,7 +1163,7 @@ render:
 
 		if (srv->show_repo_owner) {
 			if (fcgi_gen_response(c,
-			    "<div id='index_project_owner'>") == -1)
+			    "<div class='index_project_owner'>") == -1)
 				goto done;
 			if (fcgi_gen_response(c, repo_dir->owner) == -1)
 				goto done;
@@ -1173,7 +1173,7 @@ render:
 
 		if (srv->show_repo_age) {
 			if (fcgi_gen_response(c,
-			    "<div id='index_project_age'>") == -1)
+			    "<div class='index_project_age'>") == -1)
 				goto done;
 			if (fcgi_gen_response(c, repo_dir->age) == -1)
 				goto done;
@@ -1181,9 +1181,9 @@ render:
 				goto done;
 		}
 
-		if (fcgi_gen_response(c, "<div id='navs_wrapper'>") == -1)
+		if (fcgi_gen_response(c, "<div class='navs_wrapper'>") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='navs'>") == -1)
+		if (fcgi_gen_response(c, "<div class='navs'>") == -1)
 			goto done;;
 
 		if (fcgi_gen_response(c, "<a href='?index_page=") == -1)
@@ -1264,7 +1264,7 @@ render:
 		if (fcgi_gen_response(c, "</div>") == -1)
 			goto done;
 		if (fcgi_gen_response(c,
-		    "<div id='dotted_line'></div>\n") == -1)
+		    "<div class='dotted_line'></div>\n") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
@@ -1332,10 +1332,10 @@ gotweb_render_blame(struct request *c)
 	if (fcgi_gen_response(c, "<div id='blame_header'>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='header_age_title'>Date:"
+	if (fcgi_gen_response(c, "<div class='header_age_title'>Date:"
 	    "</div>\n") == -1)
 		goto done;
-	if (fcgi_gen_response(c, "<div id='header_age'>") == -1)
+	if (fcgi_gen_response(c, "<div class='header_age'>") == -1)
 		goto done;
 	if (fcgi_gen_response(c, age ? age : "") == -1)
 		goto done;
@@ -1357,7 +1357,7 @@ gotweb_render_blame(struct request *c)
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='dotted_line'></div>\n") == -1)
+	if (fcgi_gen_response(c, "<div class='dotted_line'></div>\n") == -1)
 		goto done;
 	if (fcgi_gen_response(c, "<div id='blame'>\n") == -1)
 		goto done;
@@ -1407,14 +1407,14 @@ gotweb_render_briefs(struct request *c)
 		error = gotweb_get_time_str(&age, rc->committer_time, TM_DIFF);
 		if (error)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='briefs_age'>") == -1)
+		if (fcgi_gen_response(c, "<div class='briefs_age'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, age ? age : "") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='briefs_author'>") == -1)
+		if (fcgi_gen_response(c, "<div class='briefs_author'>") == -1)
 			goto done;
 		smallerthan = strchr(rc->author, '<');
 		if (smallerthan)
@@ -1424,7 +1424,7 @@ gotweb_render_briefs(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='briefs_log'>") == -1)
+		if (fcgi_gen_response(c, "<div class='briefs_log'>") == -1)
 			goto done;
 		newline = strchr(rc->commit_msg, '\n');
 		if (newline)
@@ -1454,7 +1454,7 @@ gotweb_render_briefs(struct request *c)
 			goto done;
 		if (rc->refs_str) {
 			if (fcgi_gen_response(c,
-			    " <span id='refs_str'>(") == -1)
+			    " <span class='refs_str'>(") == -1)
 				goto done;
 			if (fcgi_gen_response(c, rc->refs_str) == -1)
 				goto done;
@@ -1464,9 +1464,9 @@ gotweb_render_briefs(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='navs_wrapper'>\n") == -1)
+		if (fcgi_gen_response(c, "<div class='navs_wrapper'>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='navs'>") == -1)
+		if (fcgi_gen_response(c, "<div class='navs'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "<a href='?index_page=") == -1)
 			goto done;
@@ -1521,7 +1521,7 @@ gotweb_render_briefs(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 		if (fcgi_gen_response(c,
-		    "<div id='dotted_line'></div>\n") == -1)
+		    "<div class='dotted_line'></div>\n") == -1)
 			goto done;
 
 		free(age);
@@ -1551,15 +1551,15 @@ gotweb_render_commits(struct request *c)
 	char *age = NULL, *author = NULL;
 	/* int commit_found = 0; */
 
-	if (fcgi_gen_response(c, "<div id='commits_title_wrapper'>\n") == -1)
+	if (fcgi_gen_response(c, "<div class='commits_title_wrapper'>\n") == -1)
 		goto done;
 	if (fcgi_gen_response(c,
-	    "<div id='commits_title'>Commits</div>\n") == -1)
+	    "<div class='commits_title'>Commits</div>\n") == -1)
 		goto done;
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='commits_content'>\n") == -1)
+	if (fcgi_gen_response(c, "<div class='commits_content'>\n") == -1)
 		goto done;
 
 	error = got_get_repo_commits(c, srv->max_commits_display);
@@ -1575,36 +1575,36 @@ gotweb_render_commits(struct request *c)
 			goto done;
 
 		if (fcgi_gen_response(c,
-		    "<div id='commits_header_wrapper'>\n") == -1)
+		    "<div class='commits_header_wrapper'>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='commits_header'>\n") == -1)
+		if (fcgi_gen_response(c, "<div class='commits_header'>\n") == -1)
 			goto done;
 
 
-		if (fcgi_gen_response(c, "<div id='header_commit_title'>Commit:"
+		if (fcgi_gen_response(c, "<div class='header_commit_title'>Commit:"
 		    "</div>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='header_commit'>") == -1)
+		if (fcgi_gen_response(c, "<div class='header_commit'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, rc->commit_id) == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='header_author_title'>Author:"
+		if (fcgi_gen_response(c, "<div class='header_author_title'>Author:"
 		    "</div>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='header_author'>") == -1)
+		if (fcgi_gen_response(c, "<div class='header_author'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, author ? author : "") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='header_age_title'>Date:"
+		if (fcgi_gen_response(c, "<div class='header_age_title'>Date:"
 		    "</div>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='header_age'>") == -1)
+		if (fcgi_gen_response(c, "<div class='header_age'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, age ? age : "") == -1)
 			goto done;
@@ -1617,9 +1617,9 @@ gotweb_render_commits(struct request *c)
 			goto done;
 
 		if (fcgi_gen_response(c,
-		    "<div id='dotted_line'></div>\n") == -1)
+		    "<div class='dotted_line'></div>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='commit'>\n") == -1)
+		if (fcgi_gen_response(c, "<div class='commit'>\n") == -1)
 			goto done;
 
 		if (fcgi_gen_response(c, rc->commit_msg) == -1)
@@ -1630,9 +1630,9 @@ gotweb_render_commits(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='navs_wrapper'>\n") == -1)
+		if (fcgi_gen_response(c, "<div class='navs_wrapper'>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='navs'>") == -1)
+		if (fcgi_gen_response(c, "<div class='navs'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "<a href='?index_page=") == -1)
 			goto done;
@@ -1679,7 +1679,7 @@ gotweb_render_commits(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 		if (fcgi_gen_response(c,
-		    "<div id='dotted_line'></div>\n") == -1)
+		    "<div class='dotted_line'></div>\n") == -1)
 			goto done;
 		free(age);
 		age = NULL;
@@ -1694,7 +1694,6 @@ gotweb_render_commits(struct request *c)
 	}
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
-	fcgi_gen_response(c, "</div>\n");
 done:
 	free(age);
 	return error;
@@ -1751,24 +1750,24 @@ gotweb_render_branches(struct request *c)
 		if (strncmp(refname, "refs/heads/", 11) == 0)
 			refname += 11;
 
-		if (fcgi_gen_response(c, "<div id='branches_wrapper'>") == -1)
+		if (fcgi_gen_response(c, "<div class='branches_wrapper'>") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='branches_age'>") == -1)
+		if (fcgi_gen_response(c, "<div class='branches_age'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, age ? age : "") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='branches_space'>") == -1)
+		if (fcgi_gen_response(c, "<div class='branches_space'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "&nbsp;") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='branch'>") == -1)
+		if (fcgi_gen_response(c, "<div class='branch'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "<a href='?index_page=") == -1)
 			goto done;
@@ -1791,9 +1790,9 @@ gotweb_render_branches(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='navs_wrapper'>\n") == -1)
+		if (fcgi_gen_response(c, "<div class='navs_wrapper'>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='navs'>") == -1)
+		if (fcgi_gen_response(c, "<div class='navs'>") == -1)
 			goto done;
 
 		if (fcgi_gen_response(c, "<a href='?index_page=") == -1)
@@ -1865,9 +1864,13 @@ gotweb_render_branches(struct request *c)
 			goto done;
 
 		if (fcgi_gen_response(c,
-		    "<div id='dotted_line'></div>\n") == -1)
+		    "<div class='dotted_line'></div>\n") == -1)
 			goto done;
 
+		/* branches_wrapper */
+		if (fcgi_gen_response(c, "</div>\n") == -1)
+			goto done;
+
 		free(age);
 		age = NULL;
 
@@ -1920,10 +1923,10 @@ gotweb_render_tree(struct request *c)
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='header_age_title'>Date:"
+	if (fcgi_gen_response(c, "<div class='header_age_title'>Date:"
 	    "</div>\n") == -1)
 		goto done;
-	if (fcgi_gen_response(c, "<div id='header_age'>") == -1)
+	if (fcgi_gen_response(c, "<div class='header_age'>") == -1)
 		goto done;
 	if (fcgi_gen_response(c, age ? age : "") == -1)
 		goto done;
@@ -1945,7 +1948,7 @@ gotweb_render_tree(struct request *c)
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='dotted_line'></div>\n") == -1)
+	if (fcgi_gen_response(c, "<div class='dotted_line'></div>\n") == -1)
 		goto done;
 	if (fcgi_gen_response(c, "<div id='tree'>\n") == -1)
 		goto done;
@@ -2010,10 +2013,10 @@ gotweb_render_diff(struct request *c)
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='header_commit_title'>Commit:"
+	if (fcgi_gen_response(c, "<div class='header_commit_title'>Commit:"
 	    "</div>\n") == -1)
 		goto done;
-	if (fcgi_gen_response(c, "<div id='header_commit'>") == -1)
+	if (fcgi_gen_response(c, "<div class='header_commit'>") == -1)
 		goto done;
 	if (fcgi_gen_response(c, rc->commit_id) == -1)
 		goto done;
@@ -2030,20 +2033,20 @@ gotweb_render_diff(struct request *c)
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='header_author_title'>Author:"
+	if (fcgi_gen_response(c, "<div class='header_author_title'>Author:"
 	    "</div>\n") == -1)
 		goto done;
-	if (fcgi_gen_response(c, "<div id='header_author'>") == -1)
+	if (fcgi_gen_response(c, "<div class='header_author'>") == -1)
 		goto done;
 	if (fcgi_gen_response(c, author ? author : "") == -1)
 		goto done;
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='header_age_title'>Date:"
+	if (fcgi_gen_response(c, "<div class='header_age_title'>Date:"
 	    "</div>\n") == -1)
 		goto done;
-	if (fcgi_gen_response(c, "<div id='header_age'>") == -1)
+	if (fcgi_gen_response(c, "<div class='header_age'>") == -1)
 		goto done;
 	if (fcgi_gen_response(c, age ? age : "") == -1)
 		goto done;
@@ -2064,7 +2067,7 @@ gotweb_render_diff(struct request *c)
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='dotted_line'></div>\n") == -1)
+	if (fcgi_gen_response(c, "<div class='dotted_line'></div>\n") == -1)
 		goto done;
 	if (fcgi_gen_response(c, "<div id='diff'>\n") == -1)
 		goto done;
@@ -2208,10 +2211,10 @@ gotweb_render_tag(struct request *c)
 	if (fcgi_gen_response(c, "<div id='tag_header'>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='header_commit_title'>Commit:"
+	if (fcgi_gen_response(c, "<div class='header_commit_title'>Commit:"
 	    "</div>\n") == -1)
 		goto done;
-	if (fcgi_gen_response(c, "<div id='header_commit'>") == -1)
+	if (fcgi_gen_response(c, "<div class='header_commit'>") == -1)
 		goto done;
 	if (fcgi_gen_response(c, rt->commit_id) == -1)
 		goto done;
@@ -2219,7 +2222,7 @@ gotweb_render_tag(struct request *c)
 	if (strncmp(rt->tag_name, "refs/", 5) == 0)
 		rt->tag_name += 5;
 
-	if (fcgi_gen_response(c, " <span id='refs_str'>(") == -1)
+	if (fcgi_gen_response(c, " <span class='refs_str'>(") == -1)
 		goto done;
 	if (fcgi_gen_response(c, rt->tag_name) == -1)
 		goto done;
@@ -2229,20 +2232,20 @@ gotweb_render_tag(struct request *c)
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='header_author_title'>Tagger:"
+	if (fcgi_gen_response(c, "<div class='header_author_title'>Tagger:"
 	    "</div>\n") == -1)
 		goto done;
-	if (fcgi_gen_response(c, "<div id='header_author'>") == -1)
+	if (fcgi_gen_response(c, "<div class='header_author'>") == -1)
 		goto done;
 	if (fcgi_gen_response(c, author ? author : "") == -1)
 		goto done;
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='header_age_title'>Date:"
+	if (fcgi_gen_response(c, "<div class='header_age_title'>Date:"
 	    "</div>\n") == -1)
 		goto done;
-	if (fcgi_gen_response(c, "<div id='header_age'>") == -1)
+	if (fcgi_gen_response(c, "<div class='header_age'>") == -1)
 		goto done;
 	if (fcgi_gen_response(c, age ? age : "") == -1)
 		goto done;
@@ -2261,7 +2264,7 @@ gotweb_render_tag(struct request *c)
 	if (fcgi_gen_response(c, "</div>\n") == -1)
 		goto done;
 
-	if (fcgi_gen_response(c, "<div id='dotted_line'></div>\n") == -1)
+	if (fcgi_gen_response(c, "<div class='dotted_line'></div>\n") == -1)
 		goto done;
 	if (fcgi_gen_response(c, "<div id='tag_commit'>\n") == -1)
 		goto done;
@@ -2332,14 +2335,14 @@ gotweb_render_tags(struct request *c)
 		error = gotweb_get_time_str(&age, rt->tagger_time, TM_DIFF);
 		if (error)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='tag_age'>") == -1)
+		if (fcgi_gen_response(c, "<div class='tag_age'>") == -1)
 			goto done;
 		if (fcgi_gen_response(c, age ? age : "") == -1)
 			goto done;
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='tag'>") == -1)
+		if (fcgi_gen_response(c, "<div class='tag'>") == -1)
 			goto done;
 		if (strncmp(rt->tag_name, "refs/tags/", 10) == 0)
 			rt->tag_name += 10;
@@ -2348,7 +2351,7 @@ gotweb_render_tags(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='tags_log'>") == -1)
+		if (fcgi_gen_response(c, "<div class='tag_log'>") == -1)
 			goto done;
 		if (rt->tag_commit != NULL) {
 			newline = strchr(rt->tag_commit, '\n');
@@ -2378,9 +2381,9 @@ gotweb_render_tags(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 
-		if (fcgi_gen_response(c, "<div id='navs_wrapper'>\n") == -1)
+		if (fcgi_gen_response(c, "<div class='navs_wrapper'>\n") == -1)
 			goto done;
-		if (fcgi_gen_response(c, "<div id='navs'>") == -1)
+		if (fcgi_gen_response(c, "<div class='navs'>") == -1)
 			goto done;
 
 		if (fcgi_gen_response(c, "<a href='?index_page=") == -1)
@@ -2451,7 +2454,7 @@ gotweb_render_tags(struct request *c)
 		if (fcgi_gen_response(c, "</div>\n") == -1)
 			goto done;
 		if (fcgi_gen_response(c,
-		    "<div id='dotted_line'></div>\n") == -1)
+		    "<div class='dotted_line'></div>\n") == -1)
 			goto done;
 
 		free(age);