Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
6325fc8
chore(ci): add TypeScript lint/test scripts and integrate path-filter…
Quenty Apr 27, 2026
adb5417
chore(format): apply prettier to pre-existing TypeScript files for CI…
Quenty Apr 27, 2026
6eb0553
chore: update pnpm lockfile and devcontainer for studio-bridge work
Quenty Apr 27, 2026
b8c48f2
feat(cli-output-helpers): add Reporter framework primitives and Resul…
Quenty Apr 27, 2026
962de23
refactor(auth): consolidate auth into nevermore-cli-helpers with cook…
Quenty Apr 27, 2026
783cc5b
feat(studio-bridge): add v2 protocol, transport, and persistent bridg…
Quenty Apr 27, 2026
eec0f3d
feat(studio-bridge): rewrite plugin template with action handlers, sc…
Quenty Apr 27, 2026
23a1e49
feat(studio-bridge): add CLI commands (sessions, exec, run, query, sc…
Quenty Apr 27, 2026
cdbb764
feat(studio-bridge): add persistent plugin manager
Quenty Apr 27, 2026
16d661a
refactor(template-helpers): add Linux fallback for rojo --plugin and …
Quenty Apr 28, 2026
0ec8953
feat(studio-bridge): add Linux/Wine support and Docker image for head…
Quenty Apr 28, 2026
11b2d5d
refactor(studio-bridge): drop v1 protocol path
Quenty Apr 28, 2026
feb5220
fix(studio-bridge): address review feedback (security, bugs, cleanup)
Quenty Apr 29, 2026
4877b92
fix(studio-bridge): correlate plugin responses via PendingRequestMap
Quenty Apr 29, 2026
53c5cd3
feat(studio-bridge): validate HostEnvelope action via zod schemas
Quenty Apr 29, 2026
682b731
test(studio-bridge): cover waitForSessionsToSettleAsync settle path
Quenty Apr 29, 2026
44d1249
chore(studio-bridge): drop unused CommandRegistry.discoverAsync
Quenty May 1, 2026
7778e73
refactor(studio-bridge,cli-output-helpers): simplify single-result CL…
Quenty May 1, 2026
9ad3700
chore(studio-bridge): emit apt manifest as Docker build artifact
Quenty May 1, 2026
c55e513
refactor(studio-bridge): use EncodingService:Base64Encode for screenshot
Quenty May 1, 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
3 changes: 2 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
"version": "22",
"pnpmVersion": "10.27.0"
},
"ghcr.io/devcontainers/features/github-cli:1": {}
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
},

"customizations": {
Expand Down
94 changes: 92 additions & 2 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,50 @@
name: linting
on: [pull_request, workflow_call]
jobs:
changes:
runs-on: ubuntu-latest
outputs:
luau: ${{ steps.filter.outputs.luau }}
ts: ${{ steps.filter.outputs.ts }}
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Detect changed paths
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
luau:
- 'src/**'
- 'games/**'
- 'plugins/**'
- '**/*.lua'
- '**/*.luau'
- '*.toml'
- '.luaurc'
- 'globalTypes.d.lua'
- 'default.project.json'
- '.github/workflows/linting.yml'
ts:
- 'tools/**/*.ts'
- 'tools/**/*.tsx'
- 'tools/**/*.js'
- 'tools/**/*.jsx'
- 'tools/**/*.cjs'
- 'tools/**/*.mjs'
- 'tools/**/package.json'
- 'tools/**/tsconfig*.json'
- 'tools/**/vitest.config.*'
- 'package.json'
- 'pnpm-lock.yaml'
- 'pnpm-workspace.yaml'
- '.prettierrc'
- '.github/workflows/linting.yml'

luau-lsp:
needs: changes
if: needs.changes.outputs.luau == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand Down Expand Up @@ -51,6 +94,8 @@ jobs:
run: nevermore tools post-lint-results lint-output.txt --linter=luau-lsp --yes

stylua:
needs: changes
if: needs.changes.outputs.luau == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand All @@ -76,6 +121,8 @@ jobs:
retention-days: 1

selene:
needs: changes
if: needs.changes.outputs.luau == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand All @@ -101,6 +148,8 @@ jobs:
retention-days: 1

moonwave:
needs: changes
if: needs.changes.outputs.luau == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand All @@ -125,10 +174,51 @@ jobs:
path: lint-output.txt
retention-days: 1

typescript:
needs: changes
if: needs.changes.outputs.ts == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Setup node
uses: actions/setup-node@v6
with:
node-version: '21'

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
cache: true

- name: Setup npm for GitHub Packages
run: |
if [ -n "$GITHUB_TOKEN" ]; then
echo -e "\n//npm.pkg.github.com/:_authToken=$GITHUB_TOKEN" >> .npmrc
echo -e "\n//npm.pkg.github.com/:_authToken=$GITHUB_TOKEN" >> ~/.npmrc
fi
if [ -n "$NPM_TOKEN" ]; then
echo -e "\n//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> .npmrc
echo -e "\n//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

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

- name: Type check (lint:ts)
run: npm run lint:ts

- name: Prettier check (lint:prettier)
run: npm run lint:prettier

lint-annotations:
needs: [changes, stylua, selene, moonwave]
if: always() && needs.changes.outputs.luau == 'true'
runs-on: ubuntu-latest
if: always()
needs: [stylua, selene, moonwave]
steps:
- name: Checkout repository
uses: actions/checkout@v6
Expand Down
Loading
Loading