Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
c10b436
Merge pull request #10 from FoothillSolutions/adw/feature-workspace-f…
falfaddaghi Apr 14, 2026
538014e
Enhance ScrollArea component to enforce block display for internal di…
engkareeem Apr 18, 2026
7ddf4a1
Refactor FloatingWorkflowGen component by replacing ScrollArea with a…
engkareeem Apr 18, 2026
0a92234
Fix ParallelAgentNode instruction displaying
engkareeem Apr 18, 2026
4eb2f0f
Refactor layout in FloatingWorkflowGen component by consolidating cla…
engkareeem Apr 18, 2026
085d0a8
chore: add husky for pre-commit checks and update dependencies
engkareeem Apr 18, 2026
ad43fed
chore: enhance pre-commit hook with git stash functionality
engkareeem Apr 18, 2026
ccb4181
chore: improve pre-commit hook with additional checks and messaging
engkareeem Apr 18, 2026
8ab83f6
chore: refine pre-commit hook with improved cleanup logic
engkareeem Apr 18, 2026
d88a269
chore: enhance pre-commit hook with completion message
engkareeem Apr 18, 2026
3c5c6c3
Merge pull request #14 from engkareeem/fix-layout-visual-bugs
Nasrallah-AL Apr 18, 2026
71ce8b2
Add `/graphify-out` to `.gitignore` for excluding new output directory
Nasrallah-AL Apr 19, 2026
504ebba
Add model mapping for `claude-code` frontmatter in agent generator logic
Nasrallah-AL Apr 19, 2026
14a2a10
Add `_workspace*` to `.gitignore` for excluding workspace-related dir…
Nasrallah-AL Apr 19, 2026
2dabe5c
Introduce Edit mode in workflow generation with toggle support, tests…
Nasrallah-AL Apr 19, 2026
0f10d47
Update `.gitignore` to reorganize and correctly exclude `_workspace*`…
Nasrallah-AL Apr 19, 2026
7522315
Add tests for parallel-agent node handling, covering fixed and dynami…
Nasrallah-AL Apr 19, 2026
fa0ab9a
Introduce Handoff node with structured and freeform payload styles, s…
Nasrallah-AL Apr 19, 2026
9e66a4b
Merge pull request #15 from engkareeem/chore/add-pre-commit-script
Nasrallah-AL Apr 20, 2026
0755b00
feat: introduce OIDC support
Apr 20, 2026
0bb0704
chore: address issues integration next-auth with Nexus
Apr 20, 2026
1a68004
Refactor workflow generation to improve skill and document edge handl…
Nasrallah-AL Apr 22, 2026
d31d3e4
Remove duplicate "Hands Off" node and associated icon from workflow p…
Nasrallah-AL Apr 22, 2026
e027012
Document context isolation rules between workflow steps, detailing ha…
Nasrallah-AL Apr 22, 2026
40daf71
Filter inactive nodes from AI generation and workflow palette; update…
Nasrallah-AL Apr 22, 2026
67ab476
Clarify parallel-agent connection rules and branch behavior in fixed …
Nasrallah-AL Apr 22, 2026
398d4fd
Clarify parallel-agent connection rules and branch behavior in fixed …
Nasrallah-AL Apr 22, 2026
f6116a1
Introduce Claude Code frontmatter utilities, update memory and tool m…
Nasrallah-AL Apr 22, 2026
8cb83d7
Add reusable `MemorySelect` component for node configuration with dro…
Nasrallah-AL Apr 22, 2026
42dfd2c
Add AI-generated workflow enhancement suggestions functionality with …
Nasrallah-AL Apr 22, 2026
afec39a
Add workflow structure validation with tests and structural issue sum…
Nasrallah-AL Apr 22, 2026
2d3519b
Clarify single start and end node requirements in workflow validation…
Nasrallah-AL Apr 22, 2026
0857a86
Remove unsupported "skills" field from Claude Code frontmatter genera…
Nasrallah-AL Apr 22, 2026
b96c134
Clarify agent dispatch behavior in parallel-agent node generation, up…
Nasrallah-AL Apr 22, 2026
ffea8d6
Prevent copying nodes when text is actively selected in the document.
Nasrallah-AL Apr 22, 2026
061ae27
Introduce shared instruction generation for parallel-agent nodes and …
Nasrallah-AL Apr 22, 2026
af3fadb
Add Cmd/Ctrl+Enter shortcut for prompt submission and update button t…
Nasrallah-AL Apr 22, 2026
be156ec
Update changelog and bump version to 2.1.0 with new features, improve…
Nasrallah-AL Apr 22, 2026
efa9834
Add AI diff-review implementation with hunk-level decisions, live pre…
Nasrallah-AL Apr 22, 2026
0d67b13
Add side-by-side diff alignment and rendering for AI diff-review with…
Nasrallah-AL Apr 22, 2026
22ce428
fix: replace CJS require.cache busting with direct function call in a…
Apr 23, 2026
b404db0
fix: centralize auth secret access in proxy via getAuthEnv()
Apr 23, 2026
a3b7383
Merge remote-tracking branch 'origin/main' into oauth-support
Apr 23, 2026
f7ef572
Merge pull request #16 from FoothillSolutions/oauth-support
Nasrallah-AL Apr 23, 2026
6577789
Enahnce collaboration features: live cursors, peer management, and se…
Nasrallah-AL Apr 23, 2026
e8897bc
fix/Unify Next.js HTTP server and Hocuspocus WebSocket on a single po…
Nasrallah-AL Apr 23, 2026
d167516
Add user self-renaming feature with live updates and persistent stora…
Nasrallah-AL Apr 23, 2026
362de78
Add idle room pruning with TTL configuration and disk cleanup mechani…
Nasrallah-AL Apr 23, 2026
bbe2746
Enhance collaboration with ownership roles: add room ownership recogn…
Nasrallah-AL Apr 23, 2026
13591c0
Introduce peer activity tracking with idle detection, awareness updat…
Nasrallah-AL Apr 23, 2026
4578b10
feat: add recent changes panel spec and task docs
falfaddaghi Apr 10, 2026
cc1bbf3
feat: implement workspace recent changes panel
falfaddaghi Apr 10, 2026
7a51e15
feat: differentiate open workspace picker from new workspace
falfaddaghi Apr 11, 2026
76a90b1
Add workspace deletion
falfaddaghi Apr 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,26 @@ NEXUS_COLLAB_SERVER_PORT=1234

