acdev 1.0.4 → 1.0.6

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.
package/public/index.html CHANGED
@@ -72,8 +72,12 @@
72
72
  <div class="sidebar-footer">
73
73
  <div class="sidebar-divider"></div>
74
74
  <div class="model-block">
75
- <div class="model-label">Model</div>
76
- <div class="model-current" id="model-current" title="Change in Settings → Configuration">—</div>
75
+ <div class="model-label">Agent</div>
76
+ <div class="model-meta-row">
77
+ <span class="model-combined" id="model-combined">—</span>
78
+ </div>
79
+ <span class="sr-only" id="model-provider" aria-hidden="true"></span>
80
+ <span class="sr-only" id="model-current" aria-hidden="true"></span>
77
81
  </div>
78
82
  <div class="repo-meta">
79
83
  <div class="repo-name" id="repo-name">—</div>
@@ -100,26 +104,106 @@
100
104
  <!-- OVERVIEW -->
101
105
  <section class="view" id="view-overview" data-view-panel="overview">
102
106
  <div class="stack stack-lg max-w-overview">
103
- <div id="auth-banner" class="auth-banner hidden" role="status" hidden>
104
- <p id="auth-banner-text" class="auth-banner-text"></p>
105
- <button type="button" class="btn btn-secondary btn-sm" id="auth-banner-btn">
106
- Open Settings
107
- </button>
108
- </div>
109
107
  <section>
110
- <div class="section-label">Add issues</div>
111
108
  <div class="card enqueue-card">
109
+ <div class="enqueue-card-header">
110
+ <div class="enqueue-card-title">
111
+ <span class="enqueue-card-dot" aria-hidden="true"></span>
112
+ <span class="enqueue-card-label">Add tickets</span>
113
+ </div>
114
+ <div class="enqueue-card-header-actions">
115
+ <div
116
+ class="source-toggle source-toggle--compact"
117
+ id="overview-ticket-source"
118
+ role="group"
119
+ aria-label="Ticket source"
120
+ >
121
+ <button type="button" class="source-btn active" data-source="github">GitHub Issues</button>
122
+ <button type="button" class="source-btn" data-source="jira">Jira</button>
123
+ </div>
124
+ <span class="enqueue-queued-count" id="enqueue-queued-count">0 queued</span>
125
+ </div>
126
+ </div>
127
+
112
128
  <label class="sr-only" for="issue-urls" id="issue-urls-label">Issue references</label>
113
129
  <textarea
114
130
  id="issue-urls"
115
- class="input textarea"
116
- rows="3"
117
- placeholder="Paste GitHub issue links — one per line, or comma-separated&#10;e.g. https://github.com/acme/storefront/issues/482"
131
+ class="input textarea enqueue-textarea"
132
+ rows="4"
133
+ placeholder="Paste Jira keys or browse URLs…"
118
134
  ></textarea>
119
- <div class="enqueue-footer">
120
- <span class="hint" id="enqueue-hint">Issues run one at a time, each in its own workspace and branch.</span>
135
+ <p class="enqueue-input-hint" id="enqueue-input-hint">
136
+ One per line, comma-separated, or paste a URL try
137
+ <kbd class="enqueue-kbd" id="enqueue-hint-example">PROJ-123</kbd>
138
+ or a browse link. Press <kbd class="enqueue-kbd">Enter</kbd> to add.
139
+ </p>
140
+
141
+ <div class="enqueue-info-banner" id="enqueue-info-banner" role="note">
142
+ <svg class="enqueue-info-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
143
+ <circle cx="12" cy="12" r="10"/>
144
+ <path d="M12 16v-4"/>
145
+ <path d="M12 8h.01"/>
146
+ </svg>
147
+ <p class="enqueue-info-text" id="enqueue-info-text">
148
+ <strong>Jira issues run one at a time.</strong>
149
+ Open GitHub PRs are picked up automatically via gh.
150
+ </p>
151
+ </div>
152
+ <p class="enqueue-jira-hint hidden" id="enqueue-jira-hint" role="status">
153
+ Jira credentials required — <a href="#" id="enqueue-jira-settings-link">configure in Settings</a>.
154
+ </p>
155
+
156
+ <div class="enqueue-actions">
157
+ <div class="agent-picker" id="overview-agent-picker" aria-label="Agent">
158
+ <select id="overview-llm-provider" class="sr-only" aria-hidden="true" tabindex="-1">
159
+ <option value="claude">Claude</option>
160
+ <option value="openrouter">OpenRouter</option>
161
+ </select>
162
+ <input type="hidden" id="overview-model" value="">
163
+ <button
164
+ type="button"
165
+ class="agent-pill"
166
+ id="overview-agent-trigger"
167
+ aria-haspopup="dialog"
168
+ aria-expanded="false"
169
+ aria-controls="overview-agent-panel"
170
+ >
171
+ <span class="agent-pill-icon agent-pill-icon--claude" id="overview-agent-icon" aria-hidden="true"></span>
172
+ <span class="agent-pill-body">
173
+ <span class="agent-pill-label">Agent</span>
174
+ <span class="agent-pill-value" id="overview-agent-value">Claude • —</span>
175
+ </span>
176
+ <svg class="agent-pill-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
177
+ </button>
178
+ <div class="agent-picker-panel" id="overview-agent-panel" role="dialog" aria-label="Choose agent model" aria-hidden="true">
179
+ <div class="agent-picker-tabs" role="tablist" aria-label="Provider">
180
+ <button type="button" class="agent-picker-tab is-active" data-provider="claude" role="tab" aria-selected="true">Claude</button>
181
+ <button type="button" class="agent-picker-tab" data-provider="openrouter" role="tab" aria-selected="false">OpenRouter</button>
182
+ </div>
183
+ <label class="sr-only" for="overview-agent-search">Search models</label>
184
+ <input
185
+ id="overview-agent-search"
186
+ class="input agent-picker-search"
187
+ type="search"
188
+ placeholder="Search models…"
189
+ autocomplete="off"
190
+ >
191
+ <ul
192
+ class="model-picker-list amcp-scroll"
193
+ id="overview-agent-model-list"
194
+ role="listbox"
195
+ aria-labelledby="overview-agent-trigger"
196
+ ></ul>
197
+ </div>
198
+ </div>
199
+ <button id="add-btn" type="button" class="btn btn-primary enqueue-add-btn">
200
+ Add to queue
201
+ <svg class="enqueue-add-arrow" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 12h14"/><path d="m13 6 6 6-6 6"/></svg>
202
+ </button>
203
+ </div>
204
+ <div class="enqueue-feedback-row">
205
+ <p id="overview-llm-feedback" class="feedback hidden" role="status"></p>
121
206
  <p id="enqueue-feedback" class="feedback hidden"></p>
