Skip to content

Revamp upload workflow with Git-based submission & UI polish - #16

Merged
hugokallander merged 8 commits into
RI-SCALE:mainfrom
oeway:feat/upload-git-workflow-ui-improvements
Mar 4, 2026
Merged

Revamp upload workflow with Git-based submission & UI polish#16
hugokallander merged 8 commits into
RI-SCALE:mainfrom
oeway:feat/upload-git-workflow-ui-improvements

Conversation

@oeway

@oeway oeway commented Mar 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR overhauls the contribution workflow, fixes several UI issues, and improves coverage of RI-SCALE's multi-domain scope.

Upload page — complete rewrite (Upload.tsx)

  • Removed all drag-and-drop / ZIP file upload logic (~1500 lines → ~450 lines)
  • New flow: click "Create New Artifact" → creates a git-storage artifact in ri-scale/ai-model-hub; alias is auto-derived from the model name as a clean slug
  • My Artifacts list: shows all artifacts owned by the logged-in user with expandable cards
    • Each card shows public clone URL, token generation (1 h / 24 h / 7 d / 30 d), and authenticated push URL with Git + LFS commands
  • Collapsible hypha-cli info box in the create dialog shows CLI alternative (hypha artifacts create)
  • documentation: README.md and format_version added to manifest on creation so docs tab works out-of-the-box

ArtifactDetails — fix documentation 404 (ArtifactDetails.tsx)

  • Added response.ok check before reading response body — was rendering raw S3 XML error as documentation
  • Shows a friendly "No documentation available" card with instructions to add a README.md

Homepage ordering (hyphaStore.ts)

  • Model listing now sorted by last_modified> (newest first)

Homepage hero (ArtifactGrid.tsx)

  • Rotating phrases updated to cover all RI-SCALE domains: climate downscaling, space debris detection, SAR interferometry, histopathology grading, etc.
  • Updated subtitle to mention biomedical, climate science, and space observation

Partner section (PartnerScroll.tsx)

  • Compacted: smaller logos (80 px → 48 px), reduced padding and margins, shorter title ("Our Partners")

User menu (LoginButton.tsx)

  • Removed BioEngine and Admin Dashboard links from the user dropdown

About page (About.tsx)

  • Fixed broken EU flag image (filename had spaces, causing 502 from static server)
  • Added eu-funded-flag.jpg with URL-safe filename

Seed script (scripts/seed_models.py)

  • Creates 8 information-rich representative models covering all RI-SCALE use-case areas:
    • Biomedical: Cellpose lymph node segmentation, colorectal cancer XAI, CT diffusion model
    • Climate: CNN downscaling, LSTM anomaly detection
    • Space science: space debris radar classifier, InSAR-UNet deformation mapping
    • Foundation models: BioSAM2 microscopy segmentation

CLAUDE.md

  • Added project overview file for Claude Code sessions

Test plan

  • TypeScript compiles clean (npx tsc --noEmit)
  • Production build succeeds (DISABLE_ESLINT_PLUGIN=true npm run build)
  • New artifact creation tested end-to-end (git clone → add file → git push → file accessible via Hypha API)
  • 404 documentation fix verified (checkpoint-example-tar5 now shows placeholder instead of XML error)
  • Newest-first ordering confirmed via API query with order_by=last_modified>
  • Seed models visible at https://hypha.aicell.io/ri-scale/artifacts/ai-model-hub/children
  • Live preview: https://gray-goat-cave.agent-sandbox.aicell.io

🤖 Generated with Claude Code

oeway and others added 8 commits March 4, 2026 09:49
Upload page (Upload.tsx):
- Replace drag-and-drop file upload with Git-based workflow
- Show user's own artifacts in collapsible cards with git URL + credentials
- "Create New Artifact" creates git-storage artifact in ri-scale/ai-model-hub
- Alias derived from model name (clean slug), documented in manifest
- Expandable hypha-cli info box with CLI alternative instructions
- Token generation with selectable expiry (1h/24h/7d/30d)

ArtifactDetails: fix documentation 404 showing raw S3 XML error
- Check response.ok before reading body; show friendly placeholder

ArtifactGrid: update hero to cover all RI-SCALE domains
- Rotating phrases now include climate, space debris, histopathology, SAR
- Updated subtitle to mention biomedical, climate, and space science

LoginButton: remove BioEngine and Admin Dashboard links from user menu

PartnerScroll: make partner section compact (smaller logos, less padding)

hyphaStore: sort model listing by last_modified descending (newest first)

About.tsx: fix broken EU flag image (spaces in filename → eu-funded-flag.jpg)

scripts/seed_models.py: seed 8 representative RI-SCALE models
- Biomedical: Cellpose lymph node, colorectal cancer XAI, CT diffusion
- Climate: CNN downscaling, LSTM anomaly detection
- Space: debris radar classifier, InSAR-UNet deformation
- Foundation: BioSAM2 microscopy segmentation

CLAUDE.md: add project overview for Claude Code sessions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Completely rewrites Edit.tsx (~2566 lines → ~350 lines):
- Remove Monaco editor, RDF editor, drag-and-drop upload, version dialogs
- Show collapsible GitInfoBox at top for git-storage artifacts (token
  generation + authenticated push URL + git commands with LFS setup)
- Show read-only model metadata (name, type, version, license, authors, tags)
- Show read-only file list with icons and sizes
- Show citations if present

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Without _rkwargs, the entire config object is passed as a single
positional argument instead of keyword arguments, causing the server
to receive wrong parameter types and fail with AttributeError.

Affects: artifactManager.create, artifactManager.list, server.generateToken

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Edit.tsx: add _rkwargs: true to artifactManager.read and list_files
- Upload.tsx: fix generateToken to pass dict as positional config arg
  (no _rkwargs, matches reference pattern in ws/index.html)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The original 2214x656 PNG was causing slow/broken loads in the tunnel.
Resized to 800x237 which is sufficient for 3x retina at 40px navbar height.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The /files/ endpoint returns {items: [...], total, offset, limit}.
Component was setting files to the whole object instead of .items,
causing files.length to be undefined and nothing to render.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Documents _rkwargs pattern, REST pagination, local dev setup,
tunnel management, git push remote, and asset size guidelines.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@hugokallander
hugokallander merged commit 4d43677 into RI-SCALE:main Mar 4, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants