tabby-tabbyspaces 0.0.1 → 0.1.0

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.
Files changed (56) hide show
  1. package/.claude/settings.local.json +28 -2
  2. package/CHANGELOG.md +46 -20
  3. package/CLAUDE.md +163 -15
  4. package/README.md +71 -61
  5. package/RELEASE.md +91 -0
  6. package/TEST_MCP.md +176 -0
  7. package/TODO.md +72 -0
  8. package/cdp-click.js +22 -0
  9. package/cdp-test.js +28 -0
  10. package/dist/components/paneEditor.component.d.ts +6 -1
  11. package/dist/components/paneEditor.component.d.ts.map +1 -1
  12. package/dist/components/splitPreview.component.d.ts +22 -7
  13. package/dist/components/splitPreview.component.d.ts.map +1 -1
  14. package/dist/components/workspaceEditor.component.d.ts +30 -4
  15. package/dist/components/workspaceEditor.component.d.ts.map +1 -1
  16. package/dist/components/workspaceList.component.d.ts +21 -9
  17. package/dist/components/workspaceList.component.d.ts.map +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.LICENSE.txt +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/models/workspace.model.d.ts +4 -2
  23. package/dist/models/workspace.model.d.ts.map +1 -1
  24. package/dist/package.json +26 -0
  25. package/dist/providers/settings.provider.d.ts.map +1 -1
  26. package/dist/providers/toolbar.provider.d.ts +4 -1
  27. package/dist/providers/toolbar.provider.d.ts.map +1 -1
  28. package/dist/services/startupCommand.service.d.ts +20 -0
  29. package/dist/services/startupCommand.service.d.ts.map +1 -0
  30. package/dist/services/workspaceEditor.service.d.ts +11 -3
  31. package/dist/services/workspaceEditor.service.d.ts.map +1 -1
  32. package/docs/marketing_status.md +92 -0
  33. package/package.json +2 -7
  34. package/screenshots/editor.png +0 -0
  35. package/screenshots/pane-edit.png +0 -0
  36. package/scripts/build-prod.js +39 -0
  37. package/src/components/paneEditor.component.pug +2 -2
  38. package/src/components/paneEditor.component.ts +19 -1
  39. package/src/components/splitPreview.component.pug +45 -5
  40. package/src/components/splitPreview.component.scss +79 -22
  41. package/src/components/splitPreview.component.ts +91 -16
  42. package/src/components/workspaceEditor.component.pug +130 -70
  43. package/src/components/workspaceEditor.component.scss +205 -120
  44. package/src/components/workspaceEditor.component.ts +193 -6
  45. package/src/components/workspaceList.component.pug +31 -20
  46. package/src/components/workspaceList.component.scss +12 -6
  47. package/src/components/workspaceList.component.ts +116 -34
  48. package/src/index.ts +2 -0
  49. package/src/models/workspace.model.ts +33 -6
  50. package/src/providers/settings.provider.ts +2 -2
  51. package/src/providers/toolbar.provider.ts +41 -10
  52. package/src/services/startupCommand.service.ts +142 -0
  53. package/src/services/workspaceEditor.service.ts +70 -38
  54. package/test_cdp.py +50 -0
  55. package/RELEASE_PLAN.md +0 -161
  56. package/screenshots/workspace-edit.png +0 -0
@@ -9,7 +9,33 @@
9
9
  "WebFetch(domain:github.com)",
10
10
  "Bash(npm run build:dev:*)",
11
11
  "Bash(wc:*)",
