Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
8ca02dd
segment color shader
chrisj Sep 2, 2025
aa650b2
wip
chrisj Nov 17, 2025
5d05e42
wip 2
chrisj Nov 18, 2025
23eba03
final version with option to pass property values as uniforms
chrisj Nov 19, 2025
d7b1164
always textures
chrisj Nov 19, 2025
6e5ad6d
floats working
chrisj Nov 21, 2025
077072b
custom deployment for test branch
chrisj Sep 23, 2025
dc1f295
typecheck
chrisj Nov 21, 2025
04c1907
lint fix
chrisj Nov 21, 2025
ef8b98c
invlerp mostly working
chrisj Nov 28, 2025
57dcedd
lint
chrisj Nov 28, 2025
4de5084
testing package-lock update
chrisj Nov 28, 2025
61c1566
npm install did the peer thing
chrisj Nov 28, 2025
0cf56ea
fix build errors, hack for signal test
chrisj Nov 28, 2025
8a6e0a0
rough state, moving more of the segment color calculation into the ne…
chrisj Dec 1, 2025
303172f
removing usage of uColor in mesh shader
chrisj Dec 1, 2025
2c58ec4
cleanup, moved fixed color and stated colors into SegmentColorUserSha…
chrisj Dec 2, 2025
753e87b
reverted all the old skeleton work, works far better!
chrisj Dec 2, 2025
67a7fe6
fixing alpha
chrisj Dec 2, 2025
541501c
added segmentation rendering documentation
chrisj Dec 2, 2025
70c9781
lint fix
chrisj Dec 2, 2025
f0fd449
re-added skeleton specific shader error
chrisj Dec 2, 2025
eb38c56
fix non multiscale mesh
chrisj Dec 2, 2025
b945f36
fix segment equivalences in 2d
chrisj Dec 2, 2025
13bc83a
trying out inout and moved adjustment outside of user shader
chrisj Dec 3, 2025
329f79b
fixed loss of invlerp property value on refresh
chrisj Dec 3, 2025
d6315fb
fixing bugs + cleanup, still need to find optimal events to determine…
chrisj Dec 3, 2025
e35949d
lint fix
chrisj Dec 3, 2025
aaa4e46
removing alpha from function signature
chrisj Dec 3, 2025
9fa6a96
improving invlerp control
chrisj Dec 3, 2025
e9628a2
moved SegmentColorUserShaderManager into segment_color.ts
chrisj Dec 4, 2025
09f1999
cleanup
chrisj Dec 4, 2025
762249d
invlerp tool rendering was not occuring after texture update
chrisj Dec 4, 2025
123760c
added vec3 alternative for user segment color shader
chrisj Dec 4, 2025
1569ef0
cleaning up invlerp texture creation
chrisj Dec 4, 2025
5140589
cleanup
chrisj Dec 4, 2025
718411f
refactoring
chrisj Dec 6, 2025
79f8cd6
testing + fixes
chrisj Dec 9, 2025
6b50b7b
lint
chrisj Dec 9, 2025
4db1ccf
fix for losing shader control property value on reload
chrisj Dec 9, 2025
b6e8420
removed some debugging
chrisj Dec 14, 2025
033568e
fixed skeleton
chrisj Dec 15, 2025
f5f2f58
added tests (broken)
chrisj Dec 15, 2025
22fdc82
added some details to the user segment color shader documentation
chrisj Dec 15, 2025
676a38f
partial support for segment stated colors, added "hasStated" paramete…
chrisj Jan 26, 2026
2c0d5a1
added missing calls to segmentationColorUserShader.disable
chrisj Jan 26, 2026
cbf0cbf
renamed hasStated to isStated, updated documentation
chrisj Jan 28, 2026
8936276
added stringPropertyEquals, added/fixed tests
chrisj Feb 5, 2026
36d1832
removed DWD check for build
chrisj Feb 5, 2026
fa7650b
fix for initializing segmentColorShaderControlState
chrisj Feb 6, 2026
a506e48
moving GAE deployment to a separate github action
chrisj Feb 7, 2026
3e6e5d1
restrict deploy to seunglab ng repo
chrisj Feb 7, 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
78 changes: 78 additions & 0 deletions .github/workflows/deploy_gae.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Build

on: [push, pull_request]

