<html>
<head>
  <title>Changelog</title>
  <meta name="description" content="Get the changelog between two COS builds">
  <link rel="stylesheet" href="/static/css/base.css">
  <link rel="stylesheet" href="/static/css/changelog.css">
</head>
<body>
  <div class="navbar">
    <p class="navbar-title">Container Optimized OS</p>
    <a class="signout" href="/signout/?redirect=/changelog/">Sign Out</a>
  </div>
  <div class="sidenav">
    <a href="/">Home</a>
    <a class="active" href="/changelog/">Changelog</a>
    <a href="/findbuild/">Find Build</a>
    <a href="/findreleasedbuildv2/">Find Released Build</a>
    <a href="/readme/">Readme</a>
  </div>
  <div class="main">
    <h1>Changelog</h1>
    <p class="feature-info">Retrieve a list of commits and sysctl changes between two
      Container-Optimized OS builds.<br>
      Example Input: <b>cos-rc-85-13310-1034-0</b> or <b>13310.1034.0</b>
    </p>
    <p class="feature-info"><b>Note:</b>
      <a href="https://crosland.corp.google.com/" target="_blank">
        go/crosland
      </a>
      should be used for pre-cusky builds
    </p>
    <form class="changelog-form" action="/changelog">
      <div class="text">
        <label>From </label>
        {{if (ne .Source "")}}
          <input type="text" class="source" name="source" placeholder="Image Name or Build Number" value={{.Source}} required>
        {{else}}
          <input type="text" class="source" name="source" placeholder="Image Name or Build Number" required>
        {{end}}
        <label> to </label>
        {{if (ne .Target "")}}
          <input type="text" class="target" name="target" placeholder="Image Name or Build Number" value={{.Target}} required>
        {{else}}
          <input type="text" class="target" name="target" placeholder="Image Name or Build Number" required>
        {{end}}
        <input type="hidden" name="n" value={{.QuerySize}}>
      </div>
      <div class="text">
        <label>From </label>
        {{if (ne .SourceMilestone "")}}
          <input type="text" class="source" name="source-milestone" placeholder="Milestone Number" value={{.SourceMilestone}} required>
        {{else}}
          <input type="text" class="source" name="source-milestone" placeholder="Milestone Number" required>
        {{end}}
        <label> to </label>
        {{if (ne .TargetMilestone "")}}
          <input type="text" class="target" name="target-milestone" placeholder="Milestone Number" value={{.TargetMilestone}} required>
        {{else}}
          <input type="text" class="target" name="target-milestone" placeholder="Milestone Number" required>
        {{end}}
        <input class="submit" type="submit" value="Submit"><br>
      </div>
      <div class="text">
        <label>From </label>
        {{if (ne .SourceBoard "")}}
          <input type="text" class="source" name="source-board" placeholder="Board Name" value={{.SourceBoard}}>
        {{else}}
          <input type="text" class="source" name="source-board" placeholder="Board Name">
        {{end}}
        <label> to </label>
        {{if (ne .TargetBoard "")}}
          <input type="text" class="target" name="target-board" placeholder="Board Name" value={{.TargetBoard}}>
        {{else}}
          <input type="text" class="target" name="target-board" placeholder="Board Name">
        {{end}}
        The default board is "lakitu".
      </div>
      <div class="radio">
        {{if .Internal}}
          <label>
            <input type="radio" class="internal" name="internal" value="true" checked>
            Internal
          </label>
          <label>
            <input type="radio" class="external" name="internal" value="false">
            External
          </label>
        {{else}}
          <label>
            <input type="radio" class="internal" name="internal" value="true">
            Internal
          </label>
          <label>
            <input type="radio" class="external" name="internal" value="false" checked>
            External
          </label>
        {{end}}
      </div>
    </form>
    {{if (and (ne .Target "") (ne .Source ""))}}
      <div class="sha-legend">
        <div class="legend-row">
          <div class="circle addition"></div>
          <span>
            Commits present in <b>{{.Target}}</b> but not in <b>{{.Source}}</b>
          </span><br>
        </div>
        <div class="legend-row">
          <div class="circle removal"></div>
          <span>
            Commits present in <b>{{.Source}}</b> but not in <b>{{.Target}}</b>
          </span>
        </div>
        <a href="/readme/">Read more</a>
      </div>
    {{end}}
    {{range $table := .RepoTables}}
    <h2 class="repo-header"> {{$table.Name}} </h2>
    <table class="repo-table">
      <tr>
        <th class="commit-sha">SHA</th>
        <th class="commit-subject">Subject</th>
        <th class="commit-bugs">Bugs</th>
        <th class="commit-author">Author</th>
        <th class="commit-committer">Committer</th>
        <th class="commit-time">Committer Date</th>
        <th class="commit-release-notes">Release Notes</th>
      </tr>
    </table>
    <table class="repo-table">
      {{range $commit := $table.Additions}}
      <tr>
        <td class="commit-sha addition">
          <a href={{$commit.SHA.URL}}  target="_blank">{{$commit.SHA.Name}}</a>
        </td>
        <td class="commit-subject">{{$commit.Subject}}</td>
        <td class="commit-bugs">
          {{range $bugAttr := $commit.Bugs}}
          <a href={{$bugAttr.URL}}  target="_blank">{{$bugAttr.Name}}</a>
          {{end}}
        </td>
        <td class="commit-author">{{$commit.AuthorName}}</td>
        <td class="commit-committer">{{$commit.CommitterName}}</td>
        <td class="commit-time">{{$commit.CommitTime}}</td>
        <td class="commit-release-notes">{{$commit.ReleaseNote}}</td>
      </tr>
      {{end}}
    </table>
    {{if (ne $table.AdditionsLink "")}}
      <a class="gob-link" href={{$table.AdditionsLink}} target="_blank">
        Show more commits
      </a>
    {{end}}
    <table class="repo-table">
      {{range $commit := $table.Removals}}
      <tr>
        <td class="commit-sha removal">
          <a href={{$commit.SHA.URL}} target="_blank">{{$commit.SHA.Name}}</a>
        </td>
        <td class="commit-subject">{{$commit.Subject}}</td>
        <td class="commit-bugs">
          {{range $bugAttr := $commit.Bugs}}
          <a href={{$bugAttr.URL}}  target="_blank">{{$bugAttr.Name}}</a>
          {{end}}
        </td>
        <td class="commit-author">{{$commit.AuthorName}}</td>
        <td class="commit-committer">{{$commit.CommitterName}}</td>
        <td class="commit-time">{{$commit.CommitTime}}</td>
        <td class="commit-release-notes">{{$commit.ReleaseNote}}</td>
      </tr>
      {{end}}
    </table>
    {{if (ne $table.RemovalsLink "")}}
      <a class="gob-link" href={{$table.RemovalsLink}} target="_blank">
        Show more commits
      </a>
    {{end}}
    {{end}}
    {{if .Sysctl.NotEmpty}}
    <h2>Runtime Sysctl Changes:</h2>
      <table class="repo-table">
        <tr>
          <th class="sysctl">Sysctl</th>
          <th class="sysctl">Old Value</th>
          <th class="sysctl">New Value</th>
        </tr>
        {{range $sysctl := .Sysctl.Changes}}
        <tr>
          <td>{{index $sysctl 0}}</td>
          <td class="sysctl removal">{{index $sysctl 1}}</td>
          <td class="sysctl addition">{{index $sysctl 2}}</td>
        </tr>
        {{end}}
      </table>
      <div>{{.Sysctl.NotFound}}</div>
    {{end}}
  </table>
  </div>
</body>
</html>
