taskchef 7.12.0 → 7.12.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.12.0",
3
+ "version": "7.12.1",
4
4
  "description": "Dispatch work from a data-only workspace to visible Codex project tasks.",
5
5
  "author": {
6
6
  "name": "Favo Yang",
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.12.0",
3
+ "version": "7.12.1",
4
4
  "description": "A non-blocking interactive dispatcher for visible Codex tasks.",
5
5
  "license": "MIT",
6
6
  "author": "Favo Yang",
@@ -20,7 +20,7 @@ body {
20
20
  margin: 0;
21
21
  background: var(--background);
22
22
  color: var(--text);
23
- line-height: 1.5;
23
+ line-height: 1.45;
24
24
  }
25
25
 
26
26
  button, select { font: inherit; }
@@ -35,78 +35,78 @@ button { color: inherit; }
35
35
  display: flex;
36
36
  align-items: flex-end;
37
37
  justify-content: space-between;
38
- gap: 24px;
39
- padding-block: 48px 28px;
38
+ gap: 20px;
39
+ padding-block: 40px 24px;
40
40
  border-bottom: 1px solid var(--border);
41
41
  }
42
42
 
43
43
  h1, h2, h3, p { margin-top: 0; }
44
- h1 { margin-bottom: 6px; font-size: clamp(2rem, 5vw, 3.4rem); line-height: 1; letter-spacing: -0.04em; }
44
+ h1 { margin-bottom: 5px; font-size: clamp(1.9rem, 4.5vw, 3.1rem); line-height: 1; letter-spacing: -0.04em; }
45
45
  h2 { line-height: 1.2; }
46
46
  h3 { margin-bottom: 8px; font-size: 0.84rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
47
47
 
48
- .title-row { display: flex; align-items: center; gap: clamp(10px, 2vw, 16px); margin-bottom: 6px; }
48
+ .title-row { display: flex; align-items: center; gap: clamp(9px, 1.8vw, 14px); margin-bottom: 5px; }
49
49
  .title-row h1 { margin-bottom: 0; }
50
- .dashboard-icon { display: block; flex: none; width: clamp(38px, 6vw, 48px); aspect-ratio: 1; }
50
+ .dashboard-icon { display: block; flex: none; width: clamp(36px, 5.5vw, 44px); aspect-ratio: 1; }
51
51
  .dashboard-icon img { display: block; width: 100%; height: 100%; object-fit: contain; }
52
52
 
53
- .eyebrow { margin-bottom: 10px; color: var(--accent); font-size: 0.78rem; font-weight: 750; letter-spacing: 0.15em; text-transform: uppercase; }
53
+ .eyebrow { margin-bottom: 8px; color: var(--accent); font-size: 0.76rem; font-weight: 750; letter-spacing: 0.15em; text-transform: uppercase; }
54
54
  .dashboard-version { margin-inline-start: 0.45em; color: var(--muted); font-size: 0.72rem; letter-spacing: 0.04em; text-transform: none; }
55
55
  .subtitle, .task-project, time, .timestamp-missing { color: var(--muted); }
56
- .subtitle { margin-bottom: 0; }
56
+ .subtitle { margin-bottom: 0; font-size: 0.9rem; }
57
57
 
58
- .connection { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 0.9rem; }
58
+ .connection { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 0.82rem; }
59
59
  .connection-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--warning); }
60
60
  .connection-dot.connected { background: var(--accent); box-shadow: 0 0 0 4px var(--accent-soft); }
61
61
 
62
- main { padding-block: 28px 80px; }
62
+ main { padding-block: 24px 72px; }
63
63
 
64
64
  .toolbar {
65
65
  display: grid;
66
- gap: 12px;
67
- margin-bottom: 22px;
66
+ gap: 10px;
67
+ margin-bottom: 18px;
68
68
  }
69
69
 
70
70
  .toolbar-primary {
71
71
  display: grid;
72
72
  grid-template-columns: repeat(2, minmax(180px, 240px));
73
73
  align-items: end;
74
- gap: 16px;
74
+ gap: 14px;
75
75
  }
76
76
 
77
- label { display: grid; gap: 6px; color: var(--muted); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
78
- select { min-width: 180px; padding: 9px 34px 9px 11px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); }
77
+ label { display: grid; gap: 5px; color: var(--muted); font-size: 0.76rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
78
+ select { min-width: 180px; min-height: 36px; padding: 7px 32px 7px 10px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); }
79
79
  .toolbar-primary select { width: 100%; }
80
80
  .status-filter-fieldset { width: 100%; min-width: 0; margin: 0; padding: 0; border: 0; }
81
- .status-filter-fieldset legend { margin-bottom: 6px; padding: 0; color: var(--muted); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
82
- .status-filter-options { display: flex; flex-wrap: wrap; gap: 6px; }
83
- .status-filter-option { position: relative; display: block; color: var(--text); font-size: 0.82rem; letter-spacing: 0; text-transform: none; cursor: pointer; }
81
+ .status-filter-fieldset legend { margin-bottom: 5px; padding: 0; color: var(--muted); font-size: 0.76rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
82
+ .status-filter-options { display: flex; flex-wrap: wrap; gap: 5px; }
83
+ .status-filter-option { position: relative; display: block; color: var(--text); font-size: 0.78rem; letter-spacing: 0; text-transform: none; cursor: pointer; }
84
84
  .status-filter-option input { position: absolute; width: 1px; height: 1px; opacity: 0; }
85
- .status-filter-option span { display: block; padding: 7px 11px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); white-space: nowrap; }
85
+ .status-filter-option span { display: flex; align-items: center; min-height: 34px; padding: 5px 10px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); white-space: nowrap; }
86
86
  .status-filter-option:hover span { border-color: var(--accent); }
