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
25 changes: 25 additions & 0 deletions .tasque/events.jsonl
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,28 @@
{"id":"01KHYT4D2FJNYPGZG737EA3QJ1","event_id":"01KHYT4D2FJNYPGZG737EA3QJ1","ts":"2026-02-21T00:38:28.175Z","actor":"Aditya Sharma","type":"dep.added","task_id":"tsq-xava98vb","payload":{"blocker":"tsq-qaph5d8a","dep_type":"blocks"}}
{"id":"01KHYT4EE3Z1JCBH4884WX9NSW","event_id":"01KHYT4EE3Z1JCBH4884WX9NSW","ts":"2026-02-21T00:38:29.571Z","actor":"Aditya Sharma","type":"dep.added","task_id":"tsq-xava98vb","payload":{"blocker":"tsq-sk0a27kc","dep_type":"blocks"}}
{"id":"01KHYT4FBTCR16F5RFYWPYA48Z","event_id":"01KHYT4FBTCR16F5RFYWPYA48Z","ts":"2026-02-21T00:38:30.522Z","actor":"Aditya Sharma","type":"dep.added","task_id":"tsq-xava98vb","payload":{"blocker":"tsq-84cxpjd8","dep_type":"blocks"}}
{"id":"01KJ3RAHXTZ8ZVEBYRNTQ3Y5ZP","event_id":"01KJ3RAHXTZ8ZVEBYRNTQ3Y5ZP","ts":"2026-02-22T22:43:04.762Z","actor":"Aditya Sharma","type":"task.created","task_id":"tsq-pmjtma8b","payload":{"description":"Manually port exact code snippets from upstream commits d2f0960d,c045f74f,d60c6d5f,b4310a66,3724b071 into highlighter/input code without cherry-picking and preserving fork changes.","discovered_from":null,"external_ref":null,"id":"tsq-pmjtma8b","kind":"task","parent_id":null,"planning_state":"planned","priority":2,"status":"open","title":"Port upstream editor syntax/perf manually"}}
{"id":"01KJ3RB8ZEDG6E0VDZVNPJJBXW","event_id":"01KJ3RB8ZEDG6E0VDZVNPJJBXW","ts":"2026-02-22T22:43:28.366Z","actor":"Aditya Sharma","type":"task.created","task_id":"tsq-7whgzsjy","payload":{"description":"Manually port exact code snippets from upstream commits 662e291a,24b552d8,545c3488,9fb44739 into table state/API/docs while preserving fork customizations.","discovered_from":null,"external_ref":null,"id":"tsq-7whgzsjy","kind":"task","parent_id":null,"planning_state":"planned","priority":2,"status":"open","title":"Port upstream table cell-selection series manually"}}
{"id":"01KJ3RB96WMJM0N044QXEPVDDY","event_id":"01KJ3RB96WMJM0N044QXEPVDDY","ts":"2026-02-22T22:43:28.604Z","actor":"Aditya Sharma","type":"task.created","task_id":"tsq-seytfm51","payload":{"description":"Manually port exact code snippets from upstream commits 94fdac9b,dc3850b8,3c10503b,c5fe81f1 into radio/popup_menu/input/tree while preserving fork customizations.","discovered_from":null,"external_ref":null,"id":"tsq-seytfm51","kind":"task","parent_id":null,"planning_state":"planned","priority":2,"status":"open","title":"Port upstream targeted bugfixes manually"}}
{"id":"01KJ3RB9EB36CYNQD7VZ3ZQY79","event_id":"01KJ3RB9EB36CYNQD7VZ3ZQY79","ts":"2026-02-22T22:43:28.843Z","actor":"Aditya Sharma","type":"task.created","task_id":"tsq-nhqse7rn","payload":{"description":"Run focused checks and document what was imported, skipped, or adapted due to fork customizations.","discovered_from":null,"external_ref":null,"id":"tsq-nhqse7rn","kind":"task","parent_id":null,"planning_state":"planned","priority":2,"status":"open","title":"Validate upstream port batch"}}
{"id":"01KJ3RB9NND9GWQSS4KMPY39VW","event_id":"01KJ3RB9NND9GWQSS4KMPY39VW","ts":"2026-02-22T22:43:29.077Z","actor":"Aditya Sharma","type":"task.created","task_id":"tsq-bd0a41d4","payload":{"description":"Update README.md with exact upstream commit/ref incorporated by this sync batch and summarize imported categories.","discovered_from":null,"external_ref":null,"id":"tsq-bd0a41d4","kind":"task","parent_id":null,"planning_state":"planned","priority":2,"status":"open","title":"Update README upstream sync reference"}}
{"id":"01KJ3RB9YB61X7P67HC1JSTBRT","event_id":"01KJ3RB9YB61X7P67HC1JSTBRT","ts":"2026-02-22T22:43:29.355Z","actor":"Aditya Sharma","type":"dep.added","task_id":"tsq-nhqse7rn","payload":{"blocker":"tsq-pmjtma8b","dep_type":"blocks"}}
{"id":"01KJ3RBA2FHTFMDRP4NDQK85DB","event_id":"01KJ3RBA2FHTFMDRP4NDQK85DB","ts":"2026-02-22T22:43:29.487Z","actor":"Aditya Sharma","type":"dep.added","task_id":"tsq-nhqse7rn","payload":{"blocker":"tsq-7whgzsjy","dep_type":"blocks"}}
{"id":"01KJ3RBA6ARDCWC3A8YQPCT9ZP","event_id":"01KJ3RBA6ARDCWC3A8YQPCT9ZP","ts":"2026-02-22T22:43:29.610Z","actor":"Aditya Sharma","type":"dep.added","task_id":"tsq-nhqse7rn","payload":{"blocker":"tsq-seytfm51","dep_type":"blocks"}}
{"id":"01KJ3RBAA4A3E2T0XAMCJTMAYA","event_id":"01KJ3RBAA4A3E2T0XAMCJTMAYA","ts":"2026-02-22T22:43:29.732Z","actor":"Aditya Sharma","type":"dep.added","task_id":"tsq-bd0a41d4","payload":{"blocker":"tsq-nhqse7rn","dep_type":"blocks"}}
{"id":"01KJ3RCVDVE9CCZDS6P0TTY3RZ","event_id":"01KJ3RCVDVE9CCZDS6P0TTY3RZ","ts":"2026-02-22T22:44:20.027Z","actor":"Aditya Sharma","type":"task.claimed","task_id":"tsq-pmjtma8b","payload":{"assignee":"Aditya Sharma"}}
{"id":"01KJ3RCVMDTWXF9K3E0RKX2RVF","event_id":"01KJ3RCVMDTWXF9K3E0RKX2RVF","ts":"2026-02-22T22:44:20.237Z","actor":"Aditya Sharma","type":"task.claimed","task_id":"tsq-7whgzsjy","payload":{"assignee":"Aditya Sharma"}}
{"id":"01KJ3RCVVYX6GCVEF3XQ2PQHD2","event_id":"01KJ3RCVVYX6GCVEF3XQ2PQHD2","ts":"2026-02-22T22:44:20.478Z","actor":"Aditya Sharma","type":"task.claimed","task_id":"tsq-seytfm51","payload":{"assignee":"Aditya Sharma"}}
{"id":"01KJ3SB4XVK1TEYRKGSWMFZSJ2","event_id":"01KJ3SB4XVK1TEYRKGSWMFZSJ2","ts":"2026-02-22T23:00:52.795Z","actor":"Aditya Sharma","type":"task.created","task_id":"tsq-wmdq4gnv","payload":{"description":null,"discovered_from":null,"external_ref":null,"id":"tsq-wmdq4gnv","kind":"task","parent_id":null,"planning_state":"needs_planning","priority":2,"status":"open","title":"Consolidate theme sets with system mode"}}
{"id":"01KJ3SCAPDS0B1KD45WTV4HQPX","event_id":"01KJ3SCAPDS0B1KD45WTV4HQPX","ts":"2026-02-22T23:01:31.469Z","actor":"Aditya Sharma","type":"task.spec_attached","task_id":"tsq-wmdq4gnv","payload":{"spec_attached_at":"2026-02-22T23:01:31.469Z","spec_attached_by":"Aditya Sharma","spec_fingerprint":"867c37fd3d507d7673a3822e54568031eb819d0efc36fefe83d48ee166d6d703","spec_path":".tasque/specs/tsq-wmdq4gnv/spec.md"}}
{"id":"01KJ3SCASX9QR1PPSDY00T1FTG","event_id":"01KJ3SCASX9QR1PPSDY00T1FTG","ts":"2026-02-22T23:01:31.581Z","actor":"Aditya Sharma","type":"task.updated","task_id":"tsq-wmdq4gnv","payload":{"planning_state":"planned"}}
{"id":"01KJ3SXSNE4N74MXGCN3SQ4MYG","event_id":"01KJ3SXSNE4N74MXGCN3SQ4MYG","ts":"2026-02-22T23:11:03.854Z","actor":"Aditya Sharma","type":"task.status_set","task_id":"tsq-pmjtma8b","payload":{"closed_at":"2026-02-22T23:11:03.854Z","reason":"done","status":"closed"}}
{"id":"01KJ3SXSWJNCB4X22PTKXYWVQW","event_id":"01KJ3SXSWJNCB4X22PTKXYWVQW","ts":"2026-02-22T23:11:04.082Z","actor":"Aditya Sharma","type":"task.status_set","task_id":"tsq-7whgzsjy","payload":{"closed_at":"2026-02-22T23:11:04.082Z","reason":"done","status":"closed"}}
{"id":"01KJ3SXT0PWF4J7E0G9NXBY0TG","event_id":"01KJ3SXT0PWF4J7E0G9NXBY0TG","ts":"2026-02-22T23:11:04.214Z","actor":"Aditya Sharma","type":"task.status_set","task_id":"tsq-seytfm51","payload":{"closed_at":"2026-02-22T23:11:04.214Z","reason":"done","status":"closed"}}
{"id":"01KJ3SXT59EQGQ27K2AGFMCGEE","event_id":"01KJ3SXT59EQGQ27K2AGFMCGEE","ts":"2026-02-22T23:11:04.361Z","actor":"Aditya Sharma","type":"task.status_set","task_id":"tsq-nhqse7rn","payload":{"closed_at":"2026-02-22T23:11:04.361Z","reason":"done","status":"closed"}}
{"id":"01KJ3SXTB7ENZRV2BTYWVMVJ9N","event_id":"01KJ3SXTB7ENZRV2BTYWVMVJ9N","ts":"2026-02-22T23:11:04.551Z","actor":"Aditya Sharma","type":"task.status_set","task_id":"tsq-bd0a41d4","payload":{"closed_at":"2026-02-22T23:11:04.551Z","reason":"done","status":"closed"}}
{"id":"01KJ40A9HYAR6X9QEVCVZNJ9TB","event_id":"01KJ40A9HYAR6X9QEVCVZNJ9TB","ts":"2026-02-23T01:02:44.798Z","actor":"Aditya Sharma","type":"task.created","task_id":"tsq-mw98vs2b","payload":{"description":null,"discovered_from":null,"external_ref":null,"id":"tsq-mw98vs2b","kind":"task","parent_id":null,"planning_state":"needs_planning","priority":2,"status":"open","title":"Add FloatingSidebar component"}}
{"id":"01KJ40B49SCERD2XMPPHEHN7BK","event_id":"01KJ40B49SCERD2XMPPHEHN7BK","ts":"2026-02-23T01:03:12.185Z","actor":"Aditya Sharma","type":"task.updated","task_id":"tsq-mw98vs2b","payload":{"planning_state":"planned"}}
{"id":"01KJ40B4DSMYXS5PD7A9ZB1TZ1","event_id":"01KJ40B4DSMYXS5PD7A9ZB1TZ1","ts":"2026-02-23T01:03:12.313Z","actor":"Aditya Sharma","type":"task.claimed","task_id":"tsq-mw98vs2b","payload":{"assignee":"Aditya Sharma"}}
{"id":"01KJ40B4HA6Y5KXN8B0NJ6SJ6A","event_id":"01KJ40B4HA6Y5KXN8B0NJ6SJ6A","ts":"2026-02-23T01:03:12.426Z","actor":"Aditya Sharma","type":"task.status_set","task_id":"tsq-mw98vs2b","payload":{"closed_at":null,"status":"in_progress"}}
{"id":"01KJ429TGNR3K7QSGQZWNC6TDX","event_id":"01KJ429TGNR3K7QSGQZWNC6TDX","ts":"2026-02-23T01:37:26.549Z","actor":"Aditya Sharma","type":"task.status_set","task_id":"tsq-mw98vs2b","payload":{"closed_at":"2026-02-23T01:37:26.549Z","status":"closed"}}
25 changes: 1 addition & 24 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,7 @@

