Repository navigation
Releases: SaltyPretz3l/jenny
Release list
Jenny 1.4.0
Everything landed since 1.3.1, through private main on 2026-10-08: 226
commits over three days of building projects through Jenny, a Linux testing
round on Debian 13, and six read-only audit passes over the tree. The headline
is Propose mode: Jenny proposes exact code changes and you accept them before
anything is written.
Changelog
Features
- Propose mode: a run mode in which Jenny proposes exact file changes instead of making them. The Changes view shows them beside the editor, grouped with their dependencies and a "Needs attention" list; you comment, accept or reject, and nothing touches the disk until you accept. History keeps Undo and Redo for what was applied.
- Workspace panel system: every panel can be moved anywhere; editor groups each carry their own terminal, changes and chat; up to four terminals; Run and test output open as task tabs; a chat or terminal can be bound to an editor group so its diffs land there; two Workspace chats side by side.
- Project task board and project notes: tasks are scoped to the open project (with a "Show tasks from" menu), and Jenny keeps per-project notes through a
project_notestool with an attribution journal and one-click undo. The Notes rail lights a dot when Jenny writes. - Semantic catalog: bring your own embedding GGUF and Jenny builds a passive index in its own small llama-server (CPU by default, never evicting the chat model), only after 30 seconds of idle.
knowledge_searchfuses grep with the vectors and falls back to grep. Kill switchJENNY_ENABLE_SEMANTIC_CATALOG=0. - Changes view with History, Undo and Redo replaces the IDE Changes panel. Commands, scripts and
python_executereport the workspace files they changed as reviewable diffs, scripted tools get a checkpoint before they run, and checkpoints also capture untracked files. - A failed model load now says why (a classified cause with the matching fix) on the model library row, the Composer chip and Diagnostics, and the Home hero follows the model state: no model, downloading, failed, ready.
- ChatGPT sign-in offers to paste the redirect URL when the browser does not return (10-minute window, single use).
- The project pill sits on the Composer bar and is accented when the chat filter hides the open chat; editor tabs are restored where they were; every icon-only button carries a label.
- Settings > Models shows the context window Jenny loads, not the estimator default. Diagnostics leads with a plain explanation and one action per issue, with the resource rows below.
Reworks
- Chats are saved by appending changes to a journal instead of rewriting the whole file, and the chat index is journaled too. A torn tail or a newline-less last record is repaired on read. Canonical sessions move from schema 22 to 24.
- Reasoning streams as deltas by default (
JENNY_ENABLE_REASONING_WIRE_DELTAS=0restores whole-panel updates). - Local engines get a prefix-stable request layout: the per-turn context rides in a trailing row, so llama-server reuses the prompt prefix on follow-up turns (prefill in well under a second instead of 20 to 40 seconds on a 9B model).
- The plugin platform is removed. Settings > Extensions shows skill folders and MCP servers; a profile with an old
plugins/folder starts clean; an old image chat opens read-only with a notice. - A reply that restarts folds its discarded draft instead of showing a "restarted" marker.
- Settings page scripts load on first open and the Settings page paints only while it is active, so Jenny holds less memory in a long chat.
- Shell commands: launch vectors hidden behind safe-looking names now need approval; the character-count token fallback keeps 30% headroom; an oversized compaction row is split into bounded pieces.
- The update check uses the system proxy and certificates and logs why it failed.
- Linux: Ollama runners orphaned when the app dies mid-shutdown are reaped at the next start.
- The 18 non-English interface languages had a correction pass (model-authored; a native speaker's look is still welcome).
- Housekeeping: 27 always-on flags collapsed, the legacy sidecar live-stream and vision paths retired, dead IDE preview paths removed, duplicated helpers folded into shared modules.
Fixes
- Session export redacts secrets in every exported text surface, and six IPC channels that skipped trusted-sender authorization now check it.
- File access: context reads verify the opened handle against the authorized root, atomic writes pin the validated parent directory, non-regular workspace entries are rejected,
edit_filerefuses reserved.jennystate in any letter case, and a redirected scratch directory is refused before any write. - Chat timeline: every text group of a message is kept, a re-asked approval stays pending, a question's receipt survives the reducer, a failed reply shows its text once, typed HTML entities show as typed, and a tooltip never lingers for an element that left the page.
- Ollama: an unload evicts only when no engine holds the model, a pull that passes its deadline closes the socket, the tools-disabled fallback keeps error terminals, and non-streaming tool calls return the provider's finish reason.
- llama-server startup refuses to spawn beside an orphan whose kill is unconfirmed.
- A failed session migration no longer writes stray chat files, a briefly locked chat file is not treated as corrupt, and an import with duplicate message ids is rejected before anything is written.
- A memory whose text exceeds the new limits survives the memory-store migration; audio attachments derive their type from the bytes.
- Visible final replies get their own size ceiling instead of the 16k tool-output cap; tool output is normalized before control tokens are stripped.
- Paused approval cards, the queue strip and Runs no longer offer a Resume the scheduler would refuse.
- A suggestion diff on a minified file renders inline, and the diff tab reveals the change in both panes;
grep_searchshows a window around a match on a long line;preview_testaccepts Spacebar. - Retention keeps tool-result media that persisted turn events still reference; a successful provider fallback resets the failed attempt first.
- Diagnostics wording is consistent ("app launch"), and a cut "Retained caches" label ends with an ellipsis.
Migration and qualification
- Canonical sessions move from schema 22 to 24 (23: the session journal; 24: suggested changes). A profile is migrated when 1.4.0 first opens it and chats are then saved as journals; an older build opens such a profile read-only, so export anything you may want to edit in an older build before upgrading. Shell configuration stays at schema 59, sidecar memory at 8, diagnostics at 1, and the sidecar API at
2026-08-17. - Propose mode, the Workspace panel system, project tasks and notes, and the semantic catalog were qualified by scripted real-app passes at three window widths and by the full local CI gate on the cut head. The maintainer's own hands-on session in Propose mode on a local model is still outstanding, so treat Propose mode as new.
- The Linux items were built from a Debian 13 testing round on 1.3.x and have not yet been retested in a packaged 1.4.0 Linux build. Two items from that round (a Codex CLI Experimental group in Settings and a "Working in Codex CLI" turn) are not in this release.
- Windows remains unsigned. Linux packages remain experimental. macOS remains experimental and has still not been run on a real Mac.
Jenny 1.3.1
A fix release on 1.3.0. Most of it comes from a week of Linux testing in the
packaged app and from building real projects through Jenny.
Changelog
Features
- Thinking levels are detected per model on llama-server: a model whose template only has a thinking on/off switch now offers None, Low, Medium and High.
- A resolved approval stays in the chat as a one-line receipt ("Allowed once", "Denied" and so on) instead of disappearing.
preview_testcan read back named elements after its clicks, and warns when a page loads files the in-app Preview will not.workspace_presenttells the model what the Workspace actually did with its request: shown, prompted, dismissed or failed.
Reworks
- Linux and macOS: every shell command runs under a small supervisor process that confirms nothing is left running before the next tool starts. This adds about 0.1 seconds per command on Linux.
- Codex CLI (experimental): tool requests travel as a structured reply instead of text markers, and Jenny's approvals still gate every tool.
Fixes
- Linux and macOS: after any shell command, later tools were refused until Jenny was restarted. They keep working now.
- Setup no longer reports a local model as ready when none is reachable, and the first Ollama load uses the context size saved for that model.
- The chat no longer jumps when an approval is answered, a reasoning panel closes or the end of a live reply gets shorter.
- Text written before a tool call stays above the tool's card after the turn ends and when the chat is reopened.
preview_testrejects misspelled arguments instead of reporting a test with no interactions as a success, and its result says which clicks and typing landed.edit_fileandworkspace_presentexamples include the fields their handlers require.- Typed backslashes are kept in your own messages.
- Work left at "stop requested" from an earlier run is retired at restart.
- A turn that times out before any output no longer says a model was loading when the route is remote.
- Diagnostics issue details no longer overlap at the default window size.
- Polling a background job that was stopped is no longer reported as a tool error.
Full notes, migration and qualification: RELEASE_NOTES.md
Jenny 1.3.0
Jenny is an AI coding harness that keeps you in the loop. It is built for local models and works with cloud ones.
Changelog
Features
- Two chats side by side: split view gives each pane its own timeline and composer.
- Choose how much of a turn to show, per chat: Answers, Thinking or Everything.
- ChatGPT sign-in is built in, with a Cloud models group in Settings > Models.
- Bring your own image models; generated images appear inline with save, copy and open.
- A live activity dot on the timeline shows what Jenny is doing.
- The subagent monitor lives in the artifact panel, with a list and per-child details.
- A reply waiting behind another chat says so; a failed command shows its exit code, and a timed-out one reads "Timed out".
Reworks
- Settings is reorganized: grouped rows, saved-value acknowledgement, save failures shown at the control.
- Diagnostics gains run-scoped issue and trace navigation; Runs moved there from Settings.
- Long tool-heavy turns stay responsive, and the Workspace IDE loads on first use, so Jenny holds less memory.
- Chat width: Standard (1100px) is the default; Narrow replaces the old default.
- Plugins are slimmed to skills, prompts, themes, settings and sandboxed views; unsigned packages are off by default.
- Removed: Remote Control, inline code suggestions, Home weather, the comet overlay and the legacy line terminal.
Fixes
- A crash during a paused file change no longer locks undo for the project.
- A chat no longer refuses messages after an engine restart.
- Stopping the engine no longer waits 4.5 seconds when work is waiting for you.
- A tool call over the size or count limit continues or stops with a retryable error, instead of ending the turn silently.
- Compaction copes with small local models and measures what the next request will send.
- Pausing while a question waits clears "Input needed".
- Switching engines waits for a confirmed stop, and Unload frees a managed llama-server model.
- A damaged data file is kept and never treated as a fresh install; uninstall keeps workspace notes.
- Streamed answer text matches its settled rendering, and a new chat no longer scrolls to the previous chat's height.
Full notes, migration and qualification: RELEASE_NOTES.md
Jenny 1.2.0
Highlights
- Open and edit PDF and DOCX files in the Workspace. PDFs open in IDE tabs
beside chat with pages, zoom, search, form filling, highlights, text notes and
ink. DOCX files support text, bold/italic/underline, lists, table cells,
embedded images and existing headers/footers. Parts the editor does not handle
are preserved. Saves detect conflicts and replace the file atomically. - Projects you can manage. Choosing a Workspace folder makes it a project and
new chats default into it. Settings › Projects renames and deletes projects. One
project menu (Explorer header, welcome page, composer) switches projects and
moves a chat. The Chats panel filters by project. - Work that keeps going. Every Send queues, and the composer shows the queue.
Replies can be paused and resumed. A "Needs you" inbox collects approvals and
questions. Home summarizes what Jenny did while you were away, and chat rows show
each chat's last outcome. Refusals say why. - Local GGUF models. Add a
.gguffile to Settings › Models as a model card
and pick a llama-server build per model. Vision projectors pair with their model.
Bonsai 2 runs on the PrismML build. - Sturdier long turns. A tool call cut off by the output limit now continues
instead of failing. Long reasoning streams stay live and incremental. Compaction
shows as it runs and stays in history. Local servers stream without bursts or
false "stalled engine" warnings. - Better PDF reading by the model, with numbered lines, page continuation and
OCR for scanned pages. It needs the optional PDF add-on below. - Reminders and safety nets. Reminders notify while Jenny runs, with Snooze.
After 50 consecutive automatic approvals in a turn Jenny asks again (Settings;
0 turns it off). An idle-guard pause waits up to four hours for you. - Smaller improvements. Rendered chat tables copy as TSV. Timeline code is
syntax-colored. The Tasks rail shows Jenny's checklist. The dock composer
toolbar has a fixed two-row layout. The Model library now lives in Settings ›
Models, and a new setting loads a model at startup.
Optional PDF add-on (PyMuPDF, AGPL-3.0)
PDF reading by the model uses PyMuPDF, which is licensed AGPL-3.0. It is not
bundled. Installing it is an explicit opt-in from Settings › Tools › PDF reading
add-on, which shows the licence first and downloads a fingerprint-pinned wheel
from pypi.org. An offline computer can install the same wheel from a file.
Without the add-on, a PDF read fails with a Set up PDF reading link to that
setting. The Workspace PDF viewer and editor (pdf.js, Apache-2.0) work either way.
Migration notes
- Shell configuration schema 53 → 55 (streak cap and related safety settings).
- Session store schema 20 → 22, and shadow store 8 → 9 (durable session runtime;
failed-attempt reasoning kept for retries). - Sidecar
API_VERSION(2026-08-17) and diagnosticsSCHEMA_VERSION(1) are
unchanged.
Known limits
Windows remains unsigned. Linux packages remain experimental and macOS is
source-only. Remote Control is off by default in 1.2.0 because the updated relay
is not deployed.
The 1.2.0 owner gate passed every row on 1.2.0 release candidates, including the
packaged Windows smoke, the installed upgrade from 1.1.1 and the GUI smoke suite.
Remote Control's row was waived because the relay is not deployed.
Jenny 1.1.1
Jenny 1.1.0 — languages and smoother workflows
Jenny 1.1.0
Jenny 1.1 is the first feature update after 1.0, with more languages, smoother conversation workflows and clearer controls over tool use.
- 19 interface languages, Arabic right-to-left layout, locale-aware formatting and an optional 24-hour clock. Translations are model-authored; newer copy may fall back to English.
- Better conversation management: multiselect, bulk archive/restore, deletion with Undo and clearer approval, plan-review and input-needed states.
- More useful results: calendar agendas in chat, improved artifact editing and recovery, and screenshot feedback for compatible local vision models.
- Clearer supervision and updates: Auto-run confirmation, an idle-based unattended guard, safety-mode settings and explicit update checks with recoverable download/install controls.
- Everyday fixes: slash commands, queued sends, streaming, scroll anchoring, session identity, startup and shutdown.
Experimental work includes Linux packaging, Docker browser setup and optional offline command isolation. Sandboxed commands run on disposable workspace copies; their file changes are discarded. Typed file tools save durable edits. Docker support does not imply a public hosted service or published container image. Remote Control plugin packages and relay/portal deployment are not included in this release.
Windows installation and updates
Download Jenny-Setup-x64.exe from this release. Existing users can explicitly check in Settings > About & Updates, then choose download and installation. No background update check, automatic download or install-on-quit is enabled.
Windows remains the supported desktop platform. Signing, platform availability, artifact hashes and verification evidence are recorded below for the actual files in this release.
Compatibility
Session schema remains 20 and the API version remains 2026-08-17. Shell config 53 adds the optional command sandbox, which defaults off. The 24-hour clock defaults off. Keep separate profiles for desktop and hosted instances; do not let them write the same profile concurrently.
Verification and known limits
The public distribution compatibility gate covers 11 Node suites and 78 Python tests. Public CI also runs lint, release metadata and hosted qualification. Artifact verification binds installer filenames, version, sizes and SHA512 update metadata to the release tag; SHA256SUMS provides download checksums.
Native-speaker translation review, real-model visual-preview quality and installed-user upgrade/recovery scenarios remain distinct from automated build tests. Experimental platforms must be read against their actual build and qualification results.
The dependency audit reports four advisories in the integrated Node lockfile: @humanfs/node (moderate), @xmldom/xmldom, fast-uri and js-yaml (high). No clean dependency-audit or artifact-attestation claim is made.
Full changelog: https://github.com/SaltyPretz3l/jenny/blob/main/RELEASE_NOTES.md
Release files and provenance
| Platform | Availability and qualification |
|---|---|
| Windows x64 | Supported; unsigned 1.1.0 installer. CI build, local packaged-app smoke, sidecar/native-host provenance and packaged Python checks passed. SmartScreen may warn. |
| Linux x64 | Experimental AppImage and deb. Native glibc 2.35 and packaged-app CI checks passed; installed-format upgrades and bare-metal qualification remain outstanding. |
| macOS | No download. Experimental signing setup failed; native verification and Apple Silicon installation remain unqualified. |
Built from public tag v1.1.0, commit e2bcc8ca247e756149bbfde3832fa0d2e980db5a, in release run 34355928734. All build/upload jobs have finished. The Windows package contains 1,714 tracked files byte-identical to the tag, a README differing only in line endings, and verified freshly generated host provenance. Installer/product version is 1.1.0.
Download the Windows installer. The SBOM and packaged runtime manifests are retained in the run's jenny-installer-windows-latest CI artifact. Published files are immutable; any correction will use a higher version. Preserve your profile on reinstall and export data before any manual downgrade.
SHA256 checksums
| File | SHA256 |
|---|---|
| Jenny-Setup-x64.exe | 195ef481bc0ef360fc5f2b676bbfbfff46a25929a9602d38040e4aea71b6b607 |
| Jenny-Setup-x64.exe.blockmap | 9366239838079b47dcef5c42bb21841d2f03800376f9c230f95cb4a81b5d4fec |
| Jenny-amd64.deb | b40c5ca6d1625d167bd9cc07c3fa74d917bfeae67d02bf7014e1b81e320a54e5 |
| Jenny-x86_64.AppImage | b2ea78c9d17affa330d460afff6984f1854b7a9148d129f17eb0e5a8cc701130 |
| SHA256SUMS-linux.txt | d60fc92e938193b3bc728aad2b8b065a5b99cba59f47d817ec02bc6688b808b0 |
| SHA256SUMS-windows.txt | 931f5fbdf0f84ecdc87f28afc8aecc3fce8029d3c8e715bd25aed206e01cc3ee |
| latest-linux.yml | d05e9dc4ebeaaa5677caef0c3f49a74cf6a1ecd8b3549074b5028fd333025fdc |
| latest.yml | f7f81c08160da1387e836e374c5b48ef3065e531c3577e6fda279d9cae2176ee |
Jenny 1.0.0
Jenny 1.0 is the first stable release, and the first one published from this repository.
Download
Windows (x64): Jenny-Setup-x64.exe — a one-click installer, no wizard pages. The installer is not code-signed yet, so Windows SmartScreen will show "Windows protected your PC" the first time; choose More info → Run anyway. Installing over 0.9.0 replaces it in place.
SHA-256 of Jenny-Setup-x64.exe:
308f288dc9b2e5ae690d6858f7b38fac8ba328b814c1f9685bffa3b2fe576582
macOS: experimental and not built for this release. The mac build leg exists but is unsigned and has never run on real hardware; see the release notes in the repository for status.
What Jenny is
A local-first desktop AI harness for coding, data visualization, and tool calls, with a light companion shell. Native Electron app, in-repo Python sidecar, your choice of local model. No API keys required, no cloud round-trip; your conversations stay on your machine.
Highlights
- Local models, properly driven. A managed
llama-serverengine ships alongside Ollama, with per-model engine choice, speculative decoding where the model supports it, and GGUF discovery that finds your models wherever they live. Models you already have are recognised without a catalog entry, and Jenny tells you what will fit in your VRAM before you load it. - A real model library. Settings gained a grouped model library with a per-model tuning drawer: context length, engine, acceleration, and the sampler knobs that matter.
- Images in chat. Attach or paste an image and Jenny sends it as a real vision turn, on Ollama and on the managed
llama-serverwith an auto-attached projector. The composer tells you up front when the loaded model cannot see. - Extensible: skills, plugins, themes, and MCP. Skills are invocable with
/autocomplete; plugins install from a file picker or drop zone, with a clearly labelled developer-unsigned path. Privileged plugin kinds are refused without a signature. - Reasoning you can actually read. Thinking streams verbatim, long reasoning is bounded by a budget that scales with the context window, and it continues across checkpoints rather than stopping silently.
- Longer conversations. Mid-turn compaction summarises earlier context instead of failing when a turn outgrows the window, with persisted snapshots so a reload keeps the thread.
- Plan mode v2. Plans are first-class documents: an editable pending plan card, approval that survives a restart, and a plan section in the task list.
- A leaner, sharper tool surface. The model-facing tool set was consolidated from 62 tools to 47, with a durable operation ledger that makes side-effecting tools idempotent across retries.
- Workspace, editor, and first run rebuilt. Explorer multi-select and drag-to-move, fail-closed IDE writes, and a checklist-style first-run hub in place of the linear wizard.
The full changelog is in RELEASE_NOTES.md. Jenny is solo-maintained and released as-is; see CONTRIBUTING.md and SECURITY.md.