12
- "Bash(tree:*)"
12
+ "WebFetch(domain:docs.tabby.sh)",
13
+ "WebFetch(domain:raw.githubusercontent.com)",
14
+ "WebFetch(domain:api.github.com)",
15
+ "Bash(ls -la \"C:\\\\Users\\\\halil\\\\tabbyspaces\\\\dist\"\" | grep -E \"package)",
16
+ "Bash(.json \")",
17
+ "Bash(dir /s /b \"C:\\\\Users\\\\halil\\\\AppData\\\\Local\\\\Programs\\\\tabby\")",
18
+ "WebFetch(domain:localhost)",
19
+ "Bash(curl:*)",
20
+ "mcp__tabby__query",
21
+ "mcp__tabby__execute_js",
22
+ "Bash(start \"\" \"C:\\\\Program Files \\(x86\\)\\\\Tabby\\\\Tabby.exe\" --remote-debugging-port=9222)",
23
+ "mcp__tabby__list_targets",
24
+ "Bash(tree:*)",
25
+ "Bash(dir \"C:\\\\Users\\\\halil\\\\tabbyspaces\\\\node_modules\" /B)",
26
+ "Bash(findstr:*)",
27
+ "mcp__tabby__screenshot",
28
+ "Bash(python:*)",
29
+ "Bash(cmd /c \"dir /A %APPDATA%\\\\tabby\\\\plugins\\\\node_modules\")",
30
+ "Bash(cmd /c \"dir %APPDATA%\\\\tabby\\\\plugins\")",
31
+ "Bash(git log:*)",
32
+ "Bash(ls -la \"C:\\\\Users\\\\halil\\\\tabbyspaces\\\\screenshots\"\" 2>nul || echo \"Directory not found \")",
33
+ "Bash(dir:*)",
34
+ "Bash(cmd.exe /c start \"\" \"C:\\\\Program Files \\(x86\\)\\\\Tabby\\\\Tabby.exe\" --remote-debugging-port=9222)"
13
35
  ]
14
- }
36
+ },
37
+ "enableAllProjectMcpServers": true,
38
+ "enabledMcpjsonServers": [
39
+ "tabby"
40
+ ]
15
41
  }
package/CHANGELOG.md CHANGED
@@ -1,20 +1,46 @@
1
- # Changelog
2
-
3
- ## [0.0.1] - 2026-01-03
4
-
5
- Initial release.
6
-
7
- ### Features
8
-
9
- - Workspace list with create, edit, duplicate, delete
10
- - Visual split-layout editor (horizontal/vertical, any nesting depth)
11
- - Pane configuration: base profile, working directory, startup command, custom title
12
- - Toolbar button for quick workspace launch
13
- - Default workspace option (launches on Tabby startup)
14
- - Icon and color customization per workspace
15
- - Hotkey support (planned)
16
-
17
- ### Technical
18
-
19
- - Full dev/prod build isolation for parallel development
20
- - Automatic Tabby profile generation from workspace config
1
+ # Changelog
2
+
3
+ ## [0.1.0] - 2026-01-13
4
+
5
+ ### Features
6
+
7
+ - Inline workspace editor (replaces modal dialog)
8
+ - Layout editing toolbar with pane selection system
9
+ - Startup command support per pane
10
+ - Launch on startup supports multiple workspaces
11
+ - Distinct icons for DEV vs PROD versions
12
+
13
+ ### Bug Fixes
14
+
15
+ - Fix delete/save race conditions with async/await
16
+ - Fix native split re-running startup command
17
+ - Fix async change detection and profile cleanup timing
18
+
19
+ ### UX Improvements
20
+
21
+ - Pane title format: shows base profile when no custom title
22
+ - Toolbar UI polish
23
+ - Settings panel max-width override (1024px)
24
+
25
+ ### Technical
26
+
27
+ - Remove profile persistence (cleaner architecture - no generated profiles)
28
+ - Watch mode for dev workflow (`npm run watch:dev`)
29
+
30
+ ---
31
+
32
+ ## [0.0.1] - 2026-01-03
33
+
34
+ Initial release.
35
+
36
+ ### Features
37
+
38
+ - Workspace list with create, edit, duplicate, delete
39
+ - Visual split-layout editor (horizontal/vertical, any nesting depth)
40
+ - Pane configuration: base profile, working directory, startup command, custom title
41
+ - Toolbar button for quick workspace launch
42
+ - Icon and color customization per workspace
43
+
44
+ ### Technical
45
+
46
+ - Full dev/prod build isolation for parallel development
package/CLAUDE.md CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  Visual split-layout workspace editor for Tabby.
4
4
 
5
+ ## Git Workflow
6
+
7
+ - **main** - Stable releases only. Do not commit directly.
8
+ - **dev** - Active development. All work happens here.
9
+
10
+ ```bash
11
+ # Normal workflow
12
+ git checkout dev # Work on dev
13
+ # ... make changes ...
14
+ git commit
15
+
16
+ # Release workflow
17
+ git checkout main
18
+ git merge dev
19
+ git tag v0.x.0
20
+ git push --tags
21
+ git checkout dev # Back to work
22
+ ```
23
+
5
24
  ## Tech Stack
