package templates

templ About() {
  <div>
     <h1>About</h1>
      <p>
          Converge is a utility for troubleshooting builds on continuous integration servers.
          It solves a common problem where the cause of job failure is difficult to determine.
          This is complicated further by the fact that build jobs are usually run on a build
          farm where there is no access to the build agents or in more modern envrionments when
          jobs are run in ephemeral containers.
      </p>

      <p>
          With Converge it is possible to get remote shell access to such jobs. This works
          by configuring the build job to connect to a Converge server using an agent program.
          The agent program can be downloaded from within the CI job using curl or wget.
          Next, an end-user can connect to the Converge server, a rendez-vous server, that connects
          the client and server together.
      </p>

      <p>
          The setup is such that the connection from client (end-user) to server (agent on CI job)
          is end-to-end encrypted. The Converge server itself is no more than a bitpipe which pumps
          data between client and agent.
      </p>

      <p>
          Both ssh and sftp are supported. Multiple shells are also allowed.
      </p>

      <p>
          There is a timeout mechanism in the agent such that jobs do not hang indefinitely
          waiting for a connection. This mechanism is useful to make sure build agents do not keep
          build agents occupied for a long time. By default, the agent exits with status 0 when
          the first client exits after logging in. This behavior as well as general expiry can be
          controlled from within a shell session by touching a .hold file. After logging in, the
          user can control expiry of the session as instructed by messages in the ssh session.
          When the timeout of a session is near the user is informed about this with messages
          in the shell.
      </p>
  </div>
}


templ AboutTab() {
    @BasePage(1) {
                    @About()
    }
}