If you’re new here: OneCamp is a self-hosted workspace (chat, tasks, docs, calls, calendar and AI agents) that you install on your own server. It is open source and free for up to 25 people.
Since v2.57, a task in OneCamp can wait on another: the timeline draws an arrow between them, and when the first one slips, the second moves along. But there was only one way to wait. The second task could start once the first was done, and that’s not how most plans run. The docs get written while the build is still going. Testing can’t end before the build does. Paint needs two days to dry before anyone hangs pictures.
Now a dependency can say how it waits.

| Kind | The waiting task can’t… | For example |
|---|---|---|
| Finish to start | start until the other finishes | Build starts once the design is done |
| Start to start | start until the other starts | Writing the docs starts once the build has |
| Finish to finish | finish until the other finishes | Testing ends after the build does |
| Start to finish | finish until the other starts | The old rota runs until the new one starts |
A lag adds days on top: finish to start with a lag of 2 leaves two days between the tasks. A negative lag lets them overlap: −2 lets the second task start two days before the first is due.
Add a dependency as before: drag from the end of one bar to another on the project’s Timeline, or press Waits on… in a task’s panel. It starts as finish to start, the common case.
To change it, open either task and press the words beside the other task’s name: Finish to start, to begin with. Choose a kind, type a lag, and the panel says what you’ve chosen in plain words before you save it: “Build can’t start until 2 days after Design finishes.”
Linear has one kind of dependency: end to start. Asana has the four kinds, but no lag. OneCamp now has both, and moves the tasks waiting on a task when it slips, on your own server, in every edition, the free one included.