From a9974144b1f45dc773a4aeeb57958d46315399a1 Mon Sep 17 00:00:00 2001 From: ApolloF <98666317+ApolloF@users.noreply.github.com> Date: Wed, 21 Oct 2026 17:07:07 +0200 Subject: [PATCH] Remove internal dev notes --- .gitignore | 1 - AGENTS.md | 50 -------------------------------------------------- CLAUDE.md | 1 - 3 files changed, 52 deletions(-) delete mode 100644 AGENTS.md delete mode 100644 CLAUDE.md diff --git a/.gitignore b/.gitignore index 93f22ac..bce8a11 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ frontend/dist/* !frontend/dist/gitkeep frontend/node_modules frontend/package.json.md5 -.claude/ *.syncer-tmp # Secrets (safety baseline) diff --git a/AGENTS.md b/AGENTS.md deleted file mode 100644 index f0d9a14..0000000 --- a/AGENTS.md +++ /dev/null @@ -1,50 +0,0 @@ -# Syncer - -Windows desktop app that syncs game saves between a user's PCs (via a bundled/local Syncthing) and backs them up to Google Drive, with per-person accounts, mod sync and a local API for launchers. - -## Stack -- Backend: Go 1.26, Windows only, single module `github.com/ApolloF/syncer` -- Desktop shell: Wails v2 (CLI pinned in CI: `wails@v2.16.0`), NSIS installer -- Frontend: Svelte 5 (runes) + TypeScript + Vite, in `frontend/`; plain CSS, design tokens as CSS variables in `frontend/src/style.css` -- Data: JSON settings/state under `%APPDATA%\Syncer` (`internal/store`), Syncthing REST API, Google Drive (desktop folder or OAuth API) - -## Commands -- Install: `cd frontend && npm install` (Wails also runs this on build) -- Dev: `wails dev` -- Build: `wails build` → `build/bin/Syncer.exe` (`-nsis` for the installer). This is the public release: no mods, Google sign-in or launcher integration. -- Personal build: `scripts/build-personal.ps1` (runs `wails build -tags personal -nsis` with the Google client from `.env.personal`; the owner's build with all of those; it never installs the public release over itself). Dev with it: `wails dev -tags personal`. -- Typecheck: `cd frontend && npm run check` (svelte-check) -- Test: `go test ./...` and `go test -tags personal ./...` and `cd frontend && npm test` (Vitest) -- Full gate before a PR (what CI runs): the check command below without `-short`, plus `wails build` - -## Check command -`go test -short ./... && go test -short -tags personal ./... && npm --prefix frontend run check && npm --prefix frontend test` -Run `npm --prefix frontend ci` once first. About 1.5 minutes. `-short` shortens the randomized crash test in `internal/accounts` (5 seeds instead of 25); without it the Go tests take about 4 minutes. CI (`.github/workflows/build.yml`, job `windows`) runs the full `go test ./...` and `go test -tags personal ./...`, and `wails build`. Keep it fast and keep it passing. - -## Layout -- `*.go` at the root — `package main`: the Wails `App` (methods bound to the frontend), tray, background/scheduled runs, launcher API (`api.go`, documented in `docs/api.md`), and feature glue (accounts, deployed mods, folders, undo, …). Tests sit next to them as `*_test.go`. -- `internal/*` — self-contained packages with no Wails dependency: `syncthing` (REST client), `backup` / `gdrive` (backups), `discover` / `steam` / `mods` (finding save and mod folders), `conflict`, `accounts`, `meta`, `paths`, `store`, `tasks`, `update`, `winx`, `fsx`, `logx`, `features` (compile-time switches for the public vs personal build; gate features at their entry points, never delete user data in a build that lacks them). -- `frontend/src/views/` — one Svelte component per page; `frontend/src/lib/` — shared components plus pure helpers (`fmt.ts`, `folders.ts`, `conflicts.ts`, `mods.ts`) and app state (`state.svelte.ts`). Frontend tests are colocated as `*.test.ts`. -- `frontend/wailsjs/` — generated by Wails from the bound Go methods (`wails dev`/`wails build` regenerate it). Committed; don't edit by hand. -- `.github/workflows/build.yml` — CI on push/PR: typecheck, frontend tests, Go tests, build; a `v*` tag publishes a GitHub release. - -## Conventions -- New self-contained logic goes in an `internal/` package; `package main` wires it to the UI. See `docs/structure-proposal.md` for the planned move of root files. -- Keep logic out of Svelte components: pure functions in `frontend/src/lib/*.ts` with a Vitest test. -- Go tests use `t.TempDir()` and `paths.SetRootForTest` instead of touching the real `%APPDATA%`. -- UI copy is plain, short, user-facing language (no Syncthing jargon); commit subjects describe the user-visible effect. -- Release secrets `GDRIVE_CLIENT_ID` / `GDRIVE_CLIENT_SECRET` are for personal builds only (`-ldflags "-X main.gdriveClientID=… -X main.gdriveClientSecret=…"`); the public release has no Google sign-in and CI doesn't pass them. Never commit them; a build without them hides *Sign in with Google*. -- Version comes from the git tag in CI (`-X main.version`); don't tag or bump `wails.json` unless asked. - -## Definition of done -The check command passes (and the full gate before a PR); no new svelte-check warnings; UI checked at the minimum window width (760×520). - -## Git workflow -- Remote: GitHub `ApolloF/syncer` (public). -- Branch, then PR, then CI (`build`, job `windows`), then merge only when the user says "ship it" (squash). -- Releases: a `v*` tag publishes a GitHub release from CI; don't tag unless asked. - -## Secrets -- No `.env` is needed to build or run. The only tracked env file is `frontend/.env.mock` (no secrets; `.gitignore` allows it on purpose). -- `GDRIVE_CLIENT_ID` / `GDRIVE_CLIENT_SECRET` are needed only for personal builds; keep them out of the repo and pass them at build time (see Conventions). -- Never commit real values. gitleaks runs on every commit. diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 43c994c..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1 +0,0 @@ -@AGENTS.md