Skip to content

feat(frontend): add AutoGPT logo to share page and zip download for outputs - #11741

Merged
ntindle merged 39 commits into
devfrom
claude/share-page-logo-download-krdah
Apr 21, 2026
Merged

feat(frontend): add AutoGPT logo to share page and zip download for outputs#11741
ntindle merged 39 commits into
devfrom
claude/share-page-logo-download-krdah

Conversation

@ntindle

@ntindle ntindle commented Jan 9, 2026

Copy link
Copy Markdown
Member

Why / What / How

Why: The share page was unbranded (no logo/navigation) and images from workspace files couldn't render because the proxy didn't handle public share URLs. Zip downloads also had several gaps — no size limits, no workspace file support, silent failures on data URLs, and single files got wrapped in unnecessary zips.

What: Adds AutoGPT branding to the share page, secure public access to workspace files via a SharedExecutionFile allowlist, and a hardened zip download module.

How: Backend scans execution outputs for workspace:// URIs on share-enable and persists an allowlist in a new SharedExecutionFile table. A new unauthenticated endpoint serves files validated against this allowlist. Frontend proxy routing is extended (with UUID validation) to handle the 7-segment public share download path as a binary response. Download logic is consolidated into a shared module with size limits, parallel fetches, filename sanitization, and single-file direct download.

Changes 🏗️

Share page branding:

  • AutoGPT logo header centered at top, linking to /
  • Dark/light mode variants with correct priority on visible variant only

Secure public workspace file access (backend):

  • New SharedExecutionFile Prisma model with @@unique([shareToken, fileId]) constraint
  • _extract_workspace_file_ids() scans outputs for workspace:// URIs (handles nested dicts/lists)
  • create_shared_execution_files() / delete_shared_execution_files() manage allowlist lifecycle
  • Re-share cleans up stale records before creating new ones (prevents old token access)
  • GET /public/shared/{token}/files/{id}/download — validates against allowlist, uniform 404 for all failures
  • Content-Disposition: inline for share page rendering
  • Hand-written Prisma migration (20260417000000_add_shared_execution_file)

Frontend proxy fix:

  • isWorkspaceDownloadRequest extended to match public share path (7-segment)
  • UUID format validation on dynamic path segments (file IDs, share tokens)
  • 30+ adversarial security tests: path traversal, SQL injection, SSRF payloads, unicode homoglyphs, null bytes, prototype pollution, etc.

Download module (download-outputs.ts):

  • Consolidated from two divergent copies into single shared module
  • fetchFileAsBlob with content-length pre-check before buffering
  • sanitizeFilename strips path traversal, leading dots, falls back to "file"
  • getUniqueFilename deduplicates with counter suffix
  • fetchInParallel with configurable concurrency (5)
  • 50 MB per-file limit, 200 MB aggregate limit
  • Data URL try-catch, relative URL support (/api/proxy/...)
  • Single-file downloads skip zip, go directly to browser download
  • Dynamic JSZip import for bundle optimization
  • 26 unit tests

Share page file rendering:

  • WorkspaceFileRenderer builds public share URLs when shareToken is in metadata
  • RunOutputs propagates shareToken to renderer metadata

Checklist 📋

For code changes:

  • I have clearly listed my changes in the PR description
  • I have made a test plan
  • I have tested my changes according to the test plan:
    • Share page renders with centered AutoGPT logo
    • Logo links to / and shows correct dark/light variant
    • Workspace images render inline on share page
    • Download all produces zip with workspace images included
    • Single-file download skips zip, downloads directly
    • Re-sharing generates new token and cleans up old allowlist records
    • Public file download returns 404 for files not in allowlist
    • All frontend tests pass (122 tests across 3 suites)
    • Backend formatter + pyright pass
    • Frontend format + lint + types pass

For configuration changes:

  • .env.default is updated or already compatible with my changes
  • docker-compose.yml is updated or already compatible with my changes
  • I have included a list of my configuration changes in the PR description (under Changes)

Note: New Prisma migration required. No env/docker changes needed.


Note

