Commit graph

763 commits

Author SHA1 Message Date
777genius
62cded28cc test(opencode): persist live production evidence 2026-04-21 20:43:39 +03:00
777genius
5e31bd1c06 feat(opencode): add team runtime integration 2026-04-21 20:28:22 +03:00
777genius
e20d74d95e test(teams): run cmd mcp preflight through shell on Windows 2026-04-21 18:42:26 +03:00
777genius
e0d32d59ff fix(task-change-ledger): normalize fixture paths on Windows 2026-04-21 18:19:29 +03:00
777genius
728603d788 test(teams): stabilize runtime launch validation mocks 2026-04-21 18:06:35 +03:00
777genius
95b62d6013 fix(task-change-ledger): read long hashed task artifacts 2026-04-21 18:02:40 +03:00
777genius
f40ea4f738 feat(agent-teams): add derived task queue agenda 2026-04-21 17:22:54 +03:00
777genius
7b486b7fea feat(task-change-ledger): merge review hardening 2026-04-21 17:22:01 +03:00
777genius
c69b7e4212 feat(task-change-ledger): harden review flow 2026-04-21 17:21:29 +03:00
777genius
7374108a71 fix(teams): preserve explicit provider during relaunch 2026-04-21 17:16:49 +03:00
777genius
1db7e501a0 feat(teams): introduce fast mode configuration for Anthropic provider and enhance related UI components 2026-04-21 16:44:18 +03:00
777genius
331166216e feat(team-runtime): snapshot catalog-backed picker baseline 2026-04-21 15:29:23 +03:00
777genius
7a337b6268 feat(codex): add app-server model catalog 2026-04-21 12:45:34 +03:00
777genius
99102565f3 feat(ledger): integrate task change ledger functionality into file content resolution and review application processes 2026-04-21 12:25:42 +03:00
777genius
66409ca56b fix(test): stabilize post-compact reminder assertion 2026-04-20 22:07:02 +03:00
Илия
4931115b7a
feat(codex): rewrite to app-server rich variant Merge pull request #80 from 777genius/spike/codex-native-runtime-plan
Merge pull request #80 from 777genius/spike/codex-native-runtime-plan
2026-04-20 20:54:35 +03:00
777genius
19e7ea995e fix(ci): stabilize workspace test suite 2026-04-20 20:38:12 +03:00
777genius
a76404fec7 feat(agent-graph): add activity visibility toggle 2026-04-20 20:33:34 +03:00
777genius
5683973c04 feat(codex): add app-server account management and polish native UX 2026-04-20 20:18:21 +03:00
777genius
8093201b78 Merge remote-tracking branch 'origin/dev' into spike/codex-native-runtime-plan
# Conflicts:
#	docs/research/codex-native-runtime-integration-decision.md
2026-04-20 19:42:49 +03:00
Илия
6929ab2a34
Merge pull request #75 from sardorb3k/perf/virtualization-threshold-tests
perf(team): enable virtualization past threshold + tests
2026-04-20 09:00:07 +03:00
777genius
63bc5ed866 fix(team): stabilize activity timeline virtualization 2026-04-20 08:59:38 +03:00
Mike
05f68ced44 perf(team): enable virtualization past threshold + tests
Final step of the virtualization plan. Turns the virtualized render
path on in production behind a row-count threshold, and adds regression
tests covering every gate.

- `VIRTUALIZATION_ROW_THRESHOLD = 60`. Short lists stay on the direct
  render path (no wrapper, no position: absolute, no measurement
  churn). Above the threshold the virtualizer takes over. Threshold is
  sized so conversations under ~one session of activity don't pay the
  virtualization cost; it activates once scrolling through a longer
  history.
- `shouldVirtualize` now requires `renderRows.length >= threshold` in
  addition to the existing opt-in and scroll-ref checks.
- `MessagesPanel` opts into virtualization for every layout it wires
  (inline / sidebar / bottom-sheet). The internal threshold then
  decides when to actually enable it, so callers don't need per-layout
  heuristics.
- Tests: adds a new `ActivityTimeline virtualization threshold` block
  covering (a) below-threshold list stays on the direct path,
  (b) no viewport → direct path regardless of count, (c) above
  threshold + viewport with `virtualizationEnabled` flips to the
  virtualized render path (simulated by clicking "show all" past
  pagination).

With this in, #70#74 combine to deliver:
- correct IntersectionObserver roots in scroll containers
- atomic render rows with stable keys
- windowed rendering with DOM-measured scrollMargin and measureElement
- auto-on when the cost of direct rendering actually shows up
2026-04-20 00:56:28 +05:00
Mike
a43fedcaab refactor(team): flatten ActivityTimeline render into atomic rows
Third step of the virtualization plan. Pure refactor — no UI change, no
virtualization yet. Prepares the timeline for row-level windowing.

- Introduces `TimelineRow`, a discriminated union of `session-separator`,
  `lead-thought-group` (pinned and non-pinned), `compaction-divider`,
  and `message-row`. Each row maps 1:1 to a single visual element.
- Adds a `renderRows` useMemo that walks `timelineItems` once and emits
  atomic rows, hoisting session separators out of the Fragment bundle
  that used to pair them with their owning item. This is the shape a
  windowing layer needs: each row measurable and addressable
  independently.
- Extracts a `renderTimelineRow(row)` helper that switches on `row.kind`
  and returns the same JSX the previous inline render produced. Logic
  per kind is identical — keys, memoization, collapse props, pinned
  thought "live" semantics — so there is no visual diff.
- The render body collapses from two blocks (pinned + `.slice().map()`)
  into a single `renderRows.map(renderTimelineRow)` call.

Follow-ups will virtualize `renderRows` with measured row heights and
tighten observer/animation wiring; pagination, collapse state, zebra
striping, and `groupTimelineItems` are untouched.
2026-04-20 00:47:02 +05:00
777genius
1794e5be4e refactor(runtime): finalize codex native-only config contract 2026-04-19 22:44:48 +03:00
777genius
cb62acb4fb fix(team): harden restart and session refresh flows 2026-04-19 22:34:43 +03:00
777genius
5d014b375b fix(runtime): tighten codex native-only phase 4 truth 2026-04-19 22:29:26 +03:00
777genius
1f7dd2100f refactor(runtime): remove legacy codex lanes 2026-04-19 22:22:13 +03:00
Mike
d4f518e8c5 refactor(team): viewport contract + observer root for ActivityTimeline
Second step of the virtualization plan. No virtualization yet. This PR
makes IntersectionObserver-based visibility tracking correct inside
scroll containers (sidebar, bottom-sheet), which is a prerequisite for
virtualizing the timeline.

- Introduces `TimelineViewport` — a grouped contract passed as a single
  `viewport` prop on `ActivityTimeline`. Holds `scrollElementRef`,
  `observerRoot`, `scrollMargin`, and `virtualizationEnabled`.
- `MessageRowWithObserver` and `LeadThoughtsGroupRow` now create their
  `IntersectionObserver` with `root = observerRoot?.current ?? null`
  instead of defaulting to the document viewport. Unread marking now
  fires when rows enter their real scroll parent.