This project uses **tsq** (tasque) for task management. Use the tasque skill.

## Landing the Plane (Session Completion)

**When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.

**MANDATORY WORKFLOW:**

1. **File issues for remaining work** - Create issues for anything that needs follow-up
2. **Run quality gates** (if code changed) - Tests, linters, builds
3. **Update issue status** - Close finished work, update in-progress items
4. **PUSH TO REMOTE** - This is MANDATORY:
```bash
git pull --rebase
git push
git status # MUST show "up to date with origin"
```
5. **Clean up** - Clear stashes, prune remote branches
6. **Verify** - All changes committed AND pushed
7. **Hand off** - Provide context for next session

**CRITICAL RULES:**
- Work is NOT complete until `git push` succeeds
- NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds
**Platform parity** is critical. When implementing a feature, we must implement it across macOS, Windows, and Linux. If a feature is not supported on a platform, we must document the reason and any potential workarounds.

## Animation Guardrails (GPUI)

Expand Down
61 changes: 56 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
This is a fork of the original gpui-component by longbridge. Goal is to maintain compatibility with gpui while adding custom components as needed.

## Upstream sync status

- Manual snippet sync source: `longbridge/gpui-component@94fdac9b` (`upstream/main` as of 2026-02-22).
- Imported upstream fixes/features in this sync batch:
- Editor syntax/perf: `d2f0960d`, `c045f74f`, `d60c6d5f`, `b4310a66`, `3724b071`
- Table selection/docs: `662e291a`, `24b552d8`, `545c3488`, `9fb44739`
- Targeted bugfixes: `94fdac9b`, `dc3850b8`, `3c10503b`, `c5fe81f1`