Medium Risk
Adds a new unauthenticated file download path gated by a database allowlist plus a new Prisma model/migration; mistakes here could expose workspace files or break sharing. Frontend download behavior also changes significantly (zipping/fetching), which could impact large-output performance and edge cases.

Overview
Enables public rendering and downloading of workspace files on shared execution pages by introducing a SharedExecutionFile allowlist tied to the share token and populating it when sharing is enabled (and clearing it on disable/re-share).

Adds GET /public/shared/{share_token}/files/{file_id}/download (no auth) that validates the requested file against the allowlist and returns a uniform 404 on failure; workspace download responses now support inline Content-Disposition via the exported create_file_download_response helper.

Frontend updates the share page to pass shareToken into output renderers so WorkspaceFileRenderer can build public-share download URLs; the proxy matcher is extended/strictly UUID-validated for both workspace and public-share download paths with extensive adversarial tests. Output downloading is consolidated into download-outputs.ts using dynamic jszip import, filename sanitization/deduping, concurrency + size limits, and a single-file non-zip fast path.

Reviewed by Cursor Bugbot for commit e2f5bd9. Bugbot is set up for automated code reviews on this repo. Configure here.

…utputs

- Add AutoGPT logo header to the share page layout with dark/light mode support
- Modify download functionality to bundle all outputs into a single zip file
- Add jszip dependency for zip file generation
- Handle both text outputs and file attachments in the zip
@coderabbitai

coderabbitai Bot commented Jan 9, 2026

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds jszip dependency, inserts a theme-aware login header with responsive logos into the share layout, refactors frontend download utilities to aggregate outputs (including fetched remote resources) into a single ZIP, and adds backend support for persistent shared-file allowlist entries plus a public file-download endpoint for shared executions.

Changes

Cohort / File(s) Summary
Dependency Addition
autogpt_platform/frontend/package.json
Added jszip (3.10.1) to enable ZIP archive creation.
Share Layout Header
autogpt_platform/frontend/src/app/(no-navbar)/share/layout.tsx
Inserted a header containing a login link with theme-aware responsive AutoGPT logo images above main content.
Download Refactor (agent view)
autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/.../OutputRenderers/utils/download.ts
Rewrote download flow to build a single ZIP (outputs.zip) using JSZip: accumulates concatenable text, adds blobs and fetched remote resources, records unfetchable URLs in a note, sanitizes and deduplicates filenames, and uses helper utilities (fetchFileAsBlob, getUniqueFilename, MAX_FILE_SIZE_BYTES). Widened DownloadItem.value to unknown.
Download Typing Change (contextual)
autogpt_platform/frontend/src/components/contextual/OutputRenderers/utils/download.ts
Changed DownloadItem.value type from any to unknown to improve type safety; no behavioral change.
Backend: shared-file allowlist & public download
autogpt_platform/backend/backend/api/features/v1.py
Create/delete persistent allowlist records for workspace files when enabling/disabling execution sharing and add unauthenticated endpoint GET /public/shared/{share_token}/files/{file_id}/download to validate allowlist and return file downloads (404 on missing entries/files).

Sequence Diagram(s)

sequenceDiagram
    participant User as "User"
    participant UI as "UI"
    participant DownloadUtil as "DownloadUtil"
    participant RemoteHost as "RemoteHost"
    participant ZipCreator as "ZIP Creator"
    participant Browser as "Browser"

    User->>UI: Click "Download"
    UI->>DownloadUtil: provide DownloadItems
    DownloadUtil->>DownloadUtil: separate texts, blobs, URLs
    DownloadUtil->>RemoteHost: fetch remote URLs (fetchFileAsBlob)
    RemoteHost-->>DownloadUtil: blob or fetch error
    DownloadUtil->>ZipCreator: add blobs and combined text files
    DownloadUtil->>ZipCreator: add unfetchable URLs -> unfetched_files.txt
    ZipCreator-->>DownloadUtil: outputs.zip
    DownloadUtil->>Browser: trigger save of outputs.zip
    Browser-->>User: download complete
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested labels

size/l

Suggested reviewers

  • Bentlybro
  • Pwuts

Poem

