jingbong

An imaginary friend for Linear and GitHub, built for async, multi-threaded development – solo or with friends. Run it in the cloud and keep building on the go from the Linear phone app.

github · guide · full install instructions

curl -fsSL https://jingbong.dev/ging_gang_gong_already.sh | sh

## how it works

Braindump what you have. jingbong finds the sharp edges and lays out the options. Explore, discuss, and decide when you're ready, then consolidate into a new checkpoint. Repeat until everything is settled, then build.

jingbong does the legwork, you make the decisions, and Linear keeps the record.

## walkthrough

One issue, start to finish. Mention @jingbong in any comment: it reacts 👀 when it picks up the request and replies in the thread.

ENG-207
CSV download on reports

Reports page needs a download button, people keep copying the table into spreadsheets.

### ask in plain words

@jingbong <text> asks about the code or requests work in plain words.

m
maya 9:02

@jingbong how does the reports table get its rows?

👀 1
j
jingbong 9:03

ReportsTable asks /api/reports for 50 rows at a time. Filters and sort are query params, so the server already knows what's on screen.

### checkpoint

@jingbong cp writes up a suggested title and what's been decided, and posts each open question as its own thread for people to answer.

s
sam 9:10

@jingbong cp

👀 1
j
jingbong 9:11

Suggested title: Export reports as CSV

What the issue is: a button on the reports page that downloads the table as a CSV.

Done looks like:

  • a download button above the reports table
j
jingbong 9:11

Export only the 50 rows on screen, or every row matching the current filters?

### options

@jingbong opt in a thread, or a 🤔 reaction on any comment, lays out every reasonable option as its own reply, with trade-offs and no recommendation. 👍 the one you pick.

j
jingbong 9:11

Export only the 50 rows on screen, or every row matching the current filters?

s
sam 9:20

Every row with the filters applied. But some teams have 200k rows, can a browser even do that? And doesn't Excel mangle accented names?

m
maya 9:24

@jingbong opt

👀 1
j
jingbong 9:26

Question: where the CSV gets built, so it stays fast for big teams and opens cleanly in Excel.

What decides it:

  • how many rows the biggest exports have
  • whether people will wait, or want it sent later
j
jingbong 9:26

Option A: build it in the browser from paged requests.

No server work; slow and memory-hungry at 200k rows.

j
jingbong 9:26

Option B: stream it from a new /api/reports.csv.

Fast at any size; one new endpoint.

👍 1
j
jingbong 9:26

Option C: background job that emails a link when done.

Handles any size; people wait, and it needs storage.

j
jingbong 9:26

Option D: export .xlsx with a spreadsheet library.

No Excel encoding trouble; a new dependency.

### checkpoint until it's settled

Run cp again as things get decided. React ✅ on a checkpoint to write it into the issue's title and description.

s
sam 9:40

@jingbong cp

👀 1
j
jingbong 9:41

Suggested title: Export reports as CSV

Done looks like:

  • a download button above the reports table
  • every row matching the current filters and sort
  • streamed from a new /api/reports.csv
j
jingbong 9:41

Write a UTF-8 byte order mark, so Excel shows accented names correctly?

s
sam 9:45

yes

m
maya 9:50

@jingbong cp

👀 1
j
jingbong 9:51

Suggested title: Export reports as CSV

Done looks like:

  • a download button above the reports table
  • every row matching the current filters and sort
  • streamed from a new /api/reports.csv
  • UTF-8 with a byte order mark

Open questions: none

✅ 1
j
jingbong 9:52

✅ Applied to the title and description (previous version kept in this comment).

### build

@jingbong build implements on a new branch, runs the checks and opens one PR per changed repo. It never merges.

m
maya 10:05

@jingbong build

👀 1
j
jingbong 10:05

🔨 Building on jingbong/eng-207-export-reports-as-csv

j
jingbong 10:31

Opened #412, checks pass.

  • GET /api/reports.csv streams every matching row, using the same filters and sort as the table
  • "download CSV" button above ReportsTable

Assumptions:

  • file is named reports-<date>.csv
  • button is disabled while the table is loading

## install

Bring your own agent CLI: OpenCode, Claude Code, Codex, Gemini or Cursor.

curl -fsSL https://jingbong.dev/ging_gang_gong_already.sh | sh

Needs git and Node.js 18+. Clones to ~/jingbong, builds it and puts jingbong on your PATH (read the script). Then run /jingbong-setup in your agent from that folder, or follow SELF_HOSTING.md and SETUP_COMMENT_MODE.md to connect Linear and GitHub.