Hi,

Another patch to adapt content to HTML5.
Replaces <br /> with <br>

Alternative to patch:

find . -type f -print0 | xargs -0 perl -pi -e 's/<br \/>/<br>/g'

Best Regards,
Johan
Index: skins/black_and_white/header.txt
==================================================================
--- skins/black_and_white/header.txt
+++ skins/black_and_white/header.txt
@@ -9,11 +9,11 @@
 </head>
 <body>
 <div class="header">
   <div class="logo">
     <img src="$logo_image_url" alt="logo">
-    <br />$<project_name>
+    <br>$<project_name>
   </div>
   <div class="title">$<title></div>
   <div class="status"><th1>
      if {[info exists login]} {
        puts "Logged in as $login"

Index: skins/original/header.txt
==================================================================
--- skins/original/header.txt
+++ skins/original/header.txt
@@ -10,11 +10,11 @@
 <body>
 <div class="header">
   <div class="logo">
     <img src="$logo_image_url" alt="logo" />
   </div>
-  <div class="title"><small>$<project_name></small><br />$<title></div>
+  <div class="title"><small>$<project_name></small><br>$<title></div>
   <div class="status"><th1>
      if {[info exists login]} {
        puts "Logged in as $login"
      } else {
        puts "Not logged in"

Index: skins/plain_gray/header.txt
==================================================================
--- skins/plain_gray/header.txt
+++ skins/plain_gray/header.txt
@@ -7,11 +7,11 @@
 <link rel="stylesheet" href="$stylesheet_url" type="text/css"
       media="screen">
 </head>
 <body>
 <div class="header">
-  <div class="title"><small>$<project_name></small><br />$<title></div>
+  <div class="title"><small>$<project_name></small><br>$<title></div>
   <div class="status"><th1>
      if {[info exists login]} {
        puts "Logged in as $login"
      } else {
        puts "Not logged in"

Index: skins/rounded1/header.txt
==================================================================
--- skins/rounded1/header.txt
+++ skins/rounded1/header.txt
@@ -9,11 +9,11 @@
 </head>
 <body>
 <div class="header">
   <div class="logo">
     <img src="$logo_image_url" alt="logo">
-    <br />$<project_name>
+    <br>$<project_name>
   </div>
   <div class="title">$<title></div>
   <div class="status"><th1>
      if {[info exists login]} {
        puts "Logged in as $login"

Index: src/attach.c
==================================================================
--- src/attach.c
+++ src/attach.c
@@ -109,15 +109,15 @@
     @ <li><p>
     @ Attachment %z(href("%R/ainfo/%!S",zUuid))%S(zUuid)</a>
     if( moderation_pending(attachid) ){
       @ <span class="modpending">*** Awaiting Moderator Approval ***</span>
     }
-    @ <br /><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a>
-    @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br />
+    @ <br><a href="%R/attachview?%s(zUrlTail)">%h(zFilename)</a>
+    @ [<a href="%R/attachdownload/%t(zFilename)?%s(zUrlTail)">download</a>]<br>
     if( zComment ) while( fossil_isspace(zComment[0]) ) zComment++;
     if( zComment && zComment[0] ){
-      @ %!W(zComment)<br />
+      @ %!W(zComment)<br>
     }
     if( zPage==0 && zTkt==0 && zTechNote==0 ){
       if( zSrc==0 || zSrc[0]==0 ){
         zSrc = "Deleted from";
       }else {
@@ -392,13 +392,13 @@
   }
   @ <h2>Add Attachment To %s(zTargetType)</h2>
   form_begin("enctype='multipart/form-data'", "%R/attachadd");
   @ <div>
   @ File to Attach:
-  @ <input type="file" name="f" size="60" /><br />
-  @ Description:<br />
-  @ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br />
+  @ <input type="file" name="f" size="60" /><br>
+  @ Description:<br>
+  @ <textarea name="comment" cols="80" rows="5" wrap="virtual"></textarea><br>
   if( zTkt ){
     @ <input type="hidden" name="tkt" value="%h(zTkt)" />
   }else if( zTechNote ){
     @ <input type="hidden" name="technote" value="%h(zTechNote)" />
   }else{
@@ -601,13 +601,13 @@
   if( isModerator && modPending ){
     @ <div class="section">Moderation</div>
     @ <blockquote>
     form_begin(0, "%R/ainfo/%s", zUuid);
     @ <label><input type="radio" name="modaction" value="delete">
-    @ Delete this change</label><br />
+    @ Delete this change</label><br>
     @ <label><input type="radio" name="modaction" value="approve">
-    @ Approve this change</label><br />
+    @ Approve this change</label><br>
     @ <input type="submit" value="Submit">
     @ </form>
     @ </blockquote>
   }
 
@@ -626,11 +626,11 @@
       @ %h(z)
       @ </pre>
     }
   }else if( strncmp(zMime, "image/", 6)==0 ){
     int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
-    @ <i>(file is %d(sz) bytes of image data)</i><br />
+    @ <i>(file is %d(sz) bytes of image data)</i><br>
     @ <img src="%R/raw/%s(zSrc)?m=%s(zMime)"></img>
     style_submenu_element("Image", "%R/raw/%s?m=%s", zSrc, zMime);
   }else{
     int sz = db_int(0, "SELECT size FROM blob WHERE rid=%d", ridSrc);
     @ <i>(file is %d(sz) bytes of binary data)</i>

Index: src/browse.c
==================================================================
--- src/browse.c
+++ src/browse.c
@@ -1138,13 +1138,13 @@
     while( db_step(&q2)==SQLITE_ROW ){
       const char *zFUuid = db_column_text(&q2,0);
       const char *zFile = db_column_text(&q2,1);
       int fid = db_column_int(&q2,2);
       if( showId ){
-        @ %z(href("%R/artifact/%!S",zFUuid))%h(zFile)</a> (%d(fid))<br />
+        @ %z(href("%R/artifact/%!S",zFUuid))%h(zFile)</a> (%d(fid))<br>
       }else{
-        @ %z(href("%R/artifact/%!S",zFUuid))%h(zFile)</a><br />
+        @ %z(href("%R/artifact/%!S",zFUuid))%h(zFile)</a><br>
       }
     }
     db_reset(&q2);
     @ </td>
     @ <td>

Index: src/cache.c
==================================================================
--- src/cache.c
+++ src/cache.c
@@ -356,11 +356,11 @@
     );
     if( pStmt ){
       @ <ol>
       while( sqlite3_step(pStmt)==SQLITE_ROW ){
         const unsigned char *zName = sqlite3_column_text(pStmt,0);
-        @ <li><p>%z(href("%R/cacheget?key=%T",zName))%h(zName)</a><br />
+        @ <li><p>%z(href("%R/cacheget?key=%T",zName))%h(zName)</a><br>
         @ size: %s(sqlite3_column_text(pStmt,1))
         @ hit-count: %d(sqlite3_column_int(pStmt,2))
         @ last-access: %s(sqlite3_column_text(pStmt,3))</p></li>
       }
       sqlite3_finalize(pStmt);

Index: src/cgi.c
==================================================================
--- src/cgi.c
+++ src/cgi.c
@@ -1207,11 +1207,11 @@
     const char *zName = aParamQP[i].zName;
     if( !showAll ){
       if( fossil_stricmp("HTTP_COOKIE",zName)==0 ) continue;
       if( fossil_strnicmp("fossil-",zName,7)==0 ) continue;
     }
-    cgi_printf("%h = %h  <br />\n", zName, aParamQP[i].zValue);
+    cgi_printf("%h = %h  <br>\n", zName, aParamQP[i].zValue);
   }
 }
 
 /*
 ** Export all untagged query parameters (but not cookies or environment

Index: src/descendants.c
==================================================================
--- src/descendants.c
+++ src/descendants.c
@@ -509,11 +509,11 @@
   }
   db_prepare(&q, "%s ORDER BY event.mtime DESC", blob_sql_text(&sql));
   blob_reset(&sql);
   www_print_timeline(&q, TIMELINE_LEAFONLY, 0, 0, 0, 0);
   db_finalize(&q);
-  @ <br />
+  @ <br>
   style_footer();
 }
 
 #if INTERFACE
 /* Flag parameters to compute_uses_file() */

Index: src/finfo.c
==================================================================
--- src/finfo.c
+++ src/finfo.c
@@ -533,11 +533,11 @@
       }
     }
     if( fDebug & FINFO_DEBUG_MLINK ){
       int ii;
       char *zAncLink;
-      @ <br />fid=%d(frid) pid=%d(fpid) mid=%d(fmid)
+      @ <br>fid=%d(frid) pid=%d(fpid) mid=%d(fmid)
       if( nParent>0 ){
         @ parents=%d(aParent[0])
         for(ii=1; ii<nParent; ii++){
           @ %d(aParent[ii])
         }

Index: src/info.c
==================================================================
--- src/info.c
+++ src/info.c
@@ -867,13 +867,13 @@
   if( g.perm.ModWiki && modPending ){
     @ <div class="section">Moderation</div>
     @ <blockquote>
     @ <form method="POST" action="%R/winfo/%s(zUuid)">
     @ <label><input type="radio" name="modaction" value="delete">
-    @ Delete this change</label><br />
+    @ Delete this change</label><br>
     @ <label><input type="radio" name="modaction" value="approve">
-    @ Approve this change</label><br />
+    @ Approve this change</label><br>
     @ <input type="submit" value="Submit">
     @ </form>
     @ </blockquote>
   }
 
@@ -2037,11 +2037,11 @@
           @ <pre>
           @ %h(z)
           @ </pre>
         }
       }else if( strncmp(zMime, "image/", 6)==0 ){
-        @ <i>(file is %d(blob_size(&content)) bytes of image data)</i><br />
+        @ <i>(file is %d(blob_size(&content)) bytes of image data)</i><br>
         @ <img src="%R/raw/%s(zUuid)?m=%s(zMime)" />
         style_submenu_element("Image", "%R/raw/%s?m=%s", zUuid, zMime);
       }else{
         @ <i>(file is %d(blob_size(&content)) bytes of binary data)</i>
       }
@@ -2129,11 +2129,11 @@
     @ <span class="modpending">*** Awaiting Moderator Approval ***</span>
   }
   @ <tr><th>Ticket:</th>
   @ <td>%z(href("%R/tktview/%s",zTktName))%s(zTktName)</a>
   if( zTktTitle ){
-        @<br />%h(zTktTitle)
+        @<br>%h(zTktTitle)
   }
   @</td></tr>
   @ <tr><th>Date:</th><td>
   hyperlink_to_date(zDate, "</td></tr>");
   @ <tr><th>User:</th><td>