6
25
 
7
26
  - **Framework**: Angular 15 (Tabby uses Angular 15)
@@ -15,10 +34,21 @@ Visual split-layout workspace editor for Tabby.
15
34
  ```
16
35
  src/
17
36
  ├── index.ts # NgModule entry point
37
+ ├── build-config.ts # Build-time constants (CONFIG_KEY, DISPLAY_NAME)
18
38
  ├── models/ # TypeScript interfaces
39
+ │ └── workspace.model.ts
19
40
  ├── services/ # Business logic
20
- ├── providers/ # Tabby config/settings providers
41
+ ├── workspaceEditor.service.ts
42
+ │ └── startupCommand.service.ts
43
+ ├── providers/ # Tabby config/settings/toolbar providers
44
+ │ ├── config.provider.ts
45
+ │ ├── settings.provider.ts
46
+ │ └── toolbar.provider.ts
21
47
  └── components/ # Angular components (.ts, .pug, .scss)
48
+ ├── workspaceList # Main settings UI
49
+ ├── workspaceEditor # Single workspace editor
50
+ ├── paneEditor # Pane configuration
51
+ └── splitPreview # Visual split preview
22
52
  ```
23
53
 
24
54
  ## Build
@@ -37,7 +67,7 @@ Debug: `Ctrl+Shift+I` in Tabby opens DevTools.
37
67
  ### package.json (required)
38
68
  ```json
39
69
  {
40
- "keywords": ["tabby-plugin"],
70
+ "keywords": ["tabby", "tabby-plugin"],
41
71
  "main": "dist/index.js",
42
72
  "tabbyPlugin": {
43
73
  "name": "tabbyspaces",
@@ -79,20 +109,45 @@ export default class MyModule {}
79
109
 
80
110
  ## Data Model
81
111
 
82
- - `Workspace` - Main object with name, icon, color, root split
112
+ - `Workspace` - Main object with name, icon, color, root split, launchOnStartup
83
113
  - `WorkspaceSplit` - Recursive structure with orientation, ratios, children
84
- - `WorkspacePane` - Leaf node with profileId, cwd, startupCommand, title
114
+ - `WorkspacePane` - Leaf node with profileId (reference to existing Tabby profile), cwd, startupCommand, title
85
115
 
86
- ## Tabby Profile Generation
116
+ ### Workspace Fields
117
+ | Field | Type | Description |
118
+ |-------|------|-------------|
119
+ | `id` | string | UUID |
120
+ | `name` | string | Display name |
121
+ | `icon` | string | FontAwesome icon name (without fa- prefix) |
122
+ | `color` | string | Hex color |
123
+ | `root` | WorkspaceSplit | Root split node |
124
+ | `launchOnStartup` | boolean | Auto-open when Tabby starts (multiple allowed) |
87
125
 
88
- Plugin stores a simplified model in `config.store.tabbyspaces.workspaces` and auto-generates verbose Tabby `split-layout` profiles in `config.store.profiles`.
126
+ ## Architecture
89
127
 
90
- ## Nushell Startup Commands
128
+ ### Storage
129
+ Plugin stores workspaces in `config.store.tabbyspaces.workspaces`. No profiles are generated in `config.store.profiles`.
91
130
 
92
- For Nushell, startup commands are passed as:
93
- ```typescript
94
- options.args = ['-e', startupCommand]
95
- ```
131
+ ### Opening Workspaces
132
+ 1. Generate temporary `split-layout` recovery token from workspace model (includes `options.cwd`)
133
+ 2. Open via `ProfilesService.openNewTabForProfile()`
134
+ 3. `StartupCommandService` listens for `tabOpened$` events
135
+ 4. Match terminal tabs by pane ID (passed via `tabCustomTitle`)
136
+ 5. Send startup command via `sendInput()` (if defined)
137
+
138
+ ### CWD Handling
139
+ CWD is set via native `options.cwd` in the recovery token. The shell spawns directly in the target directory - no visible `cd` commands.
140
+
141
+ ### Profile Support
142
+ Plugin supports both user-defined profiles (`type: 'local'`) and built-in shells (`type: 'local:cmd'`, `'local:powershell'`, `'local:wsl'`, etc.). Profile lookup uses a two-stage approach:
143
+ 1. First checks user profiles in `config.store.profiles`
144
+ 2. Falls back to cached profiles from `profilesService.getProfiles()` (includes built-ins)
145
+
146
+ ### Launch on Startup
147
+ Workspaces with `launchOnStartup: true` are automatically opened when Tabby starts. Multiple workspaces can be marked. Logic is in `toolbar.provider.ts` constructor with 500ms delay to ensure Tabby is ready.
148
+
149
+ ### Migration
150
+ `cleanupOrphanedProfiles()` removes any leftover profiles from previous plugin versions (prefix `split-layout:tabbyspaces:`).
96
151
 
97
152
  ## References
98
153
 
@@ -111,10 +166,20 @@ Linux: ~/.config/tabby/plugins
111
166
 
112
167
  ### Production install
113
168
  ```bash
