Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
186c3c8
feat: Add Story 1.1 - Foundation Core Package Setup
codekiln Sep 20, 2025
2b22f40
feat(core): implement LiveSet abstraction and core utilities
codekiln Sep 20, 2025
79d8337
docs(story): update Story 1.1 with implementation progress
codekiln Sep 20, 2025
6e3b193
docs(story): document dev container environment issue
codekiln Sep 20, 2025
60e43d6
fix(devcontainer): resolve pnpm permission conflicts
codekiln Sep 20, 2025
3a12b32
fix(core): resolve MIDI utility test failures and update story progress
codekiln Sep 20, 2025
c15e1fe
fix(devcontainer): resolve pnpm permission issues with Docker volume …
codekiln Sep 20, 2025
b158217
feat(story-1.1): complete Foundation Core Package Setup
codekiln Sep 20, 2025
a261ff6
QA Review: Story 1.1 Foundation Core Package Setup
codekiln Sep 20, 2025
76cc741
feat: Complete manual testing fixtures setup and improve test coverage
codekiln Sep 20, 2025
beaa443
docs: update manual testing fixtures brief for Turborepo-based approach
codekiln Sep 20, 2025
2a77c4e
feat: improve test coverage to 80.76% and update story status
codekiln Sep 20, 2025
490fb72
feat: add manual test fixtures to pnpm workspace
codekiln Sep 20, 2025
830d965
feat: complete LiveSet basic manual test fixture
codekiln Sep 20, 2025
53e0822
feat: add MIDI Utils and Observable Helper manual test fixtures
codekiln Sep 20, 2025
d900d22
chore: update pnpm lockfile and add bundle test script
codekiln Sep 20, 2025
6e0602d
feat: complete all manual test fixtures with real @alits/core integra…
codekiln Sep 20, 2025
f282571
docs: update Story 1.1 status to Ready for Done
codekiln Sep 20, 2025
9f9934f
docs: correct Story 1.1 status - manual testing still required
codekiln Sep 20, 2025
8ef7d51
docs: clarify AI vs Human responsibilities in Max for Live test fixtures
codekiln Sep 20, 2025
d3415c1
Fix Max 8 compatibility issues for manual testing
codekiln Sep 20, 2025
caaa087
Document human-AI collaboration and systematic debugging workflows
codekiln Sep 21, 2025
72a75a6
Fix Max 8 build to include RxJS support
codekiln Sep 21, 2025
37d6eaa
Create comprehensive Max 8 JavaScript global methods research and tes…
codekiln Sep 21, 2025
c65e0ca
Standardize manual test fixture structure per brief requirements
codekiln Sep 21, 2025
3e664fa
Move manual test fixture standards to canonical docs location
codekiln Sep 21, 2025
c3a4489
Update Max 8 JavaScript global methods research to use official docum…
codekiln Sep 21, 2025
2823f26
Add comprehensive documentation for Max for Live development workflow
codekiln Sep 21, 2025
d50775d
Fix Max 8 JavaScript research to avoid assumptions about standard met…
codekiln Sep 21, 2025
7d6d57e
Improve Max 8 JavaScript research wording for evidence-based approach
codekiln Sep 21, 2025
80418df
docs: update for max 8
codekiln Sep 21, 2025
3b4402c
Simplify Rollup config to single non-minified build with RxJS
codekiln Sep 22, 2025
ead0c1a
docs: Create build tools standards document
codekiln Sep 22, 2025
9af0ca7
cleanup: Remove unused es6-promise dependency
codekiln Sep 22, 2025
36d16ed
cleanup: Remove legacy manual test structure and update documentation
codekiln Sep 22, 2025
428bacd
📚 docs: update project to use Conventional Emoji Commits specification
codekiln Sep 22, 2025
d1a8bc2
♻️ refactor(docs): update manual testing fixture references to standa…
codekiln Sep 22, 2025
13a6c5a
📚 docs: create Story 1.2 with AI-friendly emoji mapping approach
codekiln Sep 22, 2025
8849f87
🗑️ chore: remove unused current-task.mdc file
codekiln Sep 22, 2025
15c1b4b
🩹 fix(kebricide): correct require path for Max/MSP compatibility
codekiln Sep 22, 2025
ff1dd21
🧹 chore: remove duplicate documentation and test folders
codekiln Sep 23, 2025
1f67b53
📚 docs: add AI agent git workflow best practices
codekiln Sep 23, 2025
abb41e3
🧹 cleanup: remove outdated manual testing artifacts
codekiln Sep 23, 2025
a3b657a
✨ feat: add clean scripts to manual test fixtures
codekiln Sep 23, 2025
6214063
📚 docs: update AGENTS.md with git best practices
codekiln Sep 23, 2025
c40bdd4
📚 docs: move git best practices to root AGENTS.md
codekiln Sep 23, 2025
a7f350c
📚 docs: add link to detailed git staging practices
codekiln Sep 23, 2025
dcf018b
✨ feat(dev): add Ableton Live Git configuration with dev container au…
codekiln Sep 23, 2025
eabfc1e
📚 docs: add Ableton file types documentation and remove duplicate script
codekiln Sep 23, 2025
d006205
🧪 test: add LiveSetBasicTest manual test fixture
codekiln Sep 23, 2025
c1163c1
📦 deps: update global-methods-test package configuration
codekiln Sep 23, 2025
99c0707
feat: add kebricide tester
codekiln Sep 24, 2025
232dd60
📚 docs: comprehensive analysis of maxmsp-ts TypeScript compilation wo…
codekiln Sep 24, 2025
023d1ce
🩹 fix(kebricide): resolve TypeScript compilation issues for Max for Live
codekiln Sep 24, 2025
4ae3cd0
✨ feat(alits-core): ensure greet function is properly exported for Ma…
codekiln Sep 24, 2025
45001cc
✨ feat(alits-core): add TypeScript definitions for Max for Live compa…
codekiln Sep 24, 2025
1b0e7d3
🧪 test(alits-core): add manual test fixtures for LiveSet functionality
codekiln Sep 24, 2025
24e540a
📚 docs: update AGENTS.md with manual testing guidance
codekiln Sep 24, 2025
33cb9cb
chore: update .als files
codekiln Sep 24, 2025
e9ee974
🩹 fix(story): add Promise polyfill integration task to Story 1.1
codekiln Sep 25, 2025
d2e8ab9
📚 docs: update manual testing fixtures documentation
codekiln Sep 25, 2025
3945e92
🩹 fix: add .idea directory to gitignore
codekiln Sep 25, 2025
53bb388
🏗️ feat(arch): add comprehensive Promise polyfill architectural proposal
codekiln Sep 25, 2025
19f72fa
🔧 feat(test): enhance global-methods-test fixture requirements
codekiln Sep 25, 2025
3cb9ae8
🩹 fix(docs): correct invalid Max 8 polyfill examples
codekiln Sep 25, 2025
7e01b76
🎯 feat(plan): prioritize global-methods-test fixture as immediate nex…
codekiln Sep 25, 2025
f30b65e
🏗️ feat(story-1.1): design TypeScript transform pipeline for Max 8 co…
codekiln Sep 25, 2025
c6eabc0
🔄 refactor(story-1.1): move GlobalMethodsTest fixture to maxmsp-test app
codekiln Sep 27, 2025
4453fa7
📚 docs(story-1.1): clarify architectural approach from commit f30b65e
codekiln Sep 27, 2025
a4ba133
✨ feat(story-1.1): implement Promise polyfill transformer for Max 8 c…
codekiln Sep 27, 2025
3615b84
🎯 fix(story-1.1): solve Promise polyfill compilation without es2015.p…
codekiln Sep 27, 2025
d3d6625
🔧 fix(maxmsp-test): compile JS files to Patchers directory for Max fo…
codekiln Sep 27, 2025
83d704e
📚 docs(story-1.1): mark Task 8 as completed and add critical file saf…
codekiln Sep 27, 2025
f2a58e6
📚 docs(agents): update Max for Live TypeScript compilation with Promi…
codekiln Sep 27, 2025
db12139
🔄 fix(story-1.1): correct Task 8 status to READY FOR MANUAL VERIFICATION
codekiln Sep 27, 2025
ae77556
📚 docs: add Max/MSP JavaScript environment analysis brief
codekiln Sep 27, 2025
9909be2
📚 docs: clarify maxmsp-test app purpose and testing environment
codekiln Sep 27, 2025
7693ac8
feat: update GlobalMethodsTest
codekiln Sep 27, 2025
ff5abda
🧹 cleanup: remove vestigial GlobalMethodsTest from packages/alits-cor…
codekiln Sep 27, 2025
7ffbd54
chore: update global methods test
codekiln Sep 27, 2025
443fd9d
📚 docs: document MaxMSP TypeScript transform development progress
codekiln Sep 28, 2025
ecbcd4f
docs: add CLAUDE.md
codekiln Sep 28, 2025
53f4eda
chore: update dev container with claude code config
codekiln Oct 2, 2025
e6bdcd4
chore: remove outdated docker assets
codekiln Oct 2, 2025
350f9a6
chore: update post create command
codekiln Oct 2, 2025
9d56e0b
chore: add devcontainer git attrs
codekiln Oct 2, 2025
650ea93
✨ feat(maxmsp-ts-transform): add Iterator polyfill for async/await su…
codekiln Oct 2, 2025
5fa82ba
🩹 fix(core): correct EDT timezone offset in LiveSetBasicTest
codekiln Oct 2, 2025
fcfd1e3
🔨 build: rebuild test fixtures with Iterator polyfill
codekiln Oct 2, 2025
5d94cc2
📝 docs(story): update Story 1.1 with async/await completion and new t…
codekiln Oct 3, 2025
744aa4f
Merge pull request #103 from codekiln/feature/task8-implement-promise…
codekiln Oct 3, 2025
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
8 changes: 0 additions & 8 deletions .cursor/rules/current-task.mdc

