Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
490b90c
Update references in README.md
andandandand Dec 6, 2025
a5541f1
Merge branch 'main' into hyperview-base
andandandand Dec 7, 2025
ae7fa49
Merge pull request #10 from HackerRoomAI/embeddings-drop-down
morozovdd Dec 8, 2025
82a0e61
Notebook startup readiness + storage backend
mnm-matin Dec 21, 2025
d0a78ff
Delete requirements.txt, pyproject.toml has the required dependencies
andandandand Dec 26, 2025
5752c8e
Merge pull request #12 from HackerRoomAI/pr/deslop-notebook-startup-2…
andandandand Dec 26, 2025
f64bfa4
Add DeepWiki badge to README
andandandand Dec 27, 2025
05ddae9
chore: ignore local artifacts
mnm-matin Jan 15, 2026
0a66aec
chore(backend): simplify typing imports
mnm-matin Jan 15, 2026
aea34ce
feat(cli): add host/no-browser flags
mnm-matin Jan 15, 2026
69cac76
fix(api): improve launch URL and server lifecycle
mnm-matin Jan 15, 2026
54a37b3
feat(storage): add embedding/selection query helpers
mnm-matin Jan 15, 2026
f0434f4
feat(server): add lasso selection endpoint
mnm-matin Jan 15, 2026
4a41540
docs: clarify dataset storage location
mnm-matin Jan 15, 2026
856c766
feat(frontend): add shadcn/ui foundation with Rerun-inspired dark theme
mnm-matin Jan 15, 2026
ece5d7f
feat(frontend): add shadcn/ui primitive components
mnm-matin Jan 15, 2026
ac578b9
feat(frontend): add Panel layout components and refactor Header
mnm-matin Jan 15, 2026
3b9bbb7
feat(frontend): replace regl-scatterplot with hyper-scatter renderer
mnm-matin Jan 15, 2026
2a419fc
feat(frontend): add server-driven lasso selection and resizable layout
mnm-matin Jan 15, 2026
25e54e2
Use npm hyper-scatter dependency
mnm-matin Jan 15, 2026
57e2029
Colab fix: update dependencies, add colab docs and notebook
mnm-matin Jan 16, 2026
8139630
fix(colab): update git clone command and improve instructions for ope…
mnm-matin Jan 16, 2026
00d1d38
fix: detect Colab as notebook environment for proper proxy URL display
mnm-matin Jan 16, 2026
cc2195d
fix: remove accidentally committed HyperView clone in notebooks
mnm-matin Jan 16, 2026
43666b9
cleanup: simplify Colab install to single pip command, remove debug code
mnm-matin Jan 16, 2026
eedc724
docs: simplify colab documentation
mnm-matin Jan 16, 2026
deeed22
feat: change default port to 6262, rebuild frontend
mnm-matin Jan 16, 2026
89211a5
Merge pull request #17 from HackerRoomAI/colab-fix
mnm-matin Jan 16, 2026
d521ba5
Refactor code structure for improved readability and maintainability
mnm-matin Jan 16, 2026
ebe133c
chore: update dependencies and fix Colab installation command
mnm-matin Jan 16, 2026
3c58784
Compute projections at launch
mnm-matin Jan 17, 2026
ebe3c56
feat: add --reuse-server option to demo and serve commands
mnm-matin Jan 17, 2026
8563aca
Merge pull request #18 from HackerRoomAI/colab-fix-2
mnm-matin Jan 17, 2026
02a06cd
Update project description in README.md
andandandand Jan 19, 2026
b8c9d3b
Refactor MemoryBackend to support embedding spaces and layouts
mnm-matin Jan 19, 2026
9d28b0b
feat: enhance layout management with new registry and response models
mnm-matin Jan 20, 2026
1849445
refactor: simplify storage layer and dataset API
mnm-matin Jan 20, 2026
ecb8cad
chore: update frontend static build
mnm-matin Jan 20, 2026
1e2ab1f
Merge pull request #19 from HackerRoomAI/multi-model
mnm-matin Jan 20, 2026
5f37789
feat: pluggable embedding provider architecture with HyCoCLIP support
mnm-matin Jan 21, 2026
ce7e7ac
refactor: code cleanup and quality improvements
mnm-matin Jan 21, 2026
281a6c9
chore: update frontend static build
mnm-matin Jan 21, 2026
7458d4d
Add GitHub Actions workflow for Devin Review
mnm-matin Jan 23, 2026
7309c51
Merge pull request #20 from HackerRoomAI/hyperbolic-clip
mnm-matin Jan 23, 2026
92d7b50
feat: dockview workspace, label legend, HF offline-first, Hyper3Labs …
mnm-matin Jan 27, 2026
b86f65f
feat: ensure dimensions are populated in API response
mnm-matin Jan 27, 2026
e741e8d
chore: auto-export frontend on commit
mnm-matin Jan 27, 2026
3f89b60
ci: require frontend export in PRs
mnm-matin Jan 27, 2026
2291a0b
revert: remove git hook automation
mnm-matin Jan 28, 2026
e0a5bc5
refactor: unify embedding providers via LanceDB registry
mnm-matin Jan 31, 2026
ad7d7e8
chore(frontend): bump version to 0.1.1
mnm-matin Jan 31, 2026
7ee24f5
ci: trigger frontend export check on push (not just PRs)
mnm-matin Jan 31, 2026
57005d5
chore: trigger workflow test
mnm-matin Jan 31, 2026
e0d1836
chore: export frontend static assets
mnm-matin Jan 31, 2026
be64ffc
ci: auto-export frontend on push
mnm-matin Jan 31, 2026
ba5ddf9
ci: use git-auto-commit-action, upgrade Next.js to 16.1.6
mnm-matin Jan 31, 2026
7d90321
Add PyPI release workflow with trusted publishing
mnm-matin Jan 31, 2026
a791a59
Fix frontend package-lock to resolve hyper-scatter from npm
mnm-matin Jan 31, 2026
9fb0dbe
Fix: include frontend static assets in sdist for wheel builds
mnm-matin Jan 31, 2026
c73eeeb
Remove require_frontend_export workflow (frontend now built in CI)
mnm-matin Jan 31, 2026
d8fde18
Fix: update Colab smoke test to download NASA images and compute real…
mnm-matin Jan 31, 2026
2f4a81e
cifar-100 colab notebook
andandandand Feb 1, 2026
9e043f3
Delete notebooks/HyperView_CLIP_HyCoCLIP_UMAP_CIFAR100.ipynb
andandandand Feb 1, 2026
bdac355
added quickstart cifar-100
andandandand Feb 1, 2026
c935e9a
Delete notebooks/quickstart_cifar_100.ipynb
andandandand Feb 1, 2026
ff41dd9
umap tutorial
andandandand Feb 1, 2026
086b063
Notebook installation guide for VSCode
andandandand Feb 1, 2026
93f4809
Update README and demo script for CIFAR-100: fix image link, adjust d…
mnm-matin Feb 1, 2026
a6dbf82
Remove unnecessary note on activation command
andandandand Feb 1, 2026
e1ecd00
Place hyper-models outside of hyperview (same level)
andandandand Feb 3, 2026
f2ebafa
Update CONTRIBUTING.md with hyper-models clone
andandandand Feb 3, 2026
04212aa
Update demo link to HuggingFace Spaces
andandandand Feb 4, 2026
c5aa668
Update CONTRIBUTING.md to include instructions for local development …
mnm-matin Feb 7, 2026
b6d754c
Update README.md to add Discord community section and recent demo eve…
mnm-matin Feb 7, 2026
65f96bc
Initial plan
Copilot Feb 16, 2026
1b3e041
Fix devin-review workflow TTY error by emulating terminal
Copilot Feb 16, 2026
4f93ea9
Improve workflow: use env block for CI variable
Copilot Feb 16, 2026
84d74eb
Merge pull request #22 from Hyper3Labs/copilot/fix-devin-review-workflow
mnm-matin Feb 16, 2026
d0a5bd1
Refine frontend panels and label color settings
mnm-matin Feb 16, 2026
bd9e948
Update screenshot asset to reflect recent UI changes
mnm-matin Feb 17, 2026
87bdb63
Enhance dataset loading: add shuffle and seed parameters for diverse …
mnm-matin Feb 19, 2026
b035d77
feat: cosmos cookoff fork baseline
mnm-matin Feb 21, 2026
353b08e
chore(deps-dev): bump ajv from 6.12.6 to 6.14.0 in /frontend
dependabot[bot] Feb 21, 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
29 changes: 29 additions & 0 deletions .github/workflows/devin-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Devin Review