87
87
  .status-filter-option:has(input:checked) span { border-color: var(--accent); background: var(--accent); color: white; box-shadow: 0 1px 2px rgb(24 33 29 / 16%); }
88
88
  .status-filter-option:has(input:focus-visible) span { outline: 3px solid var(--accent); outline-offset: 3px; }
89
- .task-count { justify-self: end; margin: 0; color: var(--muted); font-size: 0.9rem; }
89
+ .task-count { justify-self: end; margin: 0; color: var(--muted); font-size: 0.82rem; }
90
90
 
91
- .task-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
92
- .task-card { padding: 20px 22px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); box-shadow: 0 1px 0 rgb(0 0 0 / 2%); }
93
- .task-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
94
- .task-title { padding: 0; border: 0; background: none; font-size: 1.08rem; font-weight: 720; text-align: left; cursor: pointer; }
91
+ .task-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
92
+ .task-card { padding: 16px 18px; border: 1px solid var(--border); border-radius: 9px; background: var(--surface); box-shadow: 0 1px 0 rgb(0 0 0 / 2%); }
93
+ .task-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
94
+ .task-title { padding: 0; border: 0; background: none; font-size: 1rem; font-weight: 720; line-height: 1.35; text-align: left; cursor: pointer; }
95
95
  .task-title:hover { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
96
- .task-project { margin: 3px 0 12px; font-size: 0.86rem; }
96
+ .task-project { margin: 2px 0 10px; font-size: 0.8rem; }
97
97
  .task-title, .task-summary { overflow-wrap: anywhere; }
98
- .task-summary { display: grid; max-width: 78ch; margin-bottom: 14px; gap: 3px; }
99
- .task-summary strong { margin-top: 5px; color: var(--muted); font-size: 0.72rem; letter-spacing: 0.04em; text-transform: uppercase; }
100
- time, .timestamp-missing { font-size: 0.78rem; }
98
+ .task-summary { display: grid; max-width: 82ch; margin-bottom: 12px; gap: 2px; font-size: 0.9rem; line-height: 1.45; }
99
+ .task-summary strong { margin-top: 4px; color: var(--muted); font-size: 0.68rem; letter-spacing: 0.04em; text-transform: uppercase; }
100
+ time, .timestamp-missing { font-size: 0.75rem; }
101
101
  .timestamp-toggle { padding: 2px 0; border: 0; background: none; cursor: pointer; text-align: left; }
102
102
  .timestamp-toggle:hover time { color: var(--text); text-decoration: underline; text-underline-offset: 3px; }
103
- .task-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
103
+ .task-footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
104
104
  .task-open { flex: none; }
105
- .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; }
105
+ .primary-button.task-action, .secondary-button.task-action { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 34px; padding: 5px 9px; font-size: 0.78rem; line-height: 1.2; white-space: nowrap; }
106
106
  .codex-icon { display: block; flex: none; width: 18px; height: 18px; }
107
107
  .codex-icon img { display: block; width: 100%; height: 100%; object-fit: contain; }
108
108
 
109
- .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; }
109
+ .status { flex: none; padding: 3px 8px; border-radius: 999px; background: var(--surface-muted); color: var(--muted); font-size: 0.68rem; font-weight: 750; line-height: 1.4; text-transform: capitalize; }
110
110
  .status-completed { background: var(--accent-soft); color: var(--accent); }
111
111
  .status-failed { background: #f3dfdd; color: var(--danger); }
112
112
  .status-needs_input { background: #f4e9ce; color: var(--warning); }
@@ -164,15 +164,19 @@ pre { max-height: 280px; margin: 0; padding: 14px; overflow: auto; border-radius
164
164
  :focus-visible { outline: 3px solid rgb(33 95 74 / 35%); outline-offset: 3px; }
165
165
 
166
166
  @media (max-width: 650px) {
167
- .site-header { align-items: flex-start; padding-top: 32px; }
167
+ .site-header { align-items: flex-start; gap: 14px; padding-top: 28px; }
168
168
  .title-row { align-items: flex-start; }
169
169
  .toolbar-primary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
170
170
  .toolbar-primary label, .toolbar-primary select { width: 100%; min-width: 0; }
171
171
  .toolbar .status-filter-option { width: auto; }
172
172
  .task-count { justify-self: start; }
173
173
  .task-heading { align-items: flex-start; }
174
+ .task-title, .timestamp-toggle { display: flex; align-items: center; min-height: 36px; }
174
175
  .task-footer { align-items: flex-start; flex-direction: column; }
175
176
  .task-open { align-self: flex-start; }
177
+ select { min-height: 40px; }
178
+ .status-filter-option span { min-height: 38px; }
179
+ .primary-button.task-action, .secondary-button.task-action { min-height: 40px; }
176
180
  .dialog-actions { align-items: center; flex-flow: row wrap; }
177
181
  .metadata { grid-template-columns: 1fr; }
178
182
  .metadata dt { padding-bottom: 0; border-bottom: 0; }