Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
8fe5f5a
fix(plan-tune): reject never-ask on one-way ids at --write
szsunyuan Aug 17, 2026
1164c03
Fix: gstack-config get returns "" with exit 0 for keys that have no d…
benjaminberes-bp Jul 27, 2026
ca671d6
fix(redact): a typo'd subcommand no longer exits 0 having done nothing
Aug 17, 2026
9c4de4f
fix(browse): one ambiguous ref no longer kills the whole annotated sc…
namtrok Aug 16, 2026
f9f0e84
fix(version-bump): missing or empty VERSION no longer repairs a fabri…
garrytan Aug 17, 2026
0762fab
fix(memory-ingest): --probe counts post-attribution, through the same…
garrytan Aug 17, 2026
63ef693
feat(browse): allow CPU and network throttling for performance measur…
henbima Aug 16, 2026
ddeeb18
fix(session-update): lock pidfile records the live holder; hard TTL b…
garrytan Aug 17, 2026
c4d9150
chore(browse): explicit windowsHide on every Bun.spawn site + census …
garrytan Aug 17, 2026
40e4a53
fix(gbrain): brain worktree advances on the daily sync — no more sile…
garrytan Aug 17, 2026
2494276
feat(memory-ingest): honor the per-remote deny/read-only trust policy…
garrytan Aug 17, 2026
565ca9b
fix(config): repo_mode keeps its empty no-default semantics (#2611 fo…
garrytan Aug 17, 2026
6955dfa
fix(pair-agent): consent before killing a healthy headless daemon
garrytan Aug 17, 2026
d8a207f
fix(gbrain-status): MCP scoping is per-project, and project-local bea…
garrytan Aug 17, 2026
e57b279
fix(slug): gstack-slug matches remote-slug's owner-repo canonical for…
garrytan Aug 17, 2026
6df3037
fix(brain-sync): per-record spool dir — the enqueue/drain race dies s…
garrytan Aug 17, 2026
7f749f9
fix(bin-context): native slug fallback walks up like bash gstack-slug
garrytan Aug 17, 2026
bdc0b11
fix(next-version): git fallback queries the live remote, never mutate…
garrytan Aug 17, 2026
c9b5ccd
fix(setup): hooks register the global-install path and re-point stale…
garrytan Aug 17, 2026
ddc413e
fix(preamble): learnings capture is unconditional at completion (#2402)
garrytan Aug 17, 2026
a1cf3f2
feat(scrape): untrusted-content warning on the page-fetching skills (…
garrytan Aug 17, 2026
879beb9
fix(review): checklist paths resolve from the installed skill root (#…
garrytan Aug 17, 2026
423a963
fix(pair-agent): one-way-door consent question before a daemon relaun…
garrytan Aug 17, 2026
c856472
docs(codex): resume does not amortize the ~21K session prelude (#2387)
garrytan Aug 17, 2026
6ad9db5
fix(upgrade): fast-forward first; reset --hard only behind a proved-s…
garrytan Aug 17, 2026
fc21193
fix(preamble): brain-sync block counts the spool queue and resolves M…
garrytan Aug 17, 2026
0066bec
chore: regenerate SKILL.md docs + golden fixtures (single regen for t…
garrytan Aug 17, 2026
8c9e81d
chore: TODOS.md — strike the six wave-fixed residuals, add two follow…
garrytan Aug 17, 2026
a54802d
test: align cross-cutting pins with the wave's contracts
garrytan Aug 17, 2026
25a7e31
test: re-anchor the referenced-path scanner self-check to the gstack-…
garrytan Aug 17, 2026
9fecf0f
test: pin the wave's prose-tier behaviors (ship coverage-audit gap cl…
garrytan Aug 17, 2026
b7d44c4
fix: pre-landing review round — 8 auto-fixes + 8 accepted findings ha…
garrytan Aug 17, 2026
fd0dbde
fix: adversarial round — the P0 finalize fail-safe and 12 hardened fi…
garrytan Aug 17, 2026
ef3bb1f
chore: regenerate SKILL.md docs + goldens (Windows-separator jq fix)
garrytan Aug 17, 2026
518599c
fix: codex verify-pass residuals — chunked cwd read, post-filter part…
garrytan Aug 17, 2026
018dfbf
chore: bump version and changelog (v1.68.0.0)
garrytan Aug 18, 2026
9e0ca36
docs: update project documentation for v1.68.0.0
garrytan Aug 18, 2026
f479f90
test: align memory-pipeline probe pins with the #2394 stage-count con…
garrytan Aug 18, 2026
2cdd727
fix(next-version): batch missing-tip fetches — one bounded round trip…
garrytan Aug 18, 2026
5dac88b
test(next-version): pin the batched fetch + make the offline-contract…
garrytan Aug 18, 2026
c490764
test(redact-cli): derive the synthetic AWS-key fixture — no contiguou…
garrytan Aug 18, 2026
a57095e
Merge origin/main (v1.67.2.0) — v1.68.0.0 stays on top
garrytan Aug 19, 2026
335f992
test(next-version): pin the fixture's host via origin-URL sniff — kil…
garrytan Aug 19, 2026
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
8 changes: 7 additions & 1 deletion BROWSER.md
Original file line number Diff line number Diff line change
Expand Up @@ -1164,7 +1164,13 @@ untrusted). Untrusted methods (data-exfil-shaped, e.g.
```bash
$B cdp Page.getLayoutMetrics
$B cdp Network.enable
$B cdp Accessibility.getFullAXTree --json '{"max_depth":5}'
$B cdp Accessibility.getFullAXTree '{"depth":5}'

# Perf measurement on a simulated low-end client (overrides persist on the
# tab until you clear them — callers own restoration):
$B cdp Emulation.setCPUThrottlingRate '{"rate":4}' # clear: '{"rate":1}'
$B cdp Network.emulateNetworkConditions '{"offline":false,"latency":150,"downloadThroughput":195000,"uploadThroughput":97500}'
# clear: '{"offline":false,"latency":0,"downloadThroughput":-1,"uploadThroughput":-1}'
```

To discover allowed methods: read `browse/src/cdp-allowlist.ts`.
Expand Down
133 changes: 133 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,138 @@
# Changelog

## [1.68.0.0] - 2026-08-18

**The next tracker wave: 16 verified fixes in, 90 stale PRs and 21 issues out.**
**Six community contributors credited, one queue race killed for good.**

This release lands the full next-wave queue: six community PRs ported with
authorship intact, ten fixes of our own, and the six adversarial-review
residuals the last wave deferred. The headline internals: the brain-sync
queue moved to a per-record spool directory, so the enqueue/drain race class
is structurally gone, not narrowed. The session-update lock records the
process that actually holds it, heartbeats while it works, and expires on a
hard TTL, so concurrent updaters can no longer trample a live install. And a
live bug caught during this wave's own review, a stray `~/.git` directory
silently misfiling decisions and learnings into the wrong project store, is
fixed with a self-healing cache and a ten-case parity suite.

### The numbers that matter

Source: this branch vs main (`git diff main...HEAD --stat`), the wave's
coverage audit, and the tracker close-out run on 2026-08-17.

| Metric | Value |
|---|---|
| Fixes landed (issues closed by this release) | 16 |
| Community PRs ported with credit | 6 (6 contributors) |
| Open PRs closed with receipts | 90 |
| Stale issues closed with version pointers | 21 |
| Diff | 133 files, +6,276 / −649 |
| New/extended test files | 31 (coverage audit: 96% of changed surfaces at behavior+edge+error depth) |
| Review rounds absorbed pre-merge | 3 (specialist army, then two cross-model adversarial passes) |

The tracker numbers are the striking ones: 111 stale items left the queue in
one day, each with a receipt naming the release that covered it. Contributors
whose fixes were absorbed months ago now have closure with credit instead of
an open PR going quiet.

### What this means for you

If a skill ever told you the brain queue was empty while records sat in it,
or `--probe` promised thousands of pages that `--bulk` then refused, or a
second Claude session stomped your gstack update mid-pull, those classes are
closed and each one is pinned by a regression test. Update with
`/gstack-upgrade`, which itself now fast-forwards first and never discards
unpushed work without telling you exactly what it would delete.

### Itemized changes

#### Added
- `/scrape` and `/skillify` now carry the untrusted-content processing rules,
single-sourced with the browse reference so the wording can never drift.
Re-derived from PR #2612. Contributed by @Lockyer228 (#2441).
- `$B cdp` allows `Emulation.setCPUThrottlingRate` and
`Network.emulateNetworkConditions` for real perf measurement on simulated
low-end clients. Overrides persist until cleared; the justifications say so.
Contributed by @henbima (#2602).
- Transcript ingest honors the per-remote trust store: `deny` and `read-only`
remotes are skipped with per-tier counts, a corrupted store aborts before
any write, and the policy lookup is one batched subprocess for the whole
corpus (#2392).
- The gbrain source worktree advances on the daily sync, so brains stop
serving stale pages between setups. The unattended path refuses dirty
worktrees and never force-removes (#2516).
- `gstack-gbrain-repo-policy get --batch`: one spawn classifies every remote.

#### Changed
- **Behavior change:** `gstack-config get <unknown-key>` now exits 1 with
empty output, so `|| echo fallback` callers finally fire. Keys whose empty
value is meaningful (`cross_project_learnings`, `salience_allowlist`,
`user_slug_at_*`, `redact_repo_visibility`, `repo_mode`) still return empty
with exit 0. Scripts that relied on unknown keys silently returning empty
with exit 0 must add a fallback. Contributed by @benjaminberes-bp (#2611).
- The brain-sync queue is a maildir-style spool (`.brain-queue.d/`, one file
per record, atomic rename). Writer and drainer never share an inode; the
drain deletes only records classification proves were staged or dropped,
so a classifier crash or a malformed pulled privacy map retains everything
instead of discarding it. Legacy queues migrate on the next drain.
- `--probe` in memory-ingest counts through the same attribution and policy
gates as `--bulk`, with a bounded 256KB read per transcript, so its numbers
are the numbers. Re-derived from PR #2612. Contributed by @Lockyer228 (#2394).
- `/gstack-upgrade` fast-forwards with autostash first; the destructive
fallback runs only on a provably-clean tree with no unpushed commits, or
after an explicit confirmation listing exactly what would be discarded (#2517).
- Skill completion always reviews the session for durable learnings and says
so explicitly when there are none. Re-derived from PR #2612. Contributed by
@Lockyer228 (#2402).
- `/codex` documents the measured session-overhead reality: resume does not
amortize the prelude, so prefer one call per skill (#2387).
- MCP scope resolution is project-first everywhere, matching Claude Code's
verified precedence, and one project's remote gbrain registration no longer
reclassifies every other project on the machine.

#### Fixed
- plan-tune refuses `never-ask` on one-way question ids at write time and
reports previously-stored inert preferences in `--stats`. Contributed by
@szsunyuan (#2488).
- A typo'd `gstack-redact` subcommand exits 1 with usage instead of silently
scanning stdin (or hanging on a terminal). Contributed by @kinoko-studio.
- One ambiguous ref no longer kills the whole annotated screenshot: exact
matches stay exact, ambiguous refs fall back to first-match and are counted
visibly in the output. Contributed by @namtrok.
- `gstack-version-bump repair` refuses to write a fabricated `0.0.0.0` into
package.json when VERSION is missing or empty, while a genuine `0.0.0.0`
file still repairs. Re-derived from PR #2612. Contributed by @Lockyer228 (#2600).
- The session-update lock records the live holder (not the exited parent),
heartbeats during long pulls and setups, expires on a hard TTL so a
recycled PID cannot wedge it, and reclaims atomically with an
ownership-checked cleanup (#2613).
- `gstack-slug` resolves the canonical owner-repo slug even when a stray
marker directory sits above the repo; the poisoned-cache shape self-heals,
legitimate sticky identities are preserved, and the native Windows fallback
agrees with the shell implementation on every pinned fixture.
- `/review` checklist paths resolve from the installed skill root, so review
runs work in every target repo, not just gstack's own checkout (#2518).
- next-version's offline fallback queries live remote refs without mutating
local state, fetches unreadable claims before giving up, and never silently
reissues a sibling branch's version.
- Setup-registered hooks prefer the global install path and re-point stale
absolute paths on re-run; duplicate registrations collapse to one; a
corrupt settings.json is refused loudly instead of being replaced.
- Windows: every `Bun.spawn` in browse carries `windowsHide` with a census
tripwire, and project-scoped brains resolve on backslash paths.

#### For contributors
- 90 absorbed or superseded PRs and 21 fixed issues were closed with receipt
comments pointing at the releases that covered them; ported PRs close with
porting-commit receipts when this release merges.
- The parity-suite skeleton ceilings absorbed this wave's preamble growth
with measured notes; the referenced-path scanner self-check re-anchored to
the installed-root form.
- New follow-ups filed in TODOS.md: skillify structural isolation, slug store
migration for pre-fix data, deny retroactivity for already-ingested pages,
and the slug heal-probe cache sentinel.

## [1.67.2.0] - 2026-08-18

**Codex installs now match the model you actually run.**
Expand Down
16 changes: 13 additions & 3 deletions SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ _BRAIN_SYNC_MODE=$("$_BRAIN_CONFIG_BIN" get artifacts_sync_mode 2>/dev/null || e
_GBRAIN_MCP_MODE="none"
_GBRAIN_MCP_ENTRY=""
if command -v jq >/dev/null 2>&1 && [ -f "$HOME/.claude.json" ]; then
_GBRAIN_MCP_ENTRY=$(jq -c --arg cwd "$PWD" '.mcpServers.gbrain // ((.projects // {}) | to_entries | map(select((.key as $k | $cwd == $k or ($cwd | startswith($k + "/"))) and ((try .value.mcpServers.gbrain catch null) != null))) | sort_by(.key | length) | last | .value.mcpServers.gbrain) // empty' "$HOME/.claude.json" 2>/dev/null)
_GBRAIN_MCP_ENTRY=$(jq -c --arg cwd "$PWD" '((.projects // {}) | to_entries | map(select((.key as $k | $cwd == $k or ($cwd | startswith($k + "/")) or ($cwd | startswith($k + "\\"))) and ((try .value.mcpServers.gbrain catch null) != null))) | sort_by(.key | length) | last | .value.mcpServers.gbrain) // .mcpServers.gbrain // empty' "$HOME/.claude.json" 2>/dev/null)
_GBRAIN_MCP_TYPE=$(printf '%s' "$_GBRAIN_MCP_ENTRY" | jq -r '.type // .transport // empty' 2>/dev/null)
case "$_GBRAIN_MCP_TYPE" in
url|http|sse) _GBRAIN_MCP_MODE="remote-http" ;;
Expand Down Expand Up @@ -424,7 +424,11 @@ if [ "$_GBRAIN_MCP_MODE" = "remote-http" ]; then
echo "ARTIFACTS_SYNC: remote-mode (managed by brain server ${_GBRAIN_HOST:-remote})"
elif [ -d "$_GSTACK_HOME/.git" ] && [ "$_BRAIN_SYNC_MODE" != "off" ]; then
_BRAIN_QUEUE_DEPTH=0
[ -f "$_GSTACK_HOME/.brain-queue.jsonl" ] && _BRAIN_QUEUE_DEPTH=$(wc -l < "$_GSTACK_HOME/.brain-queue.jsonl" | tr -d ' ')
# Spool-dir queue (one file per record); legacy .brain-queue.jsonl lines are
# counted too until the drain migrates them.
[ -d "$_GSTACK_HOME/.brain-queue.d" ] && _BRAIN_QUEUE_DEPTH=$(find "$_GSTACK_HOME/.brain-queue.d" -maxdepth 1 -name '*.json' 2>/dev/null | wc -l | tr -d ' ')
[ -f "$_GSTACK_HOME/.brain-queue.jsonl" ] && _BRAIN_QUEUE_DEPTH=$(( _BRAIN_QUEUE_DEPTH + $(wc -l < "$_GSTACK_HOME/.brain-queue.jsonl" | tr -d ' ') ))
[ -f "$_GSTACK_HOME/.brain-queue.jsonl.migrating" ] && _BRAIN_QUEUE_DEPTH=$(( _BRAIN_QUEUE_DEPTH + $(wc -l < "$_GSTACK_HOME/.brain-queue.jsonl.migrating" | tr -d ' ') ))
_BRAIN_LAST_PUSH="never"
[ -f "$_GSTACK_HOME/.brain-last-push" ] && _BRAIN_LAST_PUSH=$(cat "$_GSTACK_HOME/.brain-last-push" 2>/dev/null || echo never)
echo "ARTIFACTS_SYNC: mode=$_BRAIN_SYNC_MODE | last_push=$_BRAIN_LAST_PUSH | queue=$_BRAIN_QUEUE_DEPTH"
Expand Down Expand Up @@ -500,7 +504,13 @@ Escalate after 3 failed attempts, uncertain security-sensitive changes, or scope

## Operational Self-Improvement

Before completing, if you discovered a durable project quirk or command fix that would save 5+ minutes next time, log it:
Before completing, review the session for durable learnings and log each one —
this step ALWAYS runs, it is not conditional on something feeling noteworthy
(#2402: 43 of 44 learnings came from explicit /learn because "if you
discovered" read as optional). A durable learning is a project quirk, command
fix, pitfall, or pattern that would save 5+ minutes in a future session. If
the review genuinely surfaces none, state "No durable learnings this session"
in your completion summary — an explicit empty result, not a skipped step.

```bash
~/.claude/skills/gstack/bin/gstack-learnings-log '{"skill":"SKILL_NAME","type":"operational","key":"SHORT_KEY","insight":"DESCRIPTION","confidence":N,"source":"observed"}'
Expand Down
79 changes: 54 additions & 25 deletions TODOS.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,44 +47,73 @@ wave"). Each was explicitly deferred with rationale, not dropped:

### P2: v1.67 adversarial-review residuals (verified, deferred with rationale)

Filed at v1.67 ship time from the Codex + Claude adversarial passes. Each was
verified real but needs design input or device access the wave lacked:
Filed at v1.67 ship time from the Codex + Claude adversarial passes. Six of
the seven landed in the v1.68 fix wave (brain-sync spool-dir queue, pair-agent
consent gate, bin-context walk-up parity, per-project MCP scoping +
precedence flip, next-version ls-remote fallback + width pin, stop-hook
global-path registration + re-point). Remaining:

- **brain-sync enqueue lock** — the drain's surgical rewrite closes the reader
side, but a lockless producer appending between the live re-read and the
tmp+mv can still orphan one record. Needs a shared enqueue/drain lock
(mkdir-style, like the drain's). Effort S.
- **iOS tap routing across windows** — Bridges template's frontmostWindow can
swallow taps when a keyboard/menu/transparent overlay window is topmost but
doesn't handle the coordinate. Needs hit-test-aware routing + real-device
verification. Effort M. (Related: the multi-window rewrite has no static
pins — see the test-gap backlog below.)
- **pair-agent implicit --force-restart** — pair-agent auto-kills a healthy
headless daemon (tabs/cookies) with no consent, contradicting the #2219
iron rule it now sits beside. Needs a consent prompt or explicit-flag
requirement; UX call. Effort S.
- **bin-context slugFromEnvironment walk-up parity (win32)** — the native
fallback slugs the INNERMOST repo while bash gstack-slug walks to the
outermost canonical remote; nested/vendored repos split stores. Effort S.
- **hasRemoteOnlyGbrainMcp is machine-global** — one project's remote gbrain
registration reclassifies broken local engines as thin-client everywhere;
also confirm Claude Code's user-vs-project MCP precedence against
brain-cache's user-first assumption. Effort S.
- **next-version git-fallback breadth** — the degraded path counts every
remote-tracking ref on every remote (stale experiment branches inflate the
allocation) and a failed 3-digit base read flips width to 4. Warned today;
tighten to origin + width-pin. Effort S.
- **Stop-hook registration pins the setup-time absolute path** — registering
from a dev worktree bakes that path into settings.json; deleting the
worktree leaves a dead hook erroring on every session stop until removed.
Register the global-install path or re-point on upgrade. Effort S.
- **Accepted threat-model notes (documented, no action planned):**
redact-prepush treats content pushed to ANY private remote as already-left
(accident-only threat model); a parcel-shaped twin within 400 chars can
suppress phone redaction (WARN-tier pattern, attacker-influence accepted);
codex-probe's 400-signature grep can misread a transient proxy 400 as
MODEL_UNUSABLE (bounded by the 15-min negative-cache TTL).

### P2: skillify structural isolation (filed from the v1.68 wave reviews)

**What:** /skillify turns scraped page content into durable executable skill
code on disk. The v1.68 wave added the untrusted-content warning to its prose
(#2441), but a warning is not a boundary — generated actions derived from
hostile page content need structural isolation, sanitization of synthesized
selectors/names, or an explicit approval step scoped to the generated code.

**Why:** A poisoned page could steer the generated script.ts toward actions
the user never reviewed; the current gate is the Step 9 approval, which shows
the code but doesn't highlight page-derived strings.

**Effort:** M → S with CC. **Priority:** P2. **Depends on:** none.

### P2: slug store migration — merge pre-fix `projects/garrytan/` data (v1.68 follow-up)

**What:** The v1.68 slug-parity fix (gstack-slug now matches remote-slug's
owner-repo form) means machines that hit the degraded-slug bug (stray strong
marker above a repo, e.g. an empty ~/.git) have historical decisions /
timeline / ceo-plans / learnings filed under the marker-basename store
(observed: `~/.gstack/projects/garrytan/`) instead of per-repo stores. Define
and ship the merge/alias: attribute each misfiled record to its repo where
derivable (timeline entries carry branch; decisions carry scope), else leave
in place with a pointer file.

**Why:** Post-fix sessions read the CORRECT store, so pre-fix history is
invisible to Context Recovery until migrated.

**Effort:** M → S with CC. **Priority:** P2. **Depends on:** the v1.68 wave
(shipped the fix + parity tests).

### P3: gstack-slug degraded-heal probe cost on cache hits (v1.68 review-army finding)

**What:** The v1.68 cache self-heal probes `_resolve_remote` (1-3 git forks) on
EVERY cache hit whenever the cached slug equals the marker-root basename — the
permanent steady state for remoteless and legit-sticky projects, on the
per-preamble hot path. Add a single-shot sentinel per cache entry so the heal
probe runs once, not forever.

**Why:** "Cache hits stay git-spawn-free" only holds for owner-repo slugs
today. Cost is bounded (1-3 forks) but paid at every skill start on affected
projects. Also next-touch notes from the same review: extract a makeResult
helper for BulkResult's 11 hand-copied literals in bin/gstack-memory-ingest.ts;
dedup the brain-worktree default-path literal between bin/gstack-brain-sync and
bin/gstack-gbrain-source-wireup.

**Effort:** S. **Priority:** P3. **Depends on:** cache-format compatibility
(sentinel must not break older readers).

### P2: v1.67 coverage-audit test-gap backlog (5-agent sweep, ranked)

The wave's Step-7 coverage audit (5 subsystem agents, ~700 changed paths,
Expand Down
2 changes: 1 addition & 1 deletion USING_GBRAIN_WITH_GSTACK.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ Gbrain itself ships with these that gstack wraps:
| `~/.gbrain/config.json` | Engine (pglite/postgres), database URL or path, API keys. Mode 0600. Written by `gbrain init`. |
| `~/.gstack/gbrain-repo-policy.json` | Per-remote trust triad. Schema v2. Mode 0600. |
| `~/.gstack/.setup-gbrain.lock.d` | Concurrent-run lock (atomic mkdir). Released on normal exit + SIGINT. |
| `~/.gstack/.brain-queue.jsonl` | Pending sync entries for gstack memory sync |
| `~/.gstack/.brain-queue.d/` | Pending sync records for gstack memory sync — maildir-style spool, one file per record. A legacy `.brain-queue.jsonl` from older releases migrates automatically on the next drain. |
| `~/.gstack/.brain-last-push` | Timestamp of last sync push (for `/health` scoring) |
| `~/.gstack-artifacts-remote.txt` | URL of your gstack memory sync remote (safe to copy between machines; legacy name `~/.gstack-brain-remote.txt` still read) |
| `~/.gstack/.setup-gbrain-inflight.json` | Reserved for future `--resume-provision` persisted state |
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.67.2.0
1.68.0.0
Loading
Loading