Skip to content

Tab profiles / persistent default tabset that survive deletion #3287

@mackenzieclark

Description

@mackenzieclark

Summary

There's no way to declare a "baseline tabset" that a workspace restores on launch or after a tab is deleted. Once a tab is closed (intentionally or by an accidental X click), it's gone and the user re-creates it manually. For a dev workflow where each tab represents a repo (one per project the user works on), this turns small UI mishaps into chunks of setup work.

Use case

I'm scaffolding ~15 tabs in a Wave workspace, one per repo, each with a terminal block pre-set to connection=wsl://<distro> and cmd:cwd=<repo>. After putting that work in, I want any of the following to be true:

  1. Closing a tab is recoverable — Wave knows it was part of my "baseline set" and either (a) recreates it on next launch, (b) puts it in a "recently closed tabs" list I can restore from, or (c) refuses to close it without explicit confirmation.
  2. I can save the current workspace tab structure as a profile and load it on a fresh workspace later.

Related

This issue is specifically about persistence/restore semantics. Once wsh tab create exists, an external script could rebuild the tabset on demand — but that's a workaround, not a solution.

Request

Add a config-driven concept of a tab profile / tab template. Sketch:

// presets/tabs.json or similar
{
    "tab@repo:touchscreen-ux": {
        "name": "touchscreen-ux",
        "blocks": [{
            "view": "term",
            "controller": "shell",
            "connection": "wsl://Ubuntu",
            "cmd:cwd": "/home/me/code/touchscreen-ux"
        }]
    }
}

Then a workspace config could declare a baseline tabset:

{
    "workspace:defaulttabs": ["tab@repo:touchscreen-ux", "tab@repo:mes-data", "tab@home"]
}

Wave would (a) instantiate any missing baseline tabs on workspace open, and (b) optionally re-instantiate them if the user deletes one. The "should missing baseline tabs be auto-restored" behavior could be a per-workspace setting (workspace:restorebaselineondelete) so power users who want strict deletion can opt out.

This pairs naturally with #3285 (wsh tab create could accept --preset tab@repo:touchscreen-ux) and would unblock real "I work in 15 repos and want them all in tabs" workflows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions