Convert /** @param */ to {@param} in Soy.

This converts the deprecated /** @param */ syntax to {@param}.

Deprecated as of:
https://developers.google.com/closure/templates/docs/deprecated_features#params-in-comments

PiperOrigin-RevId: 236616214
Change-Id: I0d232241264aee76429810839450a2ec8c8ecd43
diff --git a/resources/com/google/gitiles/templates/BlameDetail.soy b/resources/com/google/gitiles/templates/BlameDetail.soy
index f245c9c..7979de6 100644
--- a/resources/com/google/gitiles/templates/BlameDetail.soy
+++ b/resources/com/google/gitiles/templates/BlameDetail.soy
@@ -15,27 +15,20 @@
 
 /**
  * Detail page showing blame info for a file.
- *
- * @param title human-readable revision name.
- * @param repositoryName name of this repository.
- * @param? menuEntries menu entries.
- * @param? customVariant variant name for custom styling.
- * @param breadcrumbs breadcrumbs for this page.
- * @param data blob data, matching the params for .blobBox.
- * @param? regions for non-binary files, list of regions, one per line, with the
- *     following keys:
- *       abbrevSha: abbreviated SHA-1 of revision for this line; if missing,
- *           assume blame info is missing.
- *       author: author information with at least "name" and "relativeTime"
- *           keys.
- *       time: time of the revision.
- *       blameUrl: URL for a blame of this file at this commit.
- *       commitUrl: URL for detail about the commit.
- *       diffUrl: URL for a diff of this file at this commit.
- *       class: class name for tr.
- *     All keys but "class" are optional.
  */
 {template .blameDetail stricthtml="false"}
+  {@param title: ?}  /** human-readable revision name. */
+  {@param repositoryName: ?}  /** name of this repository. */
+  {@param? menuEntries: ?}  /** menu entries. */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
+  {@param breadcrumbs: ?}  /** breadcrumbs for this page. */
+  {@param data: ?}  /** blob data, matching the params for .blobBox. */
+  {@param? regions: ?}  /** for non-binary files, list of regions, one per line, with the following
+      keys: abbrevSha: abbreviated SHA-1 of revision for this line; if missing, assume blame info is
+      missing. author: author information with at least "name" and "relativeTime" keys. time: time
+      of the revision. blameUrl: URL for a blame of this file at this commit. commitUrl: URL for
+      detail about the commit. diffUrl: URL for a diff of this file at this commit. class: class
+      name for tr. All keys but "class" are optional. */
 {if $regions}
   {call .header data="all"}
     {param css: [gitiles.PRETTIFY_CSS_URL] /}
diff --git a/resources/com/google/gitiles/templates/Common.soy b/resources/com/google/gitiles/templates/Common.soy
index 6d2e8ed..67d5b0b 100644
--- a/resources/com/google/gitiles/templates/Common.soy
+++ b/resources/com/google/gitiles/templates/Common.soy
@@ -15,18 +15,17 @@
 
 /**
  * Common header for Gitiles.
- *
- * @param title title for this page. Always suffixed with repository name and a
- *     sitewide title.
- * @param? repositoryName repository name for this page, if applicable.
- * @param? menuEntries optional list of menu entries with "text" and optional
- *     "url" keys.
- * @param? customVariant variant name for custom styling.
- * @param breadcrumbs navigation breadcrumbs for this page.
- * @param? css optional list of CSS URLs to include.
- * @param? containerClass optional class to append to the main container.
  */
 {template .header stricthtml="false"}
+  {@param title: ?}  /** title for this page. Always suffixed with repository name and a sitewide
+      title. */
+  {@param? repositoryName: ?}  /** repository name for this page, if applicable. */
+  {@param? menuEntries: ?}  /** optional list of menu entries with "text" and optional "url" keys.
+      */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
+  {@param breadcrumbs: ?}  /** navigation breadcrumbs for this page. */
+  {@param? css: ?}  /** optional list of CSS URLs to include. */
+  {@param? containerClass: ?}  /** optional class to append to the main container. */
 <!DOCTYPE html>
 <html lang="en">
 <head>
@@ -147,10 +146,9 @@
  *
  * The footer tag part can be customized by creating a customFooter
  * variant template.
- *
- * @param? customVariant variant name for custom styling.
  */
 {template .footer stricthtml="false"}
+  {@param? customVariant: ?}  /** variant name for custom styling. */
     </div> <!-- Container -->
   </div> <!-- Site-content -->
   {delcall gitiles.customFooter variant="$customVariant ?: ''" /}
