Commit graph

73 commits

Author SHA1 Message Date
777genius
4d0f3d802b perf(renderer): skip idle reply candidate scans 2026-05-31 05:35:02 +03:00
777genius
5041c79916 perf(renderer): cache repeated team badge selectors 2026-05-31 05:28:10 +03:00
777genius
5669373283 perf(renderer): narrow messages panel loading state 2026-05-31 04:19:00 +03:00
777genius
a2a4f99fce perf(renderer): avoid sorting stable team mention metadata 2026-05-31 04:00:34 +03:00
777genius
b9527004f3 perf(renderer): stabilize messages team mention selector 2026-05-31 03:58:13 +03:00
777genius
a5444f3240 perf(renderer): defer inactive messages panel branches 2026-05-31 02:07:52 +03:00
777genius
6b08e0d1a7 perf(renderer): batch visible message read updates 2026-05-31 00:48:26 +03:00
777genius
126a485477 wip: team messages panel updates and runtime usage cache refinements
Checkpoint of in-progress work:
- renderer: team messages panel/composer, messagesPanelLogic, teamSlice,
  AnimatedHeightReveal plus their tests
- main: runtime process usage-stats caching (ignoreCachedMisses, bounded
  eviction), alive-run-id helpers, team watch-scope notify wiring

Note: the getTeamAgentRuntimeSnapshot rssBytes expectation in
TeamAgentLaunchMatrix.safe-e2e is environment-dependent and still red.
2026-05-30 12:54:11 +03:00
777genius
889e4cc374 perf: avoid sidebar timeline virtualization churn 2026-05-29 15:54:49 +03:00
777genius
f05aefe097 perf: trim team page render overhead 2026-05-29 15:15:01 +03:00
777genius
906942cb7a perf: isolate messages panel logic exports 2026-05-29 12:26:09 +03:00
777genius
3c37b22379 perf: debounce messages scroll persistence 2026-05-29 12:26:04 +03:00
777genius
86e700f031 fix(team): require revision notice before editing 2026-05-25 20:57:04 +03:00
777genius
5aba24c400 feat(team): support revising sent messages 2026-05-25 01:22:57 +03:00
777genius
6855d63ec6 feat(i18n): add localization foundation
Refs https://github.com/777genius/agent-teams-ai/issues/139
2026-05-24 15:37:24 +03:00
777genius
4a8cec9dc2 chore: checkpoint frontend workspace updates 2026-05-18 01:57:16 +03:00
777genius
445932e45b feat(team): improve runtime provider workflows 2026-05-17 19:11:26 +03:00
infiniti
d29f3a23d4
fix: harden Windows frontend stability (#125) 2026-05-16 19:57:11 +03:00
777genius
6e8f938da2 fix(team): harden opencode delivery recovery 2026-05-14 15:11:40 +03:00
777genius
cbe8d194ef chore: sync current frontend updates 2026-05-10 21:29:07 +03:00
777genius
5d3ec8a8bd fix(team): hide review pickup escalation rows 2026-05-09 16:01:20 +03:00
777genius
8fd8949684 feat(team): harden opencode delivery advisories 2026-05-09 13:17:23 +03:00
777genius
409f84110e feat(team): checkpoint dashboard and runtime UX updates 2026-05-09 12:20:39 +03:00
777genius
38b3a1e789 feat(team): update task automation state 2026-05-07 01:22:16 +03:00
777genius
bbafedf06a fix: stabilize OpenCode team runtime delivery 2026-05-05 17:07:21 +03:00
777genius
b192ed4bae feat(team): improve composer persistence flow 2026-05-05 10:35:33 +03:00
Илия
a8d53ca5cb
fix(ci): restore dev validation 2026-04-28 16:08:05 +03:00
777genius
068e473d2d fix(team): clear delivered runtime message warnings 2026-04-27 11:15:57 +03:00
777genius
b67168a9e8 fix: show opencode teammate replies in messages 2026-04-26 21:35:48 +03:00
777genius
19b6937446 feat(opencode): harden delivery and provider UI 2026-04-25 14:30:10 +03:00
777genius
64c9ddc78c feat(opencode): add semantic messaging seam 2026-04-24 22:41:16 +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
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
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
4cab3052eb Merge branch 'dev' of https://github.com/777genius/claude_agent_teams_ui into dev 2026-04-19 22:05:40 +03: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
Mike
49e029163b refactor(team): wire scroll owners for MessagesPanel layouts
First step toward virtualizing ActivityTimeline. Makes the real scroll
container observable per layout, without changing behavior.

- `TeamDetailView` forwards `contentRef` to `MessagesPanel` as
  `inlineScrollContainerRef`. `MessagesPanel` accepts it as an optional
  prop (unused in this release) so a follow-up can wire the inline
  viewport to virtualization consumers.
- `MessagesPanel` creates `bottomSheetScrollRef` and passes it to
  `Sheet.Content scrollRef`. react-modal-sheet merges it with its
  internal scroll ref, so the element stays the same DOM node; this
  only exposes it to us.
- Sidebar already owns `sidebarScrollRef`; no change there.

Behavior is unchanged — this only exposes refs for the follow-up that
will thread a viewport contract into ActivityTimeline.
2026-04-19 23:41:33 +05: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
2fd06fcd48 Merge branch 'dev' into spike/team-snapshot-split-plan 2026-04-18 18:21:25 +03:00
777genius
cb603aaf37 fix(activity): make new session boundaries exact 2026-04-18 16:58:44 +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
8d5ee7d5ab chore(dev): sync pending branch updates 2026-04-18 14:13:15 +03:00
777genius
bb60bbb0ec fix(ci): restore workspace validation 2026-04-16 22:52:56 +03:00
777genius
1173a4942a refactor(team): split team detail snapshot from messages activity 2026-04-15 21:54:38 +03:00
777genius
a0d87872e7 fix(ci): restore PR #44 checks 2026-04-13 17:00:49 +03:00
777genius
674c1d8b13 feat(ui): polish messages timeline and graph toolbar 2026-04-13 10:41:23 +03:00
777genius
cc45549716 feat(messages): add bottom sheet panel mode 2026-04-12 22:17:18 +03:00
777genius
53bcea337f merge(main): integrate origin/main into spike/free-code-compat 2026-04-10 17:25:51 +03:00
iliya
17bd573ce3 fix(team-runtime): harden refresh flows and reduce ui churn 2026-04-09 16:34:55 +03:00
iliya
78d4c2826b fix(team): align idle inbox semantics across app 2026-04-08 17:45:09 +03:00