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
1 change: 1 addition & 0 deletions .vscodeignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,5 @@ SECURITY.md
assets/icon-source.png
assets/icon-prompt.md
package-lock.json
test/**
*.vsix
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,15 @@

All notable changes to Codex Extras are documented in this file.

## 1.1.0

- Add a Codex Chats Activity Bar panel with local chat history, automatic
refresh, and pinned editor-tab opening.
- Show current-workspace chats first, separate chats from other workspaces, and
use a new geometric Activity Bar icon.
- Open a distinct empty Codex agent when the toolbar button is selected while
another empty agent is already open.

## 1.0.1

- Add an original code-brackets-and-plus icon for the New Codex Agent toolbar button.
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,28 @@ Small, focused workflow improvements for the official Codex extension in Visual

## Features

### Codex Chats panel

Adds a **Codex Chats** icon to the Activity Bar. Open it to see local Codex
conversations ordered by their most recent activity.

- Chats for the current workspace appear first in an expanded section.
- Chats from other workspaces stay in a separate collapsed section and show
their workspace name.
- Select a chat to open it as a pinned Codex editor tab.
- Start a new chat or refresh the list from the panel toolbar.
- New and renamed chats appear automatically while VS Code is running.

The panel reads Codex's local session index from `$CODEX_HOME/session_index.jsonl`
when `CODEX_HOME` is set, or from `~/.codex/session_index.jsonl` otherwise.
It reads only the small metadata prefix needed to identify each chat's workspace;
transcript contents are not parsed or copied.

### New Codex Agent toolbar button

Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to execute the official Codex command `chatgpt.newCodexPanel` and open a new Codex agent.
Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to
open a new Codex agent. If an empty Codex agent is already open, selecting the
button again opens another empty agent instead of focusing the existing one.

The button is available without assigning a keyboard shortcut.

Expand DownExpand Up@@ -42,12 +61,14 @@ For an unpublished development build:
```sh
npm ci
npm run package
code --install-extension codex-extras-1.0.1.vsix
code --install-extension codex-extras-1.1.0.vsix
```

## Privacy

Codex Extras contains no telemetry or network requests. Its small runtime wrapper only delegates the toolbar action to a command provided by the official Codex extension.
Codex Extras contains no telemetry or network requests. It reads the local Codex
session index to populate the chat list and opens editor panels provided by the
official Codex extension.

## Contributing

Expand Down
5 changes: 5 additions & 0 deletions assets/sidebar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,8 +29,8 @@ Never commit or paste the token into an issue, pull request, workflow file, or b
5. Tag the exact version and push it:

```sh
git tag v1.0.1
git push origin v1.0.1
git tag v1.1.0
git push origin v1.1.0
```

The release workflow verifies that the tag matches `package.json`, packages the VSIX, publishes it to the Visual Studio Marketplace, and creates a GitHub release containing the same VSIX.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
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
1 change: 1 addition & 0 deletions .vscodeignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,5 @@ SECURITY.md
assets/icon-source.png
assets/icon-prompt.md
package-lock.json
test/**
*.vsix
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,15 @@

All notable changes to Codex Extras are documented in this file.

## 1.1.0

- Add a Codex Chats Activity Bar panel with local chat history, automatic
refresh, and pinned editor-tab opening.
- Show current-workspace chats first, separate chats from other workspaces, and
use a new geometric Activity Bar icon.
- Open a distinct empty Codex agent when the toolbar button is selected while
another empty agent is already open.

## 1.0.1

- Add an original code-brackets-and-plus icon for the New Codex Agent toolbar button.
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,28 @@ Small, focused workflow improvements for the official Codex extension in Visual

## Features

### Codex Chats panel

Adds a **Codex Chats** icon to the Activity Bar. Open it to see local Codex
conversations ordered by their most recent activity.

- Chats for the current workspace appear first in an expanded section.
- Chats from other workspaces stay in a separate collapsed section and show
their workspace name.
- Select a chat to open it as a pinned Codex editor tab.
- Start a new chat or refresh the list from the panel toolbar.
- New and renamed chats appear automatically while VS Code is running.

The panel reads Codex's local session index from `$CODEX_HOME/session_index.jsonl`
when `CODEX_HOME` is set, or from `~/.codex/session_index.jsonl` otherwise.
It reads only the small metadata prefix needed to identify each chat's workspace;
transcript contents are not parsed or copied.

### New Codex Agent toolbar button

Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to execute the official Codex command `chatgpt.newCodexPanel` and open a new Codex agent.
Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to
open a new Codex agent. If an empty Codex agent is already open, selecting the
button again opens another empty agent instead of focusing the existing one.

The button is available without assigning a keyboard shortcut.

Expand DownExpand Up@@ -42,12 +61,14 @@ For an unpublished development build:
```sh
npm ci
npm run package
code --install-extension codex-extras-1.0.1.vsix
code --install-extension codex-extras-1.1.0.vsix
```

## Privacy

Codex Extras contains no telemetry or network requests. Its small runtime wrapper only delegates the toolbar action to a command provided by the official Codex extension.
Codex Extras contains no telemetry or network requests. It reads the local Codex
session index to populate the chat list and opens editor panels provided by the
official Codex extension.

## Contributing

Expand Down
5 changes: 5 additions & 0 deletions assets/sidebar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,8 +29,8 @@ Never commit or paste the token into an issue, pull request, workflow file, or b
5. Tag the exact version and push it:

```sh
git tag v1.0.1
git push origin v1.0.1
git tag v1.1.0
git push origin v1.1.0
```

The release workflow verifies that the tag matches `package.json`, packages the VSIX, publishes it to the Visual Studio Marketplace, and creates a GitHub release containing the same VSIX.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
1 change: 1 addition & 0 deletions .vscodeignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,5 @@ SECURITY.md
assets/icon-source.png
assets/icon-prompt.md
package-lock.json
test/**
*.vsix
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,15 @@

All notable changes to Codex Extras are documented in this file.

## 1.1.0

- Add a Codex Chats Activity Bar panel with local chat history, automatic
refresh, and pinned editor-tab opening.
- Show current-workspace chats first, separate chats from other workspaces, and
use a new geometric Activity Bar icon.
- Open a distinct empty Codex agent when the toolbar button is selected while
another empty agent is already open.

## 1.0.1

- Add an original code-brackets-and-plus icon for the New Codex Agent toolbar button.
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,28 @@ Small, focused workflow improvements for the official Codex extension in Visual

## Features

### Codex Chats panel

Adds a **Codex Chats** icon to the Activity Bar. Open it to see local Codex
conversations ordered by their most recent activity.

- Chats for the current workspace appear first in an expanded section.
- Chats from other workspaces stay in a separate collapsed section and show
their workspace name.
- Select a chat to open it as a pinned Codex editor tab.
- Start a new chat or refresh the list from the panel toolbar.
- New and renamed chats appear automatically while VS Code is running.

The panel reads Codex's local session index from `$CODEX_HOME/session_index.jsonl`
when `CODEX_HOME` is set, or from `~/.codex/session_index.jsonl` otherwise.
It reads only the small metadata prefix needed to identify each chat's workspace;
transcript contents are not parsed or copied.

### New Codex Agent toolbar button

Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to execute the official Codex command `chatgpt.newCodexPanel` and open a new Codex agent.
Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to
open a new Codex agent. If an empty Codex agent is already open, selecting the
button again opens another empty agent instead of focusing the existing one.

The button is available without assigning a keyboard shortcut.

Expand DownExpand Up@@ -42,12 +61,14 @@ For an unpublished development build:
```sh
npm ci
npm run package
code --install-extension codex-extras-1.0.1.vsix
code --install-extension codex-extras-1.1.0.vsix
```

## Privacy

Codex Extras contains no telemetry or network requests. Its small runtime wrapper only delegates the toolbar action to a command provided by the official Codex extension.
Codex Extras contains no telemetry or network requests. It reads the local Codex
session index to populate the chat list and opens editor panels provided by the
official Codex extension.

## Contributing

Expand Down
5 changes: 5 additions & 0 deletions assets/sidebar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,8 +29,8 @@ Never commit or paste the token into an issue, pull request, workflow file, or b
5. Tag the exact version and push it:

```sh
git tag v1.0.1
git push origin v1.0.1
git tag v1.1.0
git push origin v1.1.0
```

The release workflow verifies that the tag matches `package.json`, packages the VSIX, publishes it to the Visual Studio Marketplace, and creates a GitHub release containing the same VSIX.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
1 change: 1 addition & 0 deletions .vscodeignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,5 @@ SECURITY.md
assets/icon-source.png
assets/icon-prompt.md
package-lock.json
test/**
*.vsix
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,15 @@

All notable changes to Codex Extras are documented in this file.

## 1.1.0

- Add a Codex Chats Activity Bar panel with local chat history, automatic
refresh, and pinned editor-tab opening.
- Show current-workspace chats first, separate chats from other workspaces, and
use a new geometric Activity Bar icon.
- Open a distinct empty Codex agent when the toolbar button is selected while
another empty agent is already open.

## 1.0.1

- Add an original code-brackets-and-plus icon for the New Codex Agent toolbar button.
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,28 @@ Small, focused workflow improvements for the official Codex extension in Visual

## Features

### Codex Chats panel

Adds a **Codex Chats** icon to the Activity Bar. Open it to see local Codex
conversations ordered by their most recent activity.

- Chats for the current workspace appear first in an expanded section.
- Chats from other workspaces stay in a separate collapsed section and show
their workspace name.
- Select a chat to open it as a pinned Codex editor tab.
- Start a new chat or refresh the list from the panel toolbar.
- New and renamed chats appear automatically while VS Code is running.

The panel reads Codex's local session index from `$CODEX_HOME/session_index.jsonl`
when `CODEX_HOME` is set, or from `~/.codex/session_index.jsonl` otherwise.
It reads only the small metadata prefix needed to identify each chat's workspace;
transcript contents are not parsed or copied.

### New Codex Agent toolbar button

Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to execute the official Codex command `chatgpt.newCodexPanel` and open a new Codex agent.
Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to
open a new Codex agent. If an empty Codex agent is already open, selecting the
button again opens another empty agent instead of focusing the existing one.

The button is available without assigning a keyboard shortcut.

Expand DownExpand Up@@ -42,12 +61,14 @@ For an unpublished development build:
```sh
npm ci
npm run package
code --install-extension codex-extras-1.0.1.vsix
code --install-extension codex-extras-1.1.0.vsix
```

## Privacy

Codex Extras contains no telemetry or network requests. Its small runtime wrapper only delegates the toolbar action to a command provided by the official Codex extension.
Codex Extras contains no telemetry or network requests. It reads the local Codex
session index to populate the chat list and opens editor panels provided by the
official Codex extension.

## Contributing

Expand Down
5 changes: 5 additions & 0 deletions assets/sidebar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,8 +29,8 @@ Never commit or paste the token into an issue, pull request, workflow file, or b
5. Tag the exact version and push it:

```sh
git tag v1.0.1
git push origin v1.0.1
git tag v1.1.0
git push origin v1.1.0
```

The release workflow verifies that the tag matches `package.json`, packages the VSIX, publishes it to the Visual Studio Marketplace, and creates a GitHub release containing the same VSIX.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
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
1 change: 1 addition & 0 deletions .vscodeignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,5 @@ SECURITY.md
assets/icon-source.png
assets/icon-prompt.md
package-lock.json
test/**
*.vsix
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,15 @@

All notable changes to Codex Extras are documented in this file.

## 1.1.0

- Add a Codex Chats Activity Bar panel with local chat history, automatic
refresh, and pinned editor-tab opening.
- Show current-workspace chats first, separate chats from other workspaces, and
use a new geometric Activity Bar icon.
- Open a distinct empty Codex agent when the toolbar button is selected while
another empty agent is already open.

## 1.0.1

- Add an original code-brackets-and-plus icon for the New Codex Agent toolbar button.
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,28 @@ Small, focused workflow improvements for the official Codex extension in Visual

## Features

### Codex Chats panel

Adds a **Codex Chats** icon to the Activity Bar. Open it to see local Codex
conversations ordered by their most recent activity.

- Chats for the current workspace appear first in an expanded section.
- Chats from other workspaces stay in a separate collapsed section and show
their workspace name.
- Select a chat to open it as a pinned Codex editor tab.
- Start a new chat or refresh the list from the panel toolbar.
- New and renamed chats appear automatically while VS Code is running.

The panel reads Codex's local session index from `$CODEX_HOME/session_index.jsonl`
when `CODEX_HOME` is set, or from `~/.codex/session_index.jsonl` otherwise.
It reads only the small metadata prefix needed to identify each chat's workspace;
transcript contents are not parsed or copied.

### New Codex Agent toolbar button

Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to execute the official Codex command `chatgpt.newCodexPanel` and open a new Codex agent.
Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to
open a new Codex agent. If an empty Codex agent is already open, selecting the
button again opens another empty agent instead of focusing the existing one.

The button is available without assigning a keyboard shortcut.

Expand DownExpand Up@@ -42,12 +61,14 @@ For an unpublished development build:
```sh
npm ci
npm run package
code --install-extension codex-extras-1.0.1.vsix
code --install-extension codex-extras-1.1.0.vsix
```

## Privacy

Codex Extras contains no telemetry or network requests. Its small runtime wrapper only delegates the toolbar action to a command provided by the official Codex extension.
Codex Extras contains no telemetry or network requests. It reads the local Codex
session index to populate the chat list and opens editor panels provided by the
official Codex extension.

## Contributing

Expand Down
5 changes: 5 additions & 0 deletions assets/sidebar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,8 +29,8 @@ Never commit or paste the token into an issue, pull request, workflow file, or b
5. Tag the exact version and push it:

```sh
git tag v1.0.1
git push origin v1.0.1
git tag v1.1.0
git push origin v1.1.0
```

The release workflow verifies that the tag matches `package.json`, packages the VSIX, publishes it to the Visual Studio Marketplace, and creates a GitHub release containing the same VSIX.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
1 change: 1 addition & 0 deletions .vscodeignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,5 @@ SECURITY.md
assets/icon-source.png
assets/icon-prompt.md
package-lock.json
test/**
*.vsix
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,15 @@

All notable changes to Codex Extras are documented in this file.

## 1.1.0

- Add a Codex Chats Activity Bar panel with local chat history, automatic
refresh, and pinned editor-tab opening.
- Show current-workspace chats first, separate chats from other workspaces, and
use a new geometric Activity Bar icon.
- Open a distinct empty Codex agent when the toolbar button is selected while
another empty agent is already open.

## 1.0.1

- Add an original code-brackets-and-plus icon for the New Codex Agent toolbar button.
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,28 @@ Small, focused workflow improvements for the official Codex extension in Visual

## Features

### Codex Chats panel

Adds a **Codex Chats** icon to the Activity Bar. Open it to see local Codex
conversations ordered by their most recent activity.

- Chats for the current workspace appear first in an expanded section.
- Chats from other workspaces stay in a separate collapsed section and show
their workspace name.
- Select a chat to open it as a pinned Codex editor tab.
- Start a new chat or refresh the list from the panel toolbar.
- New and renamed chats appear automatically while VS Code is running.

The panel reads Codex's local session index from `$CODEX_HOME/session_index.jsonl`
when `CODEX_HOME` is set, or from `~/.codex/session_index.jsonl` otherwise.
It reads only the small metadata prefix needed to identify each chat's workspace;
transcript contents are not parsed or copied.

### New Codex Agent toolbar button

Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to execute the official Codex command `chatgpt.newCodexPanel` and open a new Codex agent.
Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to
open a new Codex agent. If an empty Codex agent is already open, selecting the
button again opens another empty agent instead of focusing the existing one.

The button is available without assigning a keyboard shortcut.

Expand DownExpand Up@@ -42,12 +61,14 @@ For an unpublished development build:
```sh
npm ci
npm run package
code --install-extension codex-extras-1.0.1.vsix
code --install-extension codex-extras-1.1.0.vsix
```

## Privacy

Codex Extras contains no telemetry or network requests. Its small runtime wrapper only delegates the toolbar action to a command provided by the official Codex extension.
Codex Extras contains no telemetry or network requests. It reads the local Codex
session index to populate the chat list and opens editor panels provided by the
official Codex extension.

## Contributing

Expand Down
5 changes: 5 additions & 0 deletions assets/sidebar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,8 +29,8 @@ Never commit or paste the token into an issue, pull request, workflow file, or b
5. Tag the exact version and push it:

```sh
git tag v1.0.1
git push origin v1.0.1
git tag v1.1.0
git push origin v1.1.0
```

The release workflow verifies that the tag matches `package.json`, packages the VSIX, publishes it to the Visual Studio Marketplace, and creates a GitHub release containing the same VSIX.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
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
1 change: 1 addition & 0 deletions .vscodeignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,5 @@ SECURITY.md
assets/icon-source.png
assets/icon-prompt.md
package-lock.json
test/**
*.vsix
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,15 @@

All notable changes to Codex Extras are documented in this file.

## 1.1.0

- Add a Codex Chats Activity Bar panel with local chat history, automatic
refresh, and pinned editor-tab opening.
- Show current-workspace chats first, separate chats from other workspaces, and
use a new geometric Activity Bar icon.
- Open a distinct empty Codex agent when the toolbar button is selected while
another empty agent is already open.

## 1.0.1

- Add an original code-brackets-and-plus icon for the New Codex Agent toolbar button.
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,28 @@ Small, focused workflow improvements for the official Codex extension in Visual

## Features

### Codex Chats panel

Adds a **Codex Chats** icon to the Activity Bar. Open it to see local Codex
conversations ordered by their most recent activity.

- Chats for the current workspace appear first in an expanded section.
- Chats from other workspaces stay in a separate collapsed section and show
their workspace name.
- Select a chat to open it as a pinned Codex editor tab.
- Start a new chat or refresh the list from the panel toolbar.
- New and renamed chats appear automatically while VS Code is running.

The panel reads Codex's local session index from `$CODEX_HOME/session_index.jsonl`
when `CODEX_HOME` is set, or from `~/.codex/session_index.jsonl` otherwise.
It reads only the small metadata prefix needed to identify each chat's workspace;
transcript contents are not parsed or copied.

### New Codex Agent toolbar button

Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to execute the official Codex command `chatgpt.newCodexPanel` and open a new Codex agent.
Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to
open a new Codex agent. If an empty Codex agent is already open, selecting the
button again opens another empty agent instead of focusing the existing one.

The button is available without assigning a keyboard shortcut.

Expand DownExpand Up@@ -42,12 +61,14 @@ For an unpublished development build:
```sh
npm ci
npm run package
code --install-extension codex-extras-1.0.1.vsix
code --install-extension codex-extras-1.1.0.vsix
```

## Privacy

Codex Extras contains no telemetry or network requests. Its small runtime wrapper only delegates the toolbar action to a command provided by the official Codex extension.
Codex Extras contains no telemetry or network requests. It reads the local Codex
session index to populate the chat list and opens editor panels provided by the
official Codex extension.

## Contributing

Expand Down
5 changes: 5 additions & 0 deletions assets/sidebar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,8 +29,8 @@ Never commit or paste the token into an issue, pull request, workflow file, or b
5. Tag the exact version and push it:

```sh
git tag v1.0.1
git push origin v1.0.1
git tag v1.1.0
git push origin v1.1.0
```

The release workflow verifies that the tag matches `package.json`, packages the VSIX, publishes it to the Visual Studio Marketplace, and creates a GitHub release containing the same VSIX.
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
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
1 change: 1 addition & 0 deletions .vscodeignore
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,4 +10,5 @@ SECURITY.md
assets/icon-source.png
assets/icon-prompt.md
package-lock.json
test/**
*.vsix
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,15 @@

All notable changes to Codex Extras are documented in this file.

## 1.1.0

- Add a Codex Chats Activity Bar panel with local chat history, automatic
refresh, and pinned editor-tab opening.
- Show current-workspace chats first, separate chats from other workspaces, and
use a new geometric Activity Bar icon.
- Open a distinct empty Codex agent when the toolbar button is selected while
another empty agent is already open.

## 1.0.1

- Add an original code-brackets-and-plus icon for the New Codex Agent toolbar button.
Expand Down
27 changes: 24 additions & 3 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -10,9 +10,28 @@ Small, focused workflow improvements for the official Codex extension in Visual

## Features

### Codex Chats panel

Adds a **Codex Chats** icon to the Activity Bar. Open it to see local Codex
conversations ordered by their most recent activity.

- Chats for the current workspace appear first in an expanded section.
- Chats from other workspaces stay in a separate collapsed section and show
their workspace name.
- Select a chat to open it as a pinned Codex editor tab.
- Start a new chat or refresh the list from the panel toolbar.
- New and renamed chats appear automatically while VS Code is running.

The panel reads Codex's local session index from `$CODEX_HOME/session_index.jsonl`
when `CODEX_HOME` is set, or from `~/.codex/session_index.jsonl` otherwise.
It reads only the small metadata prefix needed to identify each chat's workspace;
transcript contents are not parsed or copied.

### New Codex Agent toolbar button

Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to execute the official Codex command `chatgpt.newCodexPanel` and open a new Codex agent.
Adds a visible code-brackets-and-plus action to the editor toolbar. Select it to
open a new Codex agent. If an empty Codex agent is already open, selecting the
button again opens another empty agent instead of focusing the existing one.

The button is available without assigning a keyboard shortcut.

Expand DownExpand Up@@ -42,12 +61,14 @@ For an unpublished development build:
```sh
npm ci
npm run package
code --install-extension codex-extras-1.0.1.vsix
code --install-extension codex-extras-1.1.0.vsix
```

## Privacy

Codex Extras contains no telemetry or network requests. Its small runtime wrapper only delegates the toolbar action to a command provided by the official Codex extension.
Codex Extras contains no telemetry or network requests. It reads the local Codex
session index to populate the chat list and opens editor panels provided by the
official Codex extension.

## Contributing

Expand Down
5 changes: 5 additions & 0 deletions assets/sidebar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/RELEASING.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,8 +29,8 @@ Never commit or paste the token into an issue, pull request, workflow file, or b
5. Tag the exact version and push it:

```sh
git tag v1.0.1
git push origin v1.0.1
git tag v1.1.0
git push origin v1.1.0
```

The release workflow verifies that the tag matches `package.json`, packages the VSIX, publishes it to the Visual Studio Marketplace, and creates a GitHub release containing the same VSIX.
Loading