# Public WebSocket URL that browsers use to connect to the collab server.
NEXT_PUBLIC_COLLAB_SERVER_URL=ws://localhost:1234

# ── Authentication (OIDC/OAuth2) ─────────────────────────────────────────────
# When all four AUTH_* variables below are set, Nexus requires SSO login.
# When absent, the app is open (no authentication).
#
# AUTH_ISSUER — OIDC issuer URL (auto-discovers endpoints via .well-known)
# Microsoft Entra ID: https://login.microsoftonline.com/{tenant-id}/v2.0
# Google: https://accounts.google.com
# Okta: https://{domain}.okta.com
#
# AUTH_ISSUER=https://login.microsoftonline.com/your-tenant-id/v2.0
# AUTH_CLIENT_ID=your-client-id
# AUTH_CLIENT_SECRET=your-client-secret
# AUTH_SECRET=generate-with-openssl-rand-base64-33
# AUTH_PROVIDER_NAME=Microsoft
#
# NEXTAUTH_URL — Canonical public URL of your deployment.
# Not required in local dev (NextAuth auto-detects localhost:3000).
# Required in any deployed environment, especially behind a reverse proxy or
# load balancer, so NextAuth constructs correct OAuth callback URLs.
# Must match exactly the redirect URI registered with your OAuth provider.
#
# NEXTAUTH_URL=https://nexus.example.com
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,10 @@ storage.json
/temp_examples/
/test-results/
_workspace
/graphify-out
_workspace*