@@ -2145,13 +2145,13 @@
   if( g.perm.ModTkt && modPending ){
     @ <div class="section">Moderation</div>
     @ <blockquote>
     @ <form method="POST" action="%R/tinfo/%s(zUuid)">
     @ <label><input type="radio" name="modaction" value="delete">
-    @ Delete this change</label><br />
+    @ Delete this change</label><br>
     @ <label><input type="radio" name="modaction" value="approve">
-    @ Approve this change</label><br />
+    @ Approve this change</label><br>
     @ <input type="submit" value="Submit">
     @ </form>
     @ </blockquote>
   }
 
@@ -2763,11 +2763,11 @@
     }else if( !isSpecialTag && zTagName &&
         fossil_strcmp(&zTagName[4], zBranchName)==0){
       continue;
     }
     sqlite3_snprintf(sizeof(zLabel), zLabel, "c%d", tagid);
-    @ <br /><label>
+    @ <br><label>
     if( P(zLabel) ){
       @ <input type="checkbox" name="c%d(tagid)" checked="checked" />
     }else{
       @ <input type="checkbox" name="c%d(tagid)" />
     }

Index: src/loadctrl.c
==================================================================
--- src/loadctrl.c
+++ src/loadctrl.c
@@ -55,12 +55,12 @@
   if( mxLoad<=0.0 || mxLoad>=load_average() ) return;
 
   style_header("Server Overload");
   @ <h2>The server load is currently too high.
   @ Please try again later.</h2>
-  @ <p>Current load average: %f(load_average()).<br />
+  @ <p>Current load average: %f(load_average()).<br>
   @ Load average limit: %f(mxLoad)</p>
   style_footer();
   cgi_set_status(503,"Server Overload");
   cgi_reply();
   exit(0);
 }

Index: src/login.c
==================================================================
--- src/login.c
+++ src/login.c
@@ -1368,11 +1368,11 @@
 ** logging in as anonymous.
 */
 void login_anonymous_available(void){
   if( !g.perm.Hyperlink && g.anon.Hyperlink ){
     const char *zUrl = PD("REQUEST_URI", "index");
-    @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br />
+    @ <p>Many <span class="disabled">hyperlinks are disabled.</span><br>
     @ Use <a href="%R/login?anon=1&amp;g=%T(zUrl)">anonymous login</a>
     @ to enable hyperlinks.</p>
   }
 }
 

Index: src/markdown_html.c
==================================================================
--- src/markdown_html.c
+++ src/markdown_html.c
@@ -346,11 +346,11 @@
   BLOB_APPEND_LITERAL(ob, "\" />");
   return 1;
 }
 
 static int html_line_break(struct Blob *ob, void *opaque){
-  BLOB_APPEND_LITERAL(ob, "<br />\n");
+  BLOB_APPEND_LITERAL(ob, "<br>\n");
   return 1;
 }
 
 static int html_link(
   struct Blob *ob,

Index: src/piechart.c
==================================================================
--- src/piechart.c
+++ src/piechart.c
@@ -311,14 +311,14 @@
     piechart_render(width,height, PIE_OTHER|PIE_PERCENT);
     @ </svg>
     @ <hr />
   }
   @ <form method="POST" action='%R/test-piechart'>
-  @ <p>Comma-separated list of slice widths:<br />
-  @ <input type='text' name='data' size='80' value='%h(zData)'/><br />
+  @ <p>Comma-separated list of slice widths:<br>
+  @ <input type='text' name='data' size='80' value='%h(zData)'/><br>
   @ Width: <input type='text' size='8' name='width' value='%d(width)'/>
-  @ Height: <input type='text' size='8' name='height' value='%d(height)'/><br />
+  @ Height: <input type='text' size='8' name='height' value='%d(height)'/><br>
   @ <input type='submit' value='Draw The Pie Chart'/>
   @ </form>
   @ <p>Interesting test cases:
   @ <ul>
   @ <li> <a href='test-piechart?data=44,2,2,2,2,2,3,2,2,2,2,2,44'>Case 1</a>

Index: src/report.c
==================================================================
--- src/report.c
+++ src/report.c
@@ -46,13 +46,13 @@
     login_needed(g.anon.RdTkt || g.anon.NewTkt);
     return;
   }
   style_header("Ticket Main Menu");
   ticket_standard_submenu(T_ALL_BUT(T_REPLIST));
-  if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST<br>\n", -1);
   zScript = ticket_reportlist_code();
-  if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST_SCRIPT<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_REPORTLIST_SCRIPT<br>\n", -1);
 
   blob_zero(&ril);
   ticket_init();
 
   db_prepare(&q, "SELECT rn, title, owner FROM reportfmt ORDER BY title");
@@ -95,11 +95,11 @@
   Th_Store("report_items", blob_str(&ril));
 
   Th_Render(zScript);
 
   blob_reset(&ril);
