squad-kit 1.2.0 → 1.2.1
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/CHANGELOG.md +72 -1
- package/SECURITY.md +18 -1
- package/dist/cli.js +2734 -1394
- package/dist/console-ui/assets/index-CzFTrbcF.js +637 -0
- package/dist/console-ui/assets/index-kEkCko25.css +1 -0
- package/dist/console-ui/index.html +2 -2
- package/package.json +1 -1
- package/dist/console-ui/assets/index-3sA27BxT.css +0 -1
- package/dist/console-ui/assets/index-CXdIA4pC.js +0 -632
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,76 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.2.1] — 2026-11-05
|
|
11
|
+
|
|
12
|
+
A patch about not losing work and never reaching a dead end. It also moves the project's commit hooks into the guard.
|
|
13
|
+
Nothing changes in how you work with the squad.
|
|
14
|
+
|
|
15
|
+
### What you type stays
|
|
16
|
+
|
|
17
|
+
- **Text you type survives** a reload, a closed tab or a dialog closed by mistake: answers, comments, new tickets, bugs
|
|
18
|
+
and the BRD box are kept for each project, ticket and field, and cleared once sent.
|
|
19
|
+
- **Skip** asks first. Dialogs with files in them ask before closing. Enter works in an **Other** answer.
|
|
20
|
+
|
|
21
|
+
### When something goes wrong
|
|
22
|
+
|
|
23
|
+
- **The app going down shows at once.** Within 5 seconds a banner sits over every page, nothing pulses as if it were
|
|
24
|
+
still working, and the banner goes by itself when the app is back. An update that does not come back gets it after 2
|
|
25
|
+
minutes.
|
|
26
|
+
- **One error no longer takes the app down.** Each squad turn is guarded, and an error in the screens shows a page with
|
|
27
|
+
a way back. A full disk or a moved folder holds that project with one banner, and it carries on by itself.
|
|
28
|
+
- **A network blip waits and tries again**, 4 times over about 15 minutes, and never lowers the model level. A merge cut
|
|
29
|
+
off by a blip is tried again too.
|
|
30
|
+
- **A moved folder is found.** The story copies' links are repaired when the squad starts, at **Looks right** and when a
|
|
31
|
+
step opens a copy. Home follows a folder moved while the app runs.
|
|
32
|
+
- **A refused release has a way out.** A teammate's push is merged and sent, never forced. A real clash gets the clash
|
|
33
|
+
card, and a protected main gets plain words and an engineer's steps.
|
|
34
|
+
- **It reached it another way**: a new button on the Releases page, for a release merged by hand. It needs a reason and
|
|
35
|
+
looks on the remote first. If the release is not there, it warns and asks a second time. Terminal:
|
|
36
|
+
`squad release --mark-sent --reason "…" [--anyway]`. `squad release` also takes the version with or without the `v`.
|
|
37
|
+
- **Take it**: a new button on a ticket whose owner cannot work on it. Terminal: `squad take-back <ticket> --reason "…"`.
|
|
38
|
+
- **A ticket is never overwritten** by another with the same id, and new ids skip the ones already pushed.
|
|
39
|
+
- **The home folder is refused** by `squad init`, setup and the first commit, and a leftover `~/.squad` is ignored.
|
|
40
|
+
- **The link lasts across tabs.** With no key in the link, the page says to run `squad`.
|
|
41
|
+
- **Stop and closing the board** end a running hook, and closing takes seconds. `squad | tee` stops cleanly, and a run
|
|
42
|
+
whose output goes to files keeps running when its terminal closes.
|
|
43
|
+
- **An agent's tool calls** no longer fail with a dropped connection after 5 quiet seconds.
|
|
44
|
+
|
|
45
|
+
### The project's commit hooks
|
|
46
|
+
|
|
47
|
+
- **They run once, when a change is saved, in the guard, on a stand-in branch.** A hook cannot move a real branch, plant
|
|
48
|
+
a hook or change a git setting. The real commit is made after, outside the guard, with your signature if your git
|
|
49
|
+
signs. A crash or a failed signature no longer moves a branch or leaves an unsigned commit.
|
|
50
|
+
- **Every refusal gets a card**: **Let the Builder fix it**, **Fix it yourself**, **Try the save again**, or **Save
|
|
51
|
+
without this check**. Saving without it needs a reason, which stays on the ticket, the pull request and the release
|
|
52
|
+
notes. Builds by itself never skips a hook.
|
|
53
|
+
- **Refused code cannot slip through.** Work saved past a refusal is checked whole at **Looks right**, and the branch
|
|
54
|
+
goes back as it was if the hook still says no.
|
|
55
|
+
- **The Builder cannot change the check to pass it.** Hook files, their settings and their `package.json` keys go back,
|
|
56
|
+
with one plain line. What a hook calls, like lint rules and tests, stays the Builder's, and the Reviewer reads it.
|
|
57
|
+
- **husky 9 now runs in a story's copy.** Before, its hooks silently never ran there.
|
|
58
|
+
- **squad-kit runs no other hook**: no `pre-push`, `post-merge` or `post-checkout`, since the project's own checks have
|
|
59
|
+
run by then. Your own terminal still runs them. Git LFS files still upload when squad-kit pushes.
|
|
60
|
+
- **A hook folder with a common name** (`hooks`) no longer costs you work in `src/hooks`. `npx` works in a hook with no
|
|
61
|
+
packages installed.
|
|
62
|
+
|
|
63
|
+
### Security
|
|
64
|
+
|
|
65
|
+
- **`.git` and git's own folder are read only** for the project's commands and for agents.
|
|
66
|
+
- **squad-kit's own git starts nothing a repo names by itself**: no file monitor, no diff program, and nothing from a
|
|
67
|
+
nested repo, which also stays out of commits.
|
|
68
|
+
- **The app answers only at its own address.** Host and Origin are checked on every route, a key in the link works for
|
|
69
|
+
reads only, and HTML and SVG from a project download instead of opening at the board's address.
|
|
70
|
+
|
|
71
|
+
### Known limits
|
|
72
|
+
|
|
73
|
+
- **A hook built to do harm could change a file in git's store of objects.** A project with no commit hooks is not
|
|
74
|
+
affected. The next patch closes this by running hooks in a throwaway git folder. See [SECURITY.md](SECURITY.md).
|
|
75
|
+
- A hook that reads the branch name sees the stand-in, `squad/saving/<branch>/now`. A strict one says no, and you get
|
|
76
|
+
the card.
|
|
77
|
+
- Setup in your own checkout no longer installs husky's hooks. On a fresh clone they stay off until you install them.
|
|
78
|
+
- Stop in the middle of lint-staged leaves its backup in `git stash list`. Your work is safe.
|
|
79
|
+
|
|
10
80
|
## [1.2.0] — 2026-11-05
|
|
11
81
|
|
|
12
82
|
squad-kit 1.2 is about trust: squad-kit shows that it understands your project, says what the work really cost, and
|
|
@@ -1071,7 +1141,8 @@ First public release.
|
|
|
1071
1141
|
- Plan-generation meta-prompt (`generate-plan.md`), intake template (`intake.md`), and plan skeleton reference (`story-skeleton.md`).
|
|
1072
1142
|
- Documentation: `docs/philosophy.md`, `docs/getting-started.md`, `docs/customization.md`, `docs/vs-spec-kit.md`.
|
|
1073
1143
|
|
|
1074
|
-
[Unreleased]: https://github.com/AzmSquad/squad-kit/compare/v1.2.
|
|
1144
|
+
[Unreleased]: https://github.com/AzmSquad/squad-kit/compare/v1.2.1...HEAD
|
|
1145
|
+
[1.2.1]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.2.1
|
|
1075
1146
|
[1.2.0]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.2.0
|
|
1076
1147
|
[1.1.1]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.1.1
|
|
1077
1148
|
[1.1.0]: https://github.com/AzmSquad/squad-kit/releases/tag/v1.1.0
|
package/SECURITY.md
CHANGED
|
@@ -33,7 +33,8 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
|
|
|
33
33
|
## How squad-kit keeps you safe
|
|
34
34
|
|
|
35
35
|
- **The app runs on your computer only.** It listens on `127.0.0.1`, behind a private link with a token kept in
|
|
36
|
-
`~/.squad-kit/app.json`. Nothing is hosted.
|
|
36
|
+
`~/.squad-kit/app.json`. Nothing is hosted. It answers only at its own address (Host and Origin are checked on every
|
|
37
|
+
route), and a token in a link works for reads only.
|
|
37
38
|
- **Sign-ins stay on this computer.** Tracker tokens and keys live in `~/.squad-kit/projects/<id>/secrets.yaml`
|
|
38
39
|
(mode `0600` on POSIX), never in the project folder or in git. A project moved from 0.x has its
|
|
39
40
|
`.squad/secrets.yaml` moved there once. To run your app, squad-kit copies your project's `.env` files into its own
|
|
@@ -48,6 +49,22 @@ Credit will be given in the release notes unless you prefer to remain anonymous.
|
|
|
48
49
|
squad-kit's tools. squad-kit checks every field, does the job itself, and refuses and logs what breaks a check.
|
|
49
50
|
- **The project's own commands run in a guard** on Mac and Linux: the tests, setup, the app and the release pipeline
|
|
50
51
|
can't read your keys, sign-ins, browser profiles, squad-kit's own folder or the `.env` files in your project folder.
|
|
52
|
+
They can't change the copy's link to git or git's own folder either, so nothing they write can make squad-kit's own
|
|
53
|
+
git, which runs outside the guard, start a program of theirs.
|
|
54
|
+
- **The project's commit hooks run in the same guard, once, on a stand-in.** They look at the change on a branch of
|
|
55
|
+
their own, so a hook cannot move a real branch, plant a hook, change a git setting or reach another ticket. The real
|
|
56
|
+
commit is made after, outside the guard, with your signature if your git signs.
|
|
57
|
+
**Known gap, being closed next:** while they run, hooks share git's store of objects, so a hook built to do harm could
|
|
58
|
+
change a file stored there. A project with no commit hooks is not affected.
|
|
59
|
+
- **squad-kit runs no other hook.** Every other git it runs has hooks off: it does not run a project's `pre-push`,
|
|
60
|
+
`post-merge`, `post-checkout` or `post-commit` outside that one commit (a `post-commit` runs on the stand-in). The
|
|
61
|
+
project's own checks have already run in the guard by then. Pushing from your own terminal still runs your hooks.
|
|
62
|
+
A project that uses Git LFS still gets its large files uploaded: a push runs squad-kit's own small `pre-push`, kept in
|
|
63
|
+
its own folder, which does only that.
|
|
64
|
+
- **squad-kit's git starts nothing a repo names by itself:** no file monitor (`core.fsmonitor`), no diff program
|
|
65
|
+
(`diff.external`, textconv), and it never looks inside a nested repo. Programs named in your own git settings for the
|
|
66
|
+
network, credentials, filters and merges stay on (`core.sshCommand`, git-lfs): they need a line in a settings file,
|
|
67
|
+
and neither the guard nor an agent's sandbox can write those files.
|
|
51
68
|
- **Windows is less protected and not fully tested yet.** There, the agents' own commands and the project's own
|
|
52
69
|
commands have no guard, so they can reach other files on the computer, squad-kit's own too. Use it on projects you
|
|
53
70
|
trust. Settings says so.
|