Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: moritzfl/opencode-codex-memory
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: moritzfl/opencode-codex-memory
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: codex-extension-interop
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 5 commits
  • 10 files changed
  • 1 contributor

Commits on Jul 25, 2026

  1. feat: exchange memory with a local Codex CLI via extensions (implements

    #1)
    
    New default-off codex_interop option ({ import, export, codex_home }):
    
    - import: Codex's consolidated MEMORY.md/memory_summary.md are byte-compared
      and copied into extensions/codex_import/ inside the claimed phase-2 job
      (after baseline, before diff capture), so changes consolidate in the same
      run. Artifacts-gone drops the copies as a forgetting signal; an unreachable
      Codex home is a no-op, never a deletion signal.
    - export: after a successful consolidation, validated artifacts are copied
      into $CODEX_HOME/memories/extensions/opencode_import/ with instructions
      for Codex's consolidator. Strictly additive: never bootstraps Codex's
      workspace, never touches its state DB.
    
    Both instructions files carry provenance tags ([from codex]/[from opencode])
    and forbid re-importing the other side's tag, so memories don't ping-pong.
    Follows the extension mechanism Codex itself uses to import Claude memories
    (external_agent_import); adaptation recorded in codex-map.yaml.
    moritzfl committed Jul 25, 2026
    Configuration menu
    Copy the full SHA
    5e8c902 View commit details
    Browse the repository at this point in the history
  2. fix: decide memory-root overlap by inode identity, not platform case …

    …rules
    
    The overlap guard case-folded paths on darwin/win32 only. Actual case
    sensitivity is per volume/directory (case-sensitive APFS, per-dir Windows
    flags, casefold ext4), and Unicode normalization aliases paths besides case.
    
    Compare existing paths by dev:ino instead: self-or-ancestor walk catches
    case aliasing, NFC/NFD aliasing, symlinks, and bind mounts on any platform,
    and walks over nonexistent tail components. When both roots exist and the
    inode walk finds no relation, trust it over the lexical guess (a case-variant
    path on case-sensitive APFS is a real, distinct directory). The case-folding
    lexical comparison remains only as fallback for roots that do not exist yet.
    moritzfl committed Jul 25, 2026
    Configuration menu
    Copy the full SHA
    7d3e87d View commit details
    Browse the repository at this point in the history
  3. feat: surface effective options and config warnings in memory_inspect

    The plugin never hard-fails on invalid options, and plugin console warnings
    are effectively invisible in the TUI — so there was no reliable place to
    verify the configuration took effect.
    
    Move the options state into src/options.ts (leaf module, no import cycle)
    with a config-warning registry; applyPluginOptions records unknown-key and
    malformed-value warnings there. memory_inspect now echoes the effective
    (post-parse, post-clamp) options, any recorded warnings, and the resolved
    codex_interop state including whether the Codex memories root exists.
    Document memory_inspect as the configuration check in the README.
    moritzfl committed Jul 25, 2026
    Configuration menu
    Copy the full SHA
    f16def4 View commit details
    Browse the repository at this point in the history
  4. chore: re-audit codex parity at 4c43465

    Drift audit 6c00dc0..4c43465 (17 watched files, +1209/-656): all changes are
    no-ops for the port.
    
    - state/runtime/memories.rs: is_pinned column plumbing only; memory
      eligibility query passes is_pinned: None (no pin filter). Claim/lease/
      enqueue/watermark/cooldown semantics untouched.
    - memories/write/runtime.rs: StartThreadOptions spawn refactor with
      equivalent defaults; ItemIds feature retired (always-on).
    - ext/memories: step-store trait-param removal; injection/gating identical.
    - features/config: Memories + ExternalAgentMemoryImport specs and
      MemoriesToml defaults/clamps unchanged.
    - codex-mcp/mcp_tool_call: connection-set refactor; pollutes_memory still
      unconditionally true, marking still gated on disable_on_external_context.
    - external-agent-migration memory importer: zero diff (memory_import.rs,
      memory.rs, detect/memory.rs); upstream additions are provider-attribution
      import-history bookkeeping in the state-DB layer the port deliberately
      lacks.
    - thread pinning is memory-neutral (reconcile stamps no memory_mode).
    
    No ports, no note changes needed.
    moritzfl committed Jul 25, 2026
    Configuration menu
    Copy the full SHA
    582be53 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    a38375f View commit details
    Browse the repository at this point in the history
Loading