-  if( g.thTrace ) Th_Trace("END_REPORTLIST<br />\n", -1);
+  if( g.thTrace ) Th_Trace("END_REPORTLIST<br>\n", -1);
 
   style_footer();
 }
 
 /*
@@ -461,13 +461,13 @@
   if( zErr ){
     @ <blockquote class="reportError">%h(zErr)</blockquote>
   }
   @ <form action="rptedit" method="post"><div>
   @ <input type="hidden" name="rn" value="%d(rn)" />
-  @ <p>Report Title:<br />
+  @ <p>Report Title:<br>
   @ <input type="text" name="t" value="%h(zTitle)" size="60" /></p>
-  @ <p>Enter a complete SQL query statement against the "TICKET" table:<br />
+  @ <p>Enter a complete SQL query statement against the "TICKET" table:<br>
   @ <textarea name="s" rows="20" cols="80">%h(zSQL)</textarea>
   @ </p>
   login_insert_csrf_secret();
   if( g.perm.Admin ){
     @ <p>Report owner:
@@ -477,11 +477,11 @@
     @ <input type="hidden" name="w" value="%h(zOwner)" />
   }
   @ <p>Enter an optional color key in the following box.  (If blank, no
   @ color key is displayed.)  Each line contains the text for a single
   @ entry in the key.  The first token of each line is the background
-  @ color for that line.<br />
+  @ color for that line.<br>
   @ <textarea name="k" rows="8" cols="50">%h(zClrKey)</textarea>
   @ </p>
   if( !g.perm.Admin && fossil_strcmp(zOwner,g.zLogin)!=0 ){
     @ <p>This report format is owned by %h(zOwner).  You are not allowed
     @ to change it.</p>

Index: src/search.c
==================================================================
--- src/search.c
+++ src/search.c
@@ -1002,11 +1002,11 @@
     nRow++;
     @ <li><p><a href='%R%s(zUrl)'>%h(zLabel)</a>
     if( fDebug ){
       @ (%e(db_column_double(&q,3)), %s(db_column_text(&q,4))
     }
-    @ <br /><span class='snippet'>%z(cleanSnippet(zSnippet))</span></li>
+    @ <br><span class='snippet'>%z(cleanSnippet(zSnippet))</span></li>
   }
   db_finalize(&q);
   if( nRow ){
     @ </ol>
   }

Index: src/setup.c
==================================================================
--- src/setup.c
+++ src/setup.c
@@ -635,86 +635,86 @@
 #define B(x) inherit[x]
   @ <table border=0><tr><td valign="top">
   if( g.perm.Setup ){
     @  <label><input type="checkbox" name="as"%s(oa['s'])
     @                onchange="updateCapabilityString()"/>
-    @  Setup%s(B('s'))</label><br />
+    @  Setup%s(B('s'))</label><br>
   }
   @  <label><input type="checkbox" name="aa"%s(oa['a'])
   @                onchange="updateCapabilityString()" />
-  @  Admin%s(B('a'))</label><br />
+  @  Admin%s(B('a'))</label><br>
   @  <label><input type="checkbox" name="ad"%s(oa['d'])
   @                onchange="updateCapabilityString()" />
-  @  Delete%s(B('d'))</label><br />
+  @  Delete%s(B('d'))</label><br>
   @  <label><input type="checkbox" name="ae"%s(oa['e'])
   @                onchange="updateCapabilityString()" />
-  @  Email%s(B('e'))</label><br />
+  @  Email%s(B('e'))</label><br>
   @  <label><input type="checkbox" name="ap"%s(oa['p'])
   @                onchange="updateCapabilityString()" />
-  @  Password%s(B('p'))</label><br />
+  @  Password%s(B('p'))</label><br>
   @  <label><input type="checkbox" name="ai"%s(oa['i'])
   @                onchange="updateCapabilityString()" />
-  @  Check-In%s(B('i'))</label><br />
+  @  Check-In%s(B('i'))</label><br>
   @  <label><input type="checkbox" name="ao"%s(oa['o'])
   @                onchange="updateCapabilityString()" />
-  @  Check-Out%s(B('o'))</label><br />
+  @  Check-Out%s(B('o'))</label><br>
   @  <label><input type="checkbox" name="ah"%s(oa['h'])
   @                onchange="updateCapabilityString()" />
-  @  Hyperlinks%s(B('h'))</label><br />
+  @  Hyperlinks%s(B('h'))</label><br>
   @  <label><input type="checkbox" name="ab"%s(oa['b'])
   @                onchange="updateCapabilityString()" />
-  @  Attachments%s(B('b'))</label><br />
+  @  Attachments%s(B('b'))</label><br>
   @ </td><td><td width="40"></td><td valign="top">
   @  <label><input type="checkbox" name="au"%s(oa['u'])
   @                onchange="updateCapabilityString()" />
-  @  Reader%s(B('u'))</label><br />
+  @  Reader%s(B('u'))</label><br>
   @  <label><input type="checkbox" name="av"%s(oa['v'])
   @                onchange="updateCapabilityString()" />
-  @  Developer%s(B('v'))</label><br />
+  @  Developer%s(B('v'))</label><br>
   @  <label><input type="checkbox" name="ag"%s(oa['g'])
   @                onchange="updateCapabilityString()" />
-  @  Clone%s(B('g'))</label><br />
+  @  Clone%s(B('g'))</label><br>
   @  <label><input type="checkbox" name="aj"%s(oa['j'])
   @                onchange="updateCapabilityString()" />
-  @  Read Wiki%s(B('j'))</label><br />
+  @  Read Wiki%s(B('j'))</label><br>
   @  <label><input type="checkbox" name="af"%s(oa['f'])
   @                onchange="updateCapabilityString()" />
-  @  New Wiki%s(B('f'))</label><br />
+  @  New Wiki%s(B('f'))</label><br>
   @  <label><input type="checkbox" name="am"%s(oa['m'])
   @                onchange="updateCapabilityString()" />
-  @  Append Wiki%s(B('m'))</label><br />
+  @  Append Wiki%s(B('m'))</label><br>
   @  <label><input type="checkbox" name="ak"%s(oa['k'])
   @                onchange="updateCapabilityString()" />
-  @  Write Wiki%s(B('k'))</label><br />
+  @  Write Wiki%s(B('k'))</label><br>
   @  <label><input type="checkbox" name="al"%s(oa['l'])
   @                onchange="updateCapabilityString()" />
-  @  Moderate Wiki%s(B('l'))</label><br />
+  @  Moderate Wiki%s(B('l'))</label><br>
   @ </td><td><td width="40"></td><td valign="top">
   @  <label><input type="checkbox" name="ar"%s(oa['r'])
   @                onchange="updateCapabilityString()" />
-  @  Read Ticket%s(B('r'))</label><br />
+  @  Read Ticket%s(B('r'))</label><br>
   @  <label><input type="checkbox" name="an"%s(oa['n'])
   @                onchange="updateCapabilityString()" />
-  @  New Tickets%s(B('n'))</label><br />
+  @  New Tickets%s(B('n'))</label><br>
   @  <label><input type="checkbox" name="ac"%s(oa['c'])
   @                onchange="updateCapabilityString()" />
-  @  Append To Ticket%s(B('c'))</label><br />
+  @  Append To Ticket%s(B('c'))</label><br>
   @  <label><input type="checkbox" name="aw"%s(oa['w'])
   @                onchange="updateCapabilityString()" />
-  @  Write Tickets%s(B('w'))</label><br />
+  @  Write Tickets%s(B('w'))</label><br>
   @  <label><input type="checkbox" name="aq"%s(oa['q'])
   @                onchange="updateCapabilityString()" />
-  @  Moderate Tickets%s(B('q'))</label><br />
+  @  Moderate Tickets%s(B('q'))</label><br>
   @  <label><input type="checkbox" name="at"%s(oa['t'])
   @                onchange="updateCapabilityString()" />
-  @  Ticket Report%s(B('t'))</label><br />
+  @  Ticket Report%s(B('t'))</label><br>
   @  <label><input type="checkbox" name="ax"%s(oa['x'])
   @                onchange="updateCapabilityString()" />
-  @  Private%s(B('x'))</label><br />
+  @  Private%s(B('x'))</label><br>
   @  <label><input type="checkbox" name="ay"%s(oa['y'])
   @                onchange="updateCapabilityString()" />
-  @  Write Unversioned%s(B('y'))</label><br />
+  @  Write Unversioned%s(B('y'))</label><br>
   @  <label><input type="checkbox" name="az"%s(oa['z'])
   @                onchange="updateCapabilityString()" />
   @  Download Zip%s(B('z'))</label>
   @ </td></tr>
   @ </table>
@@ -742,11 +742,11 @@
   if( zGroup ){
     @ <tr>
     @ <td valign="top" align="right">Scope:</td>
     @ <td valign="top">
     @ <input type="radio" name="all" checked value="0">
-    @ Apply changes to this repository only.<br />
+    @ Apply changes to this repository only.<br>
     @ <input type="radio" name="all" value="1">
     @ Apply changes to all repositories in the "<b>%h(zGroup)</b>"
     @ login group.</td></tr>
   }
   if( !higherUser ){
@@ -1188,14 +1188,14 @@
   @ <p>Additional parameters that control this behavior:</p>
   @ <blockquote>
   onoff_attribute("Enable hyperlinks for humans (as deduced from the UserAgent "
                   " HTTP header string)",
                   "auto-hyperlink-ishuman", "ahis", 0, 0);
-  @ <br />
+  @ <br>
   onoff_attribute("Require mouse movement before enabling hyperlinks",
                   "auto-hyperlink-mouseover", "ahmo", 0, 0);
-  @ <br />
+  @ <br>
   entry_attribute("Delay before enabling hyperlinks (milliseconds)", 5,
                   "auto-hyperlink-delay", "ah-delay", "10", 0);
   @ </blockquote>
   @ <p>Hyperlinks for user "nobody" are normally enabled as soon as the page
   @ finishes loading.  But the first check-box below can be set to require mouse
@@ -1500,44 +1500,44 @@
           (db_get_versioned(pSet->name, NULL)!=0);
       onoff_attribute(pSet->name, pSet->name,
                       pSet->var!=0 ? pSet->var : pSet->name,
                       is_truth(pSet->def), hasVersionableValue);
       if( pSet->versionable ){
-        @  (v)<br />
+        @  (v)<br>
       } else {
-        @ <br />
+        @ <br>
       }
     }
   }
-  @ <br /><input type="submit"  name="submit" value="Apply Changes" />
+  @ <br><input type="submit"  name="submit" value="Apply Changes" />
   @ </td><td style="width:50px;"></td><td valign="top">
   for(pSet=aSetting; pSet->name!=0; pSet++){
     if( pSet->width!=0 && !pSet->versionable && !pSet->forceTextArea ){
       entry_attribute(pSet->name, /*pSet->width*/ 25, pSet->name,
                       pSet->var!=0 ? pSet->var : pSet->name,
                       (char*)pSet->def, 0);
-      @ <br />
+      @ <br>
     }
   }
   for(pSet=aSetting; pSet->name!=0; pSet++){
     if( pSet->width!=0 && !pSet->versionable && pSet->forceTextArea ){
-      @<b>%s(pSet->name)</b><br />
+      @<b>%s(pSet->name)</b><br>
       textarea_attribute("", /*rows*/ 3, /*cols*/ 50, pSet->name,
                       pSet->var!=0 ? pSet->var : pSet->name,
                       (char*)pSet->def, 0);
-      @ <br />
+      @ <br>
     }
   }
   @ </td><td style="width:50px;"></td><td valign="top">
   for(pSet=aSetting; pSet->name!=0; pSet++){
     if( pSet->width!=0 && pSet->versionable ){
       int hasVersionableValue = db_get_versioned(pSet->name, NULL)!=0;
-      @<b>%s(pSet->name)</b> (v)<br />
+      @<b>%s(pSet->name)</b> (v)<br>
       textarea_attribute("", /*rows*/ 3, /*cols*/ 20, pSet->name,
                       pSet->var!=0 ? pSet->var : pSet->name,
                       (char*)pSet->def, hasVersionableValue);
-      @<br />
+      @<br>
     }
   }
   @ </td></tr></table>
   @ </div></form>
   @ <p>Settings marked with (v) are 'versionable' and will be overridden
@@ -1698,22 +1698,22 @@
   }
 
   style_header("Edit Ad Unit");
   @ <form action="%s(g.zTop)/setup_adunit" method="post"><div>
   login_insert_csrf_secret();
