Переглянути джерело

ui: every terminal link opens in a new tab

The task page's session table and yeehaw hint now carry
target="_blank" rel="noopener" like the goal page's run links —
watching a terminal never navigates away from the page that linked
it.
clanker 1 місяць тому
батько
коміт
e266a9e4af
2 змінених файлів з 7 додано та 2 видалено
  1. 4 2
      src/pages/task_detail.html
  2. 3 0
      test/web_stack_test.py

+ 4 - 2
src/pages/task_detail.html

@@ -277,7 +277,8 @@
                 </ul>
                 <p class="muted" stm-if="task.yeehaw_more > 0">+<span stm-text="task.yeehaw_more">0</span>
                     more yeehaw<span stm-text="task.yeehaw_more == 1 ? '' : 's'"></span> on the
-                    <a stm-attribute.href="'/tasks/' + task.id + '/terminal'">terminal log</a></p>
+                    <a stm-attribute.href="'/tasks/' + task.id + '/terminal'"
+                       target="_blank" rel="noopener">terminal log</a></p>
             </section>
 
             <!-- Status + description side by side in a 50/50 grid (plan
@@ -587,7 +588,8 @@
                         <td stm-text="session.ended_display">ended</td>
                         <td stm-if="session.open"><span class="badge badge-working">open</span></td>
                         <td stm-if="!session.open" stm-text="session.outcome">outcome</td>
-                        <td><a stm-attribute.href="'/tasks/' + task.id + '/terminal?session_id=' + session.id">Terminal</a></td>
+                        <td><a stm-attribute.href="'/tasks/' + task.id + '/terminal?session_id=' + session.id"
+                               target="_blank" rel="noopener">Terminal</a></td>
                     </tr>
                     <tr stm-if="task.sessions.length == 0"><td colspan="6" class="muted">No sessions yet.</td></tr>
                 </tbody>

+ 3 - 0
test/web_stack_test.py

@@ -2004,6 +2004,9 @@ def bundle_pages(ctx):
     task_page_html = http_get_page(auth, "/tasks/%d" % dash_run)
     check("Mandate" in task_page_html and 'stm-markdown="task.description"' in task_page_html,
           "the task page frames the description as the mandate")
+    check(re.search(r"'/terminal\?session_id=' \+ session\.id\"\s+target=\"_blank\"",
+                    task_page_html) is not None,
+          "the task page's session terminal links open in a new tab")
     terminal_state = slot_public(auth, "/tasks/%d/terminal" % dash_run, "terminal")
     session_rows = terminal_state["sessions"]
     check(len(session_rows) >= 2