This file was deleted.

145 changes: 145 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/typescript-node/.devcontainer/base.Dockerfile

# [Choice] Node.js version: 16, 18, 20, 22
# bookworm has ARM support
ARG VARIANT="22-bookworm"
FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:${VARIANT} AS base

# add verbosity
ENV DEBIAN_FRONTEND=noninteractive

# https://blog.hyperknot.com/p/corepacks-packagemanager-field
# https://github.com/nodejs/corepack/issues/485
ENV COREPACK_ENABLE_AUTO_PIN=0

# https://turbo.build/repo/docs/telemetry
ENV TURBO_TELEMETRY_DISABLED=

# https://consoledonottrack.com/
ENV DO_NOT_TRACK=1

# ---------------------FROM CLAUDE CODE DEVCONTAINER---------------------
# source: https://github.com/anthropics/claude-code/blob/main/.devcontainer/Dockerfile#L3-L82
ARG TZ
ENV TZ="$TZ"

ARG CLAUDE_CODE_VERSION=latest

# Install basic development tools and iptables/ipset
RUN apt-get update && apt-get install -y --no-install-recommends \
less \
git \
procps \
sudo \
fzf \
zsh \
man-db \
unzip \
gnupg2 \
gh \
iptables \
ipset \
iproute2 \
dnsutils \
aggregate \
jq \
nano \
vim \
&& apt-get clean && rm -rf /var/lib/apt/lists/*

# Ensure default node user has access to /usr/local/share
RUN mkdir -p /usr/local/share/npm-global && \
chown -R node:node /usr/local/share

ARG USERNAME=node

# Persist bash history.
RUN SNIPPET="export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
&& mkdir /commandhistory \
&& touch /commandhistory/.bash_history \
&& chown -R $USERNAME /commandhistory

# Set `DEVCONTAINER` environment variable to help with orientation
ENV DEVCONTAINER=true

# Create workspace and config directories and set permissions
RUN mkdir -p /workspace /home/node/.claude && \
chown -R node:node /workspace /home/node/.claude

WORKDIR /workspace

ARG GIT_DELTA_VERSION=0.18.2
RUN ARCH=$(dpkg --print-architecture) && \
wget "https://github.com/dandavison/delta/releases/download/${GIT_DELTA_VERSION}/git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb" && \
sudo dpkg -i "git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb" && \
rm "git-delta_${GIT_DELTA_VERSION}_${ARCH}.deb"

# Set up non-root user
USER node

# Install global packages
ENV NPM_CONFIG_PREFIX=/usr/local/share/npm-global
ENV PATH=$PATH:/usr/local/share/npm-global/bin

# Set the default shell to zsh rather than sh
ENV SHELL=/bin/zsh

# Set the default editor and visual
ENV EDITOR=nano
ENV VISUAL=nano

# Default powerline10k theme
ARG ZSH_IN_DOCKER_VERSION=1.2.0
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v${ZSH_IN_DOCKER_VERSION}/zsh-in-docker.sh)" -- \
-p git \
-p fzf \
-a "source /usr/share/doc/fzf/examples/key-bindings.zsh" \
-a "source /usr/share/doc/fzf/examples/completion.zsh" \
-a "export PROMPT_COMMAND='history -a' && export HISTFILE=/commandhistory/.bash_history" \
-x

# Install Claude
RUN npm install -g @anthropic-ai/claude-code@${CLAUDE_CODE_VERSION}

RUN echo ">>> done installing claude code"

# ---------------------PNPM---------------------

ENV PNPM_HOME=/home/node/.pnpm
ENV PATH=$PNPM_HOME:$PATH

USER root
RUN whoami && id && ls -ld /usr/local && ls -ld /usr/local/pnpm || echo "no /usr/local/pnpm yet"
RUN mkdir -p $PNPM_HOME && chown -R node:node $PNPM_HOME /workspace
USER node


# necessary because of https://github.com/nodejs/corepack/issues/612
# https://github.com/npm/cli/issues/8075#issuecomment-2628545611
RUN npm install -g corepack@latest --force
RUN corepack --version
RUN corepack enable
RUN node -v
RUN echo ">>> done installing node"

RUN corepack use pnpm@latest
RUN corepack enable pnpm

# Configure pnpm
RUN pnpm config set store-dir $PNPM_HOME

COPY --chown=node:node . /workspace
WORKDIR /workspace

# Install dependencies with BuildKit cache mount for better performance
# Use cache mount aligned with pnpm store
RUN --mount=type=cache,id=pnpm,target=/home/node/.pnpm/store \
pnpm install --no-frozen-lockfile

# Configure Git for Ableton Live files during build
RUN if [ -f "scripts/setup-ableton-git.sh" ]; then \
chmod +x scripts/setup-ableton-git.sh && \
./scripts/setup-ableton-git.sh --global; \
fi

CMD ["sleep", "infinity"]
51 changes: 46 additions & 5 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,19 +1,60 @@
{
"name": "Dev Container for node - alits",
"dockerComposeFile": "../docker-compose.yml",
// "dockerComposeFile": "../docker-compose.yml",
// "shutdownAction": "stopCompose",
"build": {
"dockerfile": "Dockerfile",
"args": {
"TZ": "${localEnv:TZ:America/New_York}",
"CLAUDE_CODE_VERSION": "latest",
"GIT_DELTA_VERSION": "0.18.2",
"ZSH_IN_DOCKER_VERSION": "1.2.0"
}
},
"service": "node",
"workspaceFolder": "/app",
"shutdownAction": "stopCompose",
"postCreateCommand": ".devcontainer/scripts/postCreateCommand.sh",
"postStartCommand": ".devcontainer/scripts/postStartCommand.sh",
"customizations": {
"vscode": {
"extensions": [
"anthropic.claude-code",
"bs-code.git-quick-stage",
"eamodio.gitlens",
"esbenp.prettier-vscode",
"github.vscode-pull-request-github",
"ms-azuretools.vscode-docker",
"ms-vscode.makefile-tools",
"rvest.vs-code-prettier-eslint"
]
],
"settings": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"terminal.integrated.defaultProfile.linux": "zsh",
"terminal.integrated.profiles.linux": {
"bash": {
"path": "bash",
"icon": "terminal-bash"
},
"zsh": {
"path": "zsh"
}
}
}
}
}
},
"remoteUser": "node",
"mounts": [
"source=claude-code-bashhistory-${devcontainerId},target=/commandhistory,type=volume",
"source=claude-code-config-${devcontainerId},target=/home/node/.claude,type=volume"
],
"containerEnv": {
"NODE_OPTIONS": "--max-old-space-size=4096",
"CLAUDE_CONFIG_DIR": "/home/node/.claude",
"POWERLEVEL9K_DISABLE_GITSTATUS": "true"
},
"workspaceMount": "source=${localWorkspaceFolder},target=/workspace,type=bind,consistency=delegated",
"workspaceFolder": "/workspace"
}
21 changes: 18 additions & 3 deletions .devcontainer/scripts/postCreateCommand.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,19 @@
#!/bin/bash
# postCreateCommand.sh
corepack install
pnpm config set store-dir $PNPM_HOME
pnpm install
set -e

echo "🚀 Post-create setup (most setup is done in Dockerfile)..."

# Only run if we need to refresh dependencies or fix permissions
if [ ! -d "node_modules" ] || [ ! -w "$PNPM_HOME" ]; then
echo "🔧 Refreshing dependencies and permissions..."
pnpm install --frozen-lockfile
fi

# ADD THIS BLOCK to ensure filters are configured GLOBALLY for the 'node' user
echo "🔧 Configuring Ableton Git filters globally for 'node' user..."
if [ -f "scripts/setup-ableton-git.sh" ]; then
./scripts/setup-ableton-git.sh --global
fi

echo "✅ Post-create setup complete!"
17 changes: 15 additions & 2 deletions .devcontainer/scripts/postStartCommand.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,16 @@
#!/bin/bash
# postStartCommand.sh
pnpm config set store-dir $PNPM_HOME
pnpm install
set -e

echo "🔄 Post-start verification..."

# Quick verification that everything is still working
if [ -f "scripts/setup-ableton-git.sh" ]; then
echo "🔍 Verifying Ableton Git configuration..."
./scripts/setup-ableton-git.sh --verify > /dev/null 2>&1 || {
echo "⚠️ Ableton Git configuration needs refresh, reconfiguring..."
./scripts/setup-ableton-git.sh --global
}
fi

echo "✅ Development environment ready!"
14 changes: 1 addition & 13 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,14 +1,2 @@
# Ignore node_modules directory
node_modules

# Ignore log files
*.log

# Ignore environment files
.env

# Ignore Git repository files
# .git/

# Ignore yarn cache
.yarn-cache
.DS_Store
58 changes: 58 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Ableton Live File Types - Git Attributes Configuration
# Based on analysis of Ableton file formats and their suitability for version control

# =============================================================================
# GZIPPED XML FILES - Use gzip filter for readable diffs
# =============================================================================

# Live Sets (main project files)
*.als filter=gzip diff=gzip text

# Live Clips (saved audio/MIDI clips with device chains)
*.alc filter=gzip diff=gzip text

# Device Groups (rack presets)
*.adg filter=gzip diff=gzip text

# Device Presets (single instrument/effect presets)
*.adv filter=gzip diff=gzip text

# =============================================================================
# MAX FOR LIVE DEVICES - Strip binary header for JSON diffs
# =============================================================================

# Max for Live devices (JSON with binary header)
*.amxd filter=amxd-strip diff=amxd-strip text

# =============================================================================
# PLAIN TEXT FILES - Direct Git handling
# =============================================================================

# Live Skins (UI color themes)
*.ask text

# =============================================================================
# BINARY FILES - Store as binary (no diffs)
# =============================================================================

# Live Packs (compressed bundles)
*.alp binary

# Groove Files (timing/humanization templates)
*.agr binary

# Ableton Meta Sound (Operator waveforms)
*.ams binary

# =============================================================================
# AUTO-GENERATED FILES - Exclude from version control
# =============================================================================

# Sample Analysis Files (regenerated by Live)
*.asd -text -diff

# =============================================================================
# SETUP REQUIRED
# =============================================================================
# This file defines how Git should handle Ableton files, but you must also
# configure the Git filters. See INSTALL.md for complete setup instructions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ yarn-error.log*
# Misc
.DS_Store
*.pem
.idea
# BMAD (local only)
.bmad-core/
.bmad-*/
Expand Down
Loading
Loading