diff --git a/resources/com/google/gitiles/templates/DiffDetail.soy b/resources/com/google/gitiles/templates/DiffDetail.soy
index 147c90f..38e483b 100644
--- a/resources/com/google/gitiles/templates/DiffDetail.soy
+++ b/resources/com/google/gitiles/templates/DiffDetail.soy
@@ -15,16 +15,15 @@
 
 /**
  * Detail page showing diffs for a single commit.
- *
- * @param title human-readable revision name.
- * @param repositoryName name of this repository.
- * @param? menuEntries menu entries.
- * @param? customVariant variant name for custom styling.
- * @param breadcrumbs breadcrumbs for this page.
- * @param? commit optional commit for which diffs are displayed, with keys
- *     corresponding to the gitiles.commitDetail template (minus "diffTree").
  */
 {template .diffDetail stricthtml="false"}
+  {@param title: ?}  /** human-readable revision name. */
+  {@param repositoryName: ?}  /** name of this repository. */
+  {@param? menuEntries: ?}  /** menu entries. */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
+  {@param breadcrumbs: ?}  /** breadcrumbs for this page. */
+  {@param? commit: ?}  /** optional commit for which diffs are displayed, with keys corresponding to
+      the gitiles.commitDetail template (minus "diffTree"). */
 {call .header data="all" /}
 
 {if $commit}
@@ -39,13 +38,12 @@
 
 /**
  * File header for a single unified diff patch.
- *
- * @param firstParts parts of the first line of the header, with "text" and
- *     optional "url" fields.
- * @param rest remaining lines of the header, if any.
- * @param fileIndex position of the file within the difference.
  */
 {template .diffHeader}
+  {@param firstParts: ?}  /** parts of the first line of the header, with "text" and optional "url"
+      fields. */
+  {@param rest: ?}  /** remaining lines of the header, if any. */
+  {@param fileIndex: ?}  /** position of the file within the difference. */
 <pre class="u-pre u-monospace Diff">
   <a name="F{$fileIndex}" class="Diff-fileIndex"></a>
   {for $part in $firstParts}
diff --git a/resources/com/google/gitiles/templates/Doc.soy b/resources/com/google/gitiles/templates/Doc.soy
index 561e9d0..e7eb0d9 100644
--- a/resources/com/google/gitiles/templates/Doc.soy
+++ b/resources/com/google/gitiles/templates/Doc.soy
@@ -15,12 +15,11 @@
 
 /**
  * Default Doc Footer
- *
- * @param? sourceUrl url for source view of the page.
- * @param? logUrl url for log history of page.
- * @param? blameUrl url for blame of page source.
  */
 {deltemplate gitiles.customDocFooter}
+  {@param? sourceUrl: ?}  /** url for source view of the page. */
+  {@param? logUrl: ?}  /** url for log history of page. */
+  {@param? blameUrl: ?}  /** url for blame of page source. */
 <!-- default customDocFooter -->
 <footer class="Site-footer">
   <div class="Footer">
@@ -36,16 +35,15 @@
 
 /**
  * Documentation page rendered from markdown.
- *
- * @param? siteTitle h1 title from navbar.md.
- * @param pageTitle h1 title from specific page.
- * @param? logoUrl url of image logo.
- * @param? homeUrl url to jump to top of site.
- * @param? analyticsId Google Analytics Property ID.
- * @param? navbarHtml navar.md converted to SafeHtml.
- * @param? customVariant variant name for custom styling.
  */
 {template .markdownDoc}
+  {@param? siteTitle: ?}  /** h1 title from navbar.md. */
+  {@param pageTitle: ?}  /** h1 title from specific page. */
+  {@param? logoUrl: ?}  /** url of image logo. */
+  {@param? homeUrl: ?}  /** url to jump to top of site. */
+  {@param? analyticsId: ?}  /** Google Analytics Property ID. */
+  {@param? navbarHtml: ?}  /** navar.md converted to SafeHtml. */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
 <!DOCTYPE html>
 <html lang="en">
 <head>
diff --git a/resources/com/google/gitiles/templates/HostIndex.soy b/resources/com/google/gitiles/templates/HostIndex.soy
index c1a3438..5a05304 100644
--- a/resources/com/google/gitiles/templates/HostIndex.soy
+++ b/resources/com/google/gitiles/templates/HostIndex.soy
@@ -15,16 +15,15 @@
 
 /**
  * HTML page for /.
- *
- * @param hostName host name.
- * @param? menuEntries menu entries.
- * @param? customVariant variant name for custom styling.
- * @param? prefix prefix path for matching repositories.
- * @param? breadcrumbs map of breadcrumbs for header.
- * @param repositories list of repository description maps with name, cloneUrl,
- *     and optional description values.
  */
 {template .hostIndex stricthtml="false"}
+  {@param hostName: ?}  /** host name. */
+  {@param? menuEntries: ?}  /** menu entries. */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
+  {@param? prefix: ?}  /** prefix path for matching repositories. */
+  {@param? breadcrumbs: ?}  /** map of breadcrumbs for header. */
+  {@param repositories: ?}  /** list of repository description maps with name, cloneUrl, and
+      optional description values. */
 {call .header}
   {param title: $prefix ? $prefix : $hostName ? $hostName + ' Git repositories' : 'Git repositories' /}
   {param menuEntries: $menuEntries /}