jobs:
build-and-deploy-gae:
if: github.repository == 'seung-lab/neuroglancer'
permissions:
contents: "read"
id-token: "write"
deployments: "write"
strategy:
matrix:
os:
- "ubuntu-latest"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
# Need full history to determine version number.
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 24.x
cache: "npm"
cache-dependency-path: |
package-lock.json
examples/**/package-lock.json
- run: npm install
- name: Typecheck with TypeScript
run: npm run typecheck
- name: Get branch name (merge)
if: github.event_name != 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/} | tr / -)" >> $GITHUB_ENV
- name: Get branch name (pull request)
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$(echo ${GITHUB_HEAD_REF} | tr / -)" >> $GITHUB_ENV
- run: echo "BRANCH_NAME_URL=$(echo ${{ env.BRANCH_NAME }} | tr / - | tr _ -)" >> $GITHUB_ENV
- name: Get build info
run: echo "BUILD_INFO={\"tag\":\"$(git describe --always --tags)\", \"url\":\"https://github.com/${{github.repository}}/commit/$(git rev-parse HEAD)\", \"timestamp\":\"$(date)\", \"branch\":\"${{github.repository}}/${{env.BRANCH_NAME}}\"}" >> $GITHUB_ENV
shell: bash
- name: Build client bundles
run: npm run build -- --no-typecheck --no-lint --define STATE_SERVERS=$(cat config/state_servers.json | tr -d " \t\n\r") --define NEUROGLANCER_BUILD_INFO='${{ env.BUILD_INFO }}' --define NEUROGLANCER_CUSTOM_INPUT_BINDINGS=$(cat config/custom-keybinds.json | tr -d " \t\n\r")
- name: Write build info
run: echo $BUILD_INFO > ./dist/client/version.json
shell: bash
- run: cp -r ./dist/client appengine/frontend/static/
- name: start deployment
uses: bobheadxi/deployments@v1
id: deployment
with:
step: start
token: ${{ secrets.GITHUB_TOKEN }}
env: ${{ env.BRANCH_NAME }}
desc: Setting up staging deployment for ${{ env.BRANCH_NAME }}
- id: "auth"
uses: "google-github-actions/auth@v1"
with:
workload_identity_provider: "projects/483670036293/locations/global/workloadIdentityPools/neuroglancer-github/providers/github"
service_account: "chris-apps-deploy@seung-lab.iam.gserviceaccount.com"
- id: deploy
uses: google-github-actions/deploy-appengine@main
with:
version: ${{ env.BRANCH_NAME_URL }}
deliverables: appengine/frontend/app.yaml
promote: false
- name: update deployment status
uses: bobheadxi/deployments@v1
if: always()
with:
step: finish
token: ${{ secrets.GITHUB_TOKEN }}
env: ${{ steps.deployment.outputs.env }}
env_url: ${{ steps.deploy.outputs.url }}
status: ${{ job.status }}
deployment_id: ${{ steps.deployment.outputs.deployment_id }}
19 changes: 19 additions & 0 deletions appengine/frontend/app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
runtime: python312

service: neuroglancer

handlers:
# Handle the main page by serving the index page.
# Note the $ to specify the end of the path, since app.yaml does prefix matching.
- url: /$
static_files: static/index.html
upload: static/index.html
login: optional
secure: always
redirect_http_response_code: 301

- url: /
static_dir: static
login: optional
secure: always
redirect_http_response_code: 301
39 changes: 39 additions & 0 deletions config/custom-keybinds.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"keym": {
"action": {
"layerType": "segmentation",
"tool": "grapheneMergeSegments",
"provider": "graphene"
}
},
"keyc": {
"action": {
"layerType": "segmentation",
"tool": "grapheneMulticutSegments",
"provider": "graphene"
}
},
"keyf": {
"action": {
"layerType": "segmentation",
"tool": "grapheneFindPath",
"provider": "graphene"
}
},
"keyx": {
"action": false
},
"control+shift+keyx": {
"action": "clear-segments"
},
"bracketleft": [
{ "action": false, "context": "sliceView" },
{ "action": false, "context": "perspectiveView" },
{ "action": "select-previous" }
],
"bracketright": [
{ "action": false, "context": "sliceView" },
{ "action": false, "context": "perspectiveView" },
{ "action": "select-next" }
]
}
6 changes: 6 additions & 0 deletions config/state_servers.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"cave": {
"url": "middleauth+https://global.daf-apis.com/nglstate/api/v1/post",
"default": true
}
}
Loading
Loading