Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ jobs:
- run: npm run test:hn-find-repos
env:
BROWSER_CHANNEL: chromium
- run: npm run test:stackoverflow
env:
BROWSER_CHANNEL: chromium
- uses: actions/upload-artifact@v7.0.2
if: always()
with:
Expand Down
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@ Find a lead. Read what happened next. Save the evidence and your own judgment—

Start with a topic, a project, or a question you cannot quite let go of. You do the thinking; GapCue helps you keep the trail.

1. **Find a lead.** Search public GitHub repositories or Hacker News for a topic such as `PDF tables`. Follow a repository to related HN searches, or look for GitHub candidates from an HN discussion.
2. **Read what happened next.** Open an HN story or paste a public GitHub Issue URL. Review sampled replies and mentioned changes, then follow the source when you need more context.
1. **Find a lead.** Search public GitHub repositories, Hacker News, or Stack Overflow questions for a topic such as `PDF tables`. Follow a repository to related HN searches, or look for GitHub candidates from an HN discussion.
2. **Read what happened next.** Open an HN story or Stack Overflow question, or paste a public GitHub Issue URL. Review sampled replies and mentioned changes, then follow the source when you need more context.
3. **Make your call.** Compare what you found with existing options. Choose **Follow up**, **Prototype candidate**, or **Pass for my task**, and add your own note.
4. **Pick it up again.** Save the review file with its source snapshot and your notes. You can reopen it later, even offline. You can also save and [compare repository search snapshots](#see-how-a-project-changes-over-time).

When you come back to an idea, you can see what you found—and why you made that decision.

The Stack Overflow desk reads a question and up to 10 answers sorted by votes. Each result links to its source and author, with the post's CC BY-SA license shown. It is a sample, not a complete discussion or a measure of demand. This browser feature is online; the v0.6.2 ZIP predates it.

<details>
<summary>See how to move between Hacker News and GitHub</summary>

Expand Down Expand Up @@ -114,7 +116,9 @@ CLI exit codes: `0` completed reads/local save; `1` partial or unavailable sourc
| --- | --- |
| Find candidate repositories | GitHub repository search, creation period and current total Stars |
| Find projects discussed elsewhere | Hacker News keyword search, relevant/recent order and an explicit time period |
| Search developer questions | Stack Overflow question search, with author, source and license attribution |
| Read a real thread without installing anything | Paste one public GitHub Issue or HN story URL into the browser |
| Read developer answers | Stack Overflow question plus up to 10 vote-sorted answers, with links to the original posts |
| Collect several GitHub issues | Python CLI: explicit issue URLs, or bounded search within one public repository |
| Check what happened later | First and last comment pages, shown with the newest collected comments first |
| Read a reply in context | Show its collected parent, or read one public HN parent on demand |
Expand All @@ -124,7 +128,7 @@ CLI exit codes: `0` completed reads/local save; `1` partial or unavailable sourc
| Return to the same evidence | Download and reopen a review containing the exact report text, its SHA-256 and your notes |
| Work in either language | English/Chinese controls; original source language is preserved |

The browser app uses plain HTML, CSS and JavaScript: no build step, model API, database or account setup. Public reads happen only after you search, choose a discussion, check a linked GitHub repository, request an HN parent comment, or request the AgentAtlas snapshot. Search terms go to the selected GitHub or HN Search service; the snapshot request goes to AgentAtlas without search terms. Discussion requests go to GitHub, HN Search or the official HN API. Cookies and authentication are omitted. Reports and notes are not uploaded or saved automatically. Parent comments fetched on demand are shown live and are not added to the saved review; an already-collected parent comes from the original snapshot. The optional multi-issue collector uses Python's standard library.
The browser app uses plain HTML, CSS and JavaScript: no build step, model API, database or account setup. Public reads happen only after you search, choose a discussion, check a linked GitHub repository, request an HN parent comment, or request the AgentAtlas snapshot. Search terms go to the selected GitHub, Hacker News Search or Stack Exchange API; the snapshot request goes to AgentAtlas without search terms. Selecting a Stack Overflow result requests that question and its answers. The page shows source, author and license links, converts post HTML to plain text, and marks shortened excerpts. Cookies and authentication are omitted. Reports and notes are not uploaded or saved automatically. The Stack Overflow viewer stores hashed request fingerprints and source backoff times in local browser storage to avoid repeating searches too soon. Its downloaded review is a separate format, opened only in the Stack Overflow viewer; older CLI reports are not compatible. Parent comments fetched on demand are shown live and are not added to the saved review; an already-collected parent comes from the original snapshot. The optional multi-issue collector uses Python's standard library.

## Try the offline review workflow

Expand Down
10 changes: 7 additions & 3 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,15 @@

从一个话题、一个项目,或者一个让你放不下的问题出发。判断由你来做,GapCue 帮你把线索留好。

1. **先找线索。** 搜索 GitHub 公开仓库或 Hacker News,例如输入 `PDF tables`。从仓库查找 HN 讨论,也可以从 HN 讨论查找 GitHub 候选仓库。
2. **看看后来发生了什么。** 打开 HN 帖子,或粘贴公开的 GitHub Issue 链接。看看抽样评论和提到的变更;需要更多上下文时,回到原始来源。
1. **先找线索。** 搜索 GitHub 公开仓库、Hacker News 讨论或 Stack Overflow 问题,例如输入 `PDF tables`。从仓库查找 HN 讨论,也可以从 HN 讨论查找 GitHub 候选仓库。
2. **看看后来发生了什么。** 打开 HN 帖子或 Stack Overflow 问题,或粘贴公开的 GitHub Issue 链接。看看抽样评论和提到的变更;需要更多上下文时,回到原始来源。
3. **留下你的判断。** 对照讨论和现有方案,选择“继续核对”“候选小样”或“不适合当前任务”,并写下自己的想法。
4. **下次从这里继续。** 保存包含来源快照和笔记的评审文件;之后即使离线,也能重新打开。你还可以保存并[对比仓库搜索快照](#看一个项目随时间发生了什么变化)。

等你回来看这个点子,还能找到当时看到了什么、为什么这样决定。

Stack Overflow 调研页会读取问题和最多 10 条按票数排序的回答。每条结果都保留原文、作者和内容许可证链接。它是讨论样本,不是完整讨论,也不是需求度量。该浏览器功能已上线网页,v0.6.2 ZIP 尚未包含。

<details>
<summary>看看如何在 Hacker News 和 GitHub 之间寻找线索</summary>

Expand Down Expand Up @@ -114,7 +116,9 @@ node scripts/research.cjs review ./thread-01/review.json --verdict followup --no
| --- | --- |
| 发现候选仓库 | GitHub 仓库搜索,按创建时间和当前累计 Star 查看 |
| 在其他平台发现项目 | Hacker News 主题搜索,可选相关/最新和时间范围 |
| 搜索开发者问题 | Stack Overflow 问题搜索,显示作者、原文和许可证链接 |
| 不安装工具就读真实讨论 | 在网页粘贴一个公开 GitHub Issue 或 HN 帖子地址 |
| 阅读开发者回答 | 查看 Stack Overflow 问题及最多 10 条按票数排序的回答,并可回到每条原文 |
| 批量采集 GitHub 问题 | 可选 Python 采集器:指定地址或限定一个仓库搜索 |
| 查看后续讨论 | 采集首尾评论页,优先展示已采到的最新评论 |
| 看懂回复的上文 | 展示已采集的上文,或按需读取一条公开 HN 上文评论 |
Expand All @@ -124,7 +128,7 @@ node scripts/research.cjs review ./thread-01/review.json --verdict followup --no
| 下次接着看 | 评审文件保留原始报告文本、SHA-256 和笔记,可重新打开 |
| 分享给海外用户 | 中英文界面和文档,来源语言保持原样 |

网页使用原生 HTML/CSS/JavaScript,无需构建、数据库、模型 API 或账号。点击搜索、读取讨论、查询链接的 GitHub 仓库、查看 HN 上文或请求 AgentAtlas 快照后才请求公开来源:搜索词发给选择的 GitHub 或 HN Search;快照请求发给 AgentAtlas,不包含搜索词;讨论来源请求发给 GitHub、HN Search 或 HN 官方 API。请求不携带 Cookie 或认证信息。报告与笔记不上传、不自动持久保存。按需读取的上文为实时展示,不会加入保存的评审文件;如果上文已在采集样本中,则展示原始快照。可选批量采集器仅依赖 Python 标准库。
网页使用原生 HTML/CSS/JavaScript,无需构建、数据库、模型 API 或账号。点击搜索、读取讨论、查询链接的 GitHub 仓库、查看 HN 上文或请求 AgentAtlas 快照后才请求公开来源:搜索词会发给 GitHub、Hacker News Search 或 Stack Exchange API;选择 Stack Overflow 问题后,工具再读取问题和回答;快照请求发给 AgentAtlas,不包含搜索词。页面为 Stack Overflow 每条内容提供来源、作者和许可证链接,将 HTML 转为纯文本,并标记缩短的片段。请求不携带 Cookie 或认证信息。为避免短时间重复搜索,Stack Overflow 页面会在浏览器本地存储已哈希的请求指纹和来源要求的暂停时间。报告与笔记不上传、不自动持久保存。Stack Overflow 的下载评审文件使用独立格式,只能在对应页面打开;旧版 CLI 报告不兼容。按需读取的 HN 上文为实时展示,不会加入保存的评审文件;如果上文已在采集样本中,则展示原始快照。可选批量采集器仅依赖 Python 标准库。

## 试用离线评审流程

Expand Down
1 change: 1 addition & 0 deletions app/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ function render() {
document.documentElement.lang=lang==="zh"?"zh-CN":"en";
for(const node of document.querySelectorAll("[data-i18n]"))node.textContent=tr(node.dataset.i18n);
$("language").textContent=lang==="en"?"中文":"English";
$("stackLink").href="stackoverflow.html"+(lang==="zh"?"?lang=zh":"");
for(const option of $("verdict").options)option.textContent=tr(option.value);
$("notes").placeholder=tr("notePlaceholder");
if(!loaded)return;
Expand Down
6 changes: 3 additions & 3 deletions app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="A local review desk for public GitHub issue research. Read source samples, inspect mentioned PR states, and keep your own decision with the evidence.">
<meta http-equiv="Content-Security-Policy" content="default-src 'self';script-src 'self';style-src 'self';connect-src 'self' https://api.github.com https://hn.algolia.com https://hacker-news.firebaseio.com https://agentatlas.dev;img-src 'self' data:;font-src 'none';object-src 'none';base-uri 'none';form-action 'none'">
<meta name="description" content="Research GitHub, Hacker News and Stack Overflow projects. Read the questions behind an idea and keep your sources and decisions together.">
<meta http-equiv="Content-Security-Policy" content="default-src 'self';script-src 'self';style-src 'self';connect-src 'self' https://api.github.com https://api.stackexchange.com https://hn.algolia.com https://hacker-news.firebaseio.com https://agentatlas.dev;img-src 'self' data:;font-src 'none';object-src 'none';base-uri 'none';form-action 'none'">
<title>GapCue — Project research desk</title>
<link rel="stylesheet" href="styles.css">
<script src="core.js" defer></script>
Expand All @@ -17,7 +17,7 @@
<body>
<header class="masthead">
<a class="brand" href="./" aria-label="GapCue home"><svg viewBox="0 0 40 40" aria-hidden="true"><path d="M7 8h20l6 6v20H7z" fill="#ece7f4" stroke="currentColor" stroke-width="2"/><path d="M27 8v7h6M13 18h12M13 24h16M13 29h9" fill="none" stroke="currentColor" stroke-width="2"/><circle cx="30" cy="29" r="6" fill="#466346" stroke="#fff" stroke-width="2"/></svg><span>GapCue<small data-i18n="subtitle">GitHub Issue Scout</small></span></a>
<nav><a href="#research" data-i18n="collectNav">Find discussions</a><a href="https://github.com/LydiaTools/gapcue" target="_blank" rel="noopener">GitHub</a><button id="language" class="quiet" type="button">中文</button></nav>
<nav><a href="#research" data-i18n="collectNav">Find discussions</a><a id="stackLink" href="stackoverflow.html">Stack Overflow</a><a href="https://github.com/LydiaTools/gapcue" target="_blank" rel="noopener">GitHub</a><button id="language" class="quiet" type="button">中文</button></nav>
</header>
<main>
<section class="intro">
Expand Down
Loading
Loading