🐰 I stitched your outputs into one bright zip,
Logos that swap with a hop and a flip,
I chased far files and tucked them in tight,
Left a note for the ones out of sight,
Hop on—downloads now arrive in a single zip!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately captures the two main changes: adding the AutoGPT logo to the share page and implementing zip download functionality for outputs.
Description check ✅ Passed The PR description provides comprehensive details on the changes, including the why/what/how rationale, detailed change sections covering frontend logo branding, secure workspace file access, frontend proxy fixes, and the download module consolidation, plus a complete checklist with test verification.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/share-page-logo-download-krdah

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ntindle ntindle changed the title feat(frontend): add AutoGPT logo to share page and zip download for o… feat(frontend): add AutoGPT logo to share page and zip download for outputs Jan 9, 2026
@github-actions github-actions Bot added the platform/frontend AutoGPT Platform - Front end label Jan 9, 2026
@github-actions github-actions Bot added the size/m label Jan 9, 2026
@AutoGPT-Agent

Copy link
Copy Markdown
Contributor

Thank you for submitting this PR to add the AutoGPT logo to the share page and implement zip downloading for outputs. The implementation looks good, but there are a few items that need to be addressed before this can be merged:

  1. Please complete the PR description by explaining the need for these changes

  2. The checklist in the PR description is completely unchecked. Please complete the checklist items:

    • Check that you've listed your changes in the PR description
    • Create and document a test plan
    • Confirm you've tested according to that plan

The code changes themselves look appropriate - adding the jszip dependency, implementing the logo in the share page layout with dark/light mode support, and enhancing the download functionality to bundle all outputs into a single zip file.

Once you've updated the PR description and completed the checklist, we can proceed with the review process.

@AutoGPT-Agent

Copy link
Copy Markdown
Contributor

Thank you for your contribution! The changes to add the AutoGPT logo to the share page and implement zip download functionality for outputs look good technically, but there are a few things that need to be addressed before this PR can be merged:

  1. Please complete the PR description by:

    • Explaining the need for these changes
    • Providing a concise description of all the changes made in this PR under the "Changes 🏗️" section
  2. Please fill out the checklist for code changes:

    • Check the box confirming you've listed your changes
    • Create and check off a test plan that demonstrates how you've verified your changes work correctly

Your code changes look good - I particularly like the thoughtful implementation of the zip functionality with unique filename handling. Once you complete the description and checklist, this PR should be ready for another review.

- Move AutoGPT logo from top left to top right in the header
- Change logo link to /login page (redirects to library if signed in,
  signup if new user)
@AutoGPT-Agent

Copy link
Copy Markdown
Contributor

Thanks for your contribution! The code changes look good, but there are a couple of issues that need to be addressed before this can be merged:

  1. Incomplete PR description - Please fill out the checklist in the PR description. None of the checkboxes are currently checked.

  2. Missing test plan - You need to specify how you've tested these changes. This should include details on how you've verified that both the logo display and the zip download functionality work correctly across different scenarios.

  3. Changes description - While you've listed the changes at the top of the PR, please move this information to the "Changes 🏗️" section of the template for better organization.

The code implementation itself looks solid:

  • The jszip dependency is properly added in alphabetical order
  • The logo implementation includes dark/light mode support
  • The zip download functionality has good error handling and unique filename generation

Please update the PR description with the required information, and this should be good to go!

@ntindle

ntindle commented Jan 9, 2026

Copy link
Copy Markdown
Member Author

@claude update the pr description please to follow the template

@ntindle

ntindle commented Jan 9, 2026

Copy link
Copy Markdown
Member Author

@claude re-lock the frontend pnpm for the added dependency

@claude

claude Bot commented Jan 9, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ntindle's task in 54s —— View job


Updating PR Description

  • Gather context from changed files
  • Update PR description to follow template
  • Push changes (no code changes needed)

Done! I've updated the PR description to follow the template:

  • Added a clear summary explaining the purpose of the changes
  • Filled in the Changes 🏗️ section with detailed bullet points for both features
  • Completed the checklist with a test plan specific to these changes
  • Marked the configuration checklist as compatible (no config changes needed)

@claude

claude Bot commented Jan 9, 2026

Copy link
Copy Markdown
Contributor

Claude finished @ntindle's task in 1m 1s —— View job