122
- <button id="add-btn" type="button" class="btn btn-primary">Add to queue</button>
123
207
  </div>
124
208
  </div>
125
209
  </section>
@@ -454,6 +538,21 @@
454
538
  </div>
455
539
  </div>
456
540
  </div>
541
+
542
+ <div class="card settings-card">
543
+ <div class="rules-heading">OpenRouter authentication</div>
544
+ <p id="settings-openrouter-status" class="auth-status" role="status">Checking OpenRouter auth…</p>
545
+ <div class="settings-grid">
546
+ <div class="settings-field settings-field-full">
547
+ <label class="field-label" for="settings-openrouter-key">OpenRouter API key</label>
548
+ <input id="settings-openrouter-key" class="input" type="password" name="openrouterApiKey" autocomplete="new-password" placeholder="Leave blank to keep existing">
549
+ <button type="button" class="auth-clear hidden" id="settings-openrouter-key-clear">Clear saved API key</button>
550
+ <p class="field-hint" id="settings-openrouter-key-hint">
551
+ Required when LLM provider is OpenRouter. Get a key at <a href="https://openrouter.ai/keys" target="_blank" rel="noopener noreferrer">openrouter.ai/keys</a>. Stored as <code>OPENROUTER_API_KEY</code> in <code>.acdev/.env</code>.
552
+ </p>
553
+ </div>
554
+ </div>
555
+ </div>
457
556
  </div>
458
557
  </div>
459
558
 
@@ -550,6 +649,15 @@
550
649
  </p>
551
650
  <div class="card settings-card">
552
651
  <div class="settings-grid">
652
+ <div class="settings-field">
653
+ <label class="field-label" for="settings-llm-provider">LLM provider</label>
654
+ <select id="settings-llm-provider" class="input" name="llmProvider">
655
+ <option value="claude">Claude (Anthropic / Claude Code)</option>
656
+ <option value="openrouter">OpenRouter</option>
657
+ </select>
658
+ <p class="field-hint" id="settings-llm-provider-hint">Agent runs use the selected provider and model below.</p>
659
+ </div>
660
+
553
661
  <div class="settings-field">
554
662
  <label class="field-label" for="settings-base-branch">Base branch</label>
555
663
  <input id="settings-base-branch" class="input" type="text" name="baseBranch" autocomplete="off" required>
@@ -557,8 +665,37 @@
557
665
  </div>
558
666
 
559
667
  <div class="settings-field">
560
- <label class="field-label" for="settings-model">Model</label>
561
- <select id="settings-model" class="input" name="model"></select>
668
+ <label class="field-label" for="settings-model-trigger">Model</label>
669
+ <div class="model-picker" id="settings-model-picker">
670
+ <input type="hidden" id="settings-model" name="model" value="">
671
+ <button
672
+ type="button"
673
+ class="input model-picker-trigger"
674
+ id="settings-model-trigger"
675
+ aria-haspopup="listbox"
676
+ aria-expanded="false"
677
+ aria-controls="settings-model-panel"
678
+ >
679
+ <span class="model-picker-value" id="settings-model-value">—</span>
680
+ <svg class="model-picker-chevron" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>
681
+ </button>
682
+ <div class="model-picker-panel" id="settings-model-panel" role="presentation" aria-hidden="true">
683
+ <label class="sr-only" for="settings-model-search">Search models</label>
684
+ <input
685
+ id="settings-model-search"
686
+ class="input model-picker-search"
687
+ type="search"
688
+ placeholder="Search by name or id…"
689
+ autocomplete="off"
690
+ >
691
+ <ul
692
+ class="model-picker-list amcp-scroll"
693
+ id="settings-model-list"
694
+ role="listbox"
695
+ aria-labelledby="settings-model-trigger"
696
+ ></ul>
697
+ </div>
698
+ </div>
562
699
  <p class="field-hint" id="settings-model-hint">Claude model for agent runs.</p>
563
700
  </div>
564
701