# GPUI Component

[![Build Status](https://github.com/longbridge/gpui-component/actions/workflows/ci.yml/badge.svg)](https://github.com/longbridge/gpui-component/actions/workflows/ci.yml) [![Docs](https://docs.rs/gpui-component/badge.svg)](https://docs.rs/gpui-component/) [![Crates.io](https://img.shields.io/crates/v/gpui-component.svg)](https://crates.io/crates/gpui-component)
Expand Down
131 changes: 131 additions & 0 deletions crates/story/examples/fixtures/test.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
---
// @ts-nocheck
// This file demonstrates Astro 5 syntax highlighting features.
// Frontmatter: TypeScript/JavaScript code that runs at build time

import type { GetStaticPaths } from 'astro';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Unused import.

GetStaticPaths is imported but never used in this file. If it's intended to demonstrate import syntax for highlighting purposes, consider adding a comment clarifying this. Otherwise, it can be removed.

Remove unused import
-import type { GetStaticPaths } from 'astro';
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import type { GetStaticPaths } from 'astro';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@crates/story/examples/fixtures/test.astro` at line 6, Remove the unused
import GetStaticPaths from the top of the file (the import statement referencing
GetStaticPaths) unless you intend it for demonstration; if it is meant as an
example, replace it with a brief inline comment clarifying that the import is
present only for syntax highlighting/demo, otherwise delete the import line to
eliminate the unused symbol.


interface Props {
title: string;
count?: number;
}

const { title, count = 0 } = Astro.props;
const currentYear = new Date().getFullYear();

const items = ['Astro', 'TypeScript', 'React', 'Vue'];
const isProduction = import.meta.env.PROD;

function formatGreeting(name: string): string {
return `Hello, ${name}!`;
}

const apiUrl = import.meta.env.PUBLIC_API_URL ?? 'https://api.example.com';
---

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>{title} - Astro 5 Demo</title>
<style>
.container {
max-width: 800px;
margin: 0 auto;
padding: 2rem;
font-family: system-ui, sans-serif;
}

.highlight {
color: #ff5d01;
font-weight: bold;
}

.card {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
padding: 1.5rem;
border-radius: 8px;
color: white;
}

@media (prefers-color-scheme: dark) {
.container {
background: #1a1a1a;
color: #fff;
}
}
</style>
</head>
<body>
<div class="container">
<h1 class="highlight">{formatGreeting(title)}</h1>

<p>Current year: <strong>{currentYear}</strong></p>
<p>
Environment: <span class="highlight"
>{isProduction ? 'Production' : 'Development'}</span
>
</p>

{
count > 0 && (
<div class="card">
<p>
You have {count} {count === 1 ? 'item' : 'items'}
</p>
</div>
)
}

<ul>
{
items.map((item, index) => (
<li key={index}>
<a href={`/${item.toLowerCase()}`}>{item}</a>
</li>
))
}
Comment on lines +83 to +88

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

key attribute is not used in Astro templates.

Unlike React, Astro compiles templates at build time to static HTML, so the key prop has no effect here. If this is intentional to demonstrate JSX-like syntax for highlighting, consider adding a comment. Otherwise, it can be removed.

Remove unnecessary key attribute
 				items.map((item, index) => (
-					<li key={index}>
+					<li>
 						<a href={`/${item.toLowerCase()}`}>{item}</a>
 					</li>
 				))
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
items.map((item, index) => (
<li key={index}>
<a href={`/${item.toLowerCase()}`}>{item}</a>
</li>
))
}
items.map((item, index) => (
<li>
<a href={`/${item.toLowerCase()}`}>{item}</a>
</li>
))
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@crates/story/examples/fixtures/test.astro` around lines 83 - 88, The template
uses a React-style key prop inside items.map (the <li key={index}> in the map
callback) which is unnecessary in Astro; remove the key attribute from the <li>
elements (or if this JSX-like usage is intentional for demonstration, add an
inline comment near the items.map block indicating it’s illustrative) so the
template emits clean Astro/HTML output; locate the map invocation
(items.map((item, index) => ( ... ))) and either delete key={index} from the
<li> or add a clarifying comment above it.

</ul>

<p>
{items.length > 0 ? `Found ${items.length} technologies` : 'No technologies found'}
</p>

<div
data-count={count}
data-env={import.meta.env.MODE}
class:list={['card', { highlight: count > 5 }]}
>
<p>Interactive card with dynamic attributes</p>
</div>
</div>

<script>
interface Config {
theme: 'light' | 'dark';
debug: boolean;
}

const config: Config = {
theme: 'dark',
debug: false
};

const initializeApp = async (): Promise<void> => {
console.log('Astro app initialized');

const data = await fetch('/api/data')
.then((res) => res.json())
.catch((err) => console.error('Fetch error:', err));

const count = data?.items?.length ?? 0;
console.log(`Found ${count} items`);
};

document.addEventListener('DOMContentLoaded', () => {
initializeApp();
});
</script>
</body>
</html>
Loading