diff --git a/resources/com/google/gitiles/templates/LogDetail.soy b/resources/com/google/gitiles/templates/LogDetail.soy
index 5a90b86..354453c 100644
--- a/resources/com/google/gitiles/templates/LogDetail.soy
+++ b/resources/com/google/gitiles/templates/LogDetail.soy
@@ -15,16 +15,15 @@
 
 /**
  * Detail page showing a shortlog for a commit.
- *
- * @param title human-readable revision name.
- * @param repositoryName name of this repository.
- * @param? menuEntries menu entries.
- * @param? customVariant variant name for custom styling.
- * @param breadcrumbs breadcrumbs for this page.
- * @param? tags optional list of tags encountered when peeling this object, with
- *     keys corresponding to gitiles.tagDetail.
  */
 {template .logDetail stricthtml="false"}
+  {@param title: ?}  /** human-readable revision name. */
+  {@param repositoryName: ?}  /** name of this repository. */
+  {@param? menuEntries: ?}  /** menu entries. */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
+  {@param breadcrumbs: ?}  /** breadcrumbs for this page. */
+  {@param? tags: ?}  /** optional list of tags encountered when peeling this object, with keys
+      corresponding to gitiles.tagDetail. */
 {call .header data="all" /}
 
 {if $tags}
@@ -43,10 +42,9 @@
 
 /**
  * Header for list of log entries.
- *
- * @param? previousUrl URL for the previous page of results.
  */
 {template .logEntriesHeader stricthtml="false"}
+  {@param? previousUrl: ?}  /** URL for the previous page of results. */
 {if $previousUrl}
   <nav class="LogNav">
     <a class="LogNav-prev" href="{$previousUrl}">{msg desc="text for previous URL"}&laquo; Previous{/msg}</a>
@@ -59,11 +57,10 @@
 
 /**
  * Wrapper for a single log entry with pretty format and variant.
- *
- * @param variant variant name for log entry template.
- * @param entry log entry; see .logEntry.
  */
 {template .logEntryWrapper}
+  {@param variant: ?}  /** variant name for log entry template. */
+  {@param entry: ?}  /** log entry; see .logEntry. */
 <li class="CommitLog-item CommitLog-item--{$variant}">
   {delcall gitiles.logEntry variant="$variant ?: 'default'" data="$entry" /}
 </li>
@@ -72,11 +69,10 @@
 
 /**
  * Footer for the list of log entries.
- *
- * @param? nextUrl URL for the next page of results.
- * @param? nextText text for next page link.
  */
 {template .logEntriesFooter stricthtml="false"}
+  {@param? nextUrl: ?}  /** URL for the next page of results. */
+  {@param? nextText: ?}  /** text for next page link. */
 </ol>
 {if $nextUrl}
   <nav class="LogNav">
@@ -96,26 +92,23 @@
 
 /**
  * Single pretty log entry, similar to --pretty=oneline.
- *
- * @param abbrevSha abbreviated SHA-1.
- * @param sha commit SHA-1.
- * @param url URL to commit detail page.
- * @param shortMessage short commit message.
- * @param message list of commit message parts, where each part contains:
- *     text: raw text of the part.
- *     url: optional URL that should be linked to from the part.
- * @param author author information with at least "name" and "relativeTime" keys.
- * @param committer committer information with at least "time" and "relativeTime" keys.
- * @param branches list of branches for this entry, with "name" and "url" keys.
- * @param tags list of tags for this entry, with "name" and "url" keys.
- * @param diffTree unused in this variant.
- * @param rename if this entry was a rename or a copy of the path, an object containg:
- *     changeType: the change type, "RENAME" or "COPY".
- *     oldPath: the old path prior to the rename or copy.
- *     newPath: the new path after the rename or copy.
- *     score: the similarity score of the rename or copy.
  */
 {deltemplate gitiles.logEntry variant="'oneline'"}
+  {@param abbrevSha: ?}  /** abbreviated SHA-1. */
+  {@param sha: ?}  /** commit SHA-1. */
+  {@param url: ?}  /** URL to commit detail page. */
+  {@param shortMessage: ?}  /** short commit message. */
+  {@param message: ?}  /** list of commit message parts, where each part contains: text: raw text of
+      the part. url: optional URL that should be linked to from the part. */
+  {@param author: ?}  /** author information with at least "name" and "relativeTime" keys. */
+  {@param committer: ?}  /** committer information with at least "time" and "relativeTime" keys. */
+  {@param branches: ?}  /** list of branches for this entry, with "name" and "url" keys. */
+  {@param tags: ?}  /** list of tags for this entry, with "name" and "url" keys. */
+  {@param diffTree: ?}  /** unused in this variant. */
+  {@param rename: ?}  /** if this entry was a rename or a copy of the path, an object containg:
+      changeType: the change type, "RENAME" or "COPY". oldPath: the old path prior to the rename or
+      copy. newPath: the new path after the rename or copy. score: the similarity score of the
+      rename or copy. */
 <a class="u-sha1 u-monospace CommitLog-sha1" href="{$url}">{$abbrevSha}</a>
 {sp}<a href="{$url}">{$shortMessage}</a>
 {sp}<span class="CommitLog-author" title="{$author.email}">{msg desc="commit author name"}by {$author.name}{/msg}</span>