169
+ # Via Tabby Plugin Manager (Settings → Plugins → search "tabbyspaces")
170
+ # Or via npm:
114
171
  cd <plugins-folder>
115
172
  npm install tabby-tabbyspaces
116
173
  ```
117
174
 
175
+ ### Production uninstall
176
+ ```bash
177
+ # Via Tabby Plugin Manager
178
+ # Or via npm:
179
+ cd <plugins-folder>
180
+ npm uninstall tabby-tabbyspaces
181
+ ```
182
+
118
183
  ## Development
119
184
 
120
185
  ### Dev install (once)
@@ -122,16 +187,24 @@ npm install tabby-tabbyspaces
122
187
  npm run build:dev
123
188
  cd %APPDATA%\tabby\plugins
124
189
  npm install "<path-to-repo>/dist-dev"
190
+ # Restart Tabby
191
+ ```
192
+
193
+ ### Dev uninstall
194
+ ```bash
195
+ cd %APPDATA%\tabby\plugins
196
+ npm uninstall tabby-tabbyspaces-dev
197
+ # Restart Tabby
125
198
  ```
126
199
 
127
200
  ### Dev workflow (after install)
128
201
  ```bash
129
- npm run build:dev # Initial build (creates dist-dev/package.json)
202
+ npm run build:dev # Rebuild
130
203
  npm run watch:dev # Watch mode - rebuilds on file changes
131
- # restart Tabby after each rebuild
204
+ # Restart Tabby after each rebuild
132
205
  ```
133
206
 
134
- npm auto-creates symlinks for local packages, so each build is immediately available.
207
+ npm creates symlinks for local packages, so each build is immediately available.
135
208
 
136
209
  ### Dev vs Prod Isolation
137
210
 
@@ -140,13 +213,88 @@ npm auto-creates symlinks for local packages, so each build is immediately avail
140
213
  | Package | `tabby-tabbyspaces` | `tabby-tabbyspaces-dev` |
141
214
  | Config | `config.store.tabbyspaces` | `config.store.tabbyspaces_dev` |
142
215
  | Display | "TabbySpaces" | "TabbySpaces DEV" |
216
+ | Toolbar icon | Grid (4 squares) | ⚡ Bolt |
217
+ | Settings icon | `th-large` | `bolt` |
143
218
 
144
219
  Both plugins can be installed simultaneously.
145
220
 
