Skip to content

Commit 23a2e44

Browse files
committed
release: merge develop into main for v0.29.3
2 parents 2d75828 + 846d1ed commit 23a2e44

7 files changed

Lines changed: 25 additions & 5 deletions

File tree

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ workspace/projects/*/
2323

2424
# ── Agent memory (runtime, personal) ──────
2525
.claude/agent-memory/
26+
# Catch nested .claude/ folders that agents may accidentally create when
27+
# running from subdirectories (e.g. cd dashboard/frontend && claude ...).
28+
# The canonical .claude/ lives at the repo root; everything nested is noise.
29+
**/.claude/agent-memory/
30+
dashboard/*/.claude/
2631
memory/**
2732
!memory/.gitkeep
2833

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.29.3] - 2026-04-23
9+
10+
Patch release: fix the infinite page scroll in thread mode so the embedded chat behaves exactly like the agent chat (fixed input at the bottom, messages scroll inside the container), and harden `.gitignore` against nested `.claude/` folders that agents were accidentally creating from subdirectory cwds.
11+
12+
### Fixed
13+
14+
- **Thread mode — infinite page scroll**`TicketDetail` in thread mode used `h-full` but the parent `<main>` in `App.tsx` only applied `h-screen overflow-hidden` for `/agents/:id` and `/workspace/*` routes. Any route falling into the default branch used `overflow-auto` without a fixed height, so the embedded `AgentChat` grew with its message list and pushed the input field off-screen. Fix: add `isTicketDetail` matcher to `App.tsx` so `/tickets/:id` joins the fixed-viewport branch; in `TicketDetail.tsx` the non-thread (document) view gains its own `h-full overflow-auto` wrapper with the original padding to preserve its vertical-document layout. Thread mode now mirrors the agent chat exactly.
15+
16+
### Changed
17+
18+
- **`.gitignore` hardening — nested `.claude/` in subdirectories** — agents running from `dashboard/frontend/` (e.g., `cd dashboard/frontend && npm run build`) were creating `dashboard/frontend/.claude/agent-memory/` relative to cwd instead of writing to the canonical `.claude/` at the repo root. Content was already ignored by the existing `.claude/agent-memory/` rule, but the `.claude/` folder itself showed up untracked in editors. Added `**/.claude/agent-memory/` and `dashboard/*/.claude/` patterns to block this at any depth.
19+
820
## [0.29.2] - 2026-04-23
921

1022
Patch release: in-app toasts and confirm dialogs replacing 47 native `alert()`/`confirm()` calls, agent avatars in the Topics list, plus fixes for PR #30 (provider routing + docker) and the archive endpoint.

cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@evoapi/evo-nexus",
3-
"version": "0.29.2",
3+
"version": "0.29.3",
44
"description": "Unofficial open source toolkit for Claude Code — AI-powered business operating system",
55
"keywords": [
66
"claude-code",

dashboard/frontend/src/App.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ function AppContent() {
5050
const isDocs = location.pathname === '/docs' || location.pathname.startsWith('/docs/')
5151
const isShare = location.pathname.startsWith('/share/')
5252
const isAgentDetail = /^\/agents\/[^/]+$/.test(location.pathname)
53+
const isTicketDetail = /^\/tickets\/[^/]+$/.test(location.pathname)
5354
const isWorkspace = location.pathname === '/workspace' || location.pathname.startsWith('/workspace/')
5455
const { user, loading, needsSetup, hasPermission } = useAuth()
5556

@@ -97,7 +98,7 @@ function AppContent() {
9798
{/* Pages — responsive margin */}
9899
<main
99100
className={
100-
isAgentDetail || isWorkspace
101+
isAgentDetail || isWorkspace || isTicketDetail
101102
? 'flex-1 ml-0 lg:ml-60 pt-14 lg:pt-0 h-screen overflow-hidden'
102103
: 'flex-1 ml-0 lg:ml-60 p-4 lg:p-8 pt-16 lg:pt-8 overflow-auto'
103104
}

dashboard/frontend/src/pages/TicketDetail.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -505,7 +505,8 @@ export default function TicketDetail() {
505505
// --- End thread mode ---
506506

507507
return (
508-
<div className="max-w-3xl mx-auto">
508+
<div className="h-full overflow-auto p-4 lg:p-8 pt-16 lg:pt-8">
509+
<div className="max-w-3xl mx-auto">
509510
{/* Back */}
510511
<button
511512
onClick={() => navigate('/topics')}
@@ -744,6 +745,7 @@ export default function TicketDetail() {
744745
onConverted={() => { setShowConvertModal(false); fetchTicket() }}
745746
/>
746747
)}
748+
</div>
747749
</div>
748750
)
749751
}

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "evo-nexus"
3-
version = "0.29.2"
3+
version = "0.29.3"
44
description = "Unofficial open source toolkit for Claude Code — AI-powered business operating system"
55
requires-python = ">=3.10"
66
dependencies = [

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)