# Local runtime data stores (Brain / collab)
/.nexus-brain/
/.nexus-collab/

36 changes: 36 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
if git diff --cached --quiet; then
echo "No staged changes. Skipping checks."
exit 0
fi

STASHED=0

cleanup() {
if [ $STASHED -eq 1 ]; then
echo "Restoring unstaged changes..."
git stash pop -q
STASHED=0
fi
}

trap cleanup EXIT INT TERM

echo "Stashing unstaged changes..."
git stash push --keep-index --include-untracked -m "pre-commit-stash"
STASHED=1

echo "Running checks (typecheck + lint + tests)..."
bun run check
echo "Finished running checks."

EXIT_CODE=$?

cleanup

if [ $EXIT_CODE -ne 0 ]; then
echo "Pre-commit checks failed. Commit blocked."
else
echo "All checks passed. Proceeding with commit."
fi

exit $EXIT_CODE
33 changes: 16 additions & 17 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ RUN --mount=type=cache,target=/root/.bun/install/cache \
bun install --frozen-lockfile

# ============================================
# Stage 2: Build Next.js application in standalone mode
# Stage 2: Build Next.js application
# ============================================

FROM oven/bun:${BUN_VERSION} AS builder
Expand All @@ -32,7 +32,7 @@ ENV NEXT_TELEMETRY_DISABLED=1
RUN bun run build

# ============================================
# Stage 3: Run Next.js application
# Stage 3: Run Next.js + Hocuspocus via custom server
# ============================================

FROM oven/bun:${BUN_VERSION} AS runner
Expand All @@ -51,31 +51,30 @@ ENV APP_BUILD_TIMESTAMP=${BUILD_TIMESTAMP}

EXPOSE 3000

COPY --from=builder --chown=bun:bun /app/public ./public

# Install git for marketplace clone/pull operations at runtime.
RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates \
&& rm -rf /var/lib/apt/lists/*

RUN mkdir .next && chown bun:bun .next

# Pre-create marketplace cache directory with correct ownership.
RUN mkdir -p /tmp/nexus-marketplaces && chown bun:bun /tmp/nexus-marketplaces
# Pre-create marketplace and collab data directories with correct ownership.
RUN mkdir -p /tmp/nexus-marketplaces /data/brain /data/collab \
&& chown -R bun:bun /tmp/nexus-marketplaces /data/brain /data/collab

# Automatically leverage output traces to reduce image size.
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=bun:bun /app/.next/standalone ./
COPY --from=builder --chown=bun:bun /app/.next/static ./.next/static

# Persist the fetch cache generated during the build for faster cold starts.
COPY --from=builder --chown=bun:bun /app/.next/cache ./.next/cache
# Full Next.js build + dependencies — the custom server imports `next` and
# the compiled `.next/` output directly, so we need both.
COPY --from=dependencies --chown=bun:bun /app/node_modules ./node_modules
COPY --from=builder --chown=bun:bun /app/.next ./.next
COPY --from=builder --chown=bun:bun /app/public ./public
COPY --from=builder --chown=bun:bun /app/package.json ./package.json
COPY --from=builder --chown=bun:bun /app/next.config.ts ./next.config.ts
COPY --from=builder --chown=bun:bun /app/server.ts ./server.ts
COPY --from=builder --chown=bun:bun /app/scripts ./scripts
COPY --from=builder --chown=bun:bun /app/src/lib/collaboration/object-store.ts ./src/lib/collaboration/object-store.ts
COPY --from=builder --chown=bun:bun /app/src/lib/collaboration/object-store.ts \
./src/lib/collaboration/object-store.ts
COPY --from=builder --chown=bun:bun /app/tsconfig.json ./tsconfig.json

USER bun

HEALTHCHECK --interval=30s --timeout=3s --start-period=10s \
CMD bun --eval "fetch('http://localhost:3000/livez').then(r=>{if(!r.ok)throw 1})"

CMD ["bun", "server.js"]
CMD ["bun", "server.ts"]
Loading