Skip to content

Add AGENTS.md with cloud-specific development instructions#35

Draft
dominicletz wants to merge 24 commits intomainfrom
cursor/setup-dev-environment-91dd
Draft

Add AGENTS.md with cloud-specific development instructions#35
dominicletz wants to merge 24 commits intomainfrom
cursor/setup-dev-environment-91dd

Conversation

@dominicletz
Copy link
Copy Markdown
Collaborator

@dominicletz dominicletz commented May 4, 2026

Adds AGENTS.md with Cursor Cloud-specific development instructions for future agents working in this codebase.

What's included

  • Overview of the app architecture (Elixir Desktop + Phoenix LiveView + SQLite)
  • Key commands table (deps, compile, lint, test, run)
  • Non-obvious notes about the headless environment (DBus/EGL warnings, DISPLAY requirement, version management via asdf)

Follow-up (code review)

The asset build row documents MIX_ENV=prod mix assets.deploy, the paragraph below matches that command, and the assets bullet mentions npm install in assets/ before deploying assets when needed.

Open in Web Open in Cursor 

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
@gemini-code-assist
Copy link
Copy Markdown

Important

Installation incomplete: to start using Gemini Code Assist, please ask the organization owner(s) to visit the Gemini Code Assist Admin Console and sign the Terms of Services.

@cursor-automation cursor-automation Bot added cursor-waiting Cursor issue-workflow (cursor-automation.com) cursor-waiting-for-ci Cursor issue-workflow (cursor-automation.com) and removed cursor-waiting Cursor issue-workflow (cursor-automation.com) labels May 4, 2026
cursoragent and others added 22 commits May 4, 2026 12:35
Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Document production asset pipeline vs dev watchers, warn that Credo
is not available in prod Mix env, and note Git LFS for Android .a libs.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
- Document SQLite path via config dir and TodoApp.config_dir/0
- Point the run-app table row at the full asdf/DISPLAY dev command
- Note rel/android uses its own OTP/Elixir pin per README

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
…OTP Windows build

Android APK builds failed because mix release still ran
Desktop.Deployment.generate_installer/1 under MIX_TARGET=android.
Release steps now assemble-only for :android and :ios.

Windows Erlang installer_win32 failed because makensis was missing in WSL when
building OTP; install nsis and symlink makensis.exe before otp_build.
Bump the OTP executable cache key so CI rebuilds with the fixed toolchain.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Avoid confusion when agents compare local asdf pins to GitHub Actions.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Fresh checkouts may omit rel/android/app/src/main/assets; ensure it exists
before zip creates app.zip (fixes Android CI zip I/O error).

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
- Document MIX_ENV=prod for mix assets.deploy so release builds match CI.
- Point agents to npm install in assets/ per README before deploying assets.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
OTP's installer_win32 requires NSIS 3.x; Ubuntu 18.04's nsis 2.51 is rejected
("Unsupported NSIS version"). Use Ubuntu-22.04 in setup-wsl and bump the OTP
exe cache key. Increase the Windows job timeout for full OTP rebuilds.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Linux makensis parses OTP's `/V2` as a script path (`Can't open script "/V2"`).
Install NSIS on Windows and expose makensis.exe to WSL via a wrapper that execs
the real Windows binary. Bump otp.exe cache key (v4).

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Transient archive.ubuntu.com failures caused mingw packages to be missing.
Retry apt-get update/install up to 5 times with backoff.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
…nied)

Chocolatey + NSIS could succeed while moving OpenSSL out of Program Files
failed with "Access is denied" on the runner, aborting the job. Copy the tree
with xcopy instead, matching the original layout under C:\OpenSSL-Win64.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
The Windows Erlang + mix desktop.installer step can exceed 120 minutes on
cold cache; the job was cancelled mid-build. Allow up to 5 hours for the full
toolchain + installer pipeline.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
GitHub is retiring the macOS 13 hosted image. Switch the binaries workflow to
macos-15 and refresh the asdf cache key so caches are not reused across OS
versions.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
wxWidgets' bundled libpng includes legacy Mac headers; building it on
macos-15/arm64 fails with missing fp.h. Install libpng via Homebrew and pass
--with-libpng=sys to configure. Bump the asdf cache key so Erlang is rebuilt
against the updated wx build.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
- Set job timeout to 20 minutes as requested.
- Skip Git LFS smudge (GIT_LFS_SKIP_SMUDGE + checkout lfs:false): Android LFS
  blobs were hanging after fetch on Windows.
- Upgrade actions/checkout to v4 with shallow fetch-depth.
- Use shallow single-branch clones for wxWidgets, OTP, and Elixir with HTTP
  stall timeouts to fail fast instead of hanging after "Compressing objects".

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
wxWidgets --with-libpng=sys failed: png.h not found on the default include
path. libpng is keg-only under Homebrew; export brew --prefix libpng include
and lib paths plus PKG_CONFIG_PATH. Refresh asdf cache key.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
- Install libtiff and pass CPPFLAGS/LDFLAGS so imagtiff.cpp finds tiff.h.
- Add --with-libtiff=sys alongside --with-libpng=sys.
- Clone wxWidgets shallow with retries and HTTP stall timeouts (fixes transient
  curl 56 during full clone).
- Bump macOS asdf cache key for rebuild.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
asdf master no longer ships asdf.sh after the Go rewrite; git clone + source
failed. Use brew install asdf, add the brew prefix bin to PATH, and prepend
~/.asdf/shims per current docs. Write ~/.tool-versions for the cold install
step. Bump cache key.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
kerl passed CXX='gcc -std=c++11' as CXX=gcc and a separate -std=c++11 token,
which ./configure rejected. Use CXX=clang++ (matches macOS toolchain). Bump
asdf cache key for rebuild.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
create_keychain maybe only skips when MACOS_PEM is unset. A repo secret that is
set but not a valid Developer ID PEM still runs full keychain setup and fails
at security import. Omit the secret from this step so CI builds unsigned
artifacts without importing Apple certs.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Cancelled runs showed ~20m elapsed then cancellation during Get dependencies;
the 20-minute job cap was terminating the workflow mid-step (not an LFS flake).
Allow enough time for mix deps / npm / installer on cache hits.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Cancelled runs hit the 90-minute job cap during Get dependencies (~90m elapsed).
Raise the limit so mix/npm/installer can finish on slower runners.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Cancelled runs lasted ~180 minutes during Get dependencies — the job timeout,
not a hung resolver. Raise to GitHub-hosted runner maximum so long Windows
builds can finish.

Co-authored-by: Dominic Letz <dominicletz@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cursor-waiting-for-ci Cursor issue-workflow (cursor-automation.com)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants