@aion0/forge 0.9.0 → 0.9.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.
- package/RELEASE_NOTES.md +5 -7
- package/components/SettingsModal.tsx +10 -7
- package/package.json +1 -1
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
# Forge v0.9.
|
|
1
|
+
# Forge v0.9.1
|
|
2
2
|
|
|
3
|
-
Released: 2026-05-
|
|
3
|
+
Released: 2026-05-22
|
|
4
4
|
|
|
5
|
-
## Changes since v0.
|
|
5
|
+
## Changes since v0.9.0
|
|
6
6
|
|
|
7
7
|
### Other
|
|
8
|
-
-
|
|
9
|
-
- feat(jobs): per-Job dispatch budget + global pipeline concurrency cap
|
|
10
|
-
- docs(help): add 22-recipes.md — recipe system + mr-review-fix walkthrough
|
|
8
|
+
- fix(settings): CLI/API profile add doesn't show + leaks into Agents
|
|
11
9
|
|
|
12
10
|
|
|
13
|
-
**Full Changelog**: https://github.com/aiwatching/forge/compare/v0.
|
|
11
|
+
**Full Changelog**: https://github.com/aiwatching/forge/compare/v0.9.0...v0.9.1
|
|
@@ -1233,12 +1233,14 @@ function AgentsSection({ settings, setSettings }: { settings: any; setSettings:
|
|
|
1233
1233
|
}
|
|
1234
1234
|
|
|
1235
1235
|
// Add configured but not detected agents. Skip rows that are
|
|
1236
|
-
// profiles (CLI profile with `base`, or API profile
|
|
1237
|
-
// `type: 'api'`) — those have their own Profiles section
|
|
1238
|
-
// and don't belong in the Agents list.
|
|
1236
|
+
// profiles (CLI profile with `cliType`/`base`, or API profile
|
|
1237
|
+
// with `type: 'api'`) — those have their own Profiles section
|
|
1238
|
+
// below and don't belong in the Agents list. `cliType` is the
|
|
1239
|
+
// current canonical field (written by AddProfileForm); `base`
|
|
1240
|
+
// is the legacy name (kept for backward compat).
|
|
1239
1241
|
for (const [id, cfg] of Object.entries(configured) as [string, any][]) {
|
|
1240
1242
|
if (merged.find(a => a.id === id)) continue;
|
|
1241
|
-
if (cfg.type === 'api' || cfg.base) continue;
|
|
1243
|
+
if (cfg.type === 'api' || cfg.cliType || cfg.base) continue;
|
|
1242
1244
|
merged.push({
|
|
1243
1245
|
id,
|
|
1244
1246
|
name: cfg.name ?? id,
|
|
@@ -1536,7 +1538,7 @@ function AgentsSection({ settings, setSettings }: { settings: any; setSettings:
|
|
|
1536
1538
|
className={inputClass}
|
|
1537
1539
|
>
|
|
1538
1540
|
<option value="">Default (no profile)</option>
|
|
1539
|
-
{Object.entries(settings.agents || {}).filter(([, cfg]: [string, any]) => cfg.base || cfg.type === 'profile').map(([pid, cfg]: [string, any]) => (
|
|
1541
|
+
{Object.entries(settings.agents || {}).filter(([, cfg]: [string, any]) => cfg.cliType || cfg.base || cfg.type === 'profile' || cfg.type === 'api').map(([pid, cfg]: [string, any]) => (
|
|
1540
1542
|
<option key={pid} value={pid}>{cfg.name || pid}{cfg.model ? ` (${cfg.model})` : ''}</option>
|
|
1541
1543
|
))}
|
|
1542
1544
|
</select>
|
|
@@ -1621,8 +1623,9 @@ function AgentsSection({ settings, setSettings }: { settings: any; setSettings:
|
|
|
1621
1623
|
<span className="text-[8px] text-[var(--text-secondary)]">Shared across workspace and terminal — override model, env vars, API endpoint</span>
|
|
1622
1624
|
</div>
|
|
1623
1625
|
|
|
1624
|
-
{/* All profiles (CLI + API)
|
|
1625
|
-
|
|
1626
|
+
{/* All profiles (CLI + API). CLI profile marker is `cliType`
|
|
1627
|
+
(new) or `base` (legacy); API profile is `type: 'api'`. */}
|
|
1628
|
+
{Object.entries(settings.agents || {}).filter(([, cfg]: [string, any]) => cfg.cliType || cfg.base || cfg.type === 'api').map(([id, cfg]: [string, any]) => (
|
|
1626
1629
|
<ProfileRow key={id} id={id} cfg={cfg} inputClass={inputClass}
|
|
1627
1630
|
onUpdate={(updated) => setSettings({ ...settings, agents: { ...settings.agents, [id]: updated } })}
|
|
1628
1631
|
onDelete={() => {
|