Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
bfa8a6c
Phase 1: Add VectorStore and mmcontext.io module
May 27, 2026
8c23ee3
Phase 2: Add MMContextModule (InputModule) for ST v5.4+
May 27, 2026
6629934
Phase 3: Add AdapterModule — modality-aware projection
May 27, 2026
0851aa0
Phase 4: Add OmicsAttentionModule — optional self-attention for omics…
May 27, 2026
27169d1
update wandb version
Jun 1, 2026
c88c3a8
update wandb version
Jun 1, 2026
552a166
Phase 5: ST integration tests, input_values rename, prepare_vector_st…
Jun 1, 2026
8625d1d
Phase 6: Cleanup — archive legacy modules, update exports, add ROADMA…
Jun 1, 2026
b3dd752
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Jun 1, 2026
335505b
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 1, 2026
83a038c
basic claude.md with project overview
Jun 2, 2026
944952a
claude action worfklows for code review and implementation from issue
Jun 2, 2026
0f16498
id-token write permissions needed
Jun 2, 2026
2fc3c19
dont retrigger the event with bot comments
Jun 2, 2026
8d305d5
checkout branch first in actions
Jun 2, 2026
9a2a3fe
seperate concurrancy group for user and bot triggers
Jun 2, 2026
c8ea530
Adapt training callbacks to new MMContextModule/AdapterModule archite…
github-actions[bot] Jun 2, 2026
c5b789e
ci: add Dependabot, CodeQL, and Dependabot auto-merge
Jun 2, 2026
4301253
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 2, 2026
7f35d8d
Update Dependabot configuration for Python and Actions
mengerj Jun 2, 2026
14c8f5b
ci: bump the actions-all group with 3 updates
dependabot[bot] Jun 2, 2026
7d7a4be
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 2, 2026
be61ca0
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 2, 2026
97bb38a
extend tool use for PR reviews to enable fixing of liniting issues
Jun 2, 2026
9605251
Merge branch 'claude/security-automation' of https://github.com/menge…
Jun 2, 2026
f30d7ea
Merge pull request #51 from mengerj/claude/security-automation
mengerj Jun 2, 2026
be70f8f
Merge branch 'dev-claude' into claude/issue-50-20260602-0759
mengerj Jun 2, 2026
9823a8a
fix: resolve all pre-commit ruff errors across 6 files
github-actions[bot] Jun 2, 2026
8bbbba5
Merge branch 'dev-claude' into pre-commit-ci-update-config
mengerj Jun 2, 2026
ac4504a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 2, 2026
ce8df5d
Merge pull request #53 from mengerj/claude/issue-50-20260602-0759
mengerj Jun 2, 2026
90e8e7f
Merge branch 'dev-claude' into pre-commit-ci-update-config
mengerj Jun 2, 2026
65d61e3
Merge branch 'dev-claude' into dependabot/github_actions/dev-claude/a…
mengerj Jun 2, 2026
06464b7
fix: replace str+Enum with StrEnum for UP042 compliance
github-actions[bot] Jun 2, 2026
ee32afa
Merge pull request #31 from mengerj/pre-commit-ci-update-config
mengerj Jun 2, 2026
522ffc2
Merge branch 'dev-claude' into dependabot/github_actions/dev-claude/a…
mengerj Jun 2, 2026
b3bf637
only trigger claude manually, no autoreview of PRs
Jun 2, 2026
d0268b4
Merge branch 'dev-claude' of https://github.com/mengerj/mmcontext int…
Jun 2, 2026
7dc2c59
Merge branch 'dev-claude' into dependabot/github_actions/dev-claude/a…
mengerj Jun 2, 2026
d537538
Merge pull request #52 from mengerj/dependabot/github_actions/dev-cla…
mengerj Jun 2, 2026
c8a6a98
extend claude reasoning output in actions tab
Jun 2, 2026
6a251f2
Merge branch 'dev-claude' of https://github.com/mengerj/mmcontext int…
Jun 2, 2026
7b538d5
remove some commands
Jun 3, 2026
7d16010
only trigger action with comment in issue
Jun 3, 2026
10f920a
feat: include hard negatives in train_tiny.py training script
github-actions[bot] Jun 3, 2026
c60cad1
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 3, 2026
efb0fbd
let test workflow also run on dev-claude brnach
Jun 3, 2026
56190a6
Merge branch 'dev-claude' into claude/issue-54-20260603-0711
mengerj Jun 3, 2026
cc86609
fix: replace deprecated no_cuda with use_cpu in training tests
github-actions[bot] Jun 3, 2026
26821b1
Merge pull request #55 from mengerj/claude/issue-54-20260603-0711
mengerj Jun 3, 2026
ad5edd6
Add top-N layer freezing and bf16 (MPS) support to train_tiny
Jun 3, 2026
e165c5e
enable freezing all but last layers of text encoder and allow bf16 fo…
Jun 3, 2026
25bf1b6
let download adatause the same hash url as the new vector store method
Jun 3, 2026
17913ad
unify dataset preparation for training and infernece scenarios. Inclu…
Jun 3, 2026
36d3fc0
include updated dataset prepapation into training script and eval not…
Jun 3, 2026
942f9f0
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 3, 2026
0e642cf
Merge branch 'dev-claude' into claude/freeze-top-layers-bf16
mengerj Jun 3, 2026
469d25a
Merge pull request #56 from mengerj/claude/freeze-top-layers-bf16
mengerj Jun 3, 2026
9c2b204
Merge branch 'dev-claude' into generalize-prepare-ds
mengerj Jun 3, 2026
fd2f0d8
fix: rewrite dict() call as literal to fix ruff C408
github-actions[bot] Jun 3, 2026
9aeb659
Merge pull request #57 from mengerj/generalize-prepare-ds
mengerj Jun 3, 2026
9ac01a3
script to finetune a finished model with hard negatives
Jun 8, 2026
e223b87
Merge pull request #58 from mengerj/finetune_hardnegatives
mengerj Jun 8, 2026
8efbdef
WIP: training script, pipeline, mining, store improvements
Jun 10, 2026
7c88911
Lean zarr/h5ad loaders: read only obs + requested obsm layer (Fixes #61)
Jun 10, 2026
8d7b040
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 10, 2026
3d8c095
Merge pull request #62 from mengerj/claude/61-zarr-lazy-loaders
mengerj Jun 10, 2026
e2d0fc3
ci: bump the actions-all group across 1 directory with 5 updates
dependabot[bot] Jun 15, 2026
2083539
[pre-commit.ci] pre-commit autoupdate
pre-commit-ci[bot] Jun 15, 2026
ba43225
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 15, 2026
512125c
Merge pull request #60 from mengerj/pre-commit-ci-update-config
mengerj Jun 17, 2026
b0dc7ef
Merge pull request #59 from mengerj/dependabot/github_actions/dev-cla…
mengerj Jun 17, 2026
482a04f
ensure lean parameter for efficient dataset loading is used in datase…
Jun 17, 2026
e20ffd0
adapt training script to allow fine-tuning models with hard negative …
Jun 17, 2026
8abac7c
remove adata_hf_datasets dependancy
Jun 17, 2026
7fd3638
Merge branch 'dev-claude' of https://github.com/mengerj/mmcontext int…
Jun 17, 2026
20bb13a
chore: v2.0 release cleanup — remove multi-model logic, update deps
Jun 17, 2026
5f37100
restore some falsly deleted modules
Jun 18, 2026
6d64172
pump zarr and anndata versions
Jun 18, 2026
6db40f3
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 18, 2026
643440a
fix: pre-release compatibility — zarr 3.x and pandas 3.x
github-actions[bot] Jun 18, 2026
b0ba205
fix missing import
Jun 18, 2026
5a85771
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 18, 2026
7607dd1
Merge pull request #63 from mengerj/claude/release-2.0-cleanup
mengerj Jun 18, 2026
dbac4bf
Potential fix for pull request finding 'CodeQL / Incomplete URL subst…
mengerj Jun 19, 2026
cefa85d
Potential fix for pull request finding 'CodeQL / Unused import'
mengerj Jun 19, 2026
4c5a1f9
Potential fix for pull request finding 'CodeQL / Unused import'
mengerj Jun 19, 2026
792a4b5
Potential fix for pull request finding 'CodeQL / Unused import'
mengerj Jun 19, 2026
72be42e
Potential fix for pull request finding 'CodeQL / Unused import'
mengerj Jun 19, 2026
f9ddfd7
Potential fix for pull request finding 'CodeQL / Unused import'
mengerj Jun 19, 2026
62e2113
Potential fix for pull request finding 'CodeQL / Unused import'
mengerj Jun 19, 2026
9579a96
Potential fix for pull request finding 'CodeQL / Unused import'
mengerj Jun 19, 2026
708ebd4
Merge branch 'main' into dev-claude
mengerj Jun 24, 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
52 changes: 52 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Dependabot configuration for mmcontext
# Docs: https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
#
# Security updates (PRs that fix Dependabot *alerts*) are enabled separately in
# Settings -> Code security and obey target-branch below. This file additionally
# enables proactive *version* updates on a schedule, grouped to reduce PR noise.
version: 2
updates:
# Python dependencies declared in pyproject.toml
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
# PRs target the integration branch, never main, per the project branch strategy.
target-branch: "dev-claude"
open-pull-requests-limit: 5
labels:
- "dependencies"
commit-message:
prefix: "deps"
# One grouped PR for routine minor/patch bumps instead of one PR per package.
groups:
python-minor-patch:
update-types:
- "minor"
- "patch"
# Heavy, tightly version-pinned core libs: keep these as individual PRs so a
# major bump (e.g. torch, transformers) is reviewed in isolation.
ignore:
- dependency-name: "torch"
update-types: ["version-update:semver-major"]
- dependency-name: "sentence-transformers"
update-types: ["version-update:semver-major"]

# GitHub Actions used in .github/workflows/*
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
target-branch: "dev-claude"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "ci"
groups:
actions-all:
patterns:
- "*"
4 changes: 2 additions & 2 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ jobs:
package:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Set up Python 3.12
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install build dependencies
Expand Down
61 changes: 61 additions & 0 deletions .github/workflows/claude-implement.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Claude Code Implement

on:
issue_comment:
types: [created]

permissions:
contents: write
pull-requests: write
issues: write
actions: read
id-token: write

concurrency:
group: ${{ github.workflow }}-${{ github.event.issue.number }}-${{ github.actor }}
cancel-in-progress: true

jobs:
implement:
# Trigger on @claude mentions in issue comments — only by repo owner, ignore bots
if: >
github.actor == 'mengerj' &&
github.event.sender.type != 'Bot' &&
!github.event.issue.pull_request &&
contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
ref: dev-claude
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
id: claude
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
show_full_output: true
base_branch: dev-claude
additional_permissions: |
actions: read
claude_args: |
--allowedTools "Bash,Read,Write,Edit,Glob,Grep,Task,WebSearch,WebFetch"
--max-turns 30
--output-format stream-json
# The CLAUDE.md in the repo root provides the plan-first protocol,
# branch naming conventions, and PR linking instructions.
# Claude reads it automatically on checkout.

- name: Archive Claude session log
if: always()
run: |
mkdir -p claude-logs
echo '${{ steps.claude.outputs.result }}' > claude-logs/session.json
shell: bash

- name: Upload session log
if: always()
uses: actions/upload-artifact@v7
with:
name: claude-implement-issue${{ github.event.issue.number }}-${{ github.run_number }}
path: claude-logs/
retention-days: 30
56 changes: 56 additions & 0 deletions .github/workflows/claude-review.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Claude Code Review

on:
issue_comment:
types: [created]

permissions:
contents: write
pull-requests: write
issues: write
actions: read
id-token: write

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.event.issue.number }}-${{ github.actor }}
cancel-in-progress: true

