palantir/blueprint
Languages
A React-based UI toolkit for the web
Harness | Input / Output Cost | ||||||
|---|---|---|---|---|---|---|---|
1 | 55 / 59 | $5.33 | $10/$50 | 12m34s | |||
2 | 52 / 59 | $0.39 | $2/$12 | 8m46s | |||
3 | 52 / 59 | $3.00 | $5/$25 | 22m10s | |||
4 | 52 / 59 | $3.33 | $5/$25 | 23m06s | |||
5 | 52 / 59 | $0.58 | $1.4/$4.4 | 26m33s | |||
6 | 51 / 59 | $5.85 | $3/$15 | 13m16s | |||
7 | 51 / 59 | $0.07 | $0.2/$1.2 | 14m34s | |||
8 | 51 / 59 | $0.48 | $2/$6 | 17m13s | |||
9 | 51 / 59 | $3.67 | $3/$15 | 35m21s | |||
10 | 50 / 59 | $1.74 | $5/$30 | 10m31s | |||
11 | 50 / 59 | $1.55 | $5/$30 | 18m06s | |||
12 | 50 / 59 | $1.05 | $1.5/$9 | 23m27s | |||
13 | 47 / 59 | $0.54 | $2/$12 | 14m06s | |||
14 | 42 / 59 | $0.27 | $1/$5 | 21m19s |
Key Takeaways
- GPT-5.6 Terra with Mini-SWE-agent matches Claude Opus 4.7, Claude Opus 4.8, and GLM 5.2 (Fireworks) at 52 of 59 tasks.
- GPT-5.6 Luna with Mini-SWE-agent resolves 51 of 59 tasks at $0.07 per test, while GPT-5.6 Sol resolves 50 at $1.74 per test.
Model Comparison
Accuracy
93.22%
Claude Fable 5
88.14%
GPT-5.6 Terra
Task outcomes
59 tasks
Cost / test
$5.33
Claude Fable 5
$0.39
GPT-5.6 Terra
Cost distribution
Latency
12m 34s
Claude Fable 5
8m 46s
GPT-5.6 Terra
Latency distribution
Cost Analysis
Average Token Use / Test
Cost is the clearest tradeoff in this comparison. Claude Fable 5 leads at 93.22% for $5.33 per test. GPT-5.6 Luna is the lower-cost option at 86.44% for $0.07 per test.
Latency Analysis
Average Response Time / Test
Latency separates several models with similarly strong scores. Claude Fable 5 leads at 93.22%, while GPT-5.6 Terra is fastest at 8m 46s with 88.14% accuracy.
Tasks with failures
| Models | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Claude Fable 5 | ||||||||||||||||||||||||||
| GPT-5.6 Terra | ||||||||||||||||||||||||||
| GLM 5.2 | ||||||||||||||||||||||||||
| Claude Opus 4.7 | ||||||||||||||||||||||||||
| Claude Opus 4.8 | ||||||||||||||||||||||||||
| GPT-5.6 Luna | ||||||||||||||||||||||||||
| Grok 4.5 | ||||||||||||||||||||||||||
| Claude Sonnet 5 | ||||||||||||||||||||||||||
| Kimi K3 | ||||||||||||||||||||||||||
| Gemini 3.5 Flash | ||||||||||||||||||||||||||
| GPT 5.5 | ||||||||||||||||||||||||||
| GPT-5.6 Sol | ||||||||||||||||||||||||||
| Gemini 3.1 Pro Preview (02/26) | ||||||||||||||||||||||||||
| Claude Haiku 4.5 (Nonthinking) |
Task detail
aa64811Issue statement
DateRangeInput does not close its calendar popover when Escape is pressed
The DateRangeInput component (in @blueprintjs/datetime) opens a calendar popover when one of its two text inputs is focused. Standard overlay/popover behavior in the toolkit is that pressing the Escape key while interacting with the control dismisses the popover, but DateRangeInput ignores the Escape key entirely.
Steps to reproduce
- Render a
DateRangeInputand focus the start input so the calendar popover opens (isOpenbecomestrue). - Press the
Escapekey while the input is focused.
Expected behavior
Pressing Escape should close the popover (isOpen becomes false) and the input fields should no longer be focused.
Actual behavior
Nothing happens: the popover stays open and the input keeps focus.
The key-down handling for the range inputs should treat Escape as a request to dismiss the popover and blur the currently focused field.
View Hidden Tests
diff --git a/packages/datetime/test/components/dateRangeInputTests.tsx b/packages/datetime/test/components/dateRangeInputTests.tsxindex deb4c7210..018d4aeca 100644--- a/packages/datetime/test/components/dateRangeInputTests.tsx+++ b/packages/datetime/test/components/dateRangeInputTests.tsx@@ -602,6 +602,21 @@ describe("<DateRangeInput>", () => { expect(root.state("isOpen"), "popover closed at end").to.be.false; }); + it("pressing Escape closes the popover", () => {+ const { root } = wrap(<DateRangeInput {...DATE_FORMAT} value={[null, null]} />);+ root.setState({ isOpen: true });++ const startInput = getStartInput(root);+ startInput.simulate("focus");++ expect(root.state("isOpen")).to.be.true;++ startInput.simulate("keydown", { key: "Escape" });++ expect(root.state("isOpen")).to.be.false;+ expect(isStartInputFocused(root)).to.be.false;+ });+ it("Clicking a date invokes onChange with the new date range and updates the input fields", () => { const defaultValue = [START_DATE, null] as DateRange;