summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-10-30 12:02:44 -0500
committerAdam <[email protected]>2025-10-30 12:02:51 -0500
commitee7612a31c02ea442d8bf3e5d3b75ff572fac26a (patch)
tree26c720bf7d08b2a7b2475acd5598ffc23c39b953 /packages/desktop/src
parent582ed7c363fec4faa8cf393e023024ac90e65b82 (diff)
downloadopencode-ee7612a31c02ea442d8bf3e5d3b75ff572fac26a.tar.gz
opencode-ee7612a31c02ea442d8bf3e5d3b75ff572fac26a.zip
wip: desktop work
Diffstat (limited to 'packages/desktop/src')
-rw-r--r--packages/desktop/src/pages/index.tsx91
1 files changed, 2 insertions, 89 deletions
diff --git a/packages/desktop/src/pages/index.tsx b/packages/desktop/src/pages/index.tsx
index 0ff4423ad..9c27ab514 100644
--- a/packages/desktop/src/pages/index.tsx
+++ b/packages/desktop/src/pages/index.tsx
@@ -535,101 +535,14 @@ export default function Page() {
>
<For each={local.session.userMessages()}>
{(message) => {
- const countLines = (text: string) => {
- if (!text) return 0
- return text.split("\n").length
- }
-
- const additions = createMemo(
- () =>
- message.summary?.diffs.reduce((acc, diff) => acc + (diff.additions ?? 0), 0) ?? 0,
- )
-
- const deletions = createMemo(
- () =>
- message.summary?.diffs.reduce((acc, diff) => acc + (diff.deletions ?? 0), 0) ?? 0,
- )
-
- const totalBeforeLines = createMemo(
- () =>
- message.summary?.diffs.reduce((acc, diff) => acc + countLines(diff.before), 0) ??
- 0,
- )
-
- const blockCounts = createMemo(() => {
- const TOTAL_BLOCKS = 5
-
- const adds = additions()
- const dels = deletions()
- const unchanged = Math.max(0, totalBeforeLines() - dels)
-
- const totalActivity = unchanged + adds + dels
-
- if (totalActivity === 0) {
- return { added: 0, deleted: 0, neutral: TOTAL_BLOCKS }
- }
-
- const percentAdded = adds / totalActivity
- const percentDeleted = dels / totalActivity
- const added_raw = percentAdded * TOTAL_BLOCKS
- const deleted_raw = percentDeleted * TOTAL_BLOCKS
-
- let added = adds > 0 ? Math.ceil(added_raw) : 0
- let deleted = dels > 0 ? Math.ceil(deleted_raw) : 0
-
- let total_allocated = added + deleted
- if (total_allocated > TOTAL_BLOCKS) {
- if (added_raw < deleted_raw) {
- added = Math.floor(added_raw)
- } else {
- deleted = Math.floor(deleted_raw)
- }
-
- total_allocated = added + deleted
- if (total_allocated > TOTAL_BLOCKS) {
- if (added_raw < deleted_raw) {
- deleted = Math.floor(deleted_raw)
- } else {
- added = Math.floor(added_raw)
- }
- }
- }
-
- const neutral = Math.max(0, TOTAL_BLOCKS - added - deleted)
-
- return { added, deleted, neutral }
- })
-
- const ADD_COLOR = "var(--icon-diff-add-base)"
- const DELETE_COLOR = "var(--icon-diff-delete-base)"
- const NEUTRAL_COLOR = "var(--icon-weak-base)"
-
- const visibleBlocks = createMemo(() => {
- const counts = blockCounts()
- const blocks = [
- ...Array(counts.added).fill(ADD_COLOR),
- ...Array(counts.deleted).fill(DELETE_COLOR),
- ...Array(counts.neutral).fill(NEUTRAL_COLOR),
- ]
- return blocks.slice(0, 5)
- })
+ const diffs = createMemo(() => message.summary?.diffs ?? [])
return (
<li
class="group/li flex items-center gap-x-2 py-1 self-stretch cursor-default"
onClick={() => local.session.setActiveMessage(message.id)}
>
- <div class="w-[18px] shrink-0">
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 12" fill="none">
- <g>
- <For each={visibleBlocks()}>
- {(color, i) => (
- <rect x={i() * 4} width="2" height="12" rx="1" fill={color} />
- )}
- </For>
- </g>
- </svg>
- </div>
+ <DiffChanges diff={diffs()} variant="bars" />
<div
data-active={local.session.activeMessage()?.id === message.id}
classList={{