devsync-ai 0.1.0-rc.6 → 0.1.0-rc.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -6
- package/bin/devsync.js +5 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,10 +1,69 @@
|
|
|
1
1
|
# devsync-ai
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
DevSync (https://devsync.ai): one dashboard and command line for your AI coding agents (Claude Code, Codex and more), with memory that follows you across machines.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Read this from any machine, before or after installing:
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```
|
|
8
|
+
npm view devsync-ai@next readme # before installing
|
|
9
|
+
cat "$(npm root -g)/devsync-ai/README.md" # after installing
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Upgrading to 0.1.0-rc.8 (the Go version)
|
|
13
|
+
|
|
14
|
+
Do this on every machine, in a terminal on that machine. Your Claude sessions keep running throughout: DevSync starts them as background sessions, and quitting DevSync only closes its view of them.
|
|
15
|
+
|
|
16
|
+
1. **Stop the old DevSync.** Quit every DevSync dashboard (`q`), then:
|
|
17
|
+
```
|
|
18
|
+
devsync daemon stop
|
|
19
|
+
```
|
|
20
|
+
Never run rc.7 and rc.8 at the same time: an old process left open beside the new one can corrupt the store.
|
|
21
|
+
2. **Install:**
|
|
22
|
+
```
|
|
23
|
+
npm install -g devsync-ai@next
|
|
24
|
+
devsync --version # devsync 0.1.0-rc.8
|
|
25
|
+
```
|
|
26
|
+
3. **Set it up:**
|
|
27
|
+
```
|
|
28
|
+
devsync install-hooks # puts the new hook in ~/.devsync/bin and points Claude Code at it
|
|
29
|
+
devsync mcp sync # registers DevSync's MCP server with Claude Code
|
|
30
|
+
devsync doctor # expect: hooks 14 of 14, no errors
|
|
31
|
+
```
|
|
32
|
+
4. **Shared memory (optional).** Link your private rules repo. On a work computer, add `--pull-only`: it takes rules and can never send any.
|
|
33
|
+
```
|
|
34
|
+
devsync global init <your-rules-repo-url> --pull-only
|
|
35
|
+
devsync global status
|
|
36
|
+
```
|
|
37
|
+
On your own machine, leave out `--pull-only`. `devsync global push` shows exactly what will leave the machine and asks y/N.
|
|
38
|
+
|
|
39
|
+
## Rolling back if rc.8 fails
|
|
40
|
+
|
|
41
|
+
rc.8 uses the same store as rc.7 (schema v36), so rc.7 opens it unchanged.
|
|
42
|
+
|
|
43
|
+
1. Quit every DevSync dashboard (`q`), then `devsync daemon stop`.
|
|
44
|
+
2. Put rc.7 back:
|
|
45
|
+
```
|
|
46
|
+
npm install -g devsync-ai@0.1.0-rc.7
|
|
47
|
+
devsync install-hooks # puts rc.7's hook back
|
|
48
|
+
devsync doctor
|
|
49
|
+
```
|
|
50
|
+
3. Only if the store itself went bad, restore a backup. DevSync makes one daily, and `devsync backup` makes one now:
|
|
51
|
+
```
|
|
52
|
+
ls ~/.devsync/backups/
|
|
53
|
+
devsync store restore ~/.devsync/backups/devsync-<date>.db.gz
|
|
54
|
+
```
|
|
55
|
+
It refuses while anything has the store open, and sets the old files aside instead of deleting them.
|
|
56
|
+
|
|
57
|
+
## What's new in 0.1.0-rc.8
|
|
58
|
+
|
|
59
|
+
- DevSync is rebuilt in Go: same screens, commands and store, with the old bugs fixed.
|
|
60
|
+
- The store-corruption bug is fixed at its root.
|
|
61
|
+
- Pinned sessions load at launch (F1-F9 opens them at once), and a session follows a Remote Control switch instead of dropping you back on the dashboard.
|
|
62
|
+
- Remote Control is only on your own sessions, not the ones agents start.
|
|
63
|
+
- Auto-compact: sessions compact at 40% of the model's window. Change it with `devsync config set auto-compact <10..95|off>`.
|
|
64
|
+
- Shared memory across machines with `devsync global`.
|
|
65
|
+
|
|
66
|
+
## For maintainers: distribution
|
|
8
67
|
|
|
9
68
|
How DevSync ships on npm (decision D12). Nothing here is published by agents; the user publishes.
|
|
10
69
|
|
|
@@ -62,14 +121,13 @@ Agents build and pack; only the user publishes.
|
|
|
62
121
|
|
|
63
122
|
```
|
|
64
123
|
scripts/build.sh 1.2.3 # dist/<platform>/{devsync,devsync-hook} + dist/SHA256SUMS
|
|
65
|
-
scripts/test-build.sh # missing toolchains, reproducible host build, archs, no local paths
|
|
66
124
|
scripts/pack.sh 1.2.3 # pack/devsync-ai-<platform>-1.2.3.tgz and pack/devsync-ai-1.2.3.tgz
|
|
67
125
|
npm test # the launcher (node --test)
|
|
68
126
|
```
|
|
69
127
|
|
|
70
|
-
`build.sh` builds the
|
|
128
|
+
`build.sh` builds the Go binaries (`go/cmd/devsync`, `go/cmd/devsync-hook`, cgo for SQLCipher) for the host's own platform; another platform needs its own C toolchain, so a release tag builds the four on GitHub runners of their own (`.github/workflows/release.yml`: Linux x64 and arm64 natively, both macOS arches on one Apple-silicon Mac). A release holds the Go binaries alone: no Rust binary. `pack.sh` checks each binary against `dist/SHA256SUMS` and pins every platform package to exactly the same version.
|
|
71
129
|
|
|
72
|
-
To ship a release, bump the workspace version in `tui/Cargo.toml` on main, then run:
|
|
130
|
+
To ship a release, bump the version in `go/internal/version/version.go` and the workspace version in `tui/Cargo.toml` (`release.sh` reads the second) on main, then run:
|
|
73
131
|
|
|
74
132
|
```
|
|
75
133
|
npm-devsync-ai/scripts/release.sh # the workspace version; --dry-run first to see the plan
|
|
@@ -77,6 +135,18 @@ npm-devsync-ai/scripts/release.sh # the workspace version; --dry-run
|
|
|
77
135
|
|
|
78
136
|
It tags main as `v<version>` and pushes the tag (and main, if you say so), waits for the release workflow, downloads its tarballs and checks their names and versions, then publishes them in the order below with `--tag next` for a prerelease (`latest` otherwise; `--dist-tag` overrides). It asks before pushing and before publishing, and a rerun skips whatever is already done.
|
|
79
137
|
|
|
138
|
+
Without GitHub Actions (the release workflow can't run), the Rust-era local scripts below still describe the old zigbuild release and have not been moved to Go; build with `scripts/build.sh` on each platform and `scripts/pack.sh` instead:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
npm-devsync-ai/scripts/release-local.sh # gate, linux-x64 + linux-arm64 (zigbuild, glibc 2.28), npm test, pack, sums, install check
|
|
142
|
+
# on the Mac, from pack/devsync-src-<version>.tar.gz or a checkout of the same commit:
|
|
143
|
+
npm-devsync-ai/scripts/build-macos.sh --test # darwin-arm64 + darwin-x64 -> devsync-macos-<version>.tar.gz
|
|
144
|
+
# back here:
|
|
145
|
+
npm-devsync-ai/scripts/release-local.sh --macos devsync-macos-<version>.tar.gz
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
`release-local.sh` stops before anything is tagged, pushed or published, and prints the publish commands; it exits 3 while the macOS binaries are missing. The macOS binaries can't be linked from Linux: they need Apple's SDK (Security for the Keychain, CoreFoundation), whose licence allows it only on Apple hardware. Each script's header lists its steps.
|
|
149
|
+
|
|
80
150
|
By hand, publish the platform packages first, so `devsync-ai`'s optional dependencies exist when it lands:
|
|
81
151
|
|
|
82
152
|
```
|
package/bin/devsync.js
CHANGED
|
@@ -45,7 +45,10 @@ function locate(platform, arch, resolve) {
|
|
|
45
45
|
|
|
46
46
|
/** Run `binary` with `args`, passing signals on, and exit as it does. */
|
|
47
47
|
function run(binary, args) {
|
|
48
|
-
|
|
48
|
+
// Handlers go in before the spawn: the binary can print and be signalled
|
|
49
|
+
// before this process runs again, and an unhandled SIGINT would kill the
|
|
50
|
+
// launcher and orphan the binary.
|
|
51
|
+
let child = null;
|
|
49
52
|
const forward = ['SIGINT', 'SIGTERM', 'SIGHUP', 'SIGQUIT'];
|
|
50
53
|
const handlers = forward.map((sig) => {
|
|
51
54
|
const h = () => {
|
|
@@ -58,6 +61,7 @@ function run(binary, args) {
|
|
|
58
61
|
process.on(sig, h);
|
|
59
62
|
return [sig, h];
|
|
60
63
|
});
|
|
64
|
+
child = spawn(binary, args, { stdio: 'inherit' });
|
|
61
65
|
child.on('error', (e) => {
|
|
62
66
|
process.stderr.write(`devsync: can't run ${binary}: ${e.message}\n`);
|
|
63
67
|
process.exit(1);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devsync-ai",
|
|
3
|
-
"version": "0.1.0-rc.
|
|
3
|
+
"version": "0.1.0-rc.8",
|
|
4
4
|
"description": "DevSync (devsync.ai): one terminal screen over your coding-agent sessions, and the roadmap they work from.",
|
|
5
5
|
"homepage": "https://devsync.ai",
|
|
6
6
|
"keywords": [
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"node": ">=18"
|
|
20
20
|
},
|
|
21
21
|
"optionalDependencies": {
|
|
22
|
-
"devsync-ai-linux-x64": "0.1.0-rc.
|
|
23
|
-
"devsync-ai-linux-arm64": "0.1.0-rc.
|
|
24
|
-
"devsync-ai-darwin-x64": "0.1.0-rc.
|
|
25
|
-
"devsync-ai-darwin-arm64": "0.1.0-rc.
|
|
22
|
+
"devsync-ai-linux-x64": "0.1.0-rc.8",
|
|
23
|
+
"devsync-ai-linux-arm64": "0.1.0-rc.8",
|
|
24
|
+
"devsync-ai-darwin-x64": "0.1.0-rc.8",
|
|
25
|
+
"devsync-ai-darwin-arm64": "0.1.0-rc.8"
|
|
26
26
|
}
|
|
27
27
|
}
|