@@ -152,52 +145,46 @@
 
 /**
  * Default single log entry (oneline format).
- *
- * @param abbrevSha abbreviated SHA-1.
- * @param sha commit SHA-1.
- * @param url URL to commit detail page.
- * @param shortMessage short commit message.
- * @param message list of commit message parts, where each part contains:
- *     text: raw text of the part.
- *     url: optional URL that should be linked to from the part.
- * @param author author information with at least "name" and "relativeTime" keys.
- * @param committer committer information with at least "time" and "relativeTime" keys.
- * @param branches list of branches for this entry, with "name" and "url" keys.
- * @param tags list of tags for this entry, with "name" and "url" keys.
- * @param diffTree unused in this variant.
- * @param rename if this entry was a rename or a copy of the path, an object containg:
- *     changeType: the change type, "RENAME" or "COPY".
- *     oldPath: the old path prior to the rename or copy.
- *     newPath: the new path after the rename or copy.
- *     score: the similarity score of the rename or copy.
  */
 {deltemplate gitiles.logEntry variant="'default'"}
+  {@param abbrevSha: ?}  /** abbreviated SHA-1. */
+  {@param sha: ?}  /** commit SHA-1. */
+  {@param url: ?}  /** URL to commit detail page. */
+  {@param shortMessage: ?}  /** short commit message. */
+  {@param message: ?}  /** list of commit message parts, where each part contains: text: raw text of
+      the part. url: optional URL that should be linked to from the part. */
+  {@param author: ?}  /** author information with at least "name" and "relativeTime" keys. */
+  {@param committer: ?}  /** committer information with at least "time" and "relativeTime" keys. */
+  {@param branches: ?}  /** list of branches for this entry, with "name" and "url" keys. */
+  {@param tags: ?}  /** list of tags for this entry, with "name" and "url" keys. */
+  {@param diffTree: ?}  /** unused in this variant. */
+  {@param rename: ?}  /** if this entry was a rename or a copy of the path, an object containg:
+      changeType: the change type, "RENAME" or "COPY". oldPath: the old path prior to the rename or
+      copy. newPath: the new path after the rename or copy. score: the similarity score of the
+      rename or copy. */
 {delcall gitiles.logEntry variant="'oneline'" data="all" /}
 {/deltemplate}
 
 
 /**
  * Single pretty log entry, similar to --pretty=full.
- *
- * @param abbrevSha abbreviated SHA-1.
- * @param sha commit SHA-1.
- * @param url URL to commit detail page.
- * @param shortMessage short commit message.
- * @param message list of commit message parts, where each part contains:
- *     text: raw text of the part.
- *     url: optional URL that should be linked to from the part.
- * @param author author information with at least "name" and "relativeTime" keys.
- * @param committer committer information with at least "time" and "relativeTime" keys.
- * @param branches list of branches for this entry, with "name" and "url" keys.
- * @param tags list of tags for this entry, with "name" and "url" keys.
- * @param diffTree unused in this variant.
- * @param rename if this entry was a rename or a copy of the path, an object containg:
- *     changeType: the change type, "RENAME" or "COPY".
- *     oldPath: the old path prior to the rename or copy.
- *     newPath: the new path after the rename or copy.
- *     score: the similarity score of the rename or copy.
  */
 {deltemplate gitiles.logEntry variant="'full'"}
+  {@param abbrevSha: ?}  /** abbreviated SHA-1. */
+  {@param sha: ?}  /** commit SHA-1. */
+  {@param url: ?}  /** URL to commit detail page. */
+  {@param shortMessage: ?}  /** short commit message. */
+  {@param message: ?}  /** list of commit message parts, where each part contains: text: raw text of
+      the part. url: optional URL that should be linked to from the part. */
+  {@param author: ?}  /** author information with at least "name" and "relativeTime" keys. */
+  {@param committer: ?}  /** committer information with at least "time" and "relativeTime" keys. */
+  {@param branches: ?}  /** list of branches for this entry, with "name" and "url" keys. */
+  {@param tags: ?}  /** list of tags for this entry, with "name" and "url" keys. */
+  {@param diffTree: ?}  /** unused in this variant. */
+  {@param rename: ?}  /** if this entry was a rename or a copy of the path, an object containg:
+      changeType: the change type, "RENAME" or "COPY". oldPath: the old path prior to the rename or
+      copy. newPath: the new path after the rename or copy. score: the similarity score of the
+      rename or copy. */
 <div class="u-monospace Metadata">
 <table>
   <tr>
