-
Outline
-
- {#each patch.sections as section}
- {#if section.section_type === 'diff'}
-
+
+
+ {#each stack.patches as stackPatch}
+
+ {/each}
+
+
+
Patch
+
+
+
Title: {patch.title}
+ {#if patch.description}
+
Desc: {patch.description}
+ {/if}
+
Change Id: {patch.change_id.substr(0, 13)}
+
Commit SHA: {patch.commit_sha.substr(0, 10)}
+
Patch Version: {patch.version}
+
Series Position: {patch.position + 1}/{stack.stack_size}
+
+ Contributors:
+ {#each patch.contributors as email}
+
+ {/each}
+
+
+ Additions: {patch.statistics.lines - patch.statistics.deletions}, Deletions: {patch
+ .statistics.deletions}, Files: {patch.statistics.file_count}
+
+
+
+ {#if patch.review.viewed.length > 0}
+
+
Viewed:
+ {#each patch.review.viewed as email}
+
+ {/each}
+
+ {/if}
+
+ {#if patch.review.signed_off.length > 0}
+
+
Signed Off:
+ {#each patch.review.signed_off as email}
+
+ {/each}
+
+ {/if}
+
+ {#if patch.review.length > 0}
+
+
Rejected:
+ {#each patch.review.rejected as email}
+
+ {/each}
+
+ {/if}
+
+
Your sign off status
+ {#if status[data.changeId]}
+ {#if status[data.changeId].last_signoff}
+
You signed off on this patch
+ {/if}
+ {#if !status[data.changeId].last_reviewed}
+
You have not reviewed this patch
+ {:else if !status[data.changeId].last_signoff}
+
You have rejected this patch
+ {/if}
+ {/if}
+
+ {#if status[data.changeId]}
+ {#if !status[data.changeId].last_signoff}
+
+ {/if}
+ {#if status[data.changeId].last_signoff || !status[data.changeId].last_reviewed}
+
+ {/if}
+ {/if}
+
+
-
-
+
+
+
{#each patch.sections as section}
@@ -286,10 +516,18 @@
>down]
+
+ {section.new_path}
+
- {section.new_path}
+
+ rangeSelect(range, diff_path, diff_sha)}
+ diffPath={section.new_path}
+ diffSha={section.diff_sha}
+ diff={section.diff_patch}
+ />
-
{:else}
@@ -316,14 +554,168 @@
+
+
Chat
+
+ {#each events as event}
+ {#if event.event_type === 'chat'}
+
+
+ {#if event.object.diff_patch_array}
+
+
{event.object.diff_path}
+
+
+
+ {/if}
+
+ {#if event.object.issue}
+ {#if event.object.resolved}
+
resolved
+ {:else}
+
+ {/if}
+ {/if}
+
+ {/if}
+ {#if event.event_type === 'issue_status'}
+ {#if event.data.resolution}
+
+
+ {event.user.email} resolved issue {event.object.uuid.substr(0, 8)}
+
+
+ {event.created_at}
+
+
+ {/if}
+ {/if}
+
+ {#if event.event_type === 'patch_status'}
+ {#if event.data.status}
+
+
+ {event.user.email}
+ signed off
+
+
+ {event.created_at}
+
+
+ {:else}
+
+
+ {event.user.email}
+ requested changes
+
+
+ {event.created_at}
+
+
+ {/if}
+ {/if}
+
+ {#if event.event_type === 'patch_version'}
+
+
+ new patch version: v{event.object.version}
+
+
+ {event.created_at}
+
+
+ {/if}
+ {/each}
+
+
+
{/if}
-
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index f1ed1846ac..d43ed08a55 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,28 +4,6 @@ settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
-catalogs:
- default:
- vite:
- specifier: 5.2.13
- version: 5.2.13
- svelte:
- '@sveltejs/adapter-static':
- specifier: 3.0.4
- version: 3.0.4
- '@sveltejs/kit':
- specifier: 2.5.25
- version: 2.5.25
- '@sveltejs/vite-plugin-svelte':
- specifier: 4.0.0-next.6
- version: 4.0.0-next.6
- svelte:
- specifier: 5.0.0-next.243
- version: 5.0.0-next.243
- svelte-check:
- specifier: 4.0.1
- version: 4.0.1
-
importers:
.:
@@ -295,6 +273,9 @@ importers:
apps/web:
dependencies:
+ '@rails/actioncable':
+ specifier: ^7.2.100
+ version: 7.2.100
'@sentry/sveltekit':
specifier: ^8.9.2
version: 8.9.2(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.52.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.25.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.25.0)(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@4.0.0-next.6(svelte@5.0.0-next.243)(vite@5.2.13(@types/node@22.3.0)))(svelte@5.0.0-next.243)(vite@5.2.13(@types/node@22.3.0)))(svelte@5.0.0-next.243)
@@ -307,6 +288,9 @@ importers:
moment:
specifier: ^2.30.1
version: 2.30.1
+ svelte-gravatar:
+ specifier: ^1.0.3
+ version: 1.0.3(svelte@5.0.0-next.243)
devDependencies:
'@fontsource/fira-mono':
specifier: ^4.5.10
@@ -1219,6 +1203,9 @@ packages:
engines: {node: '>=16.3.0'}
hasBin: true
+ '@rails/actioncable@7.2.100':
+ resolution: {integrity: sha512-7xtIENf0Yw59AFDM3+xqxPCZxev3QVAqjPmUzmgsB9eL8S/zTpB0IU9srNc7XknzJI4e09XKNnCaJRx3gfYzXA==}
+
'@replit/codemirror-lang-svelte@6.0.0':
resolution: {integrity: sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==}
peerDependencies:
@@ -2525,6 +2512,9 @@ packages:
chardet@0.7.0:
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
+ charenc@0.0.2:
+ resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
+
check-error@2.1.1:
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
engines: {node: '>= 16'}
@@ -2666,6 +2656,9 @@ packages:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
+ crypt@0.0.2:
+ resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==}
+
css-shorthand-properties@1.1.1:
resolution: {integrity: sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==}
@@ -3752,6 +3745,9 @@ packages:
resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
engines: {node: '>= 0.4'}
+ is-buffer@1.1.6:
+ resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+
is-callable@1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
@@ -4164,6 +4160,9 @@ packages:
engines: {node: '>= 18'}
hasBin: true
+ md5@2.3.0:
+ resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==}
+
media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
@@ -5312,6 +5311,11 @@ packages:
peerDependencies:
svelte: ^3.57.0 || ^4.0.0
+ svelte-gravatar@1.0.3:
+ resolution: {integrity: sha512-CNxIV2lAuiqwdaPrGAM/BFj5U1dNNQXzeyh+HVi/48BODFXoDy0L1CMqYyvM+aKiF4ideZUBwT0S9/C1BeL5oA==}
+ peerDependencies:
+ svelte: '*'
+
svelte-preprocess@5.1.3:
resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==}
engines: {node: '>= 16.0.0', pnpm: ^8.0.0}
@@ -5349,6 +5353,9 @@ packages:
typescript:
optional: true
+ svelte-waypoint@0.1.4:
+ resolution: {integrity: sha512-UEqoXZjJeKj2sWlAIsBOFjxjMn+KP8aFCc/zjdmZi1cCOE59z6T2C+I6ZaAf8EmNQqNzfZVB/Lci4Ci9spzXAw==}
+
svelte-writable-derived@3.1.0:
resolution: {integrity: sha512-cTvaVFNIJ036vSDIyPxJYivKC7ZLtcFOPm1Iq6qWBDo1fOHzfk6ZSbwaKrxhjgy52Rbl5IHzRcWgos6Zqn9/rg==}
peerDependencies:
@@ -5975,6 +5982,28 @@ packages:
resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==}
engines: {node: '>= 14'}
+catalogs:
+ default:
+ vite:
+ specifier: 5.2.13
+ version: 5.2.13
+ svelte:
+ '@sveltejs/adapter-static':
+ specifier: 3.0.4
+ version: 3.0.4
+ '@sveltejs/kit':
+ specifier: 2.5.25
+ version: 2.5.25
+ '@sveltejs/vite-plugin-svelte':
+ specifier: 4.0.0-next.6
+ version: 4.0.0-next.6
+ svelte:
+ specifier: 5.0.0-next.243
+ version: 5.0.0-next.243
+ svelte-check:
+ specifier: 4.0.1
+ version: 4.0.1
+
snapshots:
'@aashutoshrathi/word-wrap@1.2.6': {}
@@ -6959,6 +6988,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@rails/actioncable@7.2.100': {}
+
'@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1))(@codemirror/lang-css@6.2.1(@codemirror/view@6.26.3))(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.2)(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)(@lezer/highlight@1.2.0)(@lezer/javascript@1.4.16)(@lezer/lr@1.4.1)':
dependencies:
'@codemirror/autocomplete': 6.16.2(@codemirror/language@6.10.2)(@codemirror/state@6.4.1)(@codemirror/view@6.26.3)(@lezer/common@1.2.1)
@@ -8639,6 +8670,8 @@ snapshots:
chardet@0.7.0: {}
+ charenc@0.0.2: {}
+
check-error@2.1.1: {}
chokidar@3.6.0:
@@ -8782,6 +8815,8 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
+ crypt@0.0.2: {}
+
css-shorthand-properties@1.1.1: {}
css-value@0.0.1: {}
@@ -10152,6 +10187,8 @@ snapshots:
call-bind: 1.0.7
has-tostringtag: 1.0.2
+ is-buffer@1.1.6: {}
+
is-callable@1.2.7: {}
is-core-module@2.13.1:
@@ -10531,6 +10568,12 @@ snapshots:
marked@10.0.0: {}
+ md5@2.3.0:
+ dependencies:
+ charenc: 0.0.2
+ crypt: 0.0.2
+ is-buffer: 1.1.6
+
media-typer@0.3.0: {}
memoizerific@1.11.3:
@@ -11738,6 +11781,12 @@ snapshots:
svelte: 5.0.0-next.243
svelte-writable-derived: 3.1.0(svelte@5.0.0-next.243)
+ svelte-gravatar@1.0.3(svelte@5.0.0-next.243):
+ dependencies:
+ md5: 2.3.0
+ svelte: 5.0.0-next.243
+ svelte-waypoint: 0.1.4
+
svelte-preprocess@5.1.3(@babel/core@7.24.7)(postcss-load-config@5.1.0(postcss@8.4.39))(postcss@8.4.39)(svelte@5.0.0-next.243)(typescript@5.4.5):
dependencies:
'@types/pug': 2.0.6
@@ -11752,6 +11801,8 @@ snapshots:
postcss-load-config: 5.1.0(postcss@8.4.39)
typescript: 5.4.5
+ svelte-waypoint@0.1.4: {}
+
svelte-writable-derived@3.1.0(svelte@5.0.0-next.243):
dependencies:
svelte: 5.0.0-next.243