Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

## Unreleased

## 3.4.10 - 2026-11-02

- Replaced the single `*.dist-info` exception with a complete, read-only preflight
of every reachable `.chatgpt-projects/**/work/_deps` dependency tree.
- Show every inaccessible dependency path in one review window and require the
user to approve that exact set before any omission is allowed. A changed or new
read failure after review stops the backup instead of widening the exclusion.
- Keep conversations, project registrations, paths outside `work/_deps`, sharing
violations and non-permission errors mandatory and fail closed.
- Added hash-protected preflight and exclusion reports plus end-to-end coverage for
simultaneous inaccessible `PIL` and `pillow-*.dist-info` directories.
- Hardened large restores after the issue #8 field report: peak-space planning now
includes per-file allocation overhead plus a reserve, space is rechecked before
restore writes, and a full-disk failure while updating the error journal can no
longer prevent automatic rollback from being attempted.

## 3.4.9 - 2026-11-02

- Allow only access-denied directory enumeration for versioned `*.dist-info`
Expand Down
18 changes: 12 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@
**One-click Codex backup, restore, and Windows PC migration.**

[![Windows](https://img.shields.io/badge/Windows-10%20%7C%2011-0078D4?logo=windows)](https://github.com/dkwolf1/Codex-Lifeboat)
[![Stable: 3.4.9](https://img.shields.io/badge/stable-v3.4.9-16a34a)](https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.9)
[![Stable: 3.4.10](https://img.shields.io/badge/stable-v3.4.10-16a34a)](https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.10)
[![CI](https://github.com/dkwolf1/Codex-Lifeboat/actions/workflows/ci.yml/badge.svg)](https://github.com/dkwolf1/Codex-Lifeboat/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

[Wiki](https://github.com/dkwolf1/Codex-Lifeboat/wiki) · [Nederlands](docs/nl/README.md) · [Security](SECURITY.md) · [Documentation](docs/IMPLEMENTATION-ROADMAP.md)

> **Stable release:** version 3.4.9 safely reports and skips only inaccessible,
> reconstructable Python distribution metadata below Codex project dependency
> roots. It passes all 90 source checks and 12 automated compatibility scenarios.
> **Stable release:** version 3.4.10 preflights complete Codex project dependency
> trees and requires explicit review of the exact inaccessible paths before they
> can be excluded. Large restores use conservative peak-space and runtime reserve
> checks, and rollback is still attempted if a full disk prevents an error-journal
> update. It passes all 95 source checks and 12 automated compatibility scenarios.
> The migration workflow also has prior
> physical Windows 11 PC A → PC B → PC A evidence. Keep an independent copy of
> irreplaceable data and read the [testing guide](docs/TESTING-GUIDE.md).
Expand All @@ -20,7 +22,7 @@ https://mechscript.nl/en/codex-lifeboat-backup-restore-migrate-en/

## Download for Windows

### [Download Codex Lifeboat 3.4.9 for Windows](https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.9)
### [Download Codex Lifeboat 3.4.10 for Windows](https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.10)

On the release page, download only:

Expand Down Expand Up @@ -54,7 +56,8 @@ It includes:
- Consistent SQLite snapshots and SHA-256 integrity validation
- Automatic Windows profile and project-path translation
- A reviewed Project Location Mapper for external-drive, USB, and network roots
- A read-only comparison plan with conflicts, selected actions, and free-space checks
- A read-only comparison plan with conflicts, selected actions, and conservative
peak-space checks including file-allocation overhead and a safety reserve
- Per-chat keep-backup, keep-computer, keep-both, skip, and cancel decisions
- Destination-only projects retained by default, with explicit archive or
recoverable-delete choices
Expand All @@ -72,6 +75,9 @@ It includes:
- An explicit destination picker on every backup, even when one USB drive is found
- A Windows path-length preflight that takes the short staging directory, final
backup name, selected payload, long-path setting, and filename limits into account
- A complete read-only preflight of `.chatgpt-projects/**/work/_deps`, with a
scrollable review and explicit approval of the exact inaccessible dependency
paths; new, changed, or ordinary-data failures remain fatal
- Narrow copy-error tolerance for reconstructable Python bytecode cache only;
skipped cache files remain visible as warnings while ordinary files stay mandatory
- Clearly marked incomplete staging evidence that is never offered as a restore source
Expand Down
4 changes: 2 additions & 2 deletions build.ps1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[CmdletBinding()]
param(
[string]$Version = '3.4.9',
[string]$Version = '3.4.10',
[string]$PythonPath,
[switch]$SkipTests
)
Expand Down Expand Up @@ -55,7 +55,7 @@ if (-not (Test-Path -LiteralPath $python -PathType Leaf)) {
}
}

& $python -c "import PyInstaller, zstandard; assert PyInstaller.__version__ == '6.22.3'; assert zstandard.__version__ == '0.23.0'"
& $python -c "import PyInstaller, zstandard; assert PyInstaller.__version__ == '6.22.3'; assert zstandard.__version__ == '0.25.0'"
if ($LASTEXITCODE -ne 0) {
& $python -m pip install --disable-pip-version-check -r (Join-Path $repoRoot 'requirements-build.txt')
if ($LASTEXITCODE -ne 0) { throw 'Installing build dependencies failed.' }
Expand Down
19 changes: 13 additions & 6 deletions docs/KNOWN-LIMITATIONS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Known limitations of release 3.4.4
# Known limitations of release 3.4.10

1. There is no published stable import contract for the local Codex database.
The assistant therefore inspects schemas and must be retested after major future
Expand All @@ -24,10 +24,12 @@
9. Phase 10.1 reports logical file sizes. Package-manager hardlinks or deduplicated
files (for example a pnpm store plus `node_modules`) can use less physical space
on the source disk, but a portable backup stores each visible file independently.
10. Selection is currently per complete project. Codex data is always included and
individual dependency/cache subfolders are not silently removed. Excluding a
project keeps its chats as projectless history, but its files are not recoverable
from that backup and the original working directory may not exist after restore.
10. Selection is per complete project. Codex data is always included. Inaccessible
paths below `.chatgpt-projects/**/work/_deps` are excluded only after a complete
read-only preflight displays the exact set and the user explicitly approves it.
Any path outside that dependency boundary, any changed set, and any unclassified
error remains fatal. Excluded dependency payload must be reconstructed by Codex
or the relevant package manager after restore.
11. Git conflict explanations require a readable Git worktree and the Git executable.
When either side or the required history is unavailable, Lifeboat reports
insufficient evidence and falls back to its complete file hashes and explicit
Expand All @@ -38,6 +40,11 @@
normalization. Edited records, changed metadata, malformed JSONL, an empty
rollout, destination-ahead history, and arbitrary divergence require an
explicit user decision. Lifeboat does not perform a general-purpose chat merge.
13. Version 3.4.4 is stable after automated source/EXE/ZIP testing and a successful
13. Version 3.4.10 is stable after automated source/EXE/ZIP testing and a successful
physical Windows 11 A-to-B-to-A hand-off. A physical Windows 10 run and removal
of a real USB drive during an active write are not yet documented.
14. Restore is transactional with automatic rollback but is not yet a general
resumable file-copy engine. Very large restores can take substantial time.
Version 3.4.10 conservatively accounts for logical bytes, estimated allocation
overhead and a safety reserve, and rechecks free space during large writes;
another process can still consume space unexpectedly.
16 changes: 8 additions & 8 deletions docs/RELEASE-CHECKLIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,18 @@

[Nederlands](nl/RELEASE-CHECKLIST.md)

This checklist publishes Codex Lifeboat 3.4.9 as a **stable release**. The tag
This checklist publishes Codex Lifeboat 3.4.10 as a **stable release**. The tag
workflow builds and validates fresh release assets, creates
their checksums and provenance attestations, and publishes the GitHub release.

## Before pushing

- Confirm that `git status --short` contains only intended 3.4.9 changes.
- Confirm that `git status --short` contains only intended 3.4.10 changes.
- Confirm that no real backup, database, token, `.env`, EXE, ZIP, or build
directory is staged.
- Keep the generated `dist` directory locally; `.gitignore` deliberately prevents
it from entering the repository.
- Do not create the `v3.4.9` tag until the `main` CI run is green.
- Do not create the `v3.4.10` tag until the `main` CI run is green.

## Publish with PowerShell

Expand All @@ -23,23 +23,23 @@ Run these commands from the repository directory:
git add -A
git status --short
git diff --cached --check
git commit -m "Handle inaccessible dependency metadata directories"
git commit -m "Add reviewed dependency preflight exclusions"
git push origin main
```

Wait until the `main` CI run is green at
<https://github.com/dkwolf1/Codex-Lifeboat/actions/workflows/ci.yml>. Then run:

```powershell
git tag -a v3.4.9 -m "Codex Lifeboat 3.4.9 stable release"
git push origin v3.4.9
git tag -a v3.4.10 -m "Codex Lifeboat 3.4.10 stable release"
git push origin v3.4.10
```

The tag triggers `.github/workflows/release.yml`. Do **not** also create a manual
release with the same tag: the workflow creates it as the stable latest release.
Follow it at
<https://github.com/dkwolf1/Codex-Lifeboat/actions/workflows/release.yml>, then
open <https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.9>.
open <https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.10>.

## Verify the published release

Expand All @@ -64,7 +64,7 @@ gh attestation verify .\Codex-Lifeboat-Windows-x64-Portable.zip --repo dkwolf1/C

## Stable-release evidence

The 90-check source/EXE/ZIP gate, 12/12 automated Windows scenarios, and a physical
The 95-check source/EXE/ZIP gate, 12/12 automated Windows scenarios, and a physical
Windows 11 PC A → PC B → PC A workflow all passed. The physical workflow included
both verify operations and opening and continuing work in Codex after restore.
Windows 10 and USB-interruption coverage remain documented as pending. Public
Expand Down
19 changes: 13 additions & 6 deletions docs/nl/KNOWN-LIMITATIONS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Bekende grenzen van release 3.4.4
# Bekende grenzen van release 3.4.10

1. OpenAI publiceert geen stabiel importcontract voor de lokale Codex-database.
De app gebruikt daarom schema-inspectie en moet na toekomstige grote
Expand Down Expand Up @@ -27,10 +27,12 @@
package manager (bijvoorbeeld een pnpm-store naast `node_modules`) kunnen op de
bronschijf fysiek minder ruimte gebruiken, maar een overdraagbare back-up bewaart
ieder zichtbaar bestand afzonderlijk.
10. Selectie werkt nu per compleet project. Codex-data gaat altijd mee en afzonderlijke
dependency- of cachemappen worden niet stil verwijderd. Een uitgesloten project
bewaart zijn chats als projectloze geschiedenis, maar de bestanden zijn niet uit
die back-up herstelbaar en de oorspronkelijke werkmap kan na herstel ontbreken.
10. Selectie werkt per compleet project en Codex-data gaat altijd mee. Ontoegankelijke
paden onder `.chatgpt-projects/**/work/_deps` worden alleen uitgesloten nadat een
volledige alleen-lezen preflight de exacte lijst toont en de gebruiker deze
expliciet goedkeurt. Paden buiten die dependencygrens, een gewijzigde lijst en
niet-geclassificeerde fouten blijven fataal. Uitgesloten dependencies moeten na
herstel opnieuw door Codex of de relevante package manager worden opgebouwd.
11. Git-conflictuitleg vereist leesbare Git-werkmappen en het Git-programma. Als een
kant of benodigde geschiedenis ontbreekt, meldt Lifeboat onvoldoende bewijs en
vallen de volledige bestandshashes en expliciete conflictkeuzes terug als basis.
Expand All @@ -41,6 +43,11 @@
Gewijzigde records of metadata, ongeldige JSONL, een lege rollout, een langere
doelchat en iedere andere afwijking vragen een expliciete gebruikerskeuze.
Lifeboat voert geen algemene chatmerge uit.
13. Versie 3.4.4 is stabiel na bron-, EXE- en uitgepakte-ZIP-tests en een geslaagde
13. Versie 3.4.10 is stabiel na bron-, EXE- en uitgepakte-ZIP-tests en een geslaagde
fysieke Windows 11-route van A naar B en terug. Een fysieke Windows 10-test en
het lostrekken van een echte USB-stick tijdens schrijven zijn nog niet vastgelegd.
14. Herstel is transactioneel met automatische rollback, maar nog geen algemeen
hervatbare bestandskopieerengine. Zeer grote restores kunnen veel tijd kosten.
Versie 3.4.10 telt logische bytes, geschatte bestandssysteemallocatie en een
veiligheidsreserve conservatief mee en controleert vrije ruimte opnieuw tijdens
grote schrijfacties; een ander proces kan ruimte nog steeds onverwacht vullen.
18 changes: 12 additions & 6 deletions docs/nl/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,19 @@

[Wiki](https://github.com/dkwolf1/Codex-Lifeboat/wiki) · [English](../../README.md) · [Beveiliging](../../SECURITY.md) · [Documentatie](IMPLEMENTATION-ROADMAP.md)

> **Stabiele release:** versie 3.4.9 rapporteert en negeert uitsluitend
> ontoegankelijke, reconstrueerbare Python-distributiemetadata onder Codex-
> dependencyroots. Alle 90 broncontroles en 12 geautomatiseerde
> compatibiliteitsscenario's slagen. Voor de
> **Stabiele release:** versie 3.4.10 controleert vooraf volledige Codex-
> dependencybomen en vereist expliciete goedkeuring van de exacte ontoegankelijke
> paden voordat ze mogen worden uitgesloten. Grote restores gebruiken een
> conservatieve piekruimte- en runtime-reservecontrole; rollback wordt ook gestart
> als een volle schijf het foutjournaal niet kan bijwerken. Alle 95 broncontroles en
> 12 geautomatiseerde compatibiliteitsscenario's slagen. Voor de
> migratiewerkwijze bestaat bovendien eerder fysiek bewijs van een Windows 11-
> route van pc A naar pc B en terug. Bewaar onvervangbare gegevens ook apart en
> lees de [testhandleiding](TESTHANDLEIDING.md).

## Downloaden voor Windows

### [Download Codex Lifeboat 3.4.9](https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.9)
### [Download Codex Lifeboat 3.4.10](https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.10)

Download op de releasepagina uitsluitend dit bestand:

Expand Down Expand Up @@ -52,7 +54,11 @@ paden veilig passen. Is die ondersteuning uitgeschakeld of onbekend en bereikt e
verplicht verwacht pad de klassieke grens van 260 tekens, dan vraagt Lifeboat vóór
het grote kopieerwerk om een kortere doelmap. Alleen een te lange reconstrueerbare
Python-cache blokkeert de kernback-up niet: weigert Windows die kopie, dan wordt dit
vastgelegd en eindigt de back-up geldig met waarschuwingen.
vastgelegd en eindigt de back-up geldig met waarschuwingen. Codex-projectdependencies
onder `work/_deps` krijgen vooraf een volledige alleen-lezen controle.
Ontoegankelijke dependency-paden worden samen in één venster getoond en alleen na
expliciete goedkeuring exact uitgesloten; iedere nieuwe of gewone-datafout blijft
blokkerend.

## Herstellen op een nieuwe computer

Expand Down
16 changes: 8 additions & 8 deletions docs/nl/RELEASE-CHECKLIST.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

[English](../RELEASE-CHECKLIST.md)

Deze checklist publiceert Codex Lifeboat 3.4.9 als **stabiele release**. De
Deze checklist publiceert Codex Lifeboat 3.4.10 als **stabiele release**. De
tag-workflow bouwt en controleert nieuwe releasebestanden, maakt de
checksums en herkomstverklaringen en publiceert de GitHub-release.

## Vóór het pushen

- Controleer dat `git status --short` alleen bedoelde 3.4.9-wijzigingen bevat.
- Controleer dat `git status --short` alleen bedoelde 3.4.10-wijzigingen bevat.
- Stage geen echte back-up, database, token, `.env`, EXE, ZIP of bouwmap.
- De lokale map `dist` hoort niet in Git en wordt bewust genegeerd.
- Maak tag `v3.4.9` pas nadat de CI-run van `main` groen is.
- Maak tag `v3.4.10` pas nadat de CI-run van `main` groen is.

## Publiceren met PowerShell

Expand All @@ -21,23 +21,23 @@ Voer in de repositorymap uit:
git add -A
git status --short
git diff --cached --check
git commit -m "Handle inaccessible dependency metadata directories"
git commit -m "Add reviewed dependency preflight exclusions"
git push origin main
```

Wacht tot de `main`-CI groen is op
<https://github.com/dkwolf1/Codex-Lifeboat/actions/workflows/ci.yml>. Voer dan uit:

```powershell
git tag -a v3.4.9 -m "Codex Lifeboat 3.4.9 stable release"
git push origin v3.4.9
git tag -a v3.4.10 -m "Codex Lifeboat 3.4.10 stable release"
git push origin v3.4.10
```

De tag start `.github/workflows/release.yml`. Maak niet daarnaast handmatig een
release met dezelfde tag: de workflow maakt deze als stabiele nieuwste release.
Volg de uitvoering op
<https://github.com/dkwolf1/Codex-Lifeboat/actions/workflows/release.yml> en open
daarna <https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.9>.
daarna <https://github.com/dkwolf1/Codex-Lifeboat/releases/tag/v3.4.10>.

## Gepubliceerde release controleren

Expand All @@ -60,7 +60,7 @@ Controleer na downloaden eventueel de GitHub-herkomstverklaring:
gh attestation verify .\Codex-Lifeboat-Windows-x64-Portable.zip --repo dkwolf1/Codex-Lifeboat
```

De 90 bron-/EXE-/ZIP-controles, 12/12 geautomatiseerde Windows-scenario's en een
De 95 bron-/EXE-/ZIP-controles, 12/12 geautomatiseerde Windows-scenario's en een
fysieke Windows 11-route van pc A naar pc B en terug zijn geslaagd. Die route bevatte
beide controles en verder werken in Codex na herstel. Windows 10 en USB-onderbreking
blijven als open aanvullende dekking vermeld. Testers mogen nooit echte back-ups
Expand Down
Loading
Loading