Skip to content

Commit bcf4e35

Browse files
committed
github/actions: define a test-github-ci:report target
1 parent 9dfb0a8 commit bcf4e35

File tree

21 files changed

+107
-192
lines changed

21 files changed

+107
-192
lines changed

src/CLAUDE.md

Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
1-
# CLAUDE.md
1+
# CLAUDE.md and GEMINI.md
22

3-
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
3+
This file provides guidance to Claude Code (claude.ai/code) and also Gemini CLI (https://github.com/google-gemini/gemini-cli) when working with code in this repository.
44

55
# CoCalc Source Repository
66

7-
* This is the source code of CoCalc in a Git repository
8-
* It is a complex JavaScript/TypeScript SaaS application
9-
* CoCalc is organized as a monorepository (multi-packages) in the subdirectory "./packages"
10-
* The packages are managed as a pnpm workspace in "./packages/pnpm-workspace.yaml"
7+
- This is the source code of CoCalc in a Git repository
8+
- It is a complex JavaScript/TypeScript SaaS application
9+
- CoCalc is organized as a monorepository (multi-packages) in the subdirectory "./packages"
10+
- The packages are managed as a pnpm workspace in "./packages/pnpm-workspace.yaml"
1111

1212
## Code Style
1313

1414
- Everything is written in TypeScript code
1515
- Indentation: 2-spaces
16+
- Run `pretter -w [filename]` after modifying a file (ts, tsx, md, json, ...) to format it correctly.
1617
- All .js and .ts files are formatted by the tool prettier
1718
- Add suitable types when you write code
1819
- Variable name styles are "camelCase" for local and "FOO_BAR" for global variables. If you edit older code not following these guidlines, adjust this rule to fit the files style.
@@ -23,28 +24,32 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
2324
## Development Commands
2425

2526
### Essential Commands
27+
2628
- `pnpm build-dev` - Build all packages for development
2729
- `pnpm clean` - Clean all node_modules and dist directories
28-
- `pnpm database` - Start PostgreSQL database server
29-
- `pnpm hub` - Start the main hub server
30-
- `pnpm psql` - Connect to the PostgreSQL database
3130
- `pnpm test` - Run full test suite
32-
- `pnpm test-parallel` - Run tests in parallel across packages
3331
- `pnpm depcheck` - Check for dependency issues
32+
- `prettier -w [filename]` to format the style of a file after editing it
33+
- after creating a file, run `git add [filename]` to start tracking it
3434

3535
### Package-Specific Commands
36-
- `cd packages/[package] && pnpm tsc` - Watch TypeScript compilation for a specific package
36+
37+
- `cd packages/[package] && pnpm build` - Build and compile a specific package
38+
- for packages/next and packages/static, run `cd packages/[package] && pnpm build-dev`
39+
- `cd packages/[package] && pnpm tsc:watch` - TypeScript compilation in watch mode for a specific package
3740
- `cd packages/[package] && pnpm test` - Run tests for a specific package
3841
- `cd packages/[package] && pnpm build` - Build a specific package
42+
- **IMPORTANT**: When modifying packages like `util` that other packages depend on, you must run `pnpm build` in the modified package before typechecking dependent packages
3943

40-
### Development Setup
41-
1. Start database: `pnpm database`
42-
2. Start hub: `pnpm hub`
43-
3. For TypeScript changes, run `pnpm tsc` in the relevant package directory
44+
### Development
45+
46+
- **IMPORTANT**: Always run `prettier -w [filename]` immediately after editing any .ts, .tsx, .md, or .json file to ensure consistent styling
47+
- After TypeScript or `*.tsx` changes, run `pnpm build` in the relevant package directory
4448

4549
## Architecture Overview
4650

4751
### Package Structure
52+
4853
CoCalc is organized as a monorepo with key packages:
4954

5055
- **frontend** - React/TypeScript frontend application using Redux-style stores and actions
@@ -62,25 +67,30 @@ CoCalc is organized as a monorepo with key packages:
6267
### Key Architectural Patterns
6368

6469
#### Frontend Architecture
70+
6571
- **Redux-style State Management**: Uses custom stores and actions pattern (see `packages/frontend/app-framework/actions-and-stores.ts`)
6672
- **TypeScript React Components**: All frontend code is TypeScript with proper typing
6773
- **Modular Store System**: Each feature has its own store/actions (AccountStore, BillingStore, etc.)
6874
- **WebSocket Communication**: Real-time communication with backend via WebSocket messages
6975

7076
#### Backend Architecture
77+
7178
- **PostgreSQL Database**: Primary data store with sophisticated querying system
7279
- **WebSocket Messaging**: Real-time communication between frontend and backend
7380
- **Conat System**: Container orchestration for compute servers
7481
- **Event-Driven Architecture**: Extensive use of EventEmitter patterns
7582
- **Microservice-like Packages**: Each package handles specific functionality
7683

7784
#### Communication Patterns
85+
7886
- **WebSocket Messages**: Primary communication method (see `packages/comm/websocket/types.ts`)
7987
- **Database Queries**: Structured query system with typed interfaces
8088
- **Event Emitters**: Inter-service communication within backend
8189
- **REST-like APIs**: Some HTTP endpoints for specific operations
90+
- **API Schema**: API endpoints in `packages/next/pages/api/v2/` use Zod schemas in `packages/next/lib/api/schema/` for validation. These schemas must be kept in harmony with the TypeScript types sent from frontend applications using `apiPost` (in `packages/next/lib/api/post.ts`) or `api` (in `packages/frontend/client/api.ts`). When adding new fields to API requests, both the frontend types and the API schema validation must be updated.
8291

8392
### Key Technologies
93+
8494
- **TypeScript**: Primary language for all new code
8595
- **React**: Frontend framework
8696
- **PostgreSQL**: Database
@@ -91,40 +101,56 @@ CoCalc is organized as a monorepo with key packages:
91101
- **SASS**: CSS preprocessing
92102

93103
### Database Schema
104+
94105
- Comprehensive schema in `packages/util/db-schema`
95106
- Query abstractions in `packages/database/postgres/`
96107
- Type-safe database operations with TypeScript interfaces
97108

98109
### Testing
110+
99111
- **Jest**: Primary testing framework
100112
- **ts-jest**: TypeScript support for Jest
101113
- **jsdom**: Browser environment simulation for frontend tests
102114
- Test files use `.test.ts` or `.spec.ts` extensions
103115
- Each package has its own jest.config.js
104116

105117
### Import Patterns
118+
106119
- Use absolute imports with `@cocalc/` prefix for cross-package imports
107120
- Example: `import { cmp } from "@cocalc/util/misc"`
108121
- Type imports: `import type { Foo } from "./bar"`
109122
- Destructure imports when possible
110123

111124
### Development Workflow
112-
1. Changes to TypeScript require compilation (`pnpm tsc` in relevant package)
125+
126+
1. Changes to TypeScript require compilation (`pnpm build` in relevant package)
113127
2. Database must be running before starting hub
114128
3. Hub coordinates all services and should be restarted after changes
115129
4. Use `pnpm clean && pnpm build-dev` when switching branches or after major changes
116130

117131
# Workflow
118-
- Be sure to typecheck when you're done making a series of code changes
132+
133+
- Be sure to build when you're done making a series of code changes
119134
- Prefer running single tests, and not the whole test suite, for performance
120135

121136
## Git Workflow
122137

138+
- Never modify a file when in the `master` or `main` branch
139+
- All changes happen through feature branches, which are pushed as pull requests to GitHub
140+
- When creating a new file, run `git add [filename]` to track the file.
123141
- Prefix git commits with the package and general area. e.g. 'frontend/latex: ...' if it concerns latex editor changes in the packages/frontend/... code.
124142
- When pushing a new branch to Github, track it upstream. e.g. `git push --set-upstream origin feature-foo` for branch "feature-foo".
125143

126-
# important-instruction-reminders
144+
# Important Instruction Reminders
145+
127146
- Do what has been asked; nothing more, nothing less.
128147
- NEVER create files unless they're absolutely necessary for achieving your goal.
129148
- ALWAYS prefer editing an existing file to creating a new one.
130-
- NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User.
149+
- REFUSE to modify files when the git repository is on the `master` or `main` branch.
150+
- NEVER proactively create documentation files (`*.md`) or README files. Only create documentation files if explicitly requested by the User.
151+
152+
# Ignore
153+
154+
- Ignore files covered by `.gitignore`
155+
- Ignore everything in `node_modules` or `dist` directories
156+
- Ignore all files not tracked by Git, unless they are newly created files

src/CLAUDE.md.x

Lines changed: 0 additions & 156 deletions
This file was deleted.

src/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"test-parallel": "unset DEBUG && pnpm run version-check && cd packages && pnpm run -r --parallel test",
2020
"test": "unset DEBUG && pnpm run depcheck && pnpm run version-check && ./workspaces.py test",
2121
"test-github-ci": "unset DEBUG && pnpm run depcheck && pnpm run version-check && ./workspaces.py test --exclude=jupyter,file-server --retries=1",
22-
"test-github-ci:report": "unset DEBUG && pnpm run depcheck && pnpm run version-check && ./workspaces.py test --exclude=jupyter,file-server --retries=1",
22+
"test-github-ci:report": "unset DEBUG && pnpm run depcheck && pnpm run version-check && ./workspaces.py test --exclude=jupyter,file-server --retries=1 --report",
2323
"depcheck": "cd packages && pnpm run -r --parallel depcheck",
2424
"prettier-all": "cd packages/",
2525
"local-ci": "./scripts/ci.sh",

src/packages/assets/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"preinstall": "npx only-allow pnpm",
1212
"build": "./build.sh",
1313
"test": "../node_modules/.bin/jest",
14+
"test:report": "pnpm run test -- --reporters=default --reporters=jest-junit",
1415
"prepublishOnly": "pnpm test"
1516
},
1617
"keywords": ["cocalc"],