221
+ ## CDP Debugging (via tabby-mcp)
222
+
223
+ Automatizovan način za testiranje plugina kroz Chrome DevTools Protocol.
224
+
225
+ ### Workflow
226
+ 1. **Pokreni Tabby** sa remote debugging:
227
+ ```bash
228
+ cmd.exe /c start "" "C:\Program Files (x86)\Tabby\Tabby.exe" --remote-debugging-port=9222
229
+ ```
230
+ 2. **Izlistaj targets** sa `mcp__tabby__list_targets`
231
+ 3. **Identifikuj target** - oba imaju isti URL, ali:
232
+ - Target 0 = Tvoj radni Tabby (Claude Code session)
233
+ - Target 1 = Debug Tabby instance (pokrenut sa --remote-debugging-port)
234
+ 4. **Debug** sa `query`, `execute_js`, `screenshot`
235
+
236
+ **VAŽNO:** Debug-uj NOVI Tabby instance (target 1), ne onaj u kojem radiš!
237
+
238
+ ### MCP Tools
239
+ | Tool | Opis |
240
+ |------|------|
241
+ | `mcp__tabby__list_targets` | Lista CDP targets sa index, title, URL, WebSocket |
242
+ | `mcp__tabby__query` | CSS selector → lista elemenata |
243
+ | `mcp__tabby__execute_js` | Izvrši JS (fresh scope, async/await support) |
244
+ | `mcp__tabby__screenshot` | Screenshot Tabby prozora |
245
+
246
+ ### Identifikacija DEV verzije
247
+
248
+ DEV verzija ima ⚡ bolt ikonicu (umesto grid-a):
249
+ - **Toolbar**: SVG bolt ikonica u gornjem desnom uglu
250
+ - **Settings sidebar**: FontAwesome `fa-bolt` pored "TabbySpaces DEV"
251
+
252
+ ```javascript
253
+ // Proveri da li je DEV verzija aktivna u settings
254
+ document.querySelector('.nav-link .fa-bolt') // DEV
255
+ document.querySelector('.nav-link .fa-th-large') // PROD
256
+ ```
257
+
258
+ ### CSS Selektori Reference
259
+
260
+ | Selektor | Element |
261
+ |----------|---------|
262
+ | `.preview-pane` | Pane u split preview-u |
263
+ | `.preview-pane.selected` | Selektovan pane |
264
+ | `.toolbar-btn` | Toolbar dugmad |
265
+ | `.toolbar-btn[title="Edit pane"]` | Specifično dugme po title-u |
266
+ | `.pane-editor-modal` | Edit pane modal |
267
+ | `.context-menu` | Context menu (desni klik) |
268
+ | `.workspace-item` | Workspace u listi |
269
+ | `.nav-link .fa-bolt` | DEV settings tab ikonica |
270
+ | `.nav-link .fa-th-large` | PROD settings tab ikonica |
271
+
272
+ ### Primeri
273
+ ```javascript
274
+ // Query elemente
275
+ mcp__tabby__query(target: 1, selector: '.preview-pane')
276
+
277
+ // Klikni na pane i proveri toolbar
278
+ document.querySelectorAll('.preview-pane')[0].click();
279
+ return Array.from(document.querySelectorAll('.toolbar-btn'))
280
+ .map(b => ({title: b.title, disabled: b.disabled}));
281
+
282
+ // Split pane i vrati novi count
283
+ const before = document.querySelectorAll('.preview-pane').length;
284
+ document.querySelectorAll('.preview-pane')[0].click();
285
+ document.querySelector('.toolbar-btn[title="Split Horizontal"]').click();
286
+ return { before, after: document.querySelectorAll('.preview-pane').length };
287
+
288
+ // Async primer - sačekaj Angular change detection
289
+ document.querySelectorAll('.preview-pane')[0].click();
290
+ await new Promise(r => setTimeout(r, 100));
291
+ return document.querySelectorAll('.preview-pane.selected').length;
292
+ ```
293
+
146
294
  ## Known Issues
147
295
 
148
296
  ### YAML escape sequences in config.yaml
149
- If a base profile in Tabby config uses double-quoted strings with wrong escape sequences (e.g., `\t` instead of `\\t`), the plugin will copy the corrupted path.
297
+ If a base profile in Tabby config uses double-quoted strings with wrong escape sequences (e.g., `\t` instead of `\\t`), shell detection will fail and CWD commands may not work correctly.
150
298
 
