forked from farhoodlabs/paperclip
80 lines
3.7 KiB
Markdown
80 lines
3.7 KiB
Markdown
# Paperclip Fork — Project Context
|
|
|
|
This is a fork of [paperclipai/paperclip](https://github.com/paperclipai/paperclip).
|
|
Fork repo: https://github.com/farhoodlabs/paperclip
|
|
|
|
## Branch Model
|
|
|
|
| Branch | Purpose |
|
|
|---|---|
|
|
| `master` | Mirrors `upstream/master` exactly + `.farhoodlabs/` overlay directory + `assemble-local.yml` action. Never commit application code here. |
|
|
| `local` | **Default branch.** Assembled automatically by `assemble-local.yml` on every `master` push. Contains: upstream + fork Dockerfile/workflows + all pending upstream PR cherry-picks. Builds `ghcr.io/farhoodlabs/paperclip`. |
|
|
| `dev` | Development branch based on upstream/master. Builds `ghcr.io/farhoodlabs/paperclip-dev` on every push. |
|
|
| PR branches | `skill-pat-feature`, `skill-scan-refresh`, `feat/company-portability-complete` — open PRs to upstream, never rebase onto master/local. |
|
|
|
|
**Never commit directly to `local`** — it is fully regenerated by the assemble action and any direct commits will be overwritten.
|
|
|
|
## Fork Overlay (`.farhoodlabs/`)
|
|
|
|
Files committed to `master` that get copied into position on `local` by the assemble action:
|
|
|
|
```
|
|
.farhoodlabs/
|
|
CLAUDE.md → CLAUDE.md (repo root)
|
|
Dockerfile → Dockerfile
|
|
.github/workflows/build-prod.yml → .github/workflows/build-prod.yml
|
|
.github/workflows/build-dev.yml → .github/workflows/build-dev.yml
|
|
```
|
|
|
|
The fork's Dockerfile production stage additions over upstream: `kubectl`, `kubeseal`, `uv`/`uvx`, `forgejo-cli` (`fj`, `fj-ex`, `fgj`), `nano`, `vim`.
|
|
|
|
To modify fork-specific files, edit them in `.farhoodlabs/` on `master` and push — the assemble action will apply them to `local` automatically.
|
|
|
|
## Pending Upstream PRs (included in `local`)
|
|
|
|
These are cherry-picked/squashed onto `local` by the assemble action. When upstream merges one, remove its entry from `assemble-local.yml`.
|
|
|
|
| PR | Branch | Method | Notes |
|
|
|---|---|---|---|
|
|
| #3237 | `skill-pat-feature` | cherry-pick | GitHub PAT support for private skill repos |
|
|
| #3351 | `skill-scan-refresh` | cherry-pick (exclude: skill-pat-feature) | Rebased onto skill-pat-feature |
|
|
| #3987 | `feat/company-portability-complete` | squash | Secrets export/import; squashed to bypass intra-PR merge commits |
|
|
|
|
## Common Tasks
|
|
|
|
### Sync upstream into master
|
|
```bash
|
|
git fetch upstream
|
|
git push origin upstream/master:master --force-with-lease
|
|
# assemble-local.yml triggers automatically and rebuilds local
|
|
```
|
|
|
|
### Add a new pending PR to local
|
|
Edit `.github/workflows/assemble-local.yml` on `master`:
|
|
- Simple PR (clean commits, no merge commits): add to `PR_CHERRY_PICK`
|
|
- Complex PR (has merge commits mixed in): add to `PR_SQUASH`
|
|
- If the branch was rebased onto another PR branch: use `exclude:base-branch`
|
|
|
|
### Remove a PR after upstream merges it
|
|
Delete its entry from `PR_CHERRY_PICK` or `PR_SQUASH` in `assemble-local.yml` on `master`.
|
|
|
|
### Submit a new PR to upstream
|
|
Branch from `upstream/master` (not from `local` or `master`):
|
|
```bash
|
|
git fetch upstream
|
|
git checkout -b feat/my-feature upstream/master
|
|
```
|
|
|
|
### Modify the fork Dockerfile
|
|
Edit `.farhoodlabs/Dockerfile` on `master`. Only modify the production stage — keep base/deps/build stages identical to upstream so diffs are minimal and upstream changes apply cleanly.
|
|
|
|
## Deployment
|
|
|
|
Paperclip runs in Kubernetes, not locally. Use `kubectl` to access it. The production image is `ghcr.io/farhoodlabs/paperclip:latest`.
|
|
|
|
## Key Files
|
|
|
|
- `.github/workflows/assemble-local.yml` — assembles `local` branch; edit this to manage pending PRs
|
|
- `.farhoodlabs/` — fork overlay; all fork-specific files live here on `master`
|
|
- `server/package.json` — has an adapter-utils workspace vs canary hack that needs fixing eventually
|