src/packages/backend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"build": "pnpm exec tsc --build",
2121
"tsc": "pnpm exec tsc --watch --pretty --preserveWatchOutput",
2222
"test": "pnpm exec jest --forceExit",
23-
"test:report": "pnpm exec jest --forceExit --reporters=default --reporters=jest-junit",
23+
"test:report": "pnpm run test -- --reporters=default --reporters=jest-junit",
2424
"test-conat": " pnpm exec jest --forceExit conat",
2525
"test-conat:report": " pnpm exec jest --forceExit conat --reporters=default --reporters=jest-junit",
2626
"testp": "pnpm exec jest --forceExit",

src/packages/cdn/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"build": "rm -rf build dist && mkdir build && cp -rv *.json *.py *.js build/ && cd build && npm ci && mkdir dist && ./setup.py && mv dist .. && cd .. && rm -rf build ",
1717
"postinstall": "./postinstall.js",
1818
"test": "../node_modules/.bin/jest",
19+
"test:report": "pnpm run test -- --reporters=default --reporters=jest-junit",
1920
"prepublishOnly": "npm test"
2021
},
2122
"homepage": "https://github.com/sagemathinc/cocalc/tree/master/src/packages/cdn",

src/packages/conat/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"clean": "rm -rf dist node_modules",
2323
"tsc": "pnpm exec tsc --watch --pretty --preserveWatchOutput",
2424
"test": "pnpm exec jest",
25+
"test:report": "pnpm run test -- --reporters=default --reporters=jest-junit",
2526
"depcheck": "pnpx depcheck --ignores events"
2627
},
2728
"files": [

src/packages/database/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
"clean": "rm -rf dist",
4848
"tsc": "../node_modules/.bin/tsc --watch --pretty --preserveWatchOutput",
4949
"test": "pnpm exec jest --forceExit --runInBand",
50-
"test:report": "pnpm exec jest --forceExit --runInBand --reporters=default --reporters=jest-junit",
50+
"test:report": "pnpm run test -- --reporters=default --reporters=jest-junit",
5151
"depcheck": "pnpx depcheck | grep -Ev '\\.coffee|coffee$'",
5252
"prepublishOnly": "pnpm test"
5353
},

src/packages/file-server/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"build": "pnpm exec tsc --build",
1212
"tsc": "pnpm exec tsc --watch --pretty --preserveWatchOutput",
1313
"test": "pnpm exec jest",
14+
"test:report": "pnpm run test -- --reporters=default --reporters=jest-junit",
1415
"depcheck": "pnpx depcheck",
1516
"clean": "rm -rf node_modules dist"
1617
},

src/packages/frontend/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@
175175
"build-coffee": "pnpm exec coffee -m -c -o dist/ .",
176176
"tsc": "NODE_OPTIONS=--max-old-space-size=8192 ../node_modules/.bin/tsc --watch --pretty --preserveWatchOutput ",
177177
"test": "jest",
178+
"test:report": "pnpm run test -- --reporters=default --reporters=jest-junit",
178179
"depcheck": "pnpx depcheck --ignores cspell,@cspell/dict-typescript,events,@formatjs/cli | grep -Ev '\\.coffee|coffee$'",
179180
"prepublishOnly": "pnpm test",
180181
"update-color-scheme": "node ./update-color-scheme.js",

0 commit comments

Comments
 (0)