151
299
  ```yaml
152
300
  # WRONG - \t becomes TAB character
package/README.md CHANGED
@@ -1,61 +1,71 @@
1
- # TabbySpaces
2
-
3
- Visual workspace editor for [Tabby](https://tabby.sh). Create split-layout terminal workspaces without touching config files.
4
-
5
- ![Workspace Editor](screenshots/editor.png)
6
-
7
- ## What it does
8
-
9
- - Visual editor for split layouts (horizontal/vertical, nested, any depth)
10
- - Per-pane configuration: profile, working directory, startup command, title
11
- - One-click workspace launch from toolbar
12
- - Hotkey support for quick workspace switching
13
- - Works with any shell (Bash, Zsh, PowerShell, Nushell, etc.)
14
-
15
- ## Install
16
-
17
- **From Tabby Plugin Manager:**
18
- Settings → Plugins → Search "tabbyspaces" → Install
19
-
20
- **Manual:**
21
- ```bash
22
- cd ~/.config/tabby/plugins # or %APPDATA%\tabby\plugins on Windows
23
- npm install tabby-tabbyspaces
24
- ```
25
-
26
- Restart Tabby after installation.
27
-
28
- ## Usage
29
-
30
- 1. Open Settings → TabbySpaces
31
- 2. Create a workspace
32
- 3. Design your split layout visually
33
- 4. Configure each pane (profile, cwd, startup command)
34
- 5. Save and launch from the toolbar
35
-
36
- ### Workspace editor
37
-
38
- ![Edit Workspace](screenshots/workspace-edit.png)
39
-
40
- ### Pane configuration
41
-
42
- ![Edit Pane](screenshots/pane-edit.png)
43
-
44
- ## About this project
45
-
46
- This plugin was written 100% by [Claude Code](https://claude.ai/code).
47
-
48
- Igor Halilović had the idea and provided product direction. He hates Angular so much (19 years of web dev, wrote his own TypeScript framework) that he didn't look at this code. Not once. He told Claude Code what he wanted, Claude Code built it.
49
-
50
- Human provides the *what* and *why*. AI handles the *how*.
51
-
52
- ## Tech
53
-
54
- - Angular 15 (Tabby's framework)
55
- - TypeScript 4.9
56
- - Webpack 5
57
- - Pug templates, SCSS styles
58
-
59
- ## License
60
-
61
- MIT
1
+ # TabbySpaces
2
+
3
+ Visual workspace editor for [Tabby](https://tabby.sh). Create split-layout terminal workspaces without touching config files.
4
+
5
+ ![Workspace Editor](screenshots/editor.png)
6
+
7
+ ## What it does
8
+
9
+ - Visual editor for split layouts (horizontal/vertical, nested, any depth)
10
+ - Per-pane configuration: profile, working directory, startup command, title
11
+ - One-click workspace launch from toolbar
12
+ - Launch on startup (auto-open workspaces when Tabby starts)
13
+ - Works with any shell (Bash, Zsh, PowerShell, Nushell, etc.)
14
+
15
+ ## About this project
16
+
17
+ This plugin was written 100% by [Claude Code](https://claude.ai/code).
18
+
19
+ Igor Halilović had the idea and provided product direction. He hates Angular so much (19 years of web dev, wrote his own TypeScript framework) that he didn't look at this code. Not once. He told Claude Code what he wanted, Claude Code built it.
20
+
21
+ Human provides the *what* and *why*. AI handles the *how*.
22
+
23
+ Here's the fun part: to test this plugin, we built [tabby-mcp](https://github.com/halilc4/tabby-mcp) - an MCP server that lets Claude Code interact with Tabby via CDP. So the AI that built TabbySpaces can now test it too. Full circle.
24
+
25
+ ## Install
26
+
27
+ **From Tabby Plugin Manager:**
28
+ Settings → Plugins → Search "tabbyspaces" → Install
29
+
30
+ **Manual:**
31
+ ```bash
32
+ cd ~/.config/tabby/plugins # or %APPDATA%\tabby\plugins on Windows
33
+ npm install tabby-tabbyspaces
34
+ ```
35
+
36
+ Restart Tabby after installation.
37
+
38
+ ## Usage
39
+
40
+ 1. Open Settings → TabbySpaces
41
+ 2. Create a workspace
42
+ 3. Design your split layout visually
43
+ 4. Configure each pane (profile, cwd, startup command)
44
+ 5. Save and launch from the toolbar
45
+
46
+ ### Pane configuration
47
+
48
+ ![Edit Pane](screenshots/pane-edit.png)
49
+
50
+ ## Roadmap
51
+
52
+ - Hotkey support for quick workspace switching
53
+ - Pane presets (saved configurations for quick adding)
54
+ - Resize panes in editor (adjust split ratios)
55
+ - Drag and drop panes (reorganize layout by dragging)
56
+
57
+ ## Tech
58
+
59
+ - Angular 15 (Tabby's framework)
60
+ - TypeScript 4.9
61
+ - Webpack 5
62
+ - Pug templates, SCSS styles
63
+
64
+ ## Community
65
+
66
+ - [Discussions](https://github.com/halilc4/tabbyspaces/discussions) - Questions, ideas, show your setup
67
+ - [Issues](https://github.com/halilc4/tabbyspaces/issues) - Bug reports
68
+
69
+ ## License
70
+
71
+ MIT
package/RELEASE.md ADDED
@@ -0,0 +1,91 @@
1
+ # Release Workflow
2
+
3
+ ## Trenutno stanje
4
+ - **Dev branch**: 15 commit-a ispred main-a
5
+ - **Verzija**: 0.0.1
6
+ - **Tagovi**: Nema
7
+ - **PROD instalacija**: Lokalni symlink (za testiranje)
8
+ - **Status**: U toku testiranja (2026-01-13)
9
+
10
+ ## Instalacije u Tabby plugins
11
+ ```json
12
+ // %APPDATA%\tabby\plugins\package.json
13
+ {
14
+ "dependencies": {
15
+ "tabby-tabbyspaces": "file:../../../../tabbyspaces/dist", // LOKALNI SYMLINK (za testiranje)
16
+ "tabby-tabbyspaces-dev": "file:../../../../tabbyspaces/dist-dev"
17
+ }
18
+ }
19
+ ```
20
+
21
+ | Verzija | Config key | Ikonica | Update |
22
+ |---------|------------|---------|--------|
23
+ | PROD | `tabbyspaces` | Grid (`th-large`) | `npm run build` + restart |
24
+ | DEV | `tabbyspaces_dev` | Bolt (`bolt`) | `npm run build:dev` + restart |
25
+
26
+ ## Testiranje (ručno)
27
+
28
+ ### Funkcionalnosti za testirati
29
+ - [x] Plugin se pojavljuje u Settings sidebar (ikonica `th-large`, ne `bolt`)
30
+ - [x] Toolbar dugme (grid ikonica)
31
+ - [x] Kreiranje novog workspace-a
32
+ - [x] Split layout editing (horizontal/vertical)
33
+ - [x] Pane selection i editing
34
+ - [x] Startup command
35
+ - [x] Launch on startup
36
+ - [x] Čuvanje u `config.store.tabbyspaces`
37
+
38
+ ### Install/Uninstall
39
+ - [x] Uninstall PROD (`npm uninstall tabby-tabbyspaces`)
40
+ - [x] Install lokalni symlink (`npm install dist`)
41
+ - [x] Reinstall sa npm registry (`npm install tabby-tabbyspaces`)
42
+
43
+ ### Napomene iz testiranja
44
+ - Na prvi pogled funkcionalno radi
45
+ - (dodaj napomene tokom testiranja)
46
+
47
+ ### Iterativno testiranje
48
+ ```bash
49
+ # Napravi promenu → build → restart Tabby
50
+ npm run build
51
+ ```
52
+
53
+ ## Release (kad bude spremno)
54
+
55
+ ```bash
56
+ # 1. Bump verziju u package.json (npr. "0.1.0")
57
+
58
+ # 2. Final build
59
+ npm run build
60
+
61
+ # 3. Commit
62
+ git add package.json
63
+ git commit -m "Bump version to 0.1.0"
64
+
65
+ # 4. Merge u main
66
+ git checkout main
67
+ git merge dev
68
+
69
+ # 5. Tag
70
+ git tag v0.1.0
71
+
72
+ # 6. Push
73
+ git push origin main
74
+ git push --tags
75
+
76
+ # 7. Publish na npm
77
+ cd dist
78
+ npm publish
79
+
80
+ # 8. Vrati se na dev
81
+ git checkout dev
82
+ ```
83
+
84
+ ## Posle testiranja (opciono)
85
+
86
+ Vrati PROD na npm registry verziju:
87
+ ```bash
88
+ cd %APPDATA%\tabby\plugins
89
+ npm uninstall tabby-tabbyspaces
90
+ npm install tabby-tabbyspaces
91
+ ```