-  @ <b>Banner Ad-Unit:</b><br />
+  @ <b>Banner Ad-Unit:</b><br>
  textarea_attribute("", 6, 80, "adunit", "adunit", "", 0);
-  @ <br />
-  @ <b>Right-Column Ad-Unit:</b><br />
+  @ <br>
+  @ <b>Right-Column Ad-Unit:</b><br>
   textarea_attribute("", 6, 80, "adunit-right", "adright", "", 0);
-  @ <br />
+  @ <br>
   onoff_attribute("Omit ads to administrator",
      "adunit-omit-if-admin", "oia", 0, 0);
-  @ <br />
+  @ <br>
   onoff_attribute("Omit ads to logged-in users",
      "adunit-omit-if-user", "oiu", 0, 0);
-  @ <br />
+  @ <br>
   @ <input type="submit" name="submit" value="Apply Changes" />
   @ <input type="submit" name="clear" value="Delete Ad-Unit" />
   @ </div></form>
   @ <hr />
   @ <b>Ad-Unit Notes:</b><ul>
@@ -1935,12 +1935,12 @@
   }
   @ </ul></p>
   @
   @ <form method="post" action="%s(g.zTop)/admin_sql">
   login_insert_csrf_secret();
-  @ SQL:<br />
-  @ <textarea name="q" rows="5" cols="80">%h(zQ)</textarea><br />
+  @ SQL:<br>
+  @ <textarea name="q" rows="5" cols="80">%h(zQ)</textarea><br>
   @ <input type="submit" name="go" value="Run SQL">
   @ <input type="submit" name="schema" value="Show Schema">
   @ <input type="submit" name="tablelist" value="List Tables">
   @ </form>
   if( P("schema") ){
@@ -2043,12 +2043,12 @@
   @ run by this page.  If Tcl integration was enabled at compile-time and
   @ the "tcl" setting is enabled, Tcl commands may be run as well.</p>
   @
   @ <form method="post" action="%s(g.zTop)/admin_th1">
   login_insert_csrf_secret();
-  @ TH1:<br />
-  @ <textarea name="q" rows="5" cols="80">%h(zQ)</textarea><br />
+  @ TH1:<br>
+  @ <textarea name="q" rows="5" cols="80">%h(zQ)</textarea><br>
   @ <input type="submit" name="go" value="Run TH1">
   @ </form>
   if( go ){
     const char *zR;
     int rc;
@@ -2185,15 +2185,15 @@
   @ <p>When searching documents, use the versions of the files found at the
   @ type of the "Document Branch" branch.  Recommended value: "trunk".
   @ Document search is disabled if blank.
   @ <hr />
   onoff_attribute("Search Check-in Comments", "search-ci", "sc", 0, 0);
-  @ <br />
+  @ <br>
   onoff_attribute("Search Documents", "search-doc", "sd", 0, 0);
-  @ <br />
+  @ <br>
   onoff_attribute("Search Tickets", "search-tkt", "st", 0, 0);
-  @ <br />
+  @ <br>
   onoff_attribute("Search Wiki","search-wiki", "sw", 0, 0);
   @ <hr />
   @ <p><input type="submit"  name="submit" value="Apply Changes" /></p>
   @ <hr />
   if( P("fts0") ){

Index: src/shun.c
==================================================================
--- src/shun.c
+++ src/shun.c
@@ -111,19 +111,19 @@
       }
       admin_log("Unshunned %Q", p);
       p += strlen(p)+1;
     }
     if( allExist ){
-      @ <p class="noMoreShun">Artifact(s)<br />
+      @ <p class="noMoreShun">Artifact(s)<br>
       for( p = zUuid ; *p ; p += strlen(p)+1 ){
-        @ <a href="%R/artifact/%s(p)">%s(p)</a><br />
+        @ <a href="%R/artifact/%s(p)">%s(p)</a><br>
       }
       @ are no longer being shunned.</p>
     }else{
-      @ <p class="noMoreShun">Artifact(s)<br />
+      @ <p class="noMoreShun">Artifact(s)<br>
       for( p = zUuid ; *p ; p += strlen(p)+1 ){
-        @ %s(p)<br />
+        @ %s(p)<br>
       }
       @ will no longer be shunned.  But they may not exist in the repository.
       @ It may be necessary to rebuild the repository using the
       @ <b>fossil rebuild</b> command-line before the artifact content
       @ can pulled in from other repositories.</p>
@@ -149,13 +149,13 @@
         db_multi_exec("DELETE FROM tagxref WHERE tagid=%d", tagid);
       }
       admin_log("Shunned %Q", p);
       p += strlen(p)+1;
     }
-    @ <p class="shunned">Artifact(s)<br />
+    @ <p class="shunned">Artifact(s)<br>
     for( p = zUuid ; *p ; p += strlen(p)+1 ){
-      @ <a href="%R/artifact/%s(p)">%s(p)</a><br />
+      @ <a href="%R/artifact/%s(p)">%s(p)</a><br>
     }
     @ have been shunned.  They will no longer be pushed.
     @ They will be removed from the repository the next time the repository
     @ is rebuilt using the <b>fossil rebuild</b> command-line</p>
   }
@@ -253,13 +253,13 @@
   while( db_step(&q)==SQLITE_ROW ){
     const char *zUuid = db_column_text(&q, 0);
     int stillExists = db_column_int(&q, 1);
     cnt++;
     if( stillExists ){
-      @ <b><a href="%R/artifact/%s(zUuid)">%s(zUuid)</a></b><br />
+      @ <b><a href="%R/artifact/%s(zUuid)">%s(zUuid)</a></b><br>
     }else{
-      @ <b>%s(zUuid)</b><br />
+      @ <b>%s(zUuid)</b><br>
     }
   }
   if( cnt==0 ){
     @ <i>no artifacts are shunned on this server</i>
   }
@@ -476,11 +476,11 @@
       @ <tr><th valign="top" align="right">Artifacts:</th>
       @ <td valign="top">
     }
     cnt++;
     @ <a href="%R/info/%s(zUuid)">%s(zUuid)</a>
