This project builds a Chrome side panel extension from the generated `dist/` directory. Run `npm run build` before loading or reloading the unpacked extension.
When an agent needs to inspect, load, reload, test, or otherwise manage this extension in Chrome, use the Codex Chrome extension with the Chrome profile named `Silma`.
- The Add Issue form must show a Default prompt dropdown immediately above Content. It should only list prompts whose workspace path matches the active known URL and should copy the selected prompt content into the editable Content field.
- The Add Issue form must let the user select the agent file for handoff. Agents are managed in the Agents view, persisted in `chrome.storage.local`, and the initial agent is `GLOBAL AGENT` backed by `AGENTS.md`.
- The default `GLOBAL AGENT` rules must instruct downstream agents to close the Gitea issue after pushing the implementation and to leave a Gitea issue comment when delivery is blocked, partial, or risky.
- Screenshot capture uses Chrome's visible-tab capture API and requires the extension's `activeTab` permission plus `<all_urls>` host permission so capture still works after the side panel remains open across tab changes.
- Captured screenshots can be expanded, closed, removed, or cropped before upload. The crop UI should use a plain draggable/resizable crop box instead of shaded slider-based controls, and the preview panel should fit the available viewport without horizontal scrolling.
- Created issue bodies must put the human-entered idea/change request under `# Requirements` and generated metadata under `# References`, including `Chrome profile: Silma` and the selected agent.
- Created issues must upload the selected rendered agent file as a Gitea issue asset. Supported template variables in agent content are `{{git}}`, `{{repo}}`, `{{workspace}}`, `{{url}}`, `{{baseUrl}}`, `{{profile}}`, and `{{issue}}`.
- Status filtering uses `Open` and `Closed` checkboxes as a multiselect. The default is `Open` checked.
- The label filter defaults to empty and filters the visible issue rows by a selected known label.
- Selecting an issue shows a direct Open in Gitea link, a Send to Codex button that currently logs the selected issue payload, editable issue subject/content/label fields, issue attachments, direct attachment upload controls, comment chain, and a comment form for text, additional screenshots, and file attachments.
- Clicking the selected issue row again or clicking the detail close control closes the selected issue detail panel without deleting or changing the issue.
- Saving selected issue edits must use the repo identity from the selected Issues row, include Gitea's current issue content version when available, verify the saved subject/content with a readback before reporting success, save labels through Gitea's issue labels endpoint, and must not fall back to the active tab's repo.
- The Workspaces view must show only a first-row Add workspace button for creation. That button opens a modal dialog.
- User-added workspaces require an absolute local path selected from searchable generated folder candidates in `local-context.json`; do not require copy/paste path entry.
- User-added workspaces can be deleted from the side panel.
- Gitea API failures should surface the specific operation that failed, such as issue creation, label loading, attachment upload, comment creation, or repo loading.
- Network-level Gitea failures should include the configured Gitea API base URL and mention checks for `VITE_GITEA_BASE_URL`, Chrome extension host permissions, network/VPN access, token scope, and attachment size.
- The default `GLOBAL AGENT` should remain agnostic and use template variables instead of hard-coded project paths where possible. The built-in persisted global agent should pick up required completion rules without replacing unrelated custom text.