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
36 changes: 21 additions & 15 deletions BEARING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,16 @@ timeline

## Current State

`v6.5.4` shipped on `2026-07-26`. Application asset, bundle, page, cache,
`v6.5.5` shipped on `2026-07-26`. Application asset, bundle, page, cache,
expiry, witness, and repository-diagnostics APIs sit above mutable root sets
and the low-level CAS pipeline. Direct bundle-reference reads and bounded
immutable metadata/page reuse, bounded Git object sessions, page batches, and
deterministic resource closure are published. The versioned v6.5.5 candidate
makes internal commits independent of ambient Git identity. npm plus GitHub
Releases are the active publication surfaces. JSR validation is healthy, but
JSR publication remains outside the release workflow.
deterministic resource closure are published. Internal commits are independent
of ambient Git identity. The active v6.5.6 cycle updates the coherent Bijou
family to 7.2.0 and moves the interactive cockpit onto Bijou's hosted framed-app
boundary. npm plus GitHub Releases are the active publication surfaces. JSR
validation is healthy, but JSR publication remains outside the release
workflow.

What exists now:

Expand Down Expand Up @@ -82,9 +84,13 @@ What exists now:
`workspace.pages.putBatch()` so one bounded ordered page group is written and
retained under one exact workspace generation instead of rewriting a growing
root set for every page.
- **Self-contained internal commit identity.** The v6.5.5 candidate supplies a
- **Self-contained internal commit identity.** v6.5.5 supplies a
stable git-cas author and committer for root-set, publication, and vault
commits without mutating repository or global Git configuration.
- **Bijou 7 framed-cockpit candidate.** The active v6.5.6 cycle updates the
complete Bijou family and makes the frame the sole owner of terminal
lifecycle, outer chrome, help, command/search palettes, settings,
notifications, performance telemetry, and quit confirmation.
- **Migration script.** `scripts/migrate-encryption.js` upgrades legacy v1/v2
manifests to the current scheme identifiers.

Expand Down Expand Up @@ -140,16 +146,16 @@ These were the active tensions from the previous bearing. All resolved.

## Next Horizon

With v6.5.4 shipped and the versioned v6.5.5 release candidate being prepared,
active work is tracked in GitHub Issues and Milestones. Repo docs hold design
and evidence records, not the active queue.
With v6.5.5 shipped and the v6.5.6 framed-cockpit cycle being prepared, active
work is tracked in GitHub Issues and Milestones. Repo docs hold design and
evidence records, not the active queue.

