taskchef 7.7.0 → 7.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.7.0",
3
+ "version": "7.7.1",
4
4
  "description": "Dispatch work from a data-only workspace to visible Codex project tasks.",
5
5
  "author": {
6
6
  "name": "Favo Yang",
@@ -0,0 +1,22 @@
1
+ # Codex app icon assets
2
+
3
+ `codex-app-dark.png` and `codex-app-light.png` are unmodified Codex app icon
4
+ assets from OpenAI's official macOS application bundle. The source bundle was
5
+ ChatGPT/Codex `26.818.61809` (build `7019`), bundle identifier
6
+ `com.openai.codex`, signed with Apple developer team identifier `2DC432GLL2`.
7
+ The files were copied from these bundle-relative resource paths:
8
+
9
+ - `Contents/Resources/icon-codex-dark-color.png`
10
+ - `Contents/Resources/icon-codex-light.png`
11
+
12
+ The application itself selects these files as the dark and light Codex dock
13
+ icon previews. Their SHA-256 digests are:
14
+
15
+ - `codex-app-dark.png`: `69fb4384e161be8a20dcb94a9ac34aea4fbfaeb67514110a71e7b0732eccb0fc`
16
+ - `codex-app-light.png`: `de7d43f3386105ab20952958c2c25beb0d903e2aeb6e1aef57c49a648c0d1c07`
17
+
18
+ The Codex icon is an OpenAI trademark and copyrighted asset. It is not covered
19
+ by TaskChef's MIT license. TaskChef uses it unchanged and only beside the
20
+ visible **Open task** label to identify an action that opens the corresponding
21
+ task in OpenAI Codex. Use remains subject to the [OpenAI Design
22
+ Guidelines](https://openai.com/brand/), including OpenAI's Marks usage terms.
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.7.0",
3
+ "version": "7.7.1",
4
4
  "description": "A non-blocking interactive dispatcher for visible Codex tasks.",
5
5
  "license": "MIT",
6
6
  "author": "Favo Yang",
@@ -78,10 +78,19 @@ function timestampControl(value, { accessibleName, key, prefix = "" }) {
78
78
  }
79
79
 
80
80
  function codexIcon() {
81
- const icon = document.createElement("span");
82
- icon.className = "codex-icon";
83
- icon.setAttribute("aria-hidden", "true");
84
- return icon;
81
+ const picture = document.createElement("picture");
82
+ picture.className = "codex-icon";
83
+ picture.setAttribute("aria-hidden", "true");
84
+ const dark = document.createElement("source");
85
+ dark.srcset = "/assets/codex-app-dark.png";
86
+ dark.media = "(prefers-color-scheme: dark)";
87
+ const image = document.createElement("img");
88
+ image.src = "/assets/codex-app-light.png";
89
+ image.alt = "";
90
+ image.width = 16;
91
+ image.height = 16;
92
+ picture.append(dark, image);
93
+ return picture;
85
94
  }
86
95
 
87
96
  function configureOpenTaskControl(control, ariaLabel) {
@@ -85,7 +85,10 @@
85
85
  </div>
86
86
  <div class="dialog-actions">
87
87
  <button id="open-codex" class="primary-button task-action" type="button" aria-label="Open this task in Codex">
88
- <span class="codex-icon" aria-hidden="true"></span>
88
+ <picture class="codex-icon" aria-hidden="true">
89
+ <source srcset="/assets/codex-app-dark.png" media="(prefers-color-scheme: dark)">
90
+ <img src="/assets/codex-app-light.png" alt="" width="16" height="16">
91
+ </picture>
89
92
  <span>Open task</span>
90
93
  </button>
91
94
  <button id="copy-thread-id" class="secondary-button" type="button">Copy thread ID</button>
@@ -84,7 +84,8 @@ time, .timestamp-missing { font-size: 0.78rem; }
84
84
  .task-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
85
85
  .task-open { flex: none; }
86
86
  .task-action { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 32px; padding: 5px 9px; font-size: 0.82rem; line-height: 1.2; white-space: nowrap; }
87
- .codex-icon { display: inline-block; flex: none; width: 16px; height: 16px; background: currentColor; mask: url("/assets/codex.svg") center / contain no-repeat; }
87
+ .codex-icon { display: block; flex: none; width: 16px; height: 16px; }
88
+ .codex-icon img { display: block; width: 100%; height: 100%; object-fit: contain; }
88
89
 
89
90
  .status { flex: none; padding: 4px 9px; border-radius: 999px; background: var(--surface-muted); color: var(--muted); font-size: 0.72rem; font-weight: 750; text-transform: capitalize; }
90
91
  .status-completed { background: var(--accent-soft); color: var(--accent); }
package/src/dashboard.js CHANGED
@@ -48,7 +48,8 @@ const STATIC_FILES = new Map([
48
48
  ["/styles.css", [path.join(STATIC_ROOT, "styles.css"), "text/css; charset=utf-8"]],
49
49
  ["/assets/taskchef-dark.svg", [path.join(ASSET_ROOT, "taskchef-dark.svg"), "image/svg+xml"]],
50
50
  ["/assets/taskchef.svg", [path.join(ASSET_ROOT, "taskchef.svg"), "image/svg+xml"]],
51
- ["/assets/codex.svg", [path.join(ASSET_ROOT, "codex.svg"), "image/svg+xml"]],
51
+ ["/assets/codex-app-dark.png", [path.join(ASSET_ROOT, "codex-app-dark.png"), "image/png"]],
52
+ ["/assets/codex-app-light.png", [path.join(ASSET_ROOT, "codex-app-light.png"), "image/png"]],
52
53
  ]);
53
54
 
54
55
  export function dashboardAuthority(host, port) {
package/assets/codex.svg DELETED
@@ -1,3 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
2
- <path fill="currentColor" d="M3 1.5h10A1.5 1.5 0 0 1 14.5 3v10a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 13V3A1.5 1.5 0 0 1 3 1.5Zm0 1a.5.5 0 0 0-.5.5v10a.5.5 0 0 0 .5.5h10a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5H3Zm1.15 3.1.7-.7L7.95 8l-3.1 3.1-.7-.7L6.55 8l-2.4-2.4ZM8 10h4v1H8v-1Z"/>
3
- </svg>