tabby-tabbyspaces 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/components/splitPreview.component.d.ts +25 -4
- package/dist/components/splitPreview.component.d.ts.map +1 -1
- package/dist/components/workspaceEditor.component.d.ts +3 -0
- package/dist/components/workspaceEditor.component.d.ts.map +1 -1
- package/dist/components/workspaceList.component.d.ts +1 -0
- package/dist/components/workspaceList.component.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/workspace.model.d.ts +1 -0
- package/dist/models/workspace.model.d.ts.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
- package/screenshots/editor.png +0 -0
- package/screenshots/workspace-editor.png +0 -0
- package/src/components/paneEditor.component.pug +8 -0
- package/src/components/splitPreview.component.pug +28 -10
- package/src/components/splitPreview.component.scss +105 -31
- package/src/components/splitPreview.component.ts +129 -9
- package/src/components/workspaceEditor.component.pug +4 -2
- package/src/components/workspaceEditor.component.scss +25 -4
- package/src/components/workspaceEditor.component.ts +27 -3
- package/src/components/workspaceList.component.pug +9 -6
- package/src/components/workspaceList.component.scss +47 -12
- package/src/components/workspaceList.component.ts +21 -5
- package/src/models/workspace.model.ts +1 -0
- package/src/styles/_mixins.scss +1 -1
- package/src/styles/_variables.scss +1 -0
- package/.github/workflows/claude-code-review.yml +0 -44
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.workspace-list-container
|
|
2
2
|
//- Tab bar navigation
|
|
3
|
-
.tab-bar
|
|
3
|
+
.tab-bar(*ngIf='workspaces.length > 0 || editingWorkspace')
|
|
4
4
|
.tab(
|
|
5
5
|
*ngFor='let tab of displayTabs; trackBy: trackByTab',
|
|
6
6
|
[class.active]='isTabSelected(tab)',
|
|
@@ -30,8 +30,11 @@
|
|
|
30
30
|
)
|
|
31
31
|
|
|
32
32
|
//- Empty state (when no workspaces)
|
|
33
|
-
.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
.empty-state(*ngIf='!editingWorkspace && workspaces.length === 0')
|
|
34
|
+
.empty-state-icon
|
|
35
|
+
i.fas.fa-columns
|
|
36
|
+
h2.empty-state-title TabbySpaces
|
|
37
|
+
p.empty-state-description Create custom split layouts with profiles, working directories, and startup commands.
|
|
38
|
+
button.empty-state-cta((click)='createWorkspace()')
|
|
39
|
+
i.fas.fa-plus
|
|
40
|
+
| Create Workspace
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
@use '../styles/index' as *;
|
|
2
2
|
|
|
3
|
+
:host {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
flex: 1;
|
|
7
|
+
min-height: 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
3
10
|
.workspace-list-container {
|
|
4
11
|
padding: $spacing-2xl;
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
flex: 1;
|
|
15
|
+
min-height: 0;
|
|
5
16
|
}
|
|
6
17
|
|
|
7
18
|
// Tab bar
|
|
@@ -109,19 +120,43 @@
|
|
|
109
120
|
border: 1px solid var(--theme-border, $fallback-border);
|
|
110
121
|
border-top: none;
|
|
111
122
|
padding: $spacing-xl;
|
|
123
|
+
flex: 1;
|
|
124
|
+
min-height: 0;
|
|
125
|
+
display: flex;
|
|
126
|
+
flex-direction: column;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Empty state
|
|
130
|
+
.empty-state {
|
|
131
|
+
@include flex-center;
|
|
132
|
+
flex-direction: column;
|
|
133
|
+
padding: 80px $spacing-2xl;
|
|
134
|
+
text-align: center;
|
|
135
|
+
flex: 1;
|
|
136
|
+
}
|
|
112
137
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
138
|
+
.empty-state-icon {
|
|
139
|
+
font-size: 2.5rem;
|
|
140
|
+
color: var(--theme-fg-more, $fallback-fg-more);
|
|
141
|
+
margin-bottom: $spacing-xl;
|
|
142
|
+
opacity: 0.5;
|
|
143
|
+
}
|
|
117
144
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
145
|
+
.empty-state-title {
|
|
146
|
+
font-size: 1.2rem;
|
|
147
|
+
font-weight: 600;
|
|
148
|
+
color: var(--theme-fg);
|
|
149
|
+
margin: 0 0 $spacing-md;
|
|
150
|
+
}
|
|
121
151
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
152
|
+
.empty-state-description {
|
|
153
|
+
font-size: $font-sm;
|
|
154
|
+
color: var(--theme-fg-more, $fallback-fg-more);
|
|
155
|
+
margin: 0 0 $spacing-2xl;
|
|
156
|
+
max-width: 320px;
|
|
157
|
+
line-height: 1.5;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.empty-state-cta {
|
|
161
|
+
@include btn-primary;
|
|
127
162
|
}
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
isWorkspaceSplit,
|
|
17
17
|
} from '../models/workspace.model'
|
|
18
18
|
|
|
19
|
-
const SETTINGS_MAX_WIDTH = '
|
|
19
|
+
const SETTINGS_MAX_WIDTH = 'none'
|
|
20
20
|
|
|
21
21
|
@Component({
|
|
22
22
|
selector: 'workspace-list',
|
|
@@ -53,12 +53,22 @@ export class WorkspaceListComponent implements OnInit, OnDestroy, AfterViewInit
|
|
|
53
53
|
})
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
+
private originalStyles: { element: HTMLElement; maxWidth: string; height: string }[] = []
|
|
57
|
+
|
|
56
58
|
ngAfterViewInit(): void {
|
|
57
|
-
// Hack: Override Tabby's settings-tab-body
|
|
59
|
+
// Hack: Override Tabby's settings-tab-body to allow full-height layout.
|
|
60
|
+
// Only touches settingsTabBody — host styles are in SCSS :host block.
|
|
61
|
+
// Parent elements (like .tab-pane) are NOT modified to avoid affecting other tabs.
|
|
58
62
|
setTimeout(() => {
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
61
|
-
|
|
63
|
+
const settingsTabBody = this.elementRef.nativeElement.closest('settings-tab-body') as HTMLElement
|
|
64
|
+
if (settingsTabBody) {
|
|
65
|
+
this.originalStyles.push({
|
|
66
|
+
element: settingsTabBody,
|
|
67
|
+
maxWidth: settingsTabBody.style.maxWidth,
|
|
68
|
+
height: settingsTabBody.style.height,
|
|
69
|
+
})
|
|
70
|
+
settingsTabBody.style.maxWidth = SETTINGS_MAX_WIDTH
|
|
71
|
+
settingsTabBody.style.height = '100%'
|
|
62
72
|
}
|
|
63
73
|
}, 0)
|
|
64
74
|
}
|
|
@@ -82,6 +92,12 @@ export class WorkspaceListComponent implements OnInit, OnDestroy, AfterViewInit
|
|
|
82
92
|
|
|
83
93
|
ngOnDestroy(): void {
|
|
84
94
|
this.configSubscription?.unsubscribe()
|
|
95
|
+
// Restore original styles on parent elements to avoid affecting other settings tabs
|
|
96
|
+
for (const entry of this.originalStyles) {
|
|
97
|
+
entry.element.style.maxWidth = entry.maxWidth
|
|
98
|
+
entry.element.style.height = entry.height
|
|
99
|
+
}
|
|
100
|
+
this.originalStyles = []
|
|
85
101
|
}
|
|
86
102
|
|
|
87
103
|
loadWorkspaces(): void {
|
package/src/styles/_mixins.scss
CHANGED
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
// ======================
|
|
174
174
|
|
|
175
175
|
@mixin dropdown-panel {
|
|
176
|
-
background: var(--theme-bg-more);
|
|
176
|
+
background: var(--theme-bg-more, $fallback-bg-more);
|
|
177
177
|
border: 1px solid var(--theme-border, $fallback-border);
|
|
178
178
|
border-radius: $radius-md;
|
|
179
179
|
box-shadow: $shadow-dropdown;
|
|
@@ -28,6 +28,7 @@ $color-danger: #ef4444;
|
|
|
28
28
|
// Fallback values for Tabby theme variables that may not be defined
|
|
29
29
|
$fallback-border: rgba(255, 255, 255, 0.1);
|
|
30
30
|
$fallback-fg-more: rgba(255, 255, 255, 0.3);
|
|
31
|
+
$fallback-bg-more: #1e1e1e;
|
|
31
32
|
|
|
32
33
|
// ======================
|
|
33
34
|
// SHADOWS (S1: Flat - no shadows)
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
name: Claude Code Review
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
pull_request:
|
|
5
|
-
types: [opened, synchronize, ready_for_review, reopened]
|
|
6
|
-
# Optional: Only run on specific file changes
|
|
7
|
-
# paths:
|
|
8
|
-
# - "src/**/*.ts"
|
|
9
|
-
# - "src/**/*.tsx"
|
|
10
|
-
# - "src/**/*.js"
|
|
11
|
-
# - "src/**/*.jsx"
|
|
12
|
-
|
|
13
|
-
jobs:
|
|
14
|
-
claude-review:
|
|
15
|
-
# Only run for repository members to control costs
|
|
16
|
-
if: |
|
|
17
|
-
github.event.pull_request.author_association == 'OWNER' ||
|
|
18
|
-
github.event.pull_request.author_association == 'MEMBER' ||
|
|
19
|
-
github.event.pull_request.author_association == 'COLLABORATOR'
|
|
20
|
-
|
|
21
|
-
runs-on: ubuntu-latest
|
|
22
|
-
permissions:
|
|
23
|
-
contents: write
|
|
24
|
-
pull-requests: write
|
|
25
|
-
issues: read
|
|
26
|
-
id-token: write
|
|
27
|
-
|
|
28
|
-
steps:
|
|
29
|
-
- name: Checkout repository
|
|
30
|
-
uses: actions/checkout@v4
|
|
31
|
-
with:
|
|
32
|
-
fetch-depth: 0
|
|
33
|
-
|
|
34
|
-
- name: Run Claude Code Review
|
|
35
|
-
id: claude-review
|
|
36
|
-
uses: anthropics/claude-code-action@v1.0.0
|
|
37
|
-
with:
|
|
38
|
-
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
|
39
|
-
prompt: >
|
|
40
|
-
Please review the changes in this pull request and leave a concise summary comment with any issues, suggestions, and potential bugs:
|
|
41
|
-
https://github.com/${{ github.repository }}/pull/${{ github.event.pull_request.number }}
|
|
42
|
-
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
|
|
43
|
-
# or https://code.claude.com/docs/en/cli-reference for available options
|
|
44
|
-
|