jobs:
review:
# Respond to @claude in PR comments (owner only, ignore bots)
if: >
github.event.sender.type != 'Bot' &&
github.actor == 'mengerj' &&
github.event.issue.pull_request &&
contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
id: claude
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
show_full_output: true
additional_permissions: |
actions: read
claude_args: |
--allowedTools "Bash,Read,Write,Edit,Glob,Grep,Task"
--max-turns 30
--output-format stream-json

- name: Archive Claude session log
if: always()
run: |
mkdir -p claude-logs
echo '${{ steps.claude.outputs.result }}' > claude-logs/session.json
shell: bash

- name: Upload session log
if: always()
uses: actions/upload-artifact@v7
with:
name: claude-review-pr${{ github.event.pull_request.number || github.event.issue.number }}-${{ github.run_number }}
path: claude-logs/
retention-days: 30
43 changes: 43 additions & 0 deletions .github/workflows/codeql.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: CodeQL

# Semantic code scanning for Python. Findings appear under the repo's
# Security -> Code scanning tab and as PR annotations.
# Docs: https://docs.github.com/code-security/code-scanning

on:
push:
branches: [main, dev-claude]
pull_request:
branches: [main, dev-claude]
schedule:
# Weekly full scan (Mondays 06:00 UTC) to catch newly-disclosed query updates.
- cron: "0 6 * * 1"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
analyze:
name: Analyze (python)
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: python
# security-and-quality adds maintainability/quality queries on top of
# the default security set. Drop to "security-extended" if too noisy.
queries: security-and-quality

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:python"
36 changes: 36 additions & 0 deletions .github/workflows/dependabot-auto-merge.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Dependabot auto-merge