diff --git a/resources/com/google/gitiles/templates/ObjectDetail.soy b/resources/com/google/gitiles/templates/ObjectDetail.soy
index 627bf96..b3a13e3 100644
--- a/resources/com/google/gitiles/templates/ObjectDetail.soy
+++ b/resources/com/google/gitiles/templates/ObjectDetail.soy
@@ -15,32 +15,25 @@
 
 /**
  * Detailed listing of a commit.
- *
- * @param author map with "name", "email", and "time" keys for the commit author.
- * @param committer map with "name", "email", and "time" keys for the committer.
- * @param sha commit SHA-1.
- * @param tree tree SHA-1.
- * @param treeUrl tree URL.
- * @param parents list of parent objects with the following keys:
- *     sha: SHA-1.
- *     url: URL to view the parent commit.
- *     diffUrl: URL to display diffs relative to this parent.
- *     blameUrl: optional URL to display blame of a file at this parent.
- * @param message list of commit message parts, where each part contains:
- *     text: raw text of the part.
- *     url: optional URL that should be linked to from the part.
- * @param diffTree list of changed tree entries with the following keys:
- *     changeType: string matching an org.eclipse.jgit.diff.DiffEntry.ChangeType
- *         constant.
- *     path: (new) path of the tree entry.
- *     oldPath: old path, only for renames and copies.
- *     url: URL to a detail page for the tree entry.
- *     diffUrl: URL to a diff page for the tree entry's diff in this commit.
- * @param logUrl URL to a log page starting at this commit.
- * @param archiveUrl URL to a download link of this commit as an archive.
- * @param archiveType type of the archive to download.
  */
 {template .commitDetail}
+  {@param author: ?}  /** map with "name", "email", and "time" keys for the commit author. */
+  {@param committer: ?}  /** map with "name", "email", and "time" keys for the committer. */
+  {@param sha: ?}  /** commit SHA-1. */
+  {@param tree: ?}  /** tree SHA-1. */
+  {@param treeUrl: ?}  /** tree URL. */
+  {@param parents: ?}  /** list of parent objects with the following keys: sha: SHA-1. url: URL to
+      view the parent commit. diffUrl: URL to display diffs relative to this parent. blameUrl:
+      optional URL to display blame of a file at this parent. */
+  {@param message: ?}  /** list of commit message parts, where each part contains: text: raw text of
+      the part. url: optional URL that should be linked to from the part. */
+  {@param diffTree: ?}  /** list of changed tree entries with the following keys: changeType: string
+      matching an org.eclipse.jgit.diff.DiffEntry.ChangeType constant. path: (new) path of the tree
+      entry. oldPath: old path, only for renames and copies. url: URL to a detail page for the tree
+      entry. diffUrl: URL to a diff page for the tree entry's diff in this commit. */
+  {@param logUrl: ?}  /** URL to a log page starting at this commit. */
+  {@param archiveUrl: ?}  /** URL to a download link of this commit as an archive. */
+  {@param archiveType: ?}  /** type of the archive to download. */
 <div class="u-monospace Metadata">
   <table>
     <tr>
@@ -144,23 +137,18 @@
 
 /**
  * Detailed listing of a tree.
- *
- * @param sha SHA of this path's tree.
- * @param? logUrl optional URL to a log for this path.
- * @param? archiveUrl optional URL to a download link of this tree as an archive.
- * @param? archiveType type of the archive to download, if archiveUrl is set.
- * @param entries list of entries with the following keys:
- *     type: entry type, matching one of the constant names defined in
- *         org.eclipse.jgit.lib.FileMode.
- *     name: tree entry name.
- *     url: URL to link to.
- *     targetName: name of a symlink target, required only if type == 'SYMLINK'.
- *     targetUrl: optional url of a symlink target, required only if
- *         type == 'SYMLINK'.
- * @param? readmePath optional path of the selected README.md file.
- * @param? readmeHtml optional rendered README.md contents.
  */
 {template .treeDetail}
+  {@param sha: ?}  /** SHA of this path's tree. */
+  {@param? logUrl: ?}  /** optional URL to a log for this path. */
+  {@param? archiveUrl: ?}  /** optional URL to a download link of this tree as an archive. */
+  {@param? archiveType: ?}  /** type of the archive to download, if archiveUrl is set. */
+  {@param entries: ?}  /** list of entries with the following keys: type: entry type, matching one
+      of the constant names defined in org.eclipse.jgit.lib.FileMode. name: tree entry name. url:
+      URL to link to. targetName: name of a symlink target, required only if type == 'SYMLINK'.
+      targetUrl: optional url of a symlink target, required only if type == 'SYMLINK'. */
+  {@param? readmePath: ?}  /** optional path of the selected README.md file. */
+  {@param? readmeHtml: ?}  /** optional rendered README.md contents. */
 <div class="TreeDetail">
   <div class="u-sha1 u-monospace TreeDetail-sha1">
     {msg desc="SHA-1 for the path's tree"}tree: {$sha}{/msg}