-    @ %h(zDesc) (size: %d(size))<br />
+    @ %h(zDesc) (size: %d(size))<br>
   }
   if( cnt>0 ){
     @ <p>
     if( db_exists(
       "SELECT 1 FROM blob WHERE rcvid=%d AND"
@@ -526,13 +526,13 @@
         @ <tr><th valign="top" align="right">Unversioned&nbsp;Files:</th>
         @ <td valign="top">
       }
       cnt++;
       if( isDeleted ){
-        @ %h(zName) (deleted)<br />
+        @ %h(zName) (deleted)<br>
       }else{
-        @ <a href="%R/uv/%h(zName)">%h(zName)</a> (size: %d(size))<br />
+        @ <a href="%R/uv/%h(zName)">%h(zName)</a> (size: %d(size))<br>
       }
     }
     if( cnt>0 ){
       @ <p><form action='%R/rcvfrom'>
       @ <input type="hidden" name="rcvid" value='%d(rcvid)'>

Index: src/skins.c
==================================================================
--- src/skins.c
+++ src/skins.c
@@ -628,11 +628,11 @@
   login_insert_csrf_secret();
   @ <input type='hidden' name='w' value='%d(ii)'>
   @ <h2>Edit %s(aSkinAttr[ii].zTitle):</h2>
   zContent  = textarea_attribute("", 10, 80, aSkinAttr[ii].zFile,
                         aSkinAttr[ii].zFile, builtin_text(zDflt), 0);
-  @ <br />
+  @ <br>
   @ <input type="submit" name="submit" value="Apply Changes" />
   @ <hr />
   @ Baseline: <select size='1' name='basis'>
   for(j=0; j<count(aBuiltinSkin); j++){
     cgi_printf("<option value='%h'%s>%h</option>\n",

Index: src/statrep.c
==================================================================
--- src/statrep.c
+++ src/statrep.c
@@ -311,12 +311,12 @@
   }
   @ </tbody></table>
   if(nEventTotal){
     const char *zAvgLabel = includeMonth ? "month" : "year";
     int nAvg = iterations ? (nEventTotal/iterations) : 0;
-    @ <br /><div>Total events: %d(nEventTotal)
-    @ <br />Average per active %s(zAvgLabel): %d(nAvg)
+    @ <br><div>Total events: %d(nEventTotal)
+    @ <br>Average per active %s(zAvgLabel): %d(nAvg)
     @ </div>
   }
   if( !includeMonth ){
     output_table_sorting_javascript("statsTable","tnx",-1);
   }
@@ -571,11 +571,11 @@
      "   WHERE b>0+(SELECT substr(date(min(mtime)),1,4) FROM event)"
      ") SELECT b, b FROM a ORDER BY b DESC");
   if( zYear==0 || strlen(zYear)!=4 ){
     zYear = db_text("1970","SELECT substr(date('now'),1,4);");
   }
-  cgi_printf("<br />");
+  cgi_printf("<br>");
   db_prepare(&q,
              "SELECT DISTINCT strftime('%%W',mtime) AS wk, "
              "       count(*) AS n "
              "  FROM v_reports "
              " WHERE %Q=substr(date(mtime),1,4) "
@@ -633,11 +633,11 @@
   }
   db_finalize(&q);
   cgi_printf("</tbody></table>");
   if(total){
     int nAvg = iterations ? (total/iterations) : 0;
-    cgi_printf("<br /><div>Total events: %d<br />"
+    cgi_printf("<br><div>Total events: %d<br>"
                "Average per active week: %d</div>",
                total, nAvg);
   }
   output_table_sorting_javascript("statsTable","tnx",-1);
 }

Index: src/style.c
==================================================================
--- src/style.c
+++ src/style.c
@@ -408,11 +408,11 @@
 
   cgi_destination(CGI_HEADER);
 
   @ <!DOCTYPE html>
 
-  if( g.thTrace ) Th_Trace("BEGIN_HEADER<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_HEADER<br>\n", -1);
 
   /* Generate the header up through the main menu */
   Th_Store("project_name", db_get("project-name","Unnamed Fossil Project"));
   Th_Store("project_description", db_get("project-description",""));
   Th_Store("title", zTitle);
@@ -431,13 +431,13 @@
   image_url_var("logo");
   image_url_var("background");
   if( !login_is_nobody() ){
     Th_Store("login", g.zLogin);
   }
-  if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_HEADER_SCRIPT<br>\n", -1);
   Th_Render(zHeader);
-  if( g.thTrace ) Th_Trace("END_HEADER<br />\n", -1);
+  if( g.thTrace ) Th_Trace("END_HEADER<br>\n", -1);
   Th_Unstore("title");   /* Avoid collisions with ticket field names */
   cgi_destination(CGI_BODY);
   g.cgiOutput = 1;
   headerHasBeenGenerated = 1;
   sideboxUsed = 0;
@@ -641,13 +641,13 @@
   /* Set the href= field on hyperlinks.  Do this before the footer since
   ** the footer will be generating </html> */
   style_resolve_href();
 
   zFooter = skin_get("footer");
-  if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_FOOTER<br>\n", -1);
   Th_Render(zFooter);
-  if( g.thTrace ) Th_Trace("END_FOOTER<br />\n", -1);
+  if( g.thTrace ) Th_Trace("END_FOOTER<br>\n", -1);
 
   /* Render trace log if TH1 tracing is enabled. */
   if( g.thTrace ){
     cgi_append_content("<span class=\"thTrace\"><hr />\n", -1);
     cgi_append_content(blob_str(&g.thLog), blob_size(&g.thLog));
@@ -1594,34 +1594,34 @@
   showAll = PB("showall");
   style_submenu_checkbox("showall", "Cookies", 0);
   style_submenu_element("Stats", "%R/stat");
 
 #if !defined(_WIN32)
-  @ uid=%d(getuid()), gid=%d(getgid())<br />
+  @ uid=%d(getuid()), gid=%d(getgid())<br>
 #endif
-  @ g.zBaseURL = %h(g.zBaseURL)<br />
-  @ g.zHttpsURL = %h(g.zHttpsURL)<br />
-  @ g.zTop = %h(g.zTop)<br />
-  @ g.zPath = %h(g.zPath)<br />
+  @ g.zBaseURL = %h(g.zBaseURL)<br>
+  @ g.zHttpsURL = %h(g.zHttpsURL)<br>
+  @ g.zTop = %h(g.zTop)<br>
+  @ g.zPath = %h(g.zPath)<br>
   for(i=0, c='a'; c<='z'; c++){
     if( login_has_capability(&c, 1, 0) ) zCap[i++] = c;
   }
   zCap[i] = 0;
-  @ g.userUid = %d(g.userUid)<br />
-  @ g.zLogin = %h(g.zLogin)<br />
-  @ g.isHuman = %d(g.isHuman)<br />
-  @ capabilities = %s(zCap)<br />
+  @ g.userUid = %d(g.userUid)<br>
+  @ g.zLogin = %h(g.zLogin)<br>
+  @ g.isHuman = %d(g.isHuman)<br>
+  @ capabilities = %s(zCap)<br>
   for(i=0, c='a'; c<='z'; c++){
     if( login_has_capability(&c, 1, LOGIN_ANON)
          && !login_has_capability(&c, 1, 0) ) zCap[i++] = c;
   }
   zCap[i] = 0;
   if( i>0 ){
-    @ anonymous-adds = %s(zCap)<br />
+    @ anonymous-adds = %s(zCap)<br>
   }
-  @ g.zRepositoryName = %h(g.zRepositoryName)<br />
-  @ load_average() = %f(load_average())<br />
+  @ g.zRepositoryName = %h(g.zRepositoryName)<br>
+  @ load_average() = %f(load_average())<br>
   @ <hr />
   P("HTTP_USER_AGENT");
   cgi_print_all(showAll);
   if( showAll && blob_size(&g.httpHeader)>0 ){
     @ <hr />

Index: src/tag.c
==================================================================
--- src/tag.c
+++ src/tag.c
@@ -706,8 +706,8 @@
     " ORDER BY event.mtime DESC",
     timeline_query_for_www()
   );
   www_print_timeline(&q, 0, 0, 0, 0, 0);
   db_finalize(&q);
-  @ <br />
+  @ <br>
   style_footer();
 }

Index: src/tar.c
==================================================================
--- src/tar.c
+++ src/tar.c
@@ -727,17 +727,17 @@
   if( zExclude ) blob_appendf(&cacheKey, ",ex=%Q", zExclude);
   zKey = blob_str(&cacheKey);
 
   if( P("debug")!=0 ){
     style_header("Tarball Generator Debug Screen");
-    @ zName = "%h(zName)"<br />
-    @ rid = %d(rid)<br />
+    @ zName = "%h(zName)"<br>
+    @ rid = %d(rid)<br>
     if( zInclude ){
-      @ zInclude = "%h(zInclude)"<br />
+      @ zInclude = "%h(zInclude)"<br>
     }
     if( zExclude ){
-      @ zExclude = "%h(zExclude)"<br />
+      @ zExclude = "%h(zExclude)"<br>
     }
     @ zKey = "%h(zKey)"
     style_footer();
     return;
   }

Index: src/th_main.c
==================================================================
--- src/th_main.c
+++ src/th_main.c
@@ -283,11 +283,11 @@
   if( argc<2 || argc>3 ){
     return Th_WrongNumArgs(interp, "enable_output [LABEL] BOOLEAN");
   }
   rc = Th_ToInt(interp, argv[argc-1], argl[argc-1], &enableOutput);
   if( g.thTrace ){
-    Th_Trace("enable_output {%.*s} -> %d<br />\n", argl[1],argv[1],enableOutput);
+    Th_Trace("enable_output {%.*s} -> %d<br>\n", argl[1],argv[1],enableOutput);
   }
   return rc;
 }
 
 /*
@@ -664,11 +664,11 @@
       Th_ListAppend(interp, &zCapList, &nCapList, argv[i], argl[i]);
     }
     rc = login_has_capability((char*)argv[i],argl[i],*(int*)p);
   }
   if( g.thTrace ){
-    Th_Trace("[%s %#h] => %d<br />\n", argv[0], nCapList, zCapList, rc);
+    Th_Trace("[%s %#h] => %d<br>\n", argv[0], nCapList, zCapList, rc);
     Th_Free(interp, zCapList);
   }
   Th_SetResultInt(interp, rc);
   return TH_OK;
 }
@@ -724,11 +724,11 @@
       }
     }
     if( !match ) rc = 0;
   }
   if( g.thTrace ){
-    Th_Trace("[searchable %#h] => %d<br />\n", argl[1], argv[1], rc);
+    Th_Trace("[searchable %#h] => %d<br>\n", argl[1], argv[1], rc);
   }
   Th_SetResultInt(interp, rc);
   return TH_OK;
 }
 
@@ -839,11 +839,11 @@
 #endif
   else if( 0 == fossil_strnicmp( zArg, "markdown\0", 9 ) ){
     rc = 1;
   }
   if( g.thTrace ){
-    Th_Trace("[hasfeature %#h] => %d<br />\n", argl[1], zArg, rc);
+    Th_Trace("[hasfeature %#h] => %d<br>\n", argl[1], zArg, rc);
   }
   Th_SetResultInt(interp, rc);
   return TH_OK;
 }
 
@@ -870,11 +870,11 @@
   if( g.tcl.interp ){
     rc = 1;
   }
 #endif
   if( g.thTrace ){
-    Th_Trace("[tclReady] => %d<br />\n", rc);
+    Th_Trace("[tclReady] => %d<br>\n", rc);
   }
   Th_SetResultInt(interp, rc);
   return TH_OK;
 }
 
@@ -899,11 +899,11 @@
   }
   for(i=0; rc==0 && i<argl[1]; i++){
     rc = login_has_capability((char*)&argv[1][i],1,0);
   }
   if( g.thTrace ){
-    Th_Trace("[anycap %#h] => %d<br />\n", argl[1], argv[1], rc);
+    Th_Trace("[anycap %#h] => %d<br>\n", argl[1], argv[1], rc);
   }
   Th_SetResultInt(interp, rc);
   return TH_OK;
 }
 
@@ -1675,11 +1675,11 @@
   }else{
     Th_SetResult(interp, 0, 0);
     rc = TH_OK;
   }
   if( g.thTrace ){
-    Th_Trace("[setting %s%#h] => %d<br />\n", strict ? "strict " : "",
+    Th_Trace("[setting %s%#h] => %d<br>\n", strict ? "strict " : "",
              argl[nArg], argv[nArg], rc);
   }
   return rc;
 }
 
@@ -1990,11 +1990,11 @@
     {"verifyCsrf",    verifyCsrfCmd,        0},
     {"wiki",          wikiCmd,              (void*)&aFlags[0]},
     {0, 0, 0}
   };
   if( g.thTrace ){
-    Th_Trace("th1-init 0x%x => 0x%x<br />\n", g.th1Flags, flags);
+    Th_Trace("th1-init 0x%x => 0x%x<br>\n", g.th1Flags, flags);
   }
   if( needConfig ){
     /*
     ** This function uses several settings which may be defined in the
     ** repository and/or the global configuration.  Since the caller
@@ -2042,11 +2042,11 @@
         char *zResult = (char*)Th_GetResult(g.interp, &nResult);
         sendError(zResult, nResult, 0);
       }
     }
     if( g.thTrace ){
-      Th_Trace("th1-setup {%h} => %h<br />\n", g.th1Setup,
+      Th_Trace("th1-setup {%h} => %h<br>\n", g.th1Setup,
                Th_ReturnCodeName(rc, 0));
     }
   }
   g.th1Flags &= ~TH_INIT_MASK;
   g.th1Flags |= (flags & TH_INIT_MASK);
@@ -2057,11 +2057,11 @@
 */
 void Th_Store(const char *zName, const char *zValue){
   Th_FossilInit(TH_INIT_DEFAULT);
   if( zValue ){
     if( g.thTrace ){
-      Th_Trace("set %h {%h}<br />\n", zName, zValue);
+      Th_Trace("set %h {%h}<br>\n", zName, zValue);
     }
     Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
   }
 }
 
@@ -2100,11 +2100,11 @@
     int i;
     for(i=0; i<nList; i++){
       Th_ListAppend(g.interp, &zValue, &nValue, pzList[i], -1);
     }
     if( g.thTrace ){
-      Th_Trace("set %h {%h}<br />\n", zName, zValue);
+      Th_Trace("set %h {%h}<br>\n", zName, zValue);
     }
     Th_SetVar(g.interp, zName, -1, zValue, nValue);
     Th_Free(g.interp, zValue);
   }
 }