on:
pull_request:
types: [opened, synchronize, reopened]

jobs:
devin-review:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Run Devin Review
# Use script to emulate a TTY as devin-review requires terminal features
# The -q flag suppresses script output, -e exits with command exit code,
# and -c runs the command. /dev/null discards script's own output.
env:
CI: true # Ensures the tool runs in non-interactive CI mode
run: |
script -q -e -c "npx devin-review ${{ github.event.pull_request.html_url }}" /dev/null
94 changes: 94 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Release

on:
push:
tags:
- "v*" # Publish on any tag starting with v, e.g., v0.1.0
workflow_dispatch:

jobs:
build:
name: Build distributions
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0 # Required for hatch-vcs

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true

# Build frontend
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: frontend/package-lock.json

- name: Build frontend
run: |
cd frontend
npm ci
npm run build
rm -rf ../src/hyperview/server/static
mkdir -p ../src/hyperview/server/static
cp -r out/* ../src/hyperview/server/static/

# Build Python package (includes frontend assets)
- name: Build
run: uv build --no-sources

# Smoke test: verify the built package can be imported
- name: Smoke test (wheel)
run: |
uv run --isolated --no-project --with dist/*.whl \
python -c "import hyperview; print(f'hyperview {hyperview.__version__}')"

- name: Smoke test (sdist)
run: |
uv run --isolated --no-project --with dist/*.tar.gz \
python -c "import hyperview; print(f'hyperview {hyperview.__version__}')"

- name: Upload dist artifacts
uses: actions/upload-artifact@v5
with:
name: python-package-distributions
path: dist/
if-no-files-found: error

pypi:
name: Publish to PyPI
needs: build
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/hyperview
permissions:
id-token: write
contents: read
steps:
- name: Download dist artifacts
uses: actions/download-artifact@v6
with:
name: python-package-distributions
path: dist/

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true

- name: Publish to PyPI
run: uv publish
51 changes: 46 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ __pycache__/
env/
venv/
.venv/
/uv.lock
*.egg-info/
.pytest_cache/
.coverage
Expand All @@ -21,11 +22,6 @@ htmlcov/
# VS Code
.vscode/

# Local Context (Agent files)
.claude/
CLAUDE.md
context/

# Generated assets
assets/demo_animation_frames/
*.gif
Expand All @@ -35,6 +31,9 @@ frontend/node_modules/
frontend/.next/
frontend/out/

# Bundled frontend in Python package (built in CI during release)
src/hyperview/server/static/

# Python package build
dist/
build/
Expand All @@ -43,3 +42,45 @@ build/
# Data cache
*.hf/
.cache/

# external repo (https://github.com/Hyper3Labs/hyper-scatter)
hyper-scatter/

# nohup
nohup.out
frontend/nohup.out

# Local logs / tool artifacts
.hyperview-*.log
.hyperview-*.pid
.playwright-mcp/
frontend/tsconfig.tsbuildinfo

# Hyperbolic model zoo (kept as a separate repo)
hyper_model_zoo/
hyper_models/
scripts_ignored/

# AI Context (Agent files)
.claude/
context/
CLAUDE.md
TASKS.md
TESTS.md
AGENTS.md
**/AGENTS.md
.github/agents/
.github/instructions/
.github/hooks/
.github/skills/
.agents/
.specstory/

