v0.31.0 bf0756b

index.html RawHistoryFolder

1<!doctype html>
2<html lang="en">
3<head>
4  <meta charset="utf-8">
5  <meta name="viewport" content="width=device-width, initial-scale=1">
6  <meta name="color-scheme" content="dark light">
7  <title>systemviews</title>
8  <link rel="stylesheet" href="./systemviews.css">
9  <script src="./wasm_exec.js"></script>
10  <script>
11    function renderWasmError(prefixText, err) {
12      const render = () => {
13        const app = document.getElementById('app');
14        if (!app) return;
15        app.innerHTML = '';
16        const message = document.createElement('div');
17        message.className = 'sv-error';
18        const prefix = document.createElement('span');
19        prefix.textContent = prefixText;
20        const details = document.createElement('span');
21        details.textContent = err && err.message ? err.message : String(err || 'unsupported browser');
22        message.append(prefix, details);
23        app.append(message);
24      };
25      if (document.readyState === 'loading' && !document.getElementById('app')) {
26        document.addEventListener('DOMContentLoaded', render, { once: true });
27      } else {
28        render();
29      }
30      console.error(prefixText, err);
31    }
32
33    function instantiateWasm(go, wasmURL) {
34      const instantiateFromBytes = () => fetch(wasmURL)
35        .then((response) => {
36          if (!response.ok) {
37            throw new Error(`HTTP ${response.status} loading ${wasmURL}`);
38          }
39          return response.arrayBuffer();
40        })
41        .then((bytes) => WebAssembly.instantiate(bytes, go.importObject));
42
43      if (!WebAssembly.instantiateStreaming) {
44        return instantiateFromBytes();
45      }
46      return WebAssembly.instantiateStreaming(fetch(wasmURL), go.importObject)
47        .catch((err) => {
48          console.error(`Streaming WebAssembly load failed for ${wasmURL}; falling back to ArrayBuffer instantiation`, err);
49          return instantiateFromBytes();
50        });
51    }
52
53    if (typeof WebAssembly !== 'object') {
54      renderWasmError('WebAssembly is not supported in this browser: ');
55    } else if (typeof Go !== 'function') {
56      renderWasmError('Go WebAssembly runtime failed to load: ');
57    } else {
58      const go = new Go();
59      instantiateWasm(go, './systemviews.wasm')
60        .then((result) => go.run(result.instance))
61        .catch((err) => renderWasmError('Failed to load systemviews WebAssembly: ', err));
62    }
63  </script>
64</head>
65<body>
66  <main id="app">Loading systemviews…</main>
67  <noscript>
68    <p>JavaScript is required to run Dumber system views. Enable JavaScript for <code>dumb://history</code>, <code>dumb://favorites</code>, and <code>dumb://config</code>.</p>
69  </noscript>
70</body>
71</html>

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close