Re-locking Frontend pnpm Dependencies

  • Read CLAUDE.md for repository guidelines
  • Navigate to frontend directory and regenerate pnpm-lock.yaml
  • Commit and push the updated lockfile

Regenerated pnpm-lock.yaml to include the jszip@3.10.1 dependency that was added in package.json. The lockfile has been committed and pushed to the branch.
| Branch

Co-authored-by: Nicholas Tindle <ntindle@users.noreply.github.com>
@github-actions github-actions Bot added the size/l label Jan 9, 2026
@ntindle

ntindle commented Feb 5, 2026

Copy link
Copy Markdown
Member Author

image

As tested by agent

@ntindle
ntindle requested review from 0ubbe and kcze and removed request for a team February 26, 2026 16:13

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Your free trial has ended. If you'd like to continue receiving code reviews, you can add a payment method here.

@github-actions

github-actions Bot commented Feb 26, 2026

Copy link
Copy Markdown
Contributor

🔍 PR Overlap Detection

This check compares your PR against all other open PRs targeting the same branch to detect potential merge conflicts early.

🔴 Merge Conflicts Detected

The following PRs have been tested and will have merge conflicts if merged after this PR. Consider coordinating with the authors.

  • fix(backend): handle soft-deleted ghost rows in workspace file overwrite #12379 (deepakdevp · updated 2d ago)

    • .claude/skills/pr-review/SKILL.md (2 conflicts, ~129 lines)
    • autogpt_platform/backend/backend/api/features/chat/routes.py (1 conflict, ~4 lines)
    • autogpt_platform/backend/backend/blocks/_base.py (2 conflicts, ~21 lines)
    • autogpt_platform/backend/backend/blocks/github/commits.py (6 conflicts, ~82 lines)
    • autogpt_platform/backend/backend/blocks/github/test_github_blocks.py (2 conflicts, ~13 lines)
    • autogpt_platform/backend/backend/copilot/config.py (2 conflicts, ~33 lines)
    • autogpt_platform/backend/backend/copilot/config_test.py (3 conflicts, ~155 lines)
    • autogpt_platform/backend/backend/copilot/constants.py (3 conflicts, ~74 lines)
    • autogpt_platform/backend/backend/copilot/context.py (10 conflicts, ~197 lines)
    • autogpt_platform/backend/backend/copilot/context_test.py (8 conflicts, ~133 lines)
    • autogpt_platform/backend/backend/copilot/sdk/agent_generation_guide.md (5 conflicts, ~247 lines)
    • autogpt_platform/backend/backend/copilot/sdk/e2b_file_tools.py (9 conflicts, ~219 lines)
    • autogpt_platform/backend/backend/copilot/sdk/e2b_file_tools_test.py (2 conflicts, ~111 lines)
    • autogpt_platform/backend/backend/copilot/sdk/file_ref.py (16 conflicts, ~562 lines)
    • autogpt_platform/backend/backend/copilot/sdk/file_ref_integration_test.py (10 conflicts, ~310 lines)
    • autogpt_platform/backend/backend/copilot/sdk/file_ref_test.py (8 conflicts, ~1650 lines)
    • autogpt_platform/backend/backend/copilot/sdk/mcp_tool_guide.md (2 conflicts, ~38 lines)
    • autogpt_platform/backend/backend/copilot/sdk/security_hooks.py (1 conflict, ~10 lines)
    • autogpt_platform/backend/backend/copilot/sdk/security_hooks_test.py (4 conflicts, ~511 lines)
    • autogpt_platform/backend/backend/copilot/sdk/service.py (7 conflicts, ~196 lines)
    • autogpt_platform/backend/backend/copilot/sdk/service_test.py (2 conflicts, ~58 lines)
    • autogpt_platform/backend/backend/copilot/sdk/tool_adapter.py (11 conflicts, ~181 lines)
    • autogpt_platform/backend/backend/copilot/sdk/tool_adapter_test.py (2 conflicts, ~8 lines)
    • autogpt_platform/backend/backend/copilot/service.py (1 conflict, ~10 lines)
    • autogpt_platform/backend/backend/copilot/tools/__init__.py (3 conflicts, ~16 lines)
    • autogpt_platform/backend/backend/copilot/tools/agent_generator/fixer.py (13 conflicts, ~159 lines)
    • autogpt_platform/backend/backend/copilot/tools/agent_generator/fixer_test.py (1 conflict, ~131 lines)
    • autogpt_platform/backend/backend/copilot/tools/agent_generator/helpers.py (4 conflicts, ~20 lines)
    • autogpt_platform/backend/backend/copilot/tools/agent_generator/pipeline.py (2 conflicts, ~11 lines)
    • autogpt_platform/backend/backend/copilot/tools/agent_generator/validator.py (16 conflicts, ~473 lines)
    • autogpt_platform/backend/backend/copilot/tools/agent_generator/validator_test.py (4 conflicts, ~261 lines)
    • autogpt_platform/backend/backend/copilot/tools/bash_exec.py (1 conflict, ~7 lines)
    • autogpt_platform/backend/backend/copilot/tools/continue_run_block.py (6 conflicts, ~50 lines)
    • autogpt_platform/backend/backend/copilot/tools/create_agent.py (6 conflicts, ~63 lines)
    • autogpt_platform/backend/backend/copilot/tools/create_agent_test.py (1 conflict, ~6 lines)
    • autogpt_platform/backend/backend/copilot/tools/customize_agent.py (5 conflicts, ~44 lines)
    • autogpt_platform/backend/backend/copilot/tools/customize_agent_test.py (1 conflict, ~6 lines)
    • autogpt_platform/backend/backend/copilot/tools/e2b_sandbox.py (8 conflicts, ~161 lines)
    • autogpt_platform/backend/backend/copilot/tools/e2b_sandbox_test.py (4 conflicts, ~29 lines)
    • autogpt_platform/backend/backend/copilot/tools/edit_agent.py (6 conflicts, ~62 lines)
    • autogpt_platform/backend/backend/copilot/tools/find_block.py (2 conflicts, ~15 lines)
    • autogpt_platform/backend/backend/copilot/tools/find_block_test.py (1 conflict, ~182 lines)
    • autogpt_platform/backend/backend/copilot/tools/find_library_agent.py (1 conflict, ~13 lines)
    • autogpt_platform/backend/backend/copilot/tools/fix_agent.py (4 conflicts, ~49 lines)
    • autogpt_platform/backend/backend/copilot/tools/get_agent_building_guide.py (2 conflicts, ~16 lines)
    • autogpt_platform/backend/backend/copilot/tools/get_mcp_guide.py (2 conflicts, ~14 lines)
    • autogpt_platform/backend/backend/copilot/tools/helpers.py (13 conflicts, ~743 lines)
    • autogpt_platform/backend/backend/copilot/tools/models.py (1 conflict, ~9 lines)
    • autogpt_platform/backend/backend/copilot/tools/run_block.py (5 conflicts, ~267 lines)
    • autogpt_platform/backend/backend/copilot/tools/run_block_test.py (13 conflicts, ~352 lines)
    • autogpt_platform/backend/backend/copilot/tools/run_mcp_tool.py (1 conflict, ~10 lines)
    • autogpt_platform/backend/backend/copilot/tools/test_run_block_details.py (2 conflicts, ~10 lines)
    • autogpt_platform/backend/backend/copilot/tools/validate_agent.py (4 conflicts, ~48 lines)
    • autogpt_platform/backend/backend/copilot/tools/workspace_files.py (1 conflict, ~6 lines)
    • autogpt_platform/backend/backend/data/db_accessors.py (1 conflict, ~29 lines)
    • autogpt_platform/backend/backend/data/db_manager.py (2 conflicts, ~12 lines)
    • autogpt_platform/backend/backend/data/workspace.py (1 conflict, ~77 lines)
    • autogpt_platform/backend/backend/util/clients.py (1 conflict, ~37 lines)
    • autogpt_platform/backend/backend/util/request.py (2 conflicts, ~10 lines)
    • autogpt_platform/backend/backend/util/request_test.py (1 conflict, ~5 lines)
    • autogpt_platform/backend/poetry.lock (4 conflicts, ~32 lines)
    • autogpt_platform/backend/pyproject.toml (1 conflict, ~5 lines)
    • autogpt_platform/backend/schema.prisma (1 conflict, ~10 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/components/ChatInput/ChatInput.tsx (2 conflicts, ~54 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/components/ChatMessagesContainer/ChatMessagesContainer.tsx (5 conflicts, ~176 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/components/ChatMessagesContainer/helpers.ts (4 conflicts, ~24 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/components/MobileDrawer/MobileDrawer.tsx (1 conflict, ~36 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/tools/CreateAgent/helpers.tsx (2 conflicts, ~16 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/tools/EditAgent/helpers.tsx (2 conflicts, ~16 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunBlock/helpers.tsx (1 conflict, ~5 lines)
    • autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/NewAgentLibraryView/NewAgentLibraryView.tsx (1 conflict, ~4 lines)
    • autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/NewAgentLibraryView/components/selected-views/SelectedScheduleView/SelectedScheduleView.tsx (4 conflicts, ~22 lines)
    • autogpt_platform/frontend/src/app/(platform)/library/agents/[id]/components/NewAgentLibraryView/components/sidebar/SidebarRunsList/SidebarRunsList.tsx (1 conflict, ~4 lines)
    • autogpt_platform/frontend/src/app/api/openapi.json (1 conflict, ~9 lines)
    • docs/integrations/block-integrations/llm.md (7 conflicts, ~82 lines)
  • feat(platform): add first-class org/workspace support — schema, auth, APIs, migration, frontend #12670 (ntindle · updated 24m ago)

    • .gitignore (1 conflict, ~4 lines)
    • autogpt_platform/backend/backend/api/features/chat/routes.py (6 conflicts, ~35 lines)
    • autogpt_platform/backend/backend/api/features/chat/routes_test.py (2 conflicts, ~123 lines)
    • autogpt_platform/backend/backend/api/features/v1.py (3 conflicts, ~14 lines)
    • autogpt_platform/backend/backend/api/features/workspace/routes_test.py (1 conflict, ~221 lines)
    • autogpt_platform/backend/backend/blocks/agent.py (1 conflict, ~5 lines)
    • autogpt_platform/backend/backend/copilot/baseline/service.py (2 conflicts, ~14 lines)
    • autogpt_platform/backend/backend/copilot/config.py (1 conflict, ~14 lines)
    • autogpt_platform/backend/backend/copilot/db.py (1 conflict, ~6 lines)
    • autogpt_platform/backend/backend/copilot/executor/processor.py (1 conflict, ~43 lines)
    • autogpt_platform/backend/backend/copilot/executor/utils.py (3 conflicts, ~19 lines)
    • autogpt_platform/backend/backend/copilot/model.py (4 conflicts, ~38 lines)
    • autogpt_platform/backend/backend/copilot/model_test.py (2 conflicts, ~150 lines)
    • autogpt_platform/backend/backend/copilot/prompting.py (4 conflicts, ~69 lines)
    • autogpt_platform/backend/backend/copilot/sdk/response_adapter_test.py (1 conflict, ~5 lines)
    • autogpt_platform/backend/backend/copilot/sdk/service.py (5 conflicts, ~46 lines)
    • autogpt_platform/backend/backend/copilot/sdk/service_test.py (2 conflicts, ~80 lines)
    • autogpt_platform/backend/backend/copilot/stream_registry.py (1 conflict, ~5 lines)
    • autogpt_platform/backend/backend/copilot/tools/bash_exec.py (2 conflicts, ~12 lines)
    • autogpt_platform/backend/backend/copilot/tools/run_agent.py (2 conflicts, ~27 lines)
    • autogpt_platform/backend/backend/data/credit.py (1 conflict, ~181 lines)
    • autogpt_platform/backend/backend/data/execution.py (4 conflicts, ~30 lines)
    • autogpt_platform/backend/backend/executor/utils.py (2 conflicts, ~10 lines)
    • autogpt_platform/backend/poetry.lock (4 conflicts, ~30 lines)
    • autogpt_platform/backend/schema.prisma (3 conflicts, ~81 lines)
    • autogpt_platform/frontend/pnpm-lock.yaml (1 conflict, ~5 lines)
    • autogpt_platform/frontend/src/app/(platform)/admin/layout.tsx (1 conflict, ~8 lines)
    • autogpt_platform/frontend/src/app/(platform)/build/components/FlowEditor/Flow/Flow.tsx (1 conflict, ~5 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/CopilotPage.tsx (1 conflict, ~5 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/tools/GenericTool/helpers.ts (1 conflict, ~14 lines)
    • autogpt_platform/frontend/src/app/(platform)/copilot/tools/RunAgent/components/ExecutionStartedCard/ExecutionStartedCard.tsx (1 conflict, ~29 lines)
    • autogpt_platform/frontend/src/app/api/mutators/custom-mutator.ts (1 conflict, ~9 lines)
    • autogpt_platform/frontend/src/app/api/openapi.json (6 conflicts, ~794 lines)
    • autogpt_platform/frontend/src/components/layout/Navbar/Navbar.tsx (1 conflict, ~4 lines)
  • feat(backend): tier-based workspace file storage limits #12780 (ntindle · updated 9h ago)

    • 📁 autogpt_platform/
      • backend/backend/api/features/workspace/routes_test.py (1 conflict, ~265 lines)
      • frontend/src/app/(platform)/copilot/components/UsageLimits/__tests__/UsagePanelContentRender.test.tsx (2 conflicts, ~42 lines)
      • frontend/src/app/(platform)/profile/(user)/credits/components/SubscriptionTierSection/SubscriptionTierSection.tsx (1 conflict, ~50 lines)

🟢 Low Risk — File Overlap Only

These PRs touch the same files but different sections (click to expand)

Summary: 3 conflict(s), 0 medium risk, 11 low risk (out of 14 PRs with file overlap)


Auto-generated on push. Ignores: openapi.json, lock files.

…p ordering

- file_id parameter now enforces UUID regex pattern matching share_token
- Moved delete_shared_execution_files before update_share_status to
  eliminate the window where old allowlist records + new token coexist

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comment thread autogpt_platform/backend/backend/data/execution.py
Prevents cross-workspace file exposure via crafted agent outputs.
create_shared_execution_files now validates that file IDs belong to
the execution owner's workspace before adding them to the allowlist.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comment thread autogpt_platform/frontend/src/lib/utils/download-outputs.ts
Comment thread autogpt_platform/backend/backend/data/execution.py
ntindle and others added 2 commits April 21, 2026 10:44
… messages

- Text content (combined_output.txt, unfetched_files.txt) now counted
  toward MAX_TOTAL_SIZE_BYTES aggregate zip limit
- Split ForeignKeyViolationError and UniqueViolationError into separate
  except blocks with accurate log messages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Boy Scout Rule cleanup of unused assignments from merged copilot code.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added the conflicts Automatically applied to PRs with merge conflicts label Apr 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has conflicts with the base branch, please resolve those so we can evaluate the pull request.

@github-actions github-actions Bot removed the conflicts Automatically applied to PRs with merge conflicts label Apr 21, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Conflicts have been resolved! 🎉 A maintainer will review the pull request shortly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 14fb67d. Configure here.

Prevents stale workspace file URLs when shareToken changes while
outputs remain the same.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@ntindle
ntindle added this pull request to the merge queue Apr 21, 2026
@github-project-automation github-project-automation Bot moved this from 🚧 Needs work to 👍🏼 Mergeable in AutoGPT development kanban Apr 21, 2026
Merged via the queue into dev with commit e4f291e Apr 21, 2026
45 checks passed
@ntindle
ntindle deleted the claude/share-page-logo-download-krdah branch April 21, 2026 16:41
@github-project-automation github-project-automation Bot moved this to Done in Frontend Apr 21, 2026
@github-project-automation github-project-automation Bot moved this from 👍🏼 Mergeable to ✅ Done in AutoGPT development kanban Apr 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

platform/backend AutoGPT Platform - Back end platform/frontend AutoGPT Platform - Front end size/xl

Projects

Status: ✅ Done
Status: Done

Development

Successfully merging this pull request may close these issues.

7 participants