@@ -222,14 +210,13 @@
 
 /**
  * Common header for a blob shared between detail, blame, etc. views.
- *
- * @param sha SHA of this file's blob.
- * @param? fileUrl optional URL to a detail view of this file.
- * @param? logUrl optional URL to a log for this file.
- * @param? blameUrl optional URL to a blame for this file.
- * @param? docUrl optional URL to view rendered file.
  */
 {template .blobHeader}
+  {@param sha: ?}  /** SHA of this file's blob. */
+  {@param? fileUrl: ?}  /** optional URL to a detail view of this file. */
+  {@param? logUrl: ?}  /** optional URL to a log for this file. */
+  {@param? blameUrl: ?}  /** optional URL to a blame for this file. */
+  {@param? docUrl: ?}  /** optional URL to view rendered file. */
 <div class="u-sha1 u-monospace BlobSha1">
   {msg desc="SHA-1 for the file's blob"}blob: {$sha}{/msg}
   {if $fileUrl}{sp}[<a href="{$fileUrl}">{msg desc="detail view of a file"}file{/msg}</a>]{/if}
@@ -241,16 +228,14 @@
 
 /**
  * Detailed listing of a blob.
- *
- * @param sha SHA of this file's blob.
- * @param? logUrl optional URL to a log for this file.
- * @param? blameUrl optional URL to a blame for this file.
- * @param lines lines (may be empty), or null for a binary file. Each line
- *     is a list of entries with "classes" and "text" fields for pretty-printed
- *     spans.
- * @param? size for binary files only, size in bytes.
  */
 {template .blobDetail}
+  {@param sha: ?}  /** SHA of this file's blob. */
+  {@param? logUrl: ?}  /** optional URL to a log for this file. */
+  {@param? blameUrl: ?}  /** optional URL to a blame for this file. */
+  {@param lines: ?}  /** lines (may be empty), or null for a binary file. Each line is a list of
+      entries with "classes" and "text" fields for pretty-printed spans. */
+  {@param? size: ?}  /** for binary files only, size in bytes. */
   {call .blobHeader data="all" /}
 
   {if $lines != null}
@@ -281,14 +266,12 @@
 
 /**
  * Detailed listing of an annotated tag.
- *
- * @param sha SHA of this tag.
- * @param? tagger optional map with "name", "email", and "time" keys for the
- *     tagger.
- * @param object SHA of the object this tag points to.
- * @param message tag message.
  */
 {template .tagDetail}
+  {@param sha: ?}  /** SHA of this tag. */
+  {@param? tagger: ?}  /** optional map with "name", "email", and "time" keys for the tagger. */
+  {@param object: ?}  /** SHA of the object this tag points to. */
+  {@param message: ?}  /** tag message. */
 <div class="u-monospace Metadata">
   <table>
     <tr>
@@ -320,23 +303,20 @@
 
 /**
  * Line about a git person identity.
- *
- * @param name name.
- * @param email email.
  */
 {template .person_}
+  {@param name: ?}  /** name. */
+  {@param email: ?}  /** email. */
 {$name}{if $email} &lt;{$email}&gt;{/if}
 {/template}
 
 /**
  * Preformatted message, possibly containing hyperlinks.
- *
- * @param className CSS class name for <pre> block.
- * @param message list of message parts, where each part contains:
- *     text: raw text of the part.
- *     url: optional URL that should be linked to from the part.
  */
 {template .message_ visibility="private"}
+  {@param className: ?}  /** CSS class name for <pre> block. */
+  {@param message: ?}  /** list of message parts, where each part contains: text: raw text of the
+      part. url: optional URL that should be linked to from the part. */
 <pre class="{$className}">
   {for $part in $message}
     {if $part.url}<a href="{$part.url}">{$part.text}</a>{else}{$part.text}{/if}
diff --git a/resources/com/google/gitiles/templates/PathDetail.soy b/resources/com/google/gitiles/templates/PathDetail.soy
index a5ae100..67bad2e 100644
--- a/resources/com/google/gitiles/templates/PathDetail.soy
+++ b/resources/com/google/gitiles/templates/PathDetail.soy
@@ -15,18 +15,17 @@
 
 /**
  * Detail page for a path within a tree.
- *
- * @param title human-readable name of this path.
- * @param repositoryName name of this repository.
- * @param? menuEntries menu entries.
- * @param? customVariant variant name for custom styling.
- * @param breadcrumbs breadcrumbs for this page.
- * @param type path type, matching one of the constant names defined in
- *         org.eclipse.jgit.lib.FileMode.
- * @param data path data, matching the params for one of .treeDetail,
- *     .blobDetail, .symlinkDetail, or .gitlinkDetail as appropriate.
  */
 {template .pathDetail stricthtml="false"}
