Skip to content

Commit fed8e2e

Browse files
committed
fix: address PR #3 review feedback
- GitTerminal: open the Marketplace URL synchronously inside the click/keydown gesture instead of via setTimeout — a deferred window.open is eaten by popup blockers. Make the Marketplace chip a plain external <a> link (drop the preventDefault hijack) so it keeps real-link semantics. - lib/seo.ts: publish both Personal ($1/mo) and Commercial ($3/mo) offers so the structured data reflects the real pricing range, not just the entry tier. - lib/constants.ts: correct the LAST_UPDATED comment — the agent files' 'Last updated' lines are hand-maintained, not derived from the constant.
1 parent cfadf0b commit fed8e2e

4 files changed

Lines changed: 39 additions & 21 deletions

File tree

components/notfound/GitTerminal.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
// answers with `fatal: pathspec ... did not match`, prints an ASCII "404" + a broken
77
// commit graph, then drops you at a live, interactive prompt (help / ls / git status /
88
// git log / history with ↑↓ / Tab-complete). The same command handler powers the
9-
// clickable recovery chips, so typing and clicking share one path.
9+
// `cd ~` / `help` recovery chips, so typing and clicking share one path; the Marketplace
10+
// chip is a plain external link.
1011
//
1112
// Zero new dependencies: pure React + DOM + setTimeout. Reuses framer-motion's
1213
// useReducedMotion (already bundled), Zed Mono (font-mono) and .cursor-blink.
@@ -98,7 +99,7 @@ function RecoveryChips() {
9899
<button type="button" className={`${chip} border-brand/40 bg-brand/[0.08] text-gray-100 hover:border-brand hover:bg-brand/[0.16]`} onClick={() => chipRun?.('cd ~')}>
99100
<A>cd ~</A><D></D><D>go home</D>
100101
</button>
101-
<a href={MARKETPLACE_URL} target="_blank" rel="noopener noreferrer" className={`${chip} border-brand/40 bg-brand/[0.08] text-gray-100 hover:border-brand hover:bg-brand/[0.16]`} onClick={(e) => { e.preventDefault(); chipRun?.('git remote -v'); }}>
102+
<a href={MARKETPLACE_URL} target="_blank" rel="noopener noreferrer" className={`${chip} border-brand/40 bg-brand/[0.08] text-gray-100 hover:border-brand hover:bg-brand/[0.16]`}>
102103
<A>git remote -v</A><D></D><D>open Marketplace</D>
103104
</a>
104105
<button type="button" className={`${chip} border-white/15 bg-white/[0.03] text-gray-100 hover:border-white/30 hover:bg-white/[0.06]`} onClick={() => chipRun?.('help')}>
@@ -149,7 +150,8 @@ export default function GitTerminal() {
149150
<><A>origin</A> {MARKETPLACE_URL} <D>(push)</D></>,
150151
<D>Opening JetBrains Marketplace…</D>,
151152
);
152-
window.setTimeout(() => window.open(MARKETPLACE_URL, '_blank', 'noopener,noreferrer'), 500);
153+
// Open synchronously, inside the keydown/click gesture, or popup blockers eat it.
154+
window.open(MARKETPLACE_URL, '_blank', 'noopener,noreferrer');
153155
return;
154156
}
155157

components/notfound/README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,10 @@ that process is the `concept-shootout` Claude skill.
5555
Add the command to `TAB_OPTIONS` if it should Tab-complete.
5656
- **Change the boot script:** edit `bootScript(path)` — a list of `{ kind: 'type' | 'print' }`
5757
steps. `type` animates a command char-by-char; `print` reveals a line after `delay` ms.
58-
- **Recovery chips:** `RecoveryChips` (rendered inline in the scrollback). They route through
59-
the same `run()` handler as typed input via the module-level `chipRun`.
58+
- **Recovery chips:** `RecoveryChips` (rendered inline in the scrollback). The `cd ~` and `help`
59+
chips route through the same `run()` handler as typed input (via the module-level `chipRun`);
60+
the Marketplace chip is a plain external `<a>` link so it opens natively (real link semantics,
61+
no popup-blocker issues).
6062

6163
## Verify after changes
6264

lib/constants.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export const DOWNLOAD_COUNT = 22490;
99
export const MARKETPLACE_RATING = 4.1;
1010
export const MARKETPLACE_RATING_COUNT = 15;
1111

12-
// Bump when the page's substantive content changes. Feeds JSON-LD dateModified
13-
// and the "Last updated" lines in the agent files (llms.txt, llms-full.txt,
14-
// index.md, ai-agent.json).
12+
// Bump when the page's substantive content changes. Feeds the JSON-LD
13+
// `dateModified`. The "Last updated" lines in the agent files (llms.txt,
14+
// llms-full.txt, index.md, ai-agent.json) are hand-maintained, not derived
15+
// from this constant — bump them to match when content changes.
1516
export const LAST_UPDATED = '2026-06-14';

lib/seo.ts

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -103,23 +103,36 @@ export const homeStructuredData = {
103103
`${SITE_URL}/screenshots/s_1_commit_panel.webp`,
104104
`${SITE_URL}/screenshots/s_2_template.webp`,
105105
],
106-
offers: {
107-
'@type': 'Offer',
108-
price: '1.00',
109-
priceCurrency: 'USD',
110-
availability: 'https://schema.org/InStock',
111-
url: MARKETPLACE_URL,
112-
priceSpecification: {
113-
'@type': 'UnitPriceSpecification',
106+
offers: [
107+
{
108+
'@type': 'Offer',
109+
name: 'Personal',
114110
price: '1.00',
115111
priceCurrency: 'USD',
116-
referenceQuantity: {
117-
'@type': 'QuantitativeValue',
118-
value: 1,
119-
unitCode: 'MON',
112+
availability: 'https://schema.org/InStock',
113+
url: MARKETPLACE_URL,
114+
priceSpecification: {
115+
'@type': 'UnitPriceSpecification',
116+
price: '1.00',
117+
priceCurrency: 'USD',
118+
referenceQuantity: { '@type': 'QuantitativeValue', value: 1, unitCode: 'MON' },
120119
},
121120
},
122-
},
121+
{
122+
'@type': 'Offer',
123+
name: 'Commercial',
124+
price: '3.00',
125+
priceCurrency: 'USD',
126+
availability: 'https://schema.org/InStock',
127+
url: MARKETPLACE_URL,
128+
priceSpecification: {
129+
'@type': 'UnitPriceSpecification',
130+
price: '3.00',
131+
priceCurrency: 'USD',
132+
referenceQuantity: { '@type': 'QuantitativeValue', value: 1, unitCode: 'MON' },
133+
},
134+
},
135+
],
123136
aggregateRating: {
124137
'@type': 'AggregateRating',
125138
ratingValue: MARKETPLACE_RATING,

0 commit comments

Comments
 (0)