- `MessagesPanel` resolves the active scroll owner from `position`
  (inline from parent ref, sidebar from `sidebarScrollRef`, bottom-sheet
  from `bottomSheetScrollRef`) and passes it into ActivityTimeline.
- Tests: stubs `IntersectionObserver` to capture `options.root` and
  asserts null when no viewport is passed, and the provided element when
  `viewport.observerRoot` is set.

`scrollMargin` and `virtualizationEnabled` are included in the contract
but not consumed yet — they land in follow-up PRs (#4/#5).
2026-04-20 00:17:04 +05:00
777genius
41f0b0d1d1 feat(team): enhance TeamMessageFeedService caching and logging
- Introduced caching mechanism with expiration for message feeds to improve performance.
- Added logging for cache expiration events to aid in debugging.
- Updated MessagesPanel to reopen search bar when participant filters are active.
- Added test cases for handling tmux server errors and message panel behavior with filters.
2026-04-19 22:04:44 +03:00
777genius
83748673af fix(team): dedupe project path options 2026-04-19 21:49:40 +03:00
777genius
e90bdc5b7f feat(runtime): switch codex default to native with hidden fallback 2026-04-19 21:21:29 +03:00
777genius
358496c353 merge: integrate task stall monitor shadow rollout into dev 2026-04-19 21:17:25 +03:00
777genius
a8cca65658 feat(team): add task stall monitor shadow rollout 2026-04-19 21:17:09 +03:00
777genius
52677b55d0 feat(team): enhance team messaging functionality and UI
- Integrated pending replies state management for team members.
- Updated TeamDetailView to initialize pending replies from state.
- Added logic to refresh team messages and member activity on tab focus.
- Improved UI components by increasing dialog content width for better layout.
- Enhanced member draft rows with avatar support for better visual representation.
- Implemented reconciliation logic for pending replies based on message history.
- Updated tests to cover new functionality and ensure reliability.
2026-04-19 20:57:13 +03:00
777genius
b5dfa14868 feat(runtime): enable codex-native limited internal unlock 2026-04-19 20:49:29 +03:00
777genius
1d3d7e1f1f fix(team): harden teammate restart lifecycle 2026-04-19 20:17:41 +03:00
777genius
e83e3cbcc9 test(runtime): cover codex-native phase 1 rollout truth 2026-04-19 20:01:45 +03:00
777genius
92a3124e3f fix(runtime): preserve codex-native lane state truth 2026-04-19 19:46:00 +03:00
777genius
30fce3c64d feat(runtime): surface codex-native internal rollout states 2026-04-19 19:41:36 +03:00
777genius
ba37c1caf5 feat(runtime): add codex-native phase 0 app integration 2026-04-19 19:33:37 +03:00
777genius
481965f1b4 feat(team): add relaunch flow and stabilize edit member colors 2026-04-19 16:46:56 +03:00
777genius
1e2241aead chore: checkpoint workspace before relaunch flow 2026-04-19 16:08:38 +03:00
777genius
fbf299f276 fix(team): update package manager and enhance member color handling
- Bumped pnpm version to 10.33.0 in package.json.
- Added existing members to EditTeamDialog for better context.
- Improved buildMemberDraftColorMap to reserve colors for existing members and predict colors for new drafts.
- Added tests to ensure color assignment logic works correctly for existing and new members.
2026-04-19 11:56:53 +03:00
Илия
b13ab71857
perf(team): precompute ActivityTimeline session anchors once per render Merge pull request #68 from sardorb3k/perf/activity-timeline-session-precompute
perf(team): precompute ActivityTimeline session anchors once per render
2026-04-19 09:16:09 +03:00
777genius
98657f8b5f fix(team): harden retained log cleanup fallback 2026-04-19 09:00:45 +03:00
Mike
4c359d5185 perf(team): precompute ActivityTimeline session anchors once per render
Replace the per-item backward scan that located the most recent session
anchor with a single forward pass via useMemo.

Before: for every timeline item the render loop walked backward until
it found a lead-thought anchor, so N items produced up to N * N anchor
lookups on every render pass.

After: a single O(n) sweep builds previousSessionAnchorByIndex; render
time lookup is O(1). getItemSessionAnchorId is hoisted to module scope
so it is not recreated per render.

Behavior is unchanged. The three existing separator tests still pass,
and four new cases cover three-session transitions, long runs of
non-anchor items between thought groups, consecutive same-session
thoughts, and single-item lists.
2026-04-19 09:00:59 +05:00
777genius
6ff9a28ccc feat(team): enhance Claude logs handling and improve retrieval logic
- Updated `getClaudeLogs` method to support asynchronous fetching of logs.
- Introduced new interfaces for retained logs and transcript cache entries.
- Added logic to retain and retrieve Claude logs even after cleanup of live runs.
- Implemented fallback mechanism to use persisted transcripts when no live run exists.
- Updated tests to cover new log retention and retrieval scenarios.
2026-04-19 01:38:58 +03:00
777genius
c4dba278b0 test(members): small improvements 2026-04-19 01:38:44 +03:00
777genius
d766d174e3 fix(ci): stabilize windows mcp preflight cleanup 2026-04-18 22:49:00 +03:00
777genius
61556a5a77 fix(ci): restore checks and lead model selection 2026-04-18 22:28:53 +03:00
777genius
93a6ae74b0 refactor(activity): reuse markdown rendering in compact previews 2026-04-18 21:57:59 +03:00
777genius
fd0c936244 fix(ui): finalize team activity and kanban polish 2026-04-18 21:40:47 +03:00
777genius
dac7b4f875 Merge remote-tracking branch 'origin/dev' into spike/team-snapshot-split-plan 2026-04-18 21:08:41 +03:00
777genius
2088ddcdaa Merge branch 'dev' of https://github.com/777genius/claude_agent_teams_ui into dev 2026-04-18 21:06:16 +03:00
777genius
d1c33cec64 feat(team): add live task log stream count badge 2026-04-18 21:04:15 +03:00
Илия
dc4efde401
Merge pull request #62 from sardorb3k/fix/team-progress-payload-cap
fix(team): cap renderer IPC payloads to prevent OOM crashes
2026-04-18 20:52:35 +03:00
777genius
82ca8e29c2 chore(merge): sync local dev into spike/team-snapshot-split-plan 2026-04-18 20:26:36 +03:00
Mike
fb474af2a7 refactor(team): narrow PR to progress payload cap only
Remove the SessionDetail.messages stripping and related cache-size
change per maintainer feedback. The session-detail optimization will
follow separately after PR #58 lands with the right architectural
pattern (lightweight snapshot + separate endpoints).

This PR now contains only:
- progressPayload helpers (buildProgressLogsTail, buildProgressAssistantOutput)
- cap applied to emitLogsProgress, updateProgress, stall warning, retry error
- throttle raised 300ms -> 1000ms
- tests for the progress payload behavior
2026-04-18 22:19:09 +05:00
777genius
372d744879 refactor(team): store runtime identity structurally 2026-04-18 20:14:49 +03:00
777genius
571b7fb0f5 feat(team): add member runtime diagnostics and restart controls 2026-04-18 19:17:58 +03:00
777genius
c25097a781 fix(sidebar): soften unread task highlight 2026-04-18 18:32:40 +03:00
777genius
452948b260 fix(team): refine bootstrap and provider diagnostics 2026-04-18 18:32:21 +03:00
777genius
fb3d1ceb27 fix(agent-graph): stabilize drag and pan interactions 2026-04-18 18:32:04 +03:00
777genius
2fd06fcd48 Merge branch 'dev' into spike/team-snapshot-split-plan 2026-04-18 18:21:25 +03:00
777genius
b7547e5d87 feat(team): expand task and member execution logs 2026-04-18 18:13:37 +03:00
777genius
2e062e4432 fix(agent-graph): route lead tasks and tighten lead spacing 2026-04-18 17:28:27 +03:00
777genius
ad8cddabcd feat(agent-graph): center transient handoff cards 2026-04-18 17:13:57 +03:00
777genius
cb603aaf37 fix(activity): make new session boundaries exact 2026-04-18 16:58:44 +03:00
Mike
297bd8f533 fix(team): cap renderer IPC payloads to prevent OOM crashes
Users with long-running teams (37+ tasks, 10+ agents for an hour) were
hitting constant renderer crashes (issue #36). Two hot paths were
serializing unbounded histories across IPC on every tick:

- Provisioning progress: emitLogsProgress and updateProgress both
  joined the full provisioningOutputParts array (~20 event-driven call
  sites) plus the full CLI log tail, then fanned that out to the
  renderer. After an hour, each tick shipped multi-megabyte payloads
  and Zustand OOM'd on the immutable state clone.

- Session detail cache: SessionDetail.messages (the raw parsed JSONL)
  was being cached and returned over IPC/HTTP even though the renderer
  only reads session/chunks/processes/metrics. This roughly doubled
  the per-entry cache footprint on large sessions.

Fixes:

- Add progressPayload helpers that cap the log tail to 200 lines and
  assistant output to the last 20 parts; empty/whitespace joins
  collapse to undefined so the noop guard is explicit rather than
  coincidental.

- Apply the cap inside emitLogsProgress, updateProgress, and the two
  inline emission paths (stall warning, retry error). Throttle the
  log-progress tick 300ms -> 1000ms so Zustand can keep up.

- Add stripSessionDetailMessages and call it at every SessionDetail
  production site that crosses IPC/HTTP (both sessions.ts routes,
  both cache stores).

- Raise MAX_CACHE_SESSIONS 5 -> 20 now that the per-entry SessionDetail
  footprint is bounded. Previously 5 forced constant re-parsing on
  every session switch.

Tests: 15 new unit tests covering the helpers (tail slicing, empty
parts, whitespace-only parts, non-mutation of inputs).
2026-04-18 17:44:39 +05:00
777genius
bff5f43da9 Merge branch 'dev' into spike/team-snapshot-split-plan 2026-04-18 15:03:02 +03:00
777genius
0a1831bc5e fix(team): validate agent-teams MCP via direct stdio preflight 2026-04-18 15:00:47 +03:00
777genius
ce60831758 Merge branch 'dev' into spike/team-snapshot-split-plan
# Conflicts:
#	src/renderer/components/sidebar/GlobalTaskList.tsx
#	src/renderer/components/team/members/MemberMessagesTab.tsx
#	src/renderer/components/team/messages/MessagesPanel.tsx
#	test/main/services/team/BoardTaskLogStreamIntegration.test.ts
2026-04-18 14:23:18 +03:00
777genius
5a7d5ea310 test(team): add real-jsonl coverage for task log fallback 2026-04-18 14:13:15 +03:00
777genius
39be3bce75 fix(team): restore task log fallback and block launch auto-assignment 2026-04-18 14:13:15 +03:00
777genius
52d45f87c1 feat(sidebar): improve project task grouping 2026-04-18 14:13:15 +03:00
777genius
9675f9b331 fix(recent-projects): show active projects during provisioning 2026-04-18 14:11:17 +03:00
777genius
4f97e9d2d8 Merge branch 'dev' of https://github.com/777genius/claude_agent_teams_ui into spike/team-snapshot-split-plan 2026-04-18 13:55:59 +03:00
Илия
d293ff4802
fix: unify context usage metrics
Merge pull request #61 from 777genius/research/context-usage-audit
2026-04-18 13:54:56 +03:00
777genius
f22373d4a9 Merge branch 'dev' into spike/team-snapshot-split-plan 2026-04-18 13:13:07 +03:00
777genius
82566162fc fix(team): restore task log fallback and block launch auto-assignment 2026-04-18 13:11:13 +03:00
777genius
416c4acf04 feat(sidebar): improve project task grouping 2026-04-18 13:09:51 +03:00
777genius
4178645e2c Merge remote-tracking branch 'origin/dev' into spike/team-snapshot-split-plan 2026-04-18 12:45:16 +03:00
777genius
cca644a1d2 fix(team): restore anthropic opus 4.6 option 2026-04-18 12:42:25 +03:00
777genius
e1a85786e7 fix(ci): resolve branch lint errors 2026-04-18 12:32:44 +03:00
777genius
42850e5e97 Merge remote-tracking branch 'origin/dev' into spike/team-snapshot-split-plan 2026-04-18 12:29:28 +03:00
777genius
f536e7e715 fix(ci): restore workspace validation 2026-04-18 12:20:37 +03:00
777genius
bfc6a38668 fix(context): unify context usage metrics 2026-04-18 12:10:51 +03:00
777genius
1a04b49d24 fix(team): support anthropic opus 4.7 team models 2026-04-18 12:09:26 +03:00
777genius
0eb38387a3 fix(extensions): finalize stash merge reconciliation 2026-04-18 11:44:55 +03:00
777genius
51376e2620 chore(merge): sync dev into spike/team-snapshot-split-plan 2026-04-18 11:32:29 +03:00
777genius
78c6824d69 feat(team): merge live lead messages and repair transcript resolution 2026-04-18 11:02:21 +03:00
SardorBek Sattarov
a42ab3096f
feat(team): auto-resume rate-limited teams when the limit resets 2026-04-18 10:21:23 +03:00
777genius
da9cb93e93 test(ci): stabilize file watcher first-read timing 2026-04-17 23:12:01 +03:00
777genius
351244ffdb fix(team): harden refresh races and loading state 2026-04-17 23:03:58 +03:00
777genius
94f41ed5a5 test(ci): normalize extension path mocks on windows 2026-04-17 22:59:10 +03:00
777genius
18d9f2b4a4 fix(ci): restore workspace checks 2026-04-17 22:45:19 +03:00
777genius
79050cc318 fix(extensions): tone down script-only skill advisories 2026-04-17 21:32:04 +03:00
777genius
0648509a82 fix(extensions): keep provider placeholders during bootstrap 2026-04-17 21:17:47 +03:00
777genius
6f4fd254cf fix(extensions): show provider loading placeholders 2026-04-17 21:10:26 +03:00
777genius
14ee2fc550 fix(extensions): reset stale codex skill filters 2026-04-17 21:07:11 +03:00
777genius
b0c4319ba3 fix(extensions): wait for runtime hydration before mcp diagnostics 2026-04-17 21:05:27 +03:00
777genius
f8c11af5b9 fix(extensions): harden mcp diagnostics runtime guards 2026-04-17 21:03:12 +03:00
777genius
19c6144ef5 fix(extensions): keep skills banner provider-aware 2026-04-17 20:57:59 +03:00
777genius
4775d4bc45 fix(extensions): use runtime-aware detail copy 2026-04-17 20:55:22 +03:00
777genius
767dfde4cb fix(extensions): use provider-aware runtime copy 2026-04-17 20:51:25 +03:00
777genius
0287f83274 fix(extensions): avoid misleading mcp diagnostics command copy 2026-04-17 20:30:09 +03:00
777genius
e2c5c8e99b fix(extensions): avoid success banner when no visible providers remain 2026-04-17 20:28:35 +03:00
777genius
7c21d14bdf fix(extensions): keep dashboard banner provider-aware 2026-04-17 20:26:44 +03:00
777genius
1ee139b66a fix(extensions): keep extensions entry points available before auth 2026-04-17 20:24:45 +03:00
777genius
7b16cfe73b fix(extensions): treat multimodel flavor as runtime-aware before hydration 2026-04-17 20:22:29 +03:00
777genius
3446ef0100 fix(extensions): harden hidden provider runtime handling 2026-04-17 20:20:27 +03:00
777genius
12f6f90701 fix(extensions): hide runtime-injected mcp diagnostics 2026-04-17 20:07:35 +03:00
777genius
88ac0acdf8 fix(extensions): preserve mcp dialog state on runtime hydration 2026-04-17 15:06:36 +03:00
777genius
1b1c27e9c6 fix(extensions): preserve api key writes on refresh failures 2026-04-17 15:03:34 +03:00
777genius
8075ed10e7 fix(extensions): enforce runtime capability guards for mcp writes 2026-04-17 14:58:09 +03:00
777genius
14a38212c2 fix(extensions): gate codex skill overlays by runtime 2026-04-17 14:51:58 +03:00
777genius
8423656b97 fix(extensions): use safe legacy multimodel capability fallback 2026-04-17 14:46:43 +03:00
777genius
5007f3eebb fix(extensions): scope mcp api key autofill by install target 2026-04-17 14:44:05 +03:00
777genius
24782411f3 fix(extensions): scope plugin operation state by project 2026-04-17 14:39:26 +03:00
777genius
33917a3161 fix(extensions): support project-scoped api keys 2026-04-17 14:34:46 +03:00
777genius
489e3eb967 fix(extensions): scope mcp renderer state by project 2026-04-17 14:28:25 +03:00
777genius
81c59440bf fix(extensions): harden mcp diagnostics output 2026-04-17 14:21:17 +03:00
777genius
22209ba958 feat(extensions): support multimodel global mcp scope 2026-04-17 13:23:30 +03:00
777genius
e01858ac98 feat(extensions): add codex-only skills overlays 2026-04-17 13:09:30 +03:00
777genius
b3427a64ab feat(extensions): surface provider-aware capabilities in UI 2026-04-17 10:08:33 +03:00
777genius
096437b2fd feat(extensions): add provider-aware runtime adapters 2026-04-17 10:08:13 +03:00
777genius
a5c79518fb fix(ci): repair validate and windows checks 2026-04-17 09:12:49 +03:00
777genius
f92b77e3af chore(merge): sync dev into team snapshot split spike 2026-04-17 08:54:27 +03:00
777genius
aedca570e1 fix(test): make plugin installation state test cross-platform 2026-04-17 08:36:26 +03:00
777genius
1de59cb84f fix(extensions): validate skill import source paths locally 2026-04-16 23:18:02 +03:00
777genius
2cc7dc5178 fix(extensions): validate skill folder names before review 2026-04-16 23:15:09 +03:00
777genius
1d2e33f5d9 fix(extensions): preserve skill detail refresh context 2026-04-16 23:13:22 +03:00
777genius
2201b54f28 fix(extensions): reset stale skill review state on close 2026-04-16 23:11:13 +03:00
777genius
2142518461 fix(extensions): avoid premature skill import folder defaults 2026-04-16 23:09:15 +03:00
777genius
86bc4ce4e8 fix(extensions): sanitize suggested skill folder names 2026-04-16 23:08:00 +03:00
777genius
4578f11dd7 fix(extensions): unlock structured skill editing after reset 2026-04-16 23:06:05 +03:00
777genius
3e5ec7c173 fix(extensions): preserve skill project context in dialogs 2026-04-16 23:03:55 +03:00
777genius
c02a12b3f6 fix(extensions): keep skill import destination in sync 2026-04-16 23:01:33 +03:00
777genius
66cf1443b2 fix(extensions): scope mcp operation state by install scope 2026-04-16 22:57:22 +03:00
777genius
bb60bbb0ec fix(ci): restore workspace validation 2026-04-16 22:52:56 +03:00
777genius
94291f50f0 fix(extensions): require project context for local mcp scope 2026-04-16 22:51:05 +03:00
777genius
a3c5b7dca9 fix(extensions): honor local mcp scope precedence 2026-04-16 22:48:43 +03:00
777genius
7418643dc9 fix(extensions): make mcp scope actions scope-aware 2026-04-16 22:45:34 +03:00
777genius
be8f4f45d2 fix(extensions): scope mcp installed cache by project 2026-04-16 22:41:10 +03:00
777genius
0420428281 fix(extensions): support project-scoped mcp installs 2026-04-16 22:39:03 +03:00
777genius
3f03bc720a fix(extensions): dedupe MCP detail API key lookups 2026-04-16 22:32:47 +03:00
777genius
0d6276ea0b fix(extensions): honor installed MCP targets in manage actions 2026-04-16 22:31:56 +03:00
777genius
acabe52ae7 fix(extensions): stop MCP browse auto-retries after errors 2026-04-16 22:28:08 +03:00
777genius
113f9105fb fix(extensions): ignore stale MCP search responses 2026-04-16 22:26:03 +03:00
777genius
495d8514c1 fix(extensions): clear detail selections on sub-tab switch 2026-04-16 22:23:46 +03:00
777genius
0d19e5174f fix(extensions): use tab project context for plugin actions 2026-04-16 22:22:05 +03:00
777genius
743dbec36d fix(extensions): surface cli healthcheck failures in action tooltips 2026-04-16 22:17:41 +03:00
777genius
57f546bab0 fix(extensions): scope plugin operation state by install scope 2026-04-16 22:16:38 +03:00
777genius
d8672c32f6 fix(team): suppress replayed member spawn inbox churn 2026-04-16 22:15:49 +03:00
777genius
821e23e633 Merge branch 'dev' into spike/team-snapshot-split-plan 2026-04-16 22:11:16 +03:00
777genius
4502152427 fix(extensions): support local plugin scope actions 2026-04-16 22:09:52 +03:00
777genius
2b8062dfa3 fix(extensions): cancel stale plugin success timers 2026-04-16 22:07:22 +03:00
777genius
560174d98c fix(extensions): reset stale plugin action state on project switch 2026-04-16 22:05:28 +03:00
777genius
09b5b4626f fix(extensions): tighten plugin catalog fallback state 2026-04-16 22:04:02 +03:00
777genius
afad52f506 fix(extensions): prevent stale plugin catalog races 2026-04-16 22:01:59 +03:00
777genius
6e875e5a40 fix(extensions): harden plugin action states 2026-04-16 21:59:23 +03:00
777genius
847643828d fix(extensions): make plugin actions scope-aware 2026-04-16 21:56:12 +03:00
777genius
f2c5d52bdc fix(extensions): scope plugin install state to active project 2026-04-16 21:55:50 +03:00
777genius
57ba5b57b5 fix(agent-graph): harden pan and launch stepper visibility 2026-04-16 21:26:56 +03:00
777genius
58644b24c6 fix(agent-graph): harden pan and launch stepper visibility 2026-04-16 21:26:15 +03:00
777genius
82a0e3e6bb Merge branch 'dev' into spike/team-snapshot-split-plan 2026-04-16 21:03:13 +03:00
777genius
ece2991f96 feat(team): enhance team provisioning with runtime model handling
- Added support for live runtime model metadata in team provisioning.
- Implemented functions to extract and manage CLI flag values for team members.
- Updated member specifications to include effective models based on provider defaults.
- Enhanced UI dialogs to check selected providers in parallel, improving responsiveness.
- Added tests for handling model unavailability during team bootstrap and launch processes.
2026-04-16 21:02:33 +03:00
777genius
53c4204d89 fix(agent-graph): add launch status labels and pan guards 2026-04-16 20:58:40 +03:00
777genius
47eb461730 fix(types): resolve post-merge regressions 2026-04-16 19:45:31 +03:00
777genius
6cf0c0d65e chore(merge): sync dev into team snapshot split spike 2026-04-16 19:44:01 +03:00
777genius
ac1c99ac1f feat(cliInstaller): add model verification for providers
- Introduced CLI_INSTALLER_VERIFY_PROVIDER_MODELS IPC channel for on-demand model verification.
- Implemented handler for verifying provider models in the CliInstallerService.
- Enhanced CLI installation status management with model verification state and availability.
- Updated related components to support model verification feedback in the UI.
2026-04-16 19:41:23 +03:00
777genius
0b97cc0794 fix(agent-graph): stabilize startup slots and launch hud 2026-04-16 14:57:42 +03:00
777genius
19463edfc9 fix(agent-graph): center launch stepper hud 2026-04-16 13:40:21 +03:00
777genius
fd76944141 chore(merge): sync dev into team snapshot split spike 2026-04-16 13:19:20 +03:00
777genius
345fd3e41d fix(recent-projects): recover codex projects after degraded startup 2026-04-16 13:17:07 +03:00
777genius
9437220133 fix(recent-projects): recover codex projects after degraded startup 2026-04-16 13:16:28 +03:00
777genius
4630442149 fix(agent-graph): stabilize slot layout interactions 2026-04-16 13:05:16 +03:00
777genius
c303a236a5 feat(agent-graph): unify lead slot layout defaults 2026-04-16 11:26:30 +03:00
777genius
d81a45f15b fix(agent-graph): use directional central exclusion 2026-04-16 10:53:52 +03:00
777genius
77d3e9f7d8 fix(agent-graph): stabilize member slot layout 2026-04-15 22:40:15 +03:00
777genius
1173a4942a refactor(team): split team detail snapshot from messages activity 2026-04-15 21:54:38 +03:00
777genius
2cfbfef3b3 fix(team): recover root member session logs 2026-04-15 17:39:11 +03:00
777genius
8398d29fc0 fix(team): recover root member session logs 2026-04-15 17:38:21 +03:00
777genius
03dda6b486 refactor(agent-graph): replace store usage with context hooks for team data retrieval
- Updated components in the agent-graph renderer to utilize context hooks instead of the store for accessing team data.
- Introduced `useGraphActivityContext` and `useGraphMemberPopoverContext` hooks to streamline data management.
- Refactored `GraphBlockingEdgePopover`, `GraphNodePopover`, and `GraphTaskCard` components for improved performance and readability.
- Enhanced imports in `MemberDetailDialog` for better organization.
2026-04-15 16:42:05 +03:00
777genius
aed08113e6 feat(agent-graph): integrate stable slot layout for improved node positioning and interaction
- Added stable slot layout support in various components, enhancing the layout and interaction of nodes.
- Updated TypeScript configuration to include new paths for the agent-graph package.
- Refactored layout logic in activity lanes and kanban to accommodate stable slot assignments.
- Enhanced GraphView and GraphControls to support sidebar visibility toggling and owner slot drop handling.
- Introduced new types for layout management in GraphDataPort and related files.
- Updated README to include stable slot layout documentation.
2026-04-15 16:18:11 +03:00
777genius
363fef224d fix: allow slower codex app-server initialization 2026-04-15 13:24:04 +03:00
777genius
af1caf90e8 Merge branch 'worktree/tmux-hybrid-installer-plan' into dev
# Conflicts:
#	docs/FEATURE_ARCHITECTURE_STANDARD.md
#	eslint.config.js
#	src/preload/index.ts
#	src/renderer/api/httpClient.ts
#	src/renderer/components/dashboard/TmuxStatusBanner.tsx
#	tsconfig.node.json
2026-04-14 22:11:41 +03:00
777genius
e5d85ec873 Merge branch 'dev' of https://github.com/777genius/claude_agent_teams_ui into dev 2026-04-14 22:07:15 +03:00
777genius
90b637c6d8 refactor: update README and security documentation; enhance activity lane layout and kanban integration 2026-04-14 22:06:50 +03:00
777genius
688752b3f5 fix: quiet archived codex recent project timeout 2026-04-14 21:43:38 +03:00
777genius
c3f18df062 fix: harden recent project recovery and path matching 2026-04-14 21:39:16 +03:00
777genius
68378c603c feat: prioritize recent projects by explicit opens 2026-04-14 20:58:54 +03:00
777genius
1932ddcbe2 fix: harden codex recent project time budgets 2026-04-14 20:36:58 +03:00
777genius
a9668ff15d test(tmux): strengthen macos host e2e smoke 2026-04-14 20:16:54 +03:00
777genius
cf5014a676 test(tmux): add macos host e2e coverage 2026-04-14 20:10:22 +03:00
777genius
ef44542f1d feat(tmux): add hybrid installer flow 2026-04-14 20:07:57 +03:00
777genius
58c21f3d24 fix: keep recent projects visible during refresh 2026-04-14 18:39:34 +03:00
Diego Serrano
080e0af55a
fix(team): resolve stuck "reconciling" state and skip resume when teammates never spawned (#55)
* fix(team): resolve stuck "reconciling" state and skip resume when teammates never spawned

Addresses #54.

When a team launch fails to bootstrap teammates, the team gets stuck showing
"Last launch is still reconciling" indefinitely, and retrying with --resume
reconnects the lead but does not re-spawn the dead teammates. The only
workaround was enabling "Clear context (fresh session)", which loses the
lead's prior conversation context.

Two root causes addressed:

1. createPersistedLaunchSnapshot counted members still in 'starting' state
   (agentToolAccepted=false) as 'pending' regardless of launchPhase. When
   launchPhase was 'finished' with never-spawned members, the aggregate
   state stayed as 'partial_pending' forever, rendered as "still reconciling".
   Fix: when launchPhase != 'active', promote such members to
   'failed_to_start' so the aggregate becomes 'partial_failure'
   ("Launch failed partway"), which correctly signals a terminal state.

2. TeamProvisioningService._launchTeamInner always used --resume when a
   previous leadSessionId existed, even if the previous launch had no
   teammates successfully spawned. The CLI's deterministic reconnect path
   restores lead context but does not re-spawn dead teammates, so the team
   stays broken across relaunches. Fix: before adding --resume, read the
   persisted launch state. If every expected teammate is 'starting' (never
   spawned) or 'failed_to_start', skip --resume so the CLI performs a full
   fresh bootstrap that spawns all teammates.

Verified manually on Linux: a team stuck in "still reconciling" correctly
transitions to "failed partway" after the first fix, and the next Launch
(without "Clear context") fully bootstraps and brings teammates online.

* fix(team): narrow skip resume to never-spawned teammates

---------

Co-authored-by: 777genius <quantjumppro@gmail.com>
2026-04-14 18:31:09 +03:00
777genius
43f2426a9b fix: sync team project filters with app selection 2026-04-14 18:10:09 +03:00
777genius
487dcabff5 fix: harden recent project and sidebar selection state 2026-04-14 17:54:23 +03:00
777genius
d8fce1b3a3 fix: reduce codex recent project timeouts 2026-04-14 17:39:39 +03:00
777genius
9fe3343038 fix: hide empty member message pagination 2026-04-14 17:25:58 +03:00
777genius
0dfd2fc610 fix: sync session project selector state 2026-04-14 16:58:00 +03:00
Илия
8b53f63e97 fix(team): preserve provider model ids and codex slash suggestions 2026-04-14 16:40:50 +03:00
Diego Serrano
15b2b655ea feat(chat): show project and user skills as slash command suggestions 2026-04-14 16:38:12 +03:00
Diego Serrano
43ae8ae6bc fix(extensions): resolve project path from both projects and repositoryGroups 2026-04-14 16:38:12 +03:00
777genius
c8f9d9bbdd refactor: migrate agent graph to feature slice 2026-04-14 16:24:09 +03:00
777genius
e99691ad3d Merge branch 'feat/codex-recent-projects' into dev 2026-04-14 16:07:18 +03:00
777genius
fad89e71da feat: add dashboard recent projects feature slice 2026-04-14 16:07:04 +03:00
Илия
f819dd0c27
fix(team): preserve provider model ids and codex slash suggestions 2026-04-14 14:56:29 +03:00
Diego Serrano
5375eea19f
feat(chat): show project and user skills as slash command suggestions 2026-04-14 14:37:27 +03:00
Diego Serrano
7d98956dad
fix(extensions): resolve project path from both projects and repositoryGroups 2026-04-14 14:37:04 +03:00
Diego Serrano
bda2e160f7
fix(team): prevent double [1m] suffix on model string during re-launch 2026-04-14 14:35:59 +03:00
777genius
cc91290730 test(task-logs): align stream tool call count 2026-04-13 20:59:24 +03:00
777genius
a0c8db4771 feat(graph-controls): integrate tooltip support, refine button styles, and enhance task creation functionality 2026-04-13 20:51:45 +03:00
777genius
ce0eb75429 feat(session-search): add search functionality and provider filtering to DateGroupedSessions component; enhance task activity detail rendering logic 2026-04-13 20:00:18 +03:00
777genius
804e92419f feat(activity-detail): implement task activity detail retrieval and UI integration 2026-04-13 19:19:52 +03:00
777genius
5b1f369950 chore: merge origin/dev into dev 2026-04-13 18:43:00 +03:00
777genius
07682eca37 feat(graph-controls): add team page and task creation buttons, improve toolbar button styles 2026-04-13 18:36:44 +03:00
777genius
36d499001d test(ci): stabilize stale summary invalidation race 2026-04-13 17:19:07 +03:00
777genius
dd4ce7e9b1 fix(ci): merge dev and restore green checks 2026-04-13 17:14:22 +03:00
777genius
a0d87872e7 fix(ci): restore PR #44 checks 2026-04-13 17:00:49 +03:00
777genius
6fbf8518dc feat(member-details): enhance member detail dialog with activity filtering and initial tab state 2026-04-13 17:00:20 +03:00
777genius
5b328a0f8a improvement: alot small improvements and fixes 2026-04-13 16:20:57 +03:00
777genius
7d47cbaded feat(agent-graph): enhance team graph 2026-04-13 16:18:14 +03:00
777genius
e5d6911025 test(task-logs): align stream sanitization expectations 2026-04-13 07:58:24 +03:00
777genius
92dd9318a5 feat(messages): merge bottom sheet panel mode 2026-04-12 22:20:55 +03:00
777genius
cc45549716 feat(messages): add bottom sheet panel mode 2026-04-12 22:17:18 +03:00
777genius
9ca8055695 chore(workspace): checkpoint remaining claude team changes 2026-04-12 22:15:57 +03:00
777genius
32cea2a927 feat(task-logs): add board task activity and task log stream 2026-04-12 22:13:43 +03:00
777genius
57c384531a feat(agent-graph): improve blocking visibility and inspection 2026-04-12 21:31:53 +03:00
777genius
f74b7a3701 fix(agent-graph): keep graph state consistent across panes 2026-04-12 20:15:52 +03:00
777genius
02d516cb4e fix: harden provider-aware cli env handling 2026-04-12 13:18:49 +03:00
777genius
69489912f4 test(team): use platform path delimiter in resolver tests 2026-04-12 00:16:37 +03:00
777genius
067f8266d3 test(runtime): normalize cross-platform path fixtures 2026-04-12 00:12:42 +03:00
777genius
08b7e53e77 test(team): stabilize mcp builder workspace entry checks 2026-04-12 00:07:31 +03:00
777genius
fb21b982c6 fix(ci): restore green workspace checks 2026-04-12 00:02:59 +03:00
777genius
4869bb35da feat(agent-teams): harden dev bootstrap and task tooling 2026-04-11 21:57:59 +03:00
777genius
01e9e8350e feat(frontend): improve runtime connection and team setup ux 2026-04-11 19:55:25 +03:00
777genius
f1a8a343d4 feat(chat): render task notifications as cards 2026-04-11 10:05:20 +03:00
777genius
f97d9c6e2c fix(standalone): respect CLAUDE_ROOT for config path 2026-04-11 09:07:31 +03:00
777genius
92dbae84ec fix(scanner): preserve message count in light metadata 2026-04-11 09:07:25 +03:00
777genius
35970000b6 feat(multimodel): unify provider catalog and branding 2026-04-10 22:36:32 +03:00
777genius
53bcea337f merge(main): integrate origin/main into spike/free-code-compat 2026-04-10 17:25:51 +03:00
777genius
3e74b11b23 feat(team): refine launch and cli status flows 2026-04-10 16:45:00 +03:00
iliya
0dd4746700 fix(team-ui): clarify launch progress and retry states 2026-04-10 12:28:52 +03:00
iliya
a03c22aace feat(team-ui): freeze unstable provider and model options 2026-04-10 12:28:22 +03:00
iliya
433bdf8bbc feat(agent-graph): show teammate runtime labels 2026-04-09 21:16:49 +03:00
iliya
21e9fb8c90 feat(team-ui): clarify launch and retry member states 2026-04-09 21:16:24 +03:00
iliya
32ec3a6123 fix(team-data): dedupe passive user reply summaries 2026-04-09 21:15:50 +03:00
iliya
17bd573ce3 fix(team-runtime): harden refresh flows and reduce ui churn 2026-04-09 16:34:55 +03:00
iliya
535178a076 fix(renderer): reduce team detail refresh churn 2026-04-09 15:28:35 +03:00
iliya
bf6370556d perf(team): parallelize getTeamData read phase 2026-04-08 18:31:16 +03:00
iliya
2624ada4a2 fix(team): add durable roster context to lead direct messages 2026-04-08 17:51:02 +03:00
iliya
78d4c2826b fix(team): align idle inbox semantics across app 2026-04-08 17:45:09 +03:00
iliya
2c9926c734 perf(team): cache lead session parsing 2026-04-08 16:55:01 +03:00
iliya
a6ad3386e0 fix(team): stop task comment acknowledgement loops 2026-04-07 13:50:37 +03:00
iliya
49e46da563 fix(team): allow agent only in do mode for leads 2026-04-07 13:25:25 +03:00
iliya
bbb653d3d4 fix(team): clarify cross-provider model labels 2026-04-07 13:03:58 +03:00
iliya
7f737f985b fix(team): surface provider retries in reply UI 2026-04-07 12:42:37 +03:00
iliya
8ebde439a8 fix(team): treat online teammates as ready state 2026-04-07 12:29:21 +03:00
iliya
3b0fe0bcbf fix(team): stop counting inbox noise as check-ins 2026-04-07 10:48:59 +03:00
iliya
c20fc1a312 feat(team): clarify teammate check-ins and retry state 2026-04-07 10:28:00 +03:00
iliya
233e01847c fix(team): harden bootstrap state reads 2026-04-07 02:04:28 +03:00
iliya
ad56f0e337 fix(team): ignore replayed bootstrap progress events 2026-04-07 01:49:37 +03:00
iliya
ac3475d3be fix(team): support runtime bootstrap prompt sanitizing 2026-04-07 01:33:04 +03:00
iliya
c92bf3a6a5 feat(team): improve degraded bootstrap recovery 2026-04-07 00:49:30 +03:00
iliya
d484f1d62d fix(team): surface unreadable bootstrap journal warnings 2026-04-07 00:46:05 +03:00
iliya
8ef89eefce feat(team): add bootstrap recovery and app integration 2026-04-07 00:43:38 +03:00
iliya
dc0627c285 fix message pagination consumers 2026-04-05 21:54:52 +03:00
Artem Rootman
8570ed13fd
fix: stabilize flaky ChangeExtractorService invalidation test
The test races stale and fresh worker calls to verify that invalidation
prevents stale results from populating the cache. On slow CI, the
fresh worker mock could be reached before the stale deferred was
resolved, causing the version guard to mismatch.

Flush microtasks after starting freshPromise so it advances past
internal awaits and reaches the worker mock before we resolve the
stale deferred.
2026-04-05 18:25:43 +00:00
Artem Rootman
5efc3dd63f
fix: pagination correctness and message enrichment
P1: Poller no longer overwrites nextCursor/hasMore — those belong
to the "Load older" flow. Both poller and loadOlder now dedup
messages by messageId or timestamp+from fingerprint.

P1: Cursor is now compound (timestamp|messageId) with stable
tie-breaking sort. Messages sharing the same timestamp at page
boundaries are no longer lost.

P2: getMessagesPage now applies the same enrichment as getTeamData:
leadSessionId propagation and slash-command-result annotation.

P3: Added 3 tests for getMessagesPage covering pagination, cursor
stability with same-timestamp messages, and slash command annotation.
2026-04-05 18:18:03 +00:00
iliya
0e1381ce37 test: seed cli status in extensions install tests 2026-04-05 20:16:25 +03:00
iliya
a591ccf297 Stabilize team provisioning and runtime diagnostics 2026-04-04 20:04:16 +03:00
iliya
074b614469 feat: improve team launch model and status UX 2026-04-02 15:15:32 +03:00
iliya
759cae2669 fix(pricing): include codex and gemini model costs 2026-04-02 10:23:57 +03:00
iliya
3ac46e2861 feat(teams): unify provider-aware create and launch flows 2026-04-02 10:23:14 +03:00
iliya
bae3609561 feat(multimodel): add free-code runtime and provider status UI 2026-04-02 10:22:11 +03:00
iliya
16f069fae3 feat(graph): enhance task rendering and interaction features
- Updated task opacity logic to simplify conditions.
- Added comment count and unread count badges to task pills for better visibility.
- Improved layout for unassigned tasks, including a section header and overflow badge.
- Enhanced task interaction by restricting drag functionality to member and lead nodes only.
- Introduced new task action event listeners for better task management in the UI.
- Preserved known task change presence across refreshes to maintain state consistency.
2026-03-31 01:29:59 +03:00
iliya
d923661127 fix(tests): update test expectations to match current implementation
- Add missing AGENT_TEAMS_NAMESPACED_TEAMMATE_OPERATIONAL_TOOL_NAMES to
  agent-teams-controller mocks in provisioning tests
- Fix ChangeExtractorService test: pass createdAt to match actual signature
- Fix TeamGraphAdapter particle label expectations (max=52 truncation)
2026-03-31 01:08:43 +03:00
iliya
92968b45ad refactor(graph): simplify comment particle rendering with dedicated bubble function
- Replaced inline drawing logic for task comments with a new `drawCommentBubble` function to enhance readability and maintainability.
- The new function encapsulates the drawing of a speech-bubble icon, including the rounded rectangle body, tail, and inner dots to suggest text.
2026-03-30 20:02:05 +03:00
iliya
53dd857e0f Merge branch 'dev' of https://github.com/777genius/claude_agent_teams_ui into dev 2026-03-30 18:59:42 +03:00
iliya
822bbac23c feat(agent-teams): integrate MCP tool catalog and enhance tool registration
- Added mcpToolCatalog to the agent-teams-controller, exporting new types and constants for MCP tool groups and names.
- Updated tools registration to utilize AGENT_TEAMS_MCP_TOOL_GROUPS for streamlined tool management.
- Enhanced tests to validate the new operational permissions and ensure correct tool registration behavior.
2026-03-30 17:58:17 +03:00
iliya
1f28ee5021 fix(ci): stabilize provisioning test and clear lint errors 2026-03-30 16:45:14 +03:00
iliya
f08885d58f fix(updater): prevent installation of non-newer versions and enhance update notifications
- Added checks to ensure that only newer versions are installed during the update process.
- Updated the notification logic to suppress alerts for non-newer updates.
- Introduced a new method to compare version numbers, improving version management in the UpdaterService.
- Enhanced the release workflow by removing unnecessary file uploads and adding canonical updater metadata publishing for better asset management.
2026-03-30 15:24:23 +03:00
iliya
c91a886d49 fix(ci): resolve no-selector-parameter lint error in TeamLogSourceTracker
Split setTracking(enabled) into separate enableTracking/disableTracking
public methods per sonarjs/no-selector-parameter rule. Update all callers
and test mocks accordingly.
2026-03-29 12:59:52 +03:00
iliya
388a24d715 fix(ci): resolve regex complexity lint error and Windows path test failure
- Simplify LAUNCH_RE by pre-stripping optional (resume) prefix to bring
  regex complexity from 23 to within the allowed 20
- Use RegExp.exec() instead of String.match() per lint rules
- Use path.normalize() in BranchStatusService tests for cross-platform
  compatibility (fixes \repo vs /repo on Windows)
2026-03-29 12:40:16 +03:00
iliya
16238276fb refactor(team): update tracking logic and enhance test coverage
- Replaced `ensureTracking` and `stopTracking` with a single `setTracking` function in `TeamDataService` to streamline task change presence tracking.
- Updated related tests to reflect the new tracking logic and ensure proper function calls.
- Added `activeToolCalls` property to various service interfaces to improve state management during provisioning operations.
2026-03-29 02:01:07 +02:00
iliya
93f160d731 fix(team): ensure MCP config cleanup on spawn failures
- Added logic to remove generated MCP config files when team creation or launch fails due to spawn errors.
- Updated tests to verify that MCP config files are correctly removed in failure scenarios, ensuring no leftover configurations persist.
- Enhanced error handling in the TeamProvisioningService to maintain clean state during provisioning operations.
2026-03-29 01:53:16 +02:00
iliya
e1f0d61dc5 Merge branch 'worktree-fix+mcp-config-storage' into dev 2026-03-29 01:30:01 +02:00
iliya
1ce6ace8b8 fix(team): move MCP config storage from /tmp to userData
MCP config files were stored in os.tmpdir() with no cleanup, and
the MCP server ran from the AppImage FUSE mount path which could
be inaccessible to Claude CLI subprocesses on Linux (fixes #31).

Changes:
- Store MCP configs in app.getPath('userData')/mcp-configs/ with
  pid+timestamp filenames for safe multi-instance operation
- Copy MCP server to userData/mcp-server/<version>/ via atomic
  temp-dir + rename (eliminates FUSE mount dependency)
- Add per-run cleanup in cleanupRun(), startup stale GC (7d TTL),
  and shutdown own-pid GC
- Add --mcp-config recovery in respawnAfterAuthFailure()
- Add setAppDataBasePath(null) reset for test isolation
2026-03-29 01:29:48 +02:00
iliya
7ea8289c5b feat(team): add support for task comment notifications
- Introduced 'task_comment_notification' message kind to enhance message handling in the team services.
- Updated TeamDataService, TeamInboxReader, and TeamSentMessagesStore to accommodate the new message kind.
- Modified filtering logic to exclude task comment notifications from the displayed messages.
- Added tests to ensure correct handling and filtering of task comment notifications.
2026-03-29 01:29:13 +02:00
iliya
46355d87df refactor(session): improve session label formatting and enhance session item display
- Replaced direct access to session.firstMessage with formatSessionLabel for consistent label formatting across components.
- Updated SessionItem, TeamSessionsSection, and KanbanFilterPopover to utilize the new formatting function.
- Enhanced display logic in SessionItem to differentiate between regular and team sessions, improving user experience.
- Added new icons for team sessions and adjusted metadata display for better clarity.
2026-03-29 01:16:04 +02:00
iliya
304a2a7f79 feat(graph): enhance GraphControls with settings toggle and improved zoom functionality
- Added a settings toggle to the GraphControls for better user interaction.
- Implemented event listeners to close settings when clicking outside or pressing Escape.
- Improved zoom controls to mark user interaction, preventing auto-fit adjustments during user actions.
- Refactored GraphOverlay to streamline rendering and position updates for selected nodes.
- Updated GraphView to utilize new layout effects for better performance and responsiveness.
2026-03-29 00:05:29 +02:00
iliya
26f7b9158f fix(graph): enhance particle rendering for task comments
- Added visual differentiation for 'task_comment' particles, adjusting size and glow effects.
- Updated drawing functions to handle new particle kind, ensuring proper rendering in the graph.
- Introduced a merge function for particles to prevent duplicates during state updates.
- Enhanced color constants for better visual representation of different particle types.
2026-03-28 22:55:01 +02:00
iliya
e431cfd02c fix(team): deduplicate permission_request processing across all entry paths
Root cause: handleTeammatePermissionRequest was called from 3 paths
(early inbox scan, Category 4 relay scan, stdout/native) but only
the early scan checked processedPermissionRequestIds, causing
duplicate ToolApprovalRequests and extra permission_responses.

Fix:
- Move processedPermissionRequestIds check INTO handleTeammatePermissionRequest
  so ALL callers are protected by the same dedup gate
- Remove duplicate Category 4 scan that re-processed inbox messages
  (early scan already covers all messages including read=true)
- Category 4 now only builds a filter Set to exclude permission_request
  from relay to lead
2026-03-28 20:32:42 +02:00
iliya
8a9121fc3e fix(graph): toggle buttons visually distinct — active gets border + glow, inactive dimmed 2026-03-28 14:11:28 +02:00
Илия
11bb49c53e
feat(graph): force-directed agent graph visualization with kanban-zone task layout
Force-directed graph visualization for agent teams.

Package: @claude-teams/agent-graph (isolated workspace package)
- Space theme: bloom, particles, hex grid, depth stars
- Members as hexagonal nodes with breathing glow
- Tasks as pill cards in kanban columns (todo/wip/done/review/approved) per owner
- Message particles along edges (real-time only)
- Deterministic layout, Figma-style pan, scroll/pinch zoom
- Clean Architecture: ports/adapters/strategies, ES #private classes

Integration: features/agent-graph/ (adapter + overlay + tab)
- Full-screen overlay (Cmd+Shift+G) + Pin as Tab
- Graph button in Team section header
- Frustum culling, zero per-frame allocations, adaptive fps
- Performance overlay via ?perf query param

Also: CI runs on all PR branches, features/CLAUDE.md architecture guide
2026-03-28 12:03:42 +02:00
iliya
dd42cf0069 fix(team): scan inbox for permission_request during provisioning
relayLeadInboxMessages only processes unread messages after
provisioningComplete, but CLI marks permission_request messages as
read after native delivery -- before our relay runs.

Move permission_request inbox scan BEFORE provisioningComplete check.
Scan ALL messages (including read=true), track processed IDs via
processedPermissionRequestIds Set on ProvisioningRun to prevent
re-emitting. Also look up both alive and provisioning runs so the
scan works during team bootstrap.
2026-03-27 23:35:52 +02:00