# Generated version file (hatch-vcs)
src/hyperview/_version.py

# Local workspace overlays (not part of upstream HyperView fork)
cosmos-curate/
PLAN.md
TASK.md
submission/
108 changes: 108 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Contributing to HyperView

We welcome contributions! This guide will help you set up your development environment and submit high-quality pull requests.

## Development Setup

### Requirements
- **Python 3.10+**
- **uv** (Package manager)
- **Node.js** (For frontend development)

### One-time Setup
Clone the repo and install dependencies:

```bash
git clone https://github.com/Hyper3Labs/HyperView.git
cd HyperView

# Create virtual environment and install dev dependencies
uv venv .venv
source .venv/bin/activate
uv pip install -e ".[dev]"

# Install frontend dependencies
cd frontend
npm install
cd ..
```

### Optional: Co-develop `hyper-models` locally (uv workspace)

By default, HyperView installs `hyper-models` from PyPI.

If you want to develop HyperView and `hyper-models` side-by-side (without publishing `hyper-models`), you can tell **uv** to use a local checkout instead:

1) Clone `hyper-models` next to the HyperView repo (as a sibling directory):

```bash
cd ..
git clone https://github.com/Hyper3Labs/hyper-models
cd HyperView
```

2) Add the following to HyperView's `pyproject.toml` (keep this change local unless the maintainers decide otherwise):

```toml
[tool.uv.workspace]
members = ["../hyper-models"]

[tool.uv.sources]
hyper-models = { workspace = true }
```

3) Use uv's project commands (`uv run ...`, `uv sync`, etc.) so `tool.uv.sources` is respected.

## Running Locally

For the best development experience, run the backend and frontend in separate terminals.

### 1. Start the Backend
Runs the Python API server at `http://127.0.0.1:6262`.

```bash
uv run hyperview demo --samples 200 --no-browser
```

_Tip: Use `HF_DATASETS_OFFLINE=1` if you have cached datasets and want to work offline._

### 2. Start the Frontend
Runs the Next.js dev server at `http://127.0.0.1:3000` with hot reloading.

```bash
cd frontend
npm run dev
```

The frontend automatically proxies API requests (`/api/*`) to the backend.

## Common Tasks

### Testing & Linting
Please ensure all checks pass before submitting a PR.

```bash
# Python
uv run pytest # Run unit tests
uv run ruff format . # formatting
uv run ruff check . --fix # Linting

# Frontend
cd frontend
npm run lint
```

### Exporting the Frontend
The Python package bundles the compiled frontend. If you modify the frontend, you must regenerate the static assets so they can be served by the Python backend in production/demos.

```bash
bash scripts/export_frontend.sh
```
_This compiles the frontend and places artifacts into `src/hyperview/server/static/`. Do not edit files in that directory manually._

## Pull Request Guidelines

1. **Scope**: Keep changes focused. Open an issue first for major refactors or new features.
2. **Tests**: Add tests for new logic where practical.
3. **Visuals**: If changing the UI, please attach a screenshot or GIF to your PR.
4. **Format**: Ensure code is formatted with `ruff` (Python) and `prettier` (JS/TS implicit in `npm run lint`).
Loading
Loading