+  {@param title: ?}  /** human-readable name of this path. */
+  {@param repositoryName: ?}  /** name of this repository. */
+  {@param? menuEntries: ?}  /** menu entries. */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
+  {@param breadcrumbs: ?}  /** breadcrumbs for this page. */
+  {@param type: ?}  /** path type, matching one of the constant names defined in
+      org.eclipse.jgit.lib.FileMode. */
+  {@param data: ?}  /** path data, matching the params for one of .treeDetail, .blobDetail,
+      .symlinkDetail, or .gitlinkDetail as appropriate. */
 {if $type == 'REGULAR_FILE' or $type == 'EXECUTABLE_FILE'}
   {call .header data="all"}
     {param css: [gitiles.PRETTIFY_CSS_URL] /}
@@ -58,11 +57,10 @@
 
 /**
  * Detail for a symbolic link.
- *
- * @param target target of this symlink.
- * @param? targetUrl optional URL for the target, if it is within this repo.
  */
 {template .symlinkDetail}
+  {@param target: ?}  /** target of this symlink. */
+  {@param? targetUrl: ?}  /** optional URL for the target, if it is within this repo. */
 <div class="symlink-detail">
   {msg desc="Lead-in text for the symbolic link target."}Symbolic link to{/msg}
   {sp}{if $targetUrl}<a href="{$targetUrl}">{$target}</a>{else}{$target}{/if}
@@ -71,13 +69,12 @@
 
 /**
  * Detail for a git submodule link.
- *
- * @param sha submodule commit SHA.
- * @param remoteUrl URL of the remote repository.
- * @param? httpUrl optional HTTP URL pointing to a web-browser-compatible URL of
- *     the remote repository.
  */
 {template .gitlinkDetail}
+  {@param sha: ?}  /** submodule commit SHA. */
+  {@param remoteUrl: ?}  /** URL of the remote repository. */
+  {@param? httpUrl: ?}  /** optional HTTP URL pointing to a web-browser-compatible URL of the remote
+      repository. */
 <div class="gitlink-detail">
   {msg desc="Lead-in text for the git link URL"}Submodule link to {$sha} of{/msg}
   {if $remoteUrl}
diff --git a/resources/com/google/gitiles/templates/RefList.soy b/resources/com/google/gitiles/templates/RefList.soy
index b1bb8ed..0815d41 100644
--- a/resources/com/google/gitiles/templates/RefList.soy
+++ b/resources/com/google/gitiles/templates/RefList.soy
@@ -16,15 +16,14 @@
 
 /**
  * List of all refs in a repository.
- *
- * @param repositoryName name of this repository.
- * @param? menuEntries menu entries.
- * @param? customVariant variant name for custom styling.
- * @param breadcrumbs breadcrumbs for this page.
- * @param branches list of branch objects with url, name, and isHead keys.
- * @param tags list of tag objects with url and name keys.
  */
 {template .refsDetail stricthtml="false"}
+  {@param repositoryName: ?}  /** name of this repository. */
+  {@param? menuEntries: ?}  /** menu entries. */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
+  {@param breadcrumbs: ?}  /** breadcrumbs for this page. */
+  {@param branches: ?}  /** list of branch objects with url, name, and isHead keys. */
+  {@param tags: ?}  /** list of tag objects with url and name keys. */
 {call .header}
   {param title: 'Refs' /}
   {param repositoryName: $repositoryName /}
@@ -56,11 +55,10 @@
 
 /**
  * List of a single type of refs
- *
- * @param type name of this type of refs, e.g. "Branches"
- * @param refs list of branch objects with url, name, and optional isHead keys.
  */
 {template .refList}
+  {@param type: ?}  /** name of this type of refs, e.g. "Branches" */
+  {@param refs: ?}  /** list of branch objects with url, name, and optional isHead keys. */
   <div class="RefList">
     <h3 class="RefList-title">{$type}</h3>
     <ul class="RefList-items">
