Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
e56bd31
Update README.md
liamlaverty Feb 6, 2026
fb7974f
feat(stroke-factory): add a base renderer and tests
liamlaverty Feb 6, 2026
085769e
feat(line-render-class): add a line render class, inherits from Strok…
liamlaverty Feb 6, 2026
ba16c04
Merge pull request #9 from liamlaverty/feat/render-stroke-factory
liamlaverty Feb 6, 2026
381290f
feat(renderers): add arc renderer
liamlaverty Feb 6, 2026
9eabe99
refactor(stroke-utils): move common render utils out to a shared lib
liamlaverty Feb 6, 2026
c84f976
Merge pull request #10 from liamlaverty/feat/alternative-stroke-rende…
liamlaverty Feb 6, 2026
201c1ef
feat(renderers): add polyline renderer
liamlaverty Feb 6, 2026
761293f
feat(renderers): add circle renderer
liamlaverty Feb 6, 2026
f79d90a
Merge pull request #11 from liamlaverty/feat/alternative-stroke-rende…
liamlaverty Feb 6, 2026
b35a9c3
Merge pull request #12 from liamlaverty/feat/alternative-stroke-rende…
liamlaverty Feb 6, 2026
973944d
feat(renderers-/-splatter): adds a new splatter renderer
liamlaverty Feb 6, 2026
009e205
Merge branch 'development' into feat/alternative-stroke-renderers-spl…
liamlaverty Feb 6, 2026
7f5c336
feat(Stroke-model): extend Stroke and StrokeVMLResponse TypedDicsts t…
liamlaverty Feb 6, 2026
17d0d74
style(linting): linting
liamlaverty Feb 6, 2026
849fb3b
Merge pull request #13 from liamlaverty/feat/alternative-stroke-rende…
liamlaverty Feb 6, 2026
baa39a2
feat(canvas-manager): delegate to renderfactory instead of rendering …
liamlaverty Feb 6, 2026
6c5a1c6
Merge pull request #14 from liamlaverty/feat/multi-stroke-support
liamlaverty Feb 6, 2026
4e860ce
Merge branch 'development' into feat/canvas-manager-render-factory-impl
liamlaverty Feb 6, 2026
bce9ca5
Merge pull request #15 from liamlaverty/feat/canvas-manager-render-fa…
liamlaverty Feb 6, 2026
49595c6
feat(vlm-client): add multi-stroke query support to StrokeVLMCleint
liamlaverty Feb 6, 2026
d3309ca
Merge pull request #16 from liamlaverty/feat/allow-multi-stroke-in-query
liamlaverty Feb 6, 2026
719fe04
feat(orchestrator): add multi-stroke processing support
liamlaverty Feb 7, 2026
f84a341
Merge pull request #17 from liamlaverty/feat/update-orchestrator
liamlaverty Feb 7, 2026
3d8110b
feat(orchestrator): add multi-stroke capabilities
liamlaverty Feb 10, 2026
60dfddb
Merge pull request #18 from liamlaverty/feat/mainpy-multi-stroke
liamlaverty Feb 10, 2026
2b724ab
feat(language-model-client): add multi-provider VLM Client, instead o…
liamlaverty Feb 10, 2026
73bf178
Merge branch 'development' into feat/generic-vlm-client
liamlaverty Feb 10, 2026
906354a
refactor(VLM-Cleint): Add API key, temperature to VLM cleints
liamlaverty Feb 10, 2026
79b2e56
Merge pull request #19 from liamlaverty/feat/generic-vlm-client
liamlaverty Feb 10, 2026
ddee44e
feat(main-py): Add CLI args for running differnet VLM providers
liamlaverty Feb 11, 2026
326ed88
style(linting): linting
liamlaverty Feb 11, 2026
fc61889
Merge pull request #20 from liamlaverty/feat/multi-vlm-cli-support
liamlaverty Feb 11, 2026
0f2b854
test(vlm-client): add unit tests
liamlaverty Feb 11, 2026
d633023
test(manual-tests): update tests to use the new multi-provider VLM cl…
liamlaverty Feb 11, 2026
da0cfae
Merge pull request #21 from liamlaverty/feat/VLMClient-unit-tests
liamlaverty Feb 11, 2026
045fc00
updates readme
liamlaverty Feb 11, 2026
5e3a855
Merge pull request #22 from liamlaverty/feat/update-readme
liamlaverty Feb 11, 2026
cc32c63
feat(config): generate gif from iteration data
liamlaverty Feb 11, 2026
7960bf7
feat(git-generator): adds a gif generator to be run at the end of the…
liamlaverty Feb 11, 2026
d915fef
feat(orchestrator): add gif gen to orchestrator
liamlaverty Feb 11, 2026
e24605b
feat(generator): add gif generator to cli
liamlaverty Feb 11, 2026
646cbda
test(gif-generator): add unit tests
liamlaverty Feb 11, 2026
895859c
docs(readme): update with gif generation stuff
liamlaverty Feb 11, 2026
11c8416
Merge branch 'development' into feat/gif-generator
liamlaverty Feb 11, 2026
4e4d51c
Merge pull request #23 from liamlaverty/feat/gif-generator
liamlaverty Feb 12, 2026
604bef2
feat(orchestrator): add a metadata model for html viewer
liamlaverty Feb 12, 2026
b9bd7e2
Merge branch 'development' into feat/html-viewer
liamlaverty Feb 12, 2026
ad17269
feat(html-viewer): add a simple HTML viewer with scrobbling features
liamlaverty Feb 12, 2026
dba79e6
test(html-viewer): test correct metadata are generated, and pushed to…
liamlaverty Feb 12, 2026
f8c022c
feat(html+css): add a viewer using EtiveMor css styling
liamlaverty Feb 12, 2026
e62ad7f
feat(nextjs-app): add static generated nextjs app
liamlaverty Feb 12, 2026
722d86e
build(pre-commits,-linting,-prettier,-etc): adds them
liamlaverty Feb 12, 2026
d8b3b0c
feat(next-utils): add utils for hit detection, rng, stroke renderer, …
liamlaverty Feb 12, 2026
9446543
refactor(nextjs-app): move from relative to @ imports
liamlaverty Feb 12, 2026
9cd9a9a
feat(stroke-canvas): add a stroke canvas component
liamlaverty Feb 12, 2026
4f60ccb
feat(toolbar): add a toolbar for the canvas viewer
liamlaverty Feb 12, 2026
a6951da
build(pnpm-tools): update to include test libraries for ocmponents
liamlaverty Feb 12, 2026
6cc2c09
feat(empty-state-and-side-panel): add components and tests
liamlaverty Feb 12, 2026
54d32ab
build(gitignore): ignores copilot generated files
liamlaverty Feb 12, 2026
92f4864
feat(nextjs-app): inspector client, page, and layout updates
liamlaverty Feb 12, 2026
73b976f
feat(home,-inspector-page): add homepage with gallery and inspector page
liamlaverty Feb 12, 2026
1226482
feat(orchestrator): send data from completed runs to the orchestrator
liamlaverty Feb 12, 2026
fa114f7
fix(output-path): corrects output path so that the llm generated stuf…
liamlaverty Feb 12, 2026
b7cf9e5
fix(gallery): remove navbar, update style to show inspector on the right
liamlaverty Feb 12, 2026
04c8952
feat(inspector): create a unified navTo element
liamlaverty Feb 12, 2026
5944ced
style(linting): linting
liamlaverty Feb 12, 2026
f2f0425
feat(minify-json-objects): adds a process to minify json objects befo…
liamlaverty Feb 13, 2026
7e07af3
fix(gitignore): update gitignored files
liamlaverty Feb 13, 2026
ae4f4da
refactor(json-minifier): run after generation, as well as on commit
liamlaverty Feb 13, 2026
695caae
Merge pull request #24 from liamlaverty/feat/html-viewer
liamlaverty Feb 13, 2026
973bdfe
fix(inspector-client): correct a bug where the playback would skip ma…
liamlaverty Feb 13, 2026
1696e98
fix(canvas-clicking): re-enables canvas clicking
liamlaverty Feb 13, 2026
ad4462b
refactor(linting): linting
liamlaverty Feb 13, 2026
7341498
Merge pull request #25 from liamlaverty/feat/various-bug-fixes
liamlaverty Feb 13, 2026
6828c1f
build(gh-action-&-readme): build the app in gh
liamlaverty Feb 13, 2026
6e9d93c
feat(actions): deploy to gh pages
liamlaverty Feb 13, 2026
e7201fa
fix(tests): fix tests for toolbar
liamlaverty Feb 13, 2026
13de7d8
fix(toolbar): fix styling
liamlaverty Feb 13, 2026
79778f2
Merge branch 'main' into development
liamlaverty Feb 13, 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
6 changes: 6 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# VLM Provider ("mistral" or "lmstudio")
PROVIDER=mistral

