Paste a unified diff to see inline review findings.
'
findings_by_location: dict[tuple[str, str, int | None], list[Finding]] = {}
for finding in findings:
findings_by_location.setdefault((finding.file, finding.hunk, finding.line), []).append(finding)
chunks = [render_scoreboard(files, findings), '']
for file_diff in files:
chunks.append(f'
{html.escape(file_diff.path)}
')
for hunk in file_diff.hunks:
chunks.append(f'
{html.escape(hunk.header)}
')
for line in hunk.lines:
number = line.new_no if line.kind == "add" else line.old_no
sign = "+" if line.kind == "add" else "-" if line.kind == "del" else " "
chunks.append(
f'
'
f'
{number if number is not None else ""}
'
f'
{html.escape(sign + line.text)}
'
f"
"
)
for finding in findings_by_location.get((file_diff.path, hunk.header, line.new_no), []):
chunks.append(render_finding(finding))
for finding in findings_by_location.get((file_diff.path, hunk.header, None), []):
chunks.append(render_finding(finding))
chunks.append("
")
return "\n".join(chunks)
def render_finding(finding: Finding) -> str:
return f"""
DiffSense
Private, offline-first PR review for the Build Small hackathon. Paste a diff or public GitHub PR URL, get severity-tagged findings, keep your code out of SaaS review tools.
"""
)
with gr.Sidebar():
gr.LoginButton()
use_model_summary = gr.Checkbox(
value=True,
label="Add optional Mellum model summary",
info="Tries local /data checkpoint first, then OAuth/HF_TOKEN provider, with deterministic fallback.",
)
use_nemotron_router = gr.Checkbox(
value=True,
label="Run Nemotron 3 Nano router",
info=f"Uses local /data checkpoint or {NEMOTRON_MODEL}.",
)
use_tiny_titan = gr.Checkbox(
value=True,
label="Run Tiny Titan 4B checker",
info=f"Uses local /data checkpoint or {TINY_TITAN_MODEL}.",
)
use_minicpm_vision = gr.Checkbox(
value=True,
label="Run MiniCPM-V 4.6 vision",
info=f"Uses uploaded PR images with local /data checkpoint or {MINICPM_MODEL}.",
)
use_modal_bridge = gr.Checkbox(
value=True,
label="Send payload to Modal bridge",
info="Uses DIFFSENSE_MODAL_ENDPOINT when configured.",
)
sample_btn = gr.Button("Load sample diff")
with gr.Row(equal_height=False):
with gr.Column(scale=4):
diff_input = gr.Textbox(
value="",
lines=18,
max_lines=24,
label="Unified diff or public GitHub PR URL",
placeholder="Paste a unified diff, paste https://github.com/org/repo/pull/123, or click Load sample diff.",
interactive=True,
)
image_files = gr.File(
label="PR screenshots or diagrams for MiniCPM-V",
file_count="multiple",
file_types=["image"],
)
run_btn = gr.Button("Review diff", variant="primary")
summary_output = gr.Markdown(
value="Run a review to get the risk summary.",
label="Reviewer summary",
)
agent_output = gr.Markdown(
value="### Model Runtime Status\n\n" + render_model_runtime_status(),
label="Model agent trace",
)
with gr.Column(scale=6):
review_output = gr.HTML(
value='Paste a unified diff or public GitHub PR URL, then click Review diff.
',
label="Detailed inline review",
)
json_output = gr.JSON(label="Structured findings")
sample_btn.click(fn=load_sample, outputs=diff_input)
run_btn.click(
fn=run_review,
inputs=[
diff_input,
use_model_summary,
use_nemotron_router,
use_tiny_titan,
use_minicpm_vision,
use_modal_bridge,
image_files,
],
outputs=[review_output, json_output, summary_output, agent_output],
)
if __name__ == "__main__":
demo.launch(css=CSS, theme=APP_THEME, ssr_mode=False)