# Auto-approves and enables auto-merge for low-risk Dependabot PRs (patch/minor,
# including security updates). GitHub still waits for all required status checks
# (tests, CodeQL) to pass before the merge actually happens.
#
# Prerequisites (one-time, in repo Settings):
# - "Allow auto-merge" enabled (Settings -> General -> Pull Requests)
# - Branch protection on dev-claude requiring the Test + CodeQL checks
# Docs: https://docs.github.com/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions

on: pull_request

permissions:
contents: write
pull-requests: write

jobs:
auto-merge:
runs-on: ubuntu-latest
if: github.actor == 'dependabot[bot]'
steps:
- name: Fetch Dependabot metadata
id: meta
uses: dependabot/fetch-metadata@v3
with:
github-token: "${{ secrets.GITHUB_TOKEN }}"

- name: Enable auto-merge for patch/minor updates
if: steps.meta.outputs.update-type == 'version-update:semver-patch' || steps.meta.outputs.update-type == 'version-update:semver-minor'
run: |
gh pr review --approve "$PR_URL"
gh pr merge --auto --squash "$PR_URL"
env:
PR_URL: ${{ github.event.pull_request.html_url }}
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4 changes: 2 additions & 2 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ jobs:
permissions:
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
filter: blob:none
fetch-depth: 0
- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: "3.x"
cache: "pip"
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Test

on:
push:
branches: [main]
branches: [main, dev-claude]
pull_request:
branches: [main]
branches: [main, dev-claude]
schedule:
- cron: "0 5 1,15 * *"

Expand Down Expand Up @@ -41,7 +41,7 @@ jobs:
PYTHON: ${{ matrix.python }}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6

- name: Free up disk space
run: |
Expand All @@ -52,7 +52,7 @@ jobs:
sudo rm -rf /usr/local/lib/android

- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}

Expand All @@ -77,4 +77,4 @@ jobs:
run: |
coverage report
- name: Upload coverage
uses: codecov/codecov-action@v3
uses: codecov/codecov-action@v7
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,4 @@ modules/.calmate/cache/
cache/

mmcontext_out/
tutorials/outputs/
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@ repos:
hooks:
- id: prettier
- repo: https://github.com/tox-dev/pyproject-fmt
rev: "v2.5.0"
rev: "v2.24.1"
hooks:
- id: pyproject-fmt
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.3
rev: v0.15.17
hooks:
- id: ruff
types_or: [python, pyi, jupyter]
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
types_or: [python, pyi, jupyter]
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
- id: detect-private-key
- id: check-ast
Expand Down
Loading
Loading