diff --git a/resources/com/google/gitiles/templates/RepositoryIndex.soy b/resources/com/google/gitiles/templates/RepositoryIndex.soy
index af1af50..3d617d7 100644
--- a/resources/com/google/gitiles/templates/RepositoryIndex.soy
+++ b/resources/com/google/gitiles/templates/RepositoryIndex.soy
@@ -15,22 +15,21 @@
 
 /**
  * Index page for a repository.
- *
- * @param repositoryName name of this repository.
- * @param? menuEntries menu entries.
- * @param? customVariant variant name for custom styling.
- * @param breadcrumbs breadcrumbs for this page.
- * @param cloneUrl clone URL for this repository.
- * @param description description text of the repository.
- * @param? mirroredFromUrl URL this repository is mirrored from.
- * @param branches list of branch objects with url, name, and isHead keys.
- * @param? moreBranchesUrl URL to show more branches, if necessary.
- * @param tags list of tag objects with url and name keys.
- * @param? moreTagsUrl URL to show more branches, if necessary.
- * @param hasLog whether a log should be shown for HEAD.
- * @param? readmeHtml optional rendered README.md contents.
  */
 {template .repositoryIndex stricthtml="false"}
+  {@param repositoryName: ?}  /** name of this repository. */
+  {@param? menuEntries: ?}  /** menu entries. */
+  {@param? customVariant: ?}  /** variant name for custom styling. */
+  {@param breadcrumbs: ?}  /** breadcrumbs for this page. */
+  {@param cloneUrl: ?}  /** clone URL for this repository. */
+  {@param description: ?}  /** description text of the repository. */
+  {@param? mirroredFromUrl: ?}  /** URL this repository is mirrored from. */
+  {@param branches: ?}  /** list of branch objects with url, name, and isHead keys. */
+  {@param? moreBranchesUrl: ?}  /** URL to show more branches, if necessary. */
+  {@param tags: ?}  /** list of tag objects with url and name keys. */
+  {@param? moreTagsUrl: ?}  /** URL to show more branches, if necessary. */
+  {@param hasLog: ?}  /** whether a log should be shown for HEAD. */
+  {@param? readmeHtml: ?}  /** optional rendered README.md contents. */
 {if $readmeHtml}
   {call .header data="all"}
     {param title: $repositoryName /}
@@ -100,11 +99,10 @@
 
 /**
  * List of branches.
- *
- * @param? branches list of branch objects with url and name keys.
- * @param? moreBranchesUrl URL to show more branches, if necessary.
  */
 {template .branches_ visibility="private"}
+  {@param? branches: ?}  /** list of branch objects with url and name keys. */
+  {@param? moreBranchesUrl: ?}  /** URL to show more branches, if necessary. */
   {if length($branches)}
     {call .refList}
       {param type: 'Branches' /}
@@ -118,11 +116,10 @@
 
 /**
  * List of tags.
- *
- * @param? tags list of branch objects with url and name keys.
- * @param? moreTagsUrl URL to show more tags, if necessary.
  */
 {template .tags_ visibility="private"}
+  {@param? tags: ?}  /** list of branch objects with url and name keys. */
+  {@param? moreTagsUrl: ?}  /** URL to show more tags, if necessary. */
   {if length($tags)}
     {call .refList}
       {param type: 'Tags' /}
diff --git a/resources/com/google/gitiles/templates/RevisionDetail.soy b/resources/com/google/gitiles/templates/RevisionDetail.soy
index 2667afe..353432c 100644
--- a/resources/com/google/gitiles/templates/RevisionDetail.soy
+++ b/resources/com/google/gitiles/templates/RevisionDetail.soy
@@ -15,21 +15,19 @@
 
 /**
  * Detail page about a single revision.
- *
- * @param title human-readable revision name.
- * @param repositoryName name of this repository.
- * @param? menuEntries menu entries.
- * @param? customVariant variant name for styling.
- * @param breadcrumbs breadcrumbs for this page.
- * @param? hasBlob set to true if the revision or its peeled value is a blob.
- * @param? hasReadme set to true if the treeDetail has readmeHtml.
- * @param objects list of objects encountered when peeling this object. Each
- *     object has a "type" key with one of the
- *     org.eclipse.jgit.lib.Contants.TYPE_* constant strings, and a "data" key
- *     with an object whose keys correspond to the appropriate object detail
- *     template from ObjectDetail.soy.
  */
 {template .revisionDetail stricthtml="false"}
+  {@param title: ?}  /** human-readable revision name. */
+  {@param repositoryName: ?}  /** name of this repository. */
+  {@param? menuEntries: ?}  /** menu entries. */
+  {@param? customVariant: ?}  /** variant name for styling. */
+  {@param breadcrumbs: ?}  /** breadcrumbs for this page. */
+  {@param? hasBlob: ?}  /** set to true if the revision or its peeled value is a blob. */
+  {@param? hasReadme: ?}  /** set to true if the treeDetail has readmeHtml. */
+  {@param objects: ?}  /** list of objects encountered when peeling this object. Each object has a
+      "type" key with one of the org.eclipse.jgit.lib.Contants.TYPE_* constant strings, and a "data"
+      key with an object whose keys correspond to the appropriate object detail template from
+      ObjectDetail.soy. */
 {if $hasBlob}
   {call .header data="all"}
     {param css: [gitiles.PRETTIFY_CSS_URL] /}