# Mistral API key (required when PROVIDER=mistral)
# Get your key at https://admin.mistral.ai/
MISTRAL_API_KEY=your_api_key_here
78 changes: 78 additions & 0 deletions .github/workflows/build-nextjs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Build Next.js Application

on:
push:
branches:
- main
- development
paths:
- 'src/viewer/**'
- '.github/workflows/build-nextjs.yml'
pull_request:
branches:
- main
- development
paths:
- 'src/viewer/**'
- '.github/workflows/build-nextjs.yml'

jobs:
build:
runs-on: ubuntu-latest

defaults:
run:
working-directory: src/viewer

steps:
- name: Checkout code
uses: actions/checkout@v4

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

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Check formatting
run: pnpm run format:check

- name: Run linter
run: pnpm run lint

- name: Run type check
run: pnpm run type-check

- name: Run tests
run: pnpm run test

- name: Build Next.js application
run: pnpm run build

- name: Upload build artifacts
uses: actions/upload-artifact@v4
if: success()
with:
name: nextjs-build
path: src/viewer/.next
retention-days: 7
81 changes: 81 additions & 0 deletions .github/workflows/deploy-nextjs-gh-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Deploy Next.js to GitHub Pages

on:
push:
branches:
- main
paths:
- 'src/viewer/**'
- '.github/workflows/deploy-nextjs-gh-pages.yml'
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest

defaults:
run:
working-directory: src/viewer

steps:
- name: Checkout code
uses: actions/checkout@v4

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

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9.15.0

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Build Next.js application
run: pnpm run build
env:
NODE_ENV: production

- name: Add .nojekyll file
run: touch out/.nojekyll

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: src/viewer/out

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
8 changes: 4 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -182,9 +182,9 @@ cython_debug/
.abstra/

# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/

Expand Down Expand Up @@ -220,6 +220,6 @@ output/
.Trashes
ehthumbs.db
Thumbs.db
.github/copilot-instructions.md
.github/*instructions.md

test_output/
test_output/
8 changes: 8 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/sh

# Minify viewer_data.json files
echo "Minifying viewer_data.json files..."
python scripts/minify_viewer_data.py || exit 1

# Run viewer pre-commit checks
cd src/viewer && pnpm run pre-commit
Loading
Loading