Merge pull request #676: feat(tabs): per-case default session group

Conflict in CLAUDE.md's State Files line resolved by keeping #661's new
config-backup entries and this PR's "case default groups" in state.json.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer committed 2026-10-22 19:54:54 +02:00
commit 463a083a23
27 files changed
+1437 -32

No files matched your search

+3 -2
View File
@@ -539,6 +539,7 @@ export class WebServer extends EventEmitter {
// Fresh, not the 2s cache: the settings PUT does not invalidate it, and a
// flip must apply to the very next spawn.
childrenFollowParent: async () => (await this.readSettings(true)).spawnedTabsFollowParent === true,
caseDefaults: this.store,
});
if (this.testMode) this.tabLayouts.markRestorationSkipped();
@@ -794,8 +795,8 @@ export class WebServer extends EventEmitter {
/**
* Add a tentative session only after its owner layout accepts the creation.
* The session enters the live map inside the layout service's owner lock, so
* the placement it asked for (`tabGroupId`) lands in the same versioned write
* that first records it.
* the placement it asked for (`tabGroupId`, else its case's default group)
* lands in the same versioned write that first records it.
*/
private async registerSessionWithLayout(session: Session, placement?: SessionPlacementHint): Promise<TabLayout> {
return this.tabLayouts.sessionCreated(ownerLayoutKey(session.owner), session.id, placement, () => {