joy
Joydev GmbH·joyint.joy
Terminal-native, git-native product management for developers and AI.
winget install --id joyint.joy --exact --source wingetLatest 0.21.0·September 20, 2026
Release Notes
v0.21.0 Date: 2026-09-20 Previous: v0.20.0 Contributors
- ai:claude@joy delegated-by:horst.schwarz@joydev.com (536 events on 129 items)
- horst.schwarz@joydev.com (74 events on 70 items)
- ai:claude@joy delegated-by:cx-test@example.com (1 events on 1 items) Epics
- JOY-01F9-9E AI members participate in chats (turn rules in joy-core)
- JOY-0251-AA Forge plugins: joy- binaries with a question contract
- JOY-01FF-9D Jobs as first-class items (JOY-01FE-37)
- JOY-0029 Joy process: capability model and member management
- JOY-01FB-42 Chats are always encrypted: crypt zones for .joy/chats Stories
- JOY-024C-97 Typed message parts and sealed attachments in the chat model and store
- JOY-0252-1A The plugin question contract and the forge plugin registry
- JOY-0253-8A joy-core: alias resolution as a no-match fallback
- JOY-0254-3C joy-github: erstes Forge-Plugin
- JOY-0255-B3 joy-gitlab: zweiter Beweis des Vertrags
- JOY-0256-64 Move the release path into the forge contract
- JOY-0257-FC The OTP finds its member by itself
- JOY-0258-59 A magic-link e-mail as a door into the account
- JOY-025B-F6 joy-gitea: the third forge plugin (Codeberg and Forgejo)
- JOY-021D-F4 Whole-file sealed chats: event log + anonymous wraps (core)
- JOY-0266-CA Telemetry core (Rust): tracing-based OTel records for CLI and desktop backend, file sink, settings.toml level
- JOY-0268-2A Local sync: chats keep the 1 s poll, everything else within a forge budget with 429 backoff and a span per contact
- JOY-026B-E7 Chat ids people can use: a running number like jyn, a joy-style id, and the name as address
- JOY-026C-34 joy chat writes make ONE forge contact: push first, fetch and unite only when refused
- JOY-0031 Job tracking with automatic lifecycle
- JOY-0032 AI cost tracking per job
- JOY-00B7-E6 joy sync: push and pull via Git
- JOY-014F-D4 Crypt block on Job records with state-based validity
- JOY-0150-B0 WebUI Crypt parity via Web Crypto API
- JOY-0233-44 One shared writer for an AI turn execution record
- JOY-0234-CD The chat turn engine: one loop in joy-ai for every host
- JOY-0235-42 One permission policy for agent tool calls
- JOY-0236-87 The activity block has one producer, in joy-ai
- JOY-0237-7C Live turn activity: one vocabulary for every host
- JOY-0238-34 The parity script: one conversation, one golden, every host
- JOY-0285-DB A retry outranks the first attempt: the attempt counter on a chat message
- JOY-0280-A5 The level chosen for a turn reaches the agent through the ACP session mode
- JOY-0282-E8 The chat lane ends a turn on silence, not on the clock, and keeps what streamed
- JOY-0283-1B Each tool's own way of handing over a plan is normalised into the one record
- JOY-0284-75 A running AI turn is a fact of the chat, persisted and visible to everyone
- JOY-0287-16 A host cannot ask a forge plugin whether a repository holds a joy store
- JOY-0288-72 joy init needs the git binary, so a host without it cannot create a project
- JOY-0289-FA A host cannot list a repository's files or learn its default branch through a forge plugin
- JOY-028A-DC A chat turn cannot ask the person it runs for before a denied tool call
- JOY-0295-36 J5: contact discipline in requests, and the classifier vocabulary
- JOY-0297-1A J9: init, identity and the CLI founder
- JOY-0294-D5 J4a: credential helper runner, ssh chain, credential shapes
- JOY-0296-64 J7: repository maintenance
- JOY-0293-12 J1: plugin runner v2, protocol v2, resolution
- JOY-0299-98 J4h: host key verification and the one certificate callback (new)
- JOY-0298-E4 J2: connector consolidation, HTTP client, instance configuration, scopes
- JOY-029A-5A J4p: proxies and the trust store (new)
- JOY-029B-B0 J3: sign in verbs, keychain, OAuth, refresh lock
- JOY-029E-9D J8: distribution shape
- JOY-029C-01 J4b: resolver assembly
- JOY-029D-3E J10: the CLI forge command group and the interactive gate (new)
- JOY-029F-ED J6: git2 only in the CLI (JOY-01FD-ED)
- JOY-02A0-6E J11: the remaining identity call sites in the CLI (new)
- JOY-01FD-ED Migrate the whole joy-core git layer (GitVcs) from CLI subprocess to git2 Tasks
- JOY-024A-39 One chat-turn codebase: shared per-turn core, ordered live wire, corpses removed
- JOY-0250-48 Interim: non-text agent content leaves a visible fact instead of vanishing
- JOY-025A-3A Publish the plugin crates: joy-github, joy-gitlab, joy-bi
- JOY-025D-99 Documentation: forge plugins on a workstation
- JOY-025F-0B The forge alias suite covers the open customer cases
- JOY-0260-1A Bats cover the chat store, the plugin contract and the release notes
- JOY-026A-F2 joy chat send answers 'message sent (N ms)' instead of 'sent to '
- JOY-0272-CC The tutorial has no chapter on chats
- JOY-0273-7C Reading a chat takes two commands: show prints, read marks
- JOY-0274-A8 joy chat ls shows the long chat id first; the short form people type is missing
- JOY-0275-63 joy chat ls does not look like joy ls
- JOY-007A Extend integration tests for core workflows
- JOY-009F Split AI instructions into tool and automation mode
- JOY-00A1 Define interaction level behavior for tool context
- JOY-00A2 Define interaction level behavior for automation context
- JOY-00B8-95 joy clone: clone project from remote
- JOY-00BA-93 Local key management for E2E encryption
- JOY-00CC-67 Create joy-plugins crate for shared plugin system
- JOY-00CE-40 Add --app flag to launch native app plugin
- JOY-0208-CF retire legacy job store (jobs.rs, model/job.rs)
- JOY-023F-7B Unit tests for the sealed chat cycle
- JOY-027D-E2 The registry names the install command apart from the prose
- JOY-0276-FA A silent forge holds a contact for as long as it likes
- JOY-02A1-FF J0: design document forge connection NG in joy/docs/design
- JOY-02A2-27 J0b: one HostKind and one remote URL parser after the Wave 0 merge
- JOY-02A3-E4 J0c: one NO_PROXY matcher, and the chat ref sync carries the contact verdict
- JOY-02A4-89 J0d: publishable crate set after the rebuild, and the design touch ups from Wave 2
- JOY-02A5-10 JC1: Wave 3 closeout in joy (bats suite green, anonymous AI token, engine half of A4, design lines)
- JOY-02A6-88 J10b: joy forge logout under a delegation session prints the connector's refusal
- JOY-02A7-A2 JW1: Windows findings of the release check (GCM child PATH, silent forge bound, agent pipe timeout, maintenance on read-only objects, sentences)
- JOY-02A8-F4 JM1: macOS findings of the release check (unreachable forge reported as rejected token, connector stderr lost, status help, /proc test, unsigned macOS CLI binaries)
- JOY-02A9-48 JO1: needs_org_approval is unreachable from a one shot CLI process, and the login probe reads an organisation wall as no login for repo
- JOY-02AA-ED JK1: a locked OS keyring blocks the connector forever instead of falling back to the token file
- JOY-028E-4F joy-core names no directory for an app's local state
- JOY-02AE-1A Who I am in a project comes from git config again, local before global, the forge account last, and no pin Bugs
- JOY-0264-89 gitignore managed block flip-flops between machines: tool-configured signal is machine-local
- JOY-026D-C5 joy chat send refuses a chat that was just created in the app
- JOY-023B-7E The chat ref is written without a compare-and-swap, so concurrent saves orphan each other
- JOY-0247-E1 Crate publish misses the crates added since 0.19: model, chat, chat-store, token
- JOY-023C-1E Chat writes never pack or prune, so the store only grows
- JOY-0246-B7 Release bump misses the chat crates: version-files list incomplete
- JOY-0248-AE Forge release keeps an empty changelog when the dist workflow wins the race
- JOY-0249-D2 Live stream shows a stray second answer bubble that the store never gets
- JOY-0259-44 An enrolled member is hidden behind an open invitation
- JOY-025C-A7 The forge plugins know only the product domains, not their own instances
- JOY-021C-81 Chat-ref commits leak the writer identity
- JOY-021E-B0 Job session files accumulate across rounds (stale-session replay)
- JOY-023D-21 A permission is counted and shown as a tool step of its own
- JOY-0269-BC joy chat asks for the passphrase on every command although a session is active
- JOY-026E-0F joy chat send --session posts as the local login, not as the delegated AI member
- JOY-026F-63 The chats poll pushes after every fast-forward pull, delivering nothing
- JOY-0270-40 joy chat send accepts an @mention of an AI member that nobody will answer
- JOY-0271-34 joy chat show does not accept the short chat id that ls, info and send accept
- JOY-01C9-EA joy project token redeem only on time
- JOY-0230-F0 Anonymous mode: app-issued delegation tokens never redeem
- JOY-023E-68 An AI member on the CLI cannot read or write sealed chats
- JOY-0278-85 A forge that exceeds the wait bound reports an SSL syscall error, not a timeout
- JOY-0279-8D A pre-sealing chat must not stall every clone's chat sync
- JOY-027C-14 forge-net links the system OpenSSL, so a signed desktop cannot start
- JOY-0286-01 A streamed turn event carries no identity of its turn
- JOY-0277-F2 A fortune names its author behind a double hyphen
- JOY-027E-D6 A newline inside an argument makes a joy call stop being one
- JOY-027F-EB The chats poll holds the checkout gate across the forge contact; every desktop write waits behind it
- JOY-0290-EA ai_setup probes tool binaries with which, which does not exist on Windows
- JOY-028D-46 joy reads the system git identity even with GIT_CONFIG_NOSYSTEM set
- JOY-02AC-C3 A public repository makes joy believe nobody is signed in, so the host falls into the 15 minute lane
- JOY-028F-0B Child processes flash console windows under a GUI host on Windows Reworks
- JOY-0265-D7 Four places touch git instead of one engine
- JOY-00CA-0F Create joy-connect commercial wrapper crate Decisions
- JOY-01FE-37 ADR: job as a first-class item type (multi-item scope, attempts, jobs capability)
- JOY-0267-55 Observability rules: the ADR lives in the platform backlog (JP-00ED-EE) Ideas
Installer type: zip
Details
- Homepage
- https://github.com/joyint/joy
- License
- MIT
- Publisher
- Joydev GmbH
- Support
- https://github.com/joyint/joy/issues
- Moniker
joy
Tags
cligitproductivityproject-management