The latest landed design is
[0055-internal-commit-identity](./docs/design/0055-internal-commit-identity/internal-commit-identity.md).
Its release evidence is attached to
[#102](https://github.com/git-stunts/git-cas/issues/102) and the
[`v6.5.5` milestone](https://github.com/git-stunts/git-cas/milestone/15). Tag
and publication evidence remain pending; no later design is selected here.
The active design is
[0056-bijou-7-framed-cockpit](./docs/design/0056-bijou-7-framed-cockpit/bijou-7-framed-cockpit.md).
Its goalpost and hosted-shell slice are
[#105](https://github.com/git-stunts/git-cas/issues/105) and
[#106](https://github.com/git-stunts/git-cas/issues/106) in the
[`v6.5.6` milestone](https://github.com/git-stunts/git-cas/milestone/16).

The broader horizon remains:

Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- **Bijou 7 framed cockpit** - updates the coherent Bijou dependency family to
7.2.0 and moves terminal lifecycle, shell chrome, help, command/search
palettes, settings, notifications, performance telemetry, and quit
confirmation to the hosted `createFramedApp()` boundary.

### Fixed

- **Shared progress cursor ownership** - store and restore progress now use
Bijou's reference-counted cursor guard and render the initial zero state
without counting it as a processed chunk.
- **Audited cockpit contrast** - foreground/background choices selected with
Design Book are registered as semantic theme tokens and verified at WCAG AA
contrast by Bijou's theme doctor.

## [6.5.5] — 2026-07-26

### Fixed
Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ Navigate your stored assets through the reader-first interactive dashboard.
git-cas vault dashboard
```

The framed cockpit keeps Explorer, Atlas, and Operations in one shared session.
Use `/` to search assets, `Ctrl+P` for the command palette, `?` for keyboard
help, `F2` for session settings, and `q` for a confirmed exit. Noninteractive
invocations retain the plain tab-separated listing.

Comment thread
coderabbitai[bot] marked this conversation as resolved.
### 3. Library Ingress

Integrate managed blob storage directly into your TypeScript or JavaScript application.
Expand Down
1 change: 1 addition & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ GitHub wins and this file should be corrected.
| [`v6.5.3`](https://github.com/git-stunts/git-cas/milestone/13) | Coherent Git object sessions across immutable writes | [#94](https://github.com/git-stunts/git-cas/issues/94) |
| [`v6.5.4`](https://github.com/git-stunts/git-cas/milestone/14) | Batched staging-workspace page retention | [#99](https://github.com/git-stunts/git-cas/issues/99) |
| [`v6.5.5`](https://github.com/git-stunts/git-cas/milestone/15) | Identity-independent internal Git commits | [#102](https://github.com/git-stunts/git-cas/issues/102) |
| [`v6.5.6`](https://github.com/git-stunts/git-cas/milestone/16) | Bijou 7 framed cockpit | [#105](https://github.com/git-stunts/git-cas/issues/105), [#106](https://github.com/git-stunts/git-cas/issues/106) |
| [`v6.6.0`](https://github.com/git-stunts/git-cas/milestone/9) | Operator TUI and agent automation follow-through | [#39](https://github.com/git-stunts/git-cas/issues/39), [#40](https://github.com/git-stunts/git-cas/issues/40) |
| [`v6.7.0`](https://github.com/git-stunts/git-cas/milestone/10) | Browser and edge read-path exploration | [#41](https://github.com/git-stunts/git-cas/issues/41) |
| [`v7.0.0`](https://github.com/git-stunts/git-cas/milestone/6) | Protocol break only if audit requires it | [#42](https://github.com/git-stunts/git-cas/issues/42), only when justified |
Expand Down
69 changes: 18 additions & 51 deletions bin/ui/context.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
*/

import { createBijou } from '@flyingrobots/bijou';
import { nodeRuntime, nodeIO, chalkStyle } from '@flyingrobots/bijou-node';
import { chalkStyle, createNodeContext, nodeIO, nodeRuntime } from '@flyingrobots/bijou-node';
import { GIT_CAS_THEME } from './theme.js';

/** @type {import('@flyingrobots/bijou').BijouContext | null} */
Expand All @@ -19,13 +19,12 @@ export function getCliContext() {
if (ctx) {
return ctx;
}
const runtime = nodeRuntime();
const noColor = runtime.env('NO_COLOR') !== undefined;
ctx = createBijou({
runtime,
io: stderrIO(),
style: chalkStyle(noColor),
ctx = createNodeContext({
theme: GIT_CAS_THEME,
nodeIO: {
stdout: process.stderr,
stderr: process.stderr,
},
});
return ctx;
}
Expand Down Expand Up @@ -71,52 +70,20 @@ export function detectCliTuiMode(runtime) {
export function createCliTuiContext(options = {}) {
const runtime = options.runtime || nodeRuntime();
const noColor = runtime.env('NO_COLOR') !== undefined;
const base = createBijou({
runtime,
io: options.io || nodeIO(),
style: options.style || chalkStyle(noColor),
theme: GIT_CAS_THEME,
});
const base =
options.runtime || options.style
? createBijou({
runtime,
io: options.io || nodeIO(),
style: options.style || chalkStyle({ noColor }),
theme: GIT_CAS_THEME,
})
: createNodeContext({
theme: GIT_CAS_THEME,
...(options.io ? { io: options.io } : {}),
});
return {
...base,
mode: detectCliTuiMode(runtime),
};
}

/**
* @returns {import('@flyingrobots/bijou').IOPort}
*/
function stderrIO() {
return {
/** @param {string} data */
write(data) {
process.stderr.write(data);
},
question() {
throw new Error('question() not supported in CLI context');
},
rawInput() {
throw new Error('rawInput() not supported in CLI context');
},
/** @param {(cols: number, rows: number) => void} callback */
onResize(callback) {
const handler = () => {
callback(process.stderr.columns ?? 80, process.stderr.rows ?? 24);
};
process.stderr.on('resize', handler);
return { dispose() { process.stderr.removeListener('resize', handler); } };
},
/**
* @param {() => void} callback
* @param {number} ms
*/
setInterval(callback, ms) {
const id = globalThis.setInterval(callback, ms);
return { dispose() { globalThis.clearInterval(id); } };
},
readFile() { throw new Error('readFile() not supported'); },
readDir() { throw new Error('readDir() not supported'); },
/** @param {string[]} segments */
joinPath(...segments) { return segments.join('/'); },
};
}
Loading