@@ -2118,11 +2118,11 @@
   Th_FossilInit(TH_INIT_DEFAULT);
   blob_zero(&value);
   blob_appendf(&value, "%d", iValue);
   zValue = blob_str(&value);
   if( g.thTrace ){
-    Th_Trace("set %h {%h}<br />\n", zName, zValue);
+    Th_Trace("set %h {%h}<br>\n", zName, zValue);
   }
   Th_SetVar(g.interp, zName, -1, zValue, strlen(zValue));
   blob_reset(&value);
 }
 
@@ -2266,11 +2266,11 @@
   ** do not want to skip executing essential commands unless the called command
   ** (i.e. "command_hook") explicitly forbids this by successfully returning
   ** TH_BREAK or TH_CONTINUE.
   */
   if( g.thTrace ){
-    Th_Trace("[command_hook {%h}] => %h<br />\n", zName,
+    Th_Trace("[command_hook {%h}] => %h<br>\n", zName,
              Th_ReturnCodeName(rc, 0));
   }
   /*
   ** Does our call to Th_FossilInit() result in opening a database?  If so,
   ** clean it up now.  This is very important because some commands do not
@@ -2298,11 +2298,11 @@
   Th_Store("cmd_name", zName);
   Th_StoreList("cmd_args", g.argv, g.argc);
   Th_StoreInt("cmd_flags", cmdFlags);
   rc = Th_Eval(g.interp, 0, "command_notify", -1);
   if( g.thTrace ){
-    Th_Trace("[command_notify {%h}] => %h<br />\n", zName,
+    Th_Trace("[command_notify {%h}] => %h<br>\n", zName,
              Th_ReturnCodeName(rc, 0));
   }
   /*
   ** Does our call to Th_FossilInit() result in opening a database?  If so,
   ** clean it up now.  This is very important because some commands do not
@@ -2353,11 +2353,11 @@
   ** do not want to skip processing essential web pages unless the called
   ** command (i.e. "webpage_hook") explicitly forbids this by successfully
   ** returning TH_BREAK or TH_CONTINUE.
   */
   if( g.thTrace ){
-    Th_Trace("[webpage_hook {%h}] => %h<br />\n", zName,
+    Th_Trace("[webpage_hook {%h}] => %h<br>\n", zName,
              Th_ReturnCodeName(rc, 0));
   }
   /*
   ** Does our call to Th_FossilInit() result in opening a database?  If so,
   ** clean it up now.  This is very important because some commands do not
@@ -2385,11 +2385,11 @@
   Th_Store("web_name", zName);
   Th_StoreList("web_args", g.argv, g.argc);
   Th_StoreInt("web_flags", cmdFlags);
   rc = Th_Eval(g.interp, 0, "webpage_notify", -1);
   if( g.thTrace ){
-    Th_Trace("[webpage_notify {%h}] => %h<br />\n", zName,
+    Th_Trace("[webpage_notify {%h}] => %h<br>\n", zName,
              Th_ReturnCodeName(rc, 0));
   }
   /*
   ** Does our call to Th_FossilInit() result in opening a database?  If so,
   ** clean it up now.  This is very important because some commands do not
@@ -2455,11 +2455,11 @@
     }else if( z[i]=='<' && isBeginScriptTag(&z[i]) ){
       sendText(z, i, 0);
       z += i+5;
       for(i=0; z[i] && (z[i]!='<' || !isEndScriptTag(&z[i])); i++){}
       if( g.thTrace ){
-        Th_Trace("eval {<pre>%#h</pre>}<br />", i, z);
+        Th_Trace("eval {<pre>%#h</pre>}<br>", i, z);
       }
       rc = Th_Eval(g.interp, 0, (const char*)z, i);
       if( rc!=TH_OK ) break;
       z += i;
       if( z[0] ){ z += 6; }

Index: src/timeline.c
==================================================================
--- src/timeline.c
+++ src/timeline.c
@@ -195,11 +195,11 @@
   @ <p>Enter candidate branch names below and see them displayed in their
   @ default background colors above.</p>
   for(i=0; i<10; i++){
     sqlite3_snprintf(sizeof(zNm),zNm,"b%d",i);
     zBr = P(zNm);
-    @ <input type="text" size="30" name='%s(zNm)' value='%h(PD(zNm,""))'><br />
+    @ <input type="text" size="30" name='%s(zNm)' value='%h(PD(zNm,""))'><br>
   }
   @ <input type="submit">
   @ </form>
   style_footer();
 }
@@ -2031,19 +2031,19 @@
       tmFlags |= TIMELINE_DISJOINT;
     }
     addFileGlobDescription(zChng, &desc);
     if( rAfter>0.0 ){
       if( rBefore>0.0 ){
-        blob_appendf(&desc, " occurring between %h and %h.<br />",
+        blob_appendf(&desc, " occurring between %h and %h.<br>",
                      zAfter, zBefore);
       }else{
-        blob_appendf(&desc, " occurring on or after %h.<br />", zAfter);
+        blob_appendf(&desc, " occurring on or after %h.<br>", zAfter);
       }
     }else if( rBefore>0.0 ){
-      blob_appendf(&desc, " occurring on or before %h.<br />", zBefore);
+      blob_appendf(&desc, " occurring on or before %h.<br>", zBefore);
     }else if( rCirca>0.0 ){
-      blob_appendf(&desc, " occurring around %h.<br />", zCirca);
+      blob_appendf(&desc, " occurring around %h.<br>", zCirca);
     }
     if( zSearch ){
       blob_appendf(&desc, " matching \"%h\"", zSearch);
     }
     if( g.perm.Hyperlink ){

Index: src/tkt.c
==================================================================
--- src/tkt.c
+++ src/tkt.c
@@ -476,20 +476,20 @@
     style_submenu_element("Formatted", "%R/tktview/%s", zUuid);
   }else{
     style_submenu_element("Plaintext", "%R/tktview/%s?plaintext", zUuid);
   }
   style_header("View Ticket");
-  if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW<br>\n", -1);
   ticket_init();
   initializeVariablesFromCGI();
   getAllTicketFields();
   initializeVariablesFromDb();
   zScript = ticket_viewpage_code();
   if( P("showfields")!=0 ) showAllFields();
-  if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW_SCRIPT<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_TKTVIEW_SCRIPT<br>\n", -1);
   Th_Render(zScript);
-  if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
+  if( g.thTrace ) Th_Trace("END_TKTVIEW<br>\n", -1);
 
   zFullName = db_text(0,
        "SELECT tkt_uuid FROM ticket"
        " WHERE tkt_uuid GLOB '%q*'", zUuid);
   if( zFullName ){
@@ -518,11 +518,11 @@
 
   if( argc!=3 ){
     return Th_WrongNumArgs(interp, "append_field FIELD STRING");
   }
   if( g.thTrace ){
-    Th_Trace("append_field %#h {%#h}<br />\n",
+    Th_Trace("append_field %#h {%#h}<br>\n",
               argl[1], argv[1], argl[2], argv[2]);
   }
   for(idx=0; idx<nField; idx++){
     if( memcmp(aField[idx].zName, argv[1], argl[1])==0
         && aField[idx].zName[argl[1]]==0 ){
@@ -661,11 +661,11 @@
     @ <hr />
     return TH_OK;
   }else{
     if( g.thTrace ){
       Th_Trace("submit_ticket {\n<blockquote><pre>\n%h\n</pre></blockquote>\n"
-               "}<br />\n",
+               "}<br>\n",
          blob_str(&tktchng));
     }
     ticket_put(&tktchng, zUuid, needMod);
   }
   return ticket_change(zUuid);
@@ -693,11 +693,11 @@
   if( P("cancel") ){
     cgi_redirect("home");
   }
   style_header("New Ticket");
   ticket_standard_submenu(T_ALL_BUT(T_NEW));
-  if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_TKTNEW<br>\n", -1);
   ticket_init();
   initializeVariablesFromCGI();
   getAllTicketFields();
   initializeVariablesFromDb();
   if( g.zPath[0]=='d' ) showAllFields();
@@ -709,18 +709,18 @@
   zScript = ticket_newpage_code();
   Th_Store("login", login_name());
   Th_Store("date", db_text(0, "SELECT datetime('now')"));
   Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd,
                    (void*)&zNewUuid, 0);
-  if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_TKTNEW_SCRIPT<br>\n", -1);
   if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zNewUuid ){
     cgi_redirect(mprintf("%s/tktview/%s", g.zTop, zNewUuid));
     return;
   }
   captcha_generate(0);
   @ </form>
-  if( g.thTrace ) Th_Trace("END_TKTVIEW<br />\n", -1);
+  if( g.thTrace ) Th_Trace("END_TKTVIEW<br>\n", -1);
   style_footer();
 }
 
 /*
 ** WEBPAGE: tktedit
@@ -766,11 +766,11 @@
     @ <span class="tktError">%d(nRec) tickets begin with:
     @ "%h(zName)"</span>
     style_footer();
     return;
   }
-  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br>\n", -1);
   ticket_init();
   getAllTicketFields();
   initializeVariablesFromCGI();
   initializeVariablesFromDb();
   if( g.zPath[0]=='d' ) showAllFields();
@@ -780,18 +780,18 @@
   zScript = ticket_editpage_code();
   Th_Store("login", login_name());
   Th_Store("date", db_text(0, "SELECT datetime('now')"));
   Th_CreateCommand(g.interp, "append_field", appendRemarkCmd, 0, 0);
   Th_CreateCommand(g.interp, "submit_ticket", submitTicketCmd, (void*)&zName,0);
-  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT_SCRIPT<br>\n", -1);
   if( Th_Render(zScript)==TH_RETURN && !g.thTrace && zName ){
     cgi_redirect(mprintf("%s/tktview/%s", g.zTop, zName));
     return;
   }
   captcha_generate(0);
   @ </form>
-  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br />\n", -1);
+  if( g.thTrace ) Th_Trace("BEGIN_TKTEDIT<br>\n", -1);
   style_footer();
 }
 
 /*
 ** Check the ticket table schema in zSchema to see if it appears to

Index: src/tktsetup.c
==================================================================
--- src/tktsetup.c
+++ src/tktsetup.c
@@ -318,11 +318,11 @@
 @ </th1>
 @ <h1 style="text-align: center;">Enter A New Ticket</h1>
 @ <table cellpadding="5">
 @ <tr>
 @ <td colspan="3">
-@ Enter a one-line summary of the ticket:<br />
+@ Enter a one-line summary of the ticket:<br>
 @ <input type="text" name="title" size="60" value="$<title>" />
 @ </td>
 @ </tr>
 @
 @ <tr>
@@ -362,19 +362,19 @@
 @ Enter a detailed description of the problem.
 @ For code defects, be sure to provide details on exactly how
 @ the problem can be reproduced.  Provide as much detail as
 @ possible.  Format:
 @ <th1>combobox mutype {Wiki HTML {Plain Text} {[links only]}} 1</th1>
-@ <br />
+@ <br>
 @ <th1>set nline [linecount $comment 50 10]</th1>
 @ <textarea name="icomment" cols="80" rows="$nline"
-@  wrap="virtual" class="wikiedit">$<icomment></textarea><br />
+@  wrap="virtual" class="wikiedit">$<icomment></textarea><br>
 @ </tr>
 @
 @ <th1>enable_output [info exists preview]</th1>
 @ <tr><td colspan="3">
-@ Description Preview:<br /><hr />
+@ Description Preview:<br><hr />
 @ <th1>
 @ if {$mutype eq "Wiki"} {
 @   wiki $icomment
 @ } elseif {$mutype eq "Plain Text"} {
 @   set r [randhex]
@@ -644,18 +644,18 @@
 @
 @ <tr><td colspan="2">
 @   Append Remark with format
 @   <th1>combobox mutype {Wiki HTML {Plain Text} {[links only]}} 1</th1>
 @   from
-@   <input type="text" name="username" value="$<username>" size="30" />:<br />
+@   <input type="text" name="username" value="$<username>" size="30" />:<br>
 @   <textarea name="icomment" cols="80" rows="15"
 @    wrap="virtual" class="wikiedit">$<icomment></textarea>
 @ </td></tr>
 @
 @ <th1>enable_output [info exists preview]</th1>
 @ <tr><td colspan="2">
-@ Description Preview:<br /><hr />
+@ Description Preview:<br><hr />
 @ <th1>
 @ if {$mutype eq "Wiki"} {
 @   wiki $icomment
 @ } elseif {$mutype eq "Plain Text"} {
 @   set r [randhex]

Index: src/wiki.c
==================================================================
--- src/wiki.c
+++ src/wiki.c
@@ -579,13 +579,13 @@
   if( !isWysiwyg ){
     /* Traditional markup-only editing */
     form_begin(0, "%R/wikiedit");
     @ <div>Markup style:
     mimetype_option_menu(zMimetype);
-    @ <br /><textarea name="w" class="wikiedit" cols="80"
+    @ <br><textarea name="w" class="wikiedit" cols="80"
     @  rows="%d(n)" wrap="virtual">%h(zBody)</textarea>
-    @ <br />
+    @ <br>
     if( db_get_boolean("wysiwyg-wiki", 0) ){
       @ <input type="submit" name="edit-wysiwyg" value="Wysiwyg Editor"
       @  onclick='return confirm("Switching to WYSIWYG-mode\nwill erase your markup\nedits. Continue?")' />
     }
     @ <input type="submit" name="preview" value="Preview Your Changes" />
@@ -600,11 +600,11 @@
     blob_zero(&html);
     htmlTidy(blob_str(&temp), &html);
     blob_reset(&temp);
     wysiwygEditor("w", blob_str(&html), 60, n);
     blob_reset(&html);
-    @ <br />
+    @ <br>
     @ <input type="submit" name="edit-markup" value="Markup Editor"
     @  onclick='return confirm("Switching to markup-mode\nwill erase your WYSIWYG\nedits. Continue?")' />
   }
   login_insert_csrf_secret();
   @ <input type="submit" name="submit" value="Apply These Changes" />
@@ -649,14 +649,14 @@
   wiki_standard_submenu(W_ALL_BUT(W_NEW));
   @ <p>Rules for wiki page names:</p>
   well_formed_wiki_name_rules();
   form_begin(0, "%R/wikinew");
   @ <p>Name of new wiki page:
-  @ <input style="width: 35;" type="text" name="name" value="%h(zName)" /><br />
+  @ <input style="width: 35;" type="text" name="name" value="%h(zName)" /><br>
   @ Markup style:
   mimetype_option_menu("text/x-fossil-wiki");
-  @ <br /><input type="submit" value="Create" />
+  @ <br><input type="submit" value="Create" />
   @ </p></form>
   if( zName[0] ){
     @ <p><span class="wikiError">
     @ "%h(zName)" is not a valid wiki page name!</span></p>
   }
@@ -681,11 +681,11 @@
     blob_appendf(p, "\n\n<hr /><div id=\"%s\"><i>On %s UTC %h",
       zId, zDate, login_name());
     if( zUser[0] && fossil_strcmp(zUser,login_name()) ){
       blob_appendf(p, " (claiming to be %h)", zUser);
     }
-    blob_appendf(p, " added:</i><br />\n%s</div id=\"%s\">", zRemark, zId);
+    blob_appendf(p, " added:</i><br>\n%s</div id=\"%s\">", zRemark, zId);
   }else if( fossil_strcmp(zMimetype, "text/x-markdown")==0 ){
     blob_appendf(p, "\n\n------\n*On %s UTC %h", zDate, login_name());
     if( zUser[0] && fossil_strcmp(zUser,login_name()) ){
       blob_appendf(p, " (claiming to be %h)", zUser);
     }
@@ -808,16 +808,16 @@
   form_begin(0, "%R/wikiappend");
   login_insert_csrf_secret();
   @ <input type="hidden" name="name" value="%h(zPageName)" />
   @ <input type="hidden" name="mimetype" value="%h(zMimetype)" />
   @ Your Name:
-  @ <input type="text" name="u" size="20" value="%h(zUser)" /><br />
+  @ <input type="text" name="u" size="20" value="%h(zUser)" /><br>
   zFormat = mimetype_common_name(zMimetype);
-  @ Comment to append (formatted as %s(zFormat)):<br />
+  @ Comment to append (formatted as %s(zFormat)):<br>
   @ <textarea name="r" class="wikiedit" cols="80"
   @  rows="10" wrap="virtual">%h(PD("r",""))</textarea>
-  @ <br />
+  @ <br>
   @ <input type="submit" name="preview" value="Preview Your Comment" />
   @ <input type="submit" name="submit" value="Append Your Changes" />
   @ <input type="submit" name="cancel" value="Cancel" />
   captcha_generate(0);
   @ </form>

Index: src/xfersetup.c
==================================================================
--- src/xfersetup.c
+++ src/xfersetup.c
@@ -61,11 +61,11 @@
       zButton = "Synchronize";
       zWarning = mprintf("WARNING: Pushing to \"%s\" is enabled.",
                          g.url.canonical);
     }
     @ <p>Press the <strong>%h(zButton)</strong> button below to
-    @ synchronize with the <em>%h(g.url.canonical)</em> repository now.<br />
+    @ synchronize with the <em>%h(g.url.canonical)</em> repository now.<br>
     @ This may be useful when testing the various transfer scripts.</p>
     @ <p>You can use the <code>http -async</code> command in your scripts, but
     @ make sure the <code>th1-uri-regexp</code> setting is set first.</p>
     if( zWarning ){
       @

Index: src/zip.c
==================================================================
--- src/zip.c
+++ src/zip.c
@@ -583,17 +583,17 @@
   if( zExclude ) blob_appendf(&cacheKey, ",ex=%Q", zExclude);
   zKey = blob_str(&cacheKey);
 
   if( P("debug")!=0 ){
     style_header("ZIP Archive Generator Debug Screen");
-    @ zName = "%h(zName)"<br />
-    @ rid = %d(rid)<br />
+    @ zName = "%h(zName)"<br>
+    @ rid = %d(rid)<br>
     if( zInclude ){
-      @ zInclude = "%h(zInclude)"<br />
+      @ zInclude = "%h(zInclude)"<br>
     }
     if( zExclude ){
-      @ zExclude = "%h(zExclude)"<br />
+      @ zExclude = "%h(zExclude)"<br>
     }
     @ zKey = "%h(zKey)"
     style_footer();
     return;
   }

Index: test/fileStat.th1
==================================================================
--- test/fileStat.th1
+++ test/fileStat.th1
@@ -94,9 +94,9 @@
 
   set checkIn [getLatestTrunkCheckIn]
   set totalFiles [theSumOfAllFiles $checkIn]
 </th1>
 
-<br />
+<br>
 As of trunk check-in <th1>decorate \[$checkIn\]</th1>, this
 repository contains <th1>html $totalFiles</th1> files.
-<br />
+<br>

Index: test/th1.test
==================================================================
--- test/th1.test
+++ test/th1.test
@@ -720,18 +720,18 @@
 
 fossil test-th-eval --th-trace "trace {}"
 if {$th1Hooks} {
   test th1-trace-2 {[normalize_result] eq \
 {------------------ BEGIN TRACE LOG ------------------
-th1-init 0x0 => 0x0<br />
+th1-init 0x0 => 0x0<br>
 
 ------------------- END TRACE LOG -------------------}}
 } else {
   test th1-trace-2 {[normalize_result] eq \
       {------------------ BEGIN TRACE LOG ------------------
-th1-init 0x0 => 0x0<br />
-th1-setup {} => TH_OK<br />
+th1-init 0x0 => 0x0<br>
+th1-setup {} => TH_OK<br>
 
 ------------------- END TRACE LOG -------------------}}
 }
 
 ###############################################################################
@@ -743,18 +743,18 @@
 
 fossil test-th-eval --th-trace "trace {this is a trace message.}"
 if {$th1Hooks} {
   test th1-trace-4 {[normalize_result] eq \
       {------------------ BEGIN TRACE LOG ------------------
-th1-init 0x0 => 0x0<br />
+th1-init 0x0 => 0x0<br>
 this is a trace message.
 ------------------- END TRACE LOG -------------------}}
 } else {
   test th1-trace-4 {[normalize_result] eq \
       {------------------ BEGIN TRACE LOG ------------------
-th1-init 0x0 => 0x0<br />
-th1-setup {} => TH_OK<br />
+th1-init 0x0 => 0x0<br>
+th1-setup {} => TH_OK<br>
 this is a trace message.
 ------------------- END TRACE LOG -------------------}}
 }
 
 ###############################################################################

Index: www/fileformat.wiki
==================================================================
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -265,11 +265,11 @@
 underlying project code.
 
 Allowed cards in the cluster are as follows:
 
 <blockquote>
-<b>M</b> <i>artifact-id</i><br />
+<b>M</b> <i>artifact-id</i><br>
 <b>Z</b> <i>checksum</i>
 </blockquote>
 
 A cluster contains one or more "M" cards followed by a single "Z"
 card.  Each M card has a single argument which is the artifact ID of
@@ -287,14 +287,14 @@
 Control artifacts are used to assign properties to other artifacts
 within the repository.
 Allowed cards in a control artifact are as follows:
 
 <blockquote>
-<b>D</b> <i>time-and-date-stamp</i><br />
-<b>T</b> (<b>+</b>|<b>-</b>|<b>*</b>)<i>tag-name</i> <i>artifact-id</i> ?<i>value</i>?<br />
-<b>U</b> <i>user-name</i><br />
-<b>Z</b> <i>checksum</i><br />
+<b>D</b> <i>time-and-date-stamp</i><br>
+<b>T</b> (<b>+</b>|<b>-</b>|<b>*</b>)<i>tag-name</i> <i>artifact-id</i> ?<i>value</i>?<br>
+<b>U</b> <i>user-name</i><br>
+<b>Z</b> <i>checksum</i><br>
 </blockquote>
 
 A control artifact must have one D card, one U card, one Z card and
 one or more T cards.  No other cards or other text is
 allowed in a control artifact.  Control artifacts might be PGP
@@ -342,16 +342,16 @@
 single wiki page.
 Wiki artifacts accept
 the following card types:
 
 <blockquote>
-<b>D</b> <i>time-and-date-stamp</i><br />
-<b>L</b> <i>wiki-title</i><br />
-<b>N</b> <i>mimetype</i><br />
-<b>P</b> <i>parent-artifact-id</i>+<br />
-<b>U</b> <i>user-name</i><br />
-<b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
+<b>D</b> <i>time-and-date-stamp</i><br>
+<b>L</b> <i>wiki-title</i><br>
+<b>N</b> <i>mimetype</i><br>
+<b>P</b> <i>parent-artifact-id</i>+<br>
+<b>U</b> <i>user-name</i><br>
+<b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br>
 <b>Z</b> <i>checksum</i>
 </blockquote>
 
 The D card is the date and time when the wiki page was edited.
 The P card specifies the parent wiki pages, if any.  The L card
@@ -376,14 +376,14 @@
 
 A ticket-change artifact represents a change to a trouble ticket.
 The following cards are allowed on a ticket change artifact:
 
 <blockquote>
-<b>D</b> <i>time-and-date-stamp</i><br />
-<b>J</b> ?<b>+</b>?<i>name</i> ?<i>value</i>?<br />
-<b>K</b> <i>ticket-id</i><br />
-<b>U</b> <i>user-name</i><br />
+<b>D</b> <i>time-and-date-stamp</i><br>
+<b>J</b> ?<b>+</b>?<i>name</i> ?<i>value</i>?<br>
+<b>K</b> <i>ticket-id</i><br>
+<b>U</b> <i>user-name</i><br>
 <b>Z</b> <i>checksum</i>
 </blockquote>
 
 The D card is the usual date and time stamp and represents the point
 in time when the change was entered.  The U card is the login of the
@@ -425,15 +425,15 @@
 technical note to which
 the attachment is connected (the target artifact).
 The following cards are allowed on an attachment artifact:
 
 <blockquote>
-<b>A</b> <i>filename target</i> ?<i>source</i>?<br />
-<b>C</b> <i>comment</i><br />
-<b>D</b> <i>time-and-date-stamp</i><br />
-<b>N</b> <i>mimetype</i><br />
-<b>U</b> <i>user-name</i><br />
+<b>A</b> <i>filename target</i> ?<i>source</i>?<br>
+<b>C</b> <i>comment</i><br>
+<b>D</b> <i>time-and-date-stamp</i><br>
+<b>N</b> <i>mimetype</i><br>
+<b>U</b> <i>user-name</i><br>
 <b>Z</b> <i>checksum</i>
 </blockquote>
 
 The A card specifies a filename for the attachment in its first argument.
 The second argument to the A card is the name of the wiki page or
@@ -469,17 +469,17 @@
 checkpoints, or news articles.
 The following cards are allowed on an technote artifact:
 
 <blockquote>
 <b>C</b> <i>comment</i><br>
-<b>D</b> <i>time-and-date-stamp</i><br />
-<b>E</b> <i>technote-time</i> <i>technote-id</i><br />
-<b>N</b> <i>mimetype</i><br />
-<b>P</b> <i>parent-artifact-id</i>+<br />
-<b>T</b> <b>+</b><i>tag-name</i> <b>*</b> ?<i>value</i>?<br />
-<b>U</b> <i>user-name</i><br />
-<b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
+<b>D</b> <i>time-and-date-stamp</i><br>
+<b>E</b> <i>technote-time</i> <i>technote-id</i><br>
+<b>N</b> <i>mimetype</i><br>
+<b>P</b> <i>parent-artifact-id</i>+<br>
+<b>T</b> <b>+</b><i>tag-name</i> <b>*</b> ?<i>value</i>?<br>
+<b>U</b> <i>user-name</i><br>
+<b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br>
 <b>Z</b> <i>checksum</i>
 </blockquote>
 
 The C card contains text that is displayed on the timeline for the
 technote.  The C card is optional, but there can only be one.

_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to