tabby-tabbyspaces 0.0.1

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 (61) hide show
  1. package/.claude/settings.local.json +15 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
  3. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  5. package/CHANGELOG.md +20 -0
  6. package/CLAUDE.md +159 -0
  7. package/CONTRIBUTING.md +64 -0
  8. package/LICENSE +21 -0
  9. package/README.md +61 -0
  10. package/RELEASE_PLAN.md +161 -0
  11. package/dist/build-config.d.ts +4 -0
  12. package/dist/build-config.d.ts.map +1 -0
  13. package/dist/components/paneEditor.component.d.ts +14 -0
  14. package/dist/components/paneEditor.component.d.ts.map +1 -0
  15. package/dist/components/splitPreview.component.d.ts +36 -0
  16. package/dist/components/splitPreview.component.d.ts.map +1 -0
  17. package/dist/components/workspaceEditor.component.d.ts +29 -0
  18. package/dist/components/workspaceEditor.component.d.ts.map +1 -0
  19. package/dist/components/workspaceList.component.d.ts +28 -0
  20. package/dist/components/workspaceList.component.d.ts.map +1 -0
  21. package/dist/index.d.ts +7 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.LICENSE.txt +43 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/models/workspace.model.d.ts +77 -0
  27. package/dist/models/workspace.model.d.ts.map +1 -0
  28. package/dist/providers/config.provider.d.ts +9 -0
  29. package/dist/providers/config.provider.d.ts.map +1 -0
  30. package/dist/providers/settings.provider.d.ts +8 -0
  31. package/dist/providers/settings.provider.d.ts.map +1 -0
  32. package/dist/providers/toolbar.provider.d.ts +13 -0
  33. package/dist/providers/toolbar.provider.d.ts.map +1 -0
  34. package/dist/services/workspaceEditor.service.d.ts +25 -0
  35. package/dist/services/workspaceEditor.service.d.ts.map +1 -0
  36. package/package.json +73 -0
  37. package/screenshots/editor.png +0 -0
  38. package/screenshots/pane-edit.png +0 -0
  39. package/screenshots/workspace-edit.png +0 -0
  40. package/scripts/build-dev.js +46 -0
  41. package/src/build-config.ts +8 -0
  42. package/src/components/paneEditor.component.pug +46 -0
  43. package/src/components/paneEditor.component.scss +112 -0
  44. package/src/components/paneEditor.component.ts +33 -0
  45. package/src/components/splitPreview.component.pug +45 -0
  46. package/src/components/splitPreview.component.scss +126 -0
  47. package/src/components/splitPreview.component.ts +111 -0
  48. package/src/components/workspaceEditor.component.pug +84 -0
  49. package/src/components/workspaceEditor.component.scss +169 -0
  50. package/src/components/workspaceEditor.component.ts +181 -0
  51. package/src/components/workspaceList.component.pug +46 -0
  52. package/src/components/workspaceList.component.scss +112 -0
  53. package/src/components/workspaceList.component.ts +124 -0
  54. package/src/index.ts +38 -0
  55. package/src/models/workspace.model.ts +126 -0
  56. package/src/providers/config.provider.ts +12 -0
  57. package/src/providers/settings.provider.ts +15 -0
  58. package/src/providers/toolbar.provider.ts +81 -0
  59. package/src/services/workspaceEditor.service.ts +228 -0
  60. package/tsconfig.json +29 -0
  61. package/webpack.config.js +62 -0
@@ -0,0 +1,15 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(npm run build:*)",
5
+ "Bash(npm install:*)",
6
+ "Bash(gh search:*)",
7
+ "WebSearch",
8
+ "WebFetch(domain:deepwiki.com)",
9
+ "WebFetch(domain:github.com)",
10
+ "Bash(npm run build:dev:*)",
11
+ "Bash(wc:*)",
12
+ "Bash(tree:*)"
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: Bug report
3
+ about: Something broken? Report it here.
4
+ title: ''
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## What happened
10
+
11
+ Describe the bug. Be specific.
12
+
13
+ ## Steps to reproduce
14
+
15
+ 1.
16
+ 2.
17
+ 3.
18
+
19
+ ## Expected behavior
20
+
21
+ What should have happened instead.
22
+
23
+ ## Environment
24
+
25
+ - OS:
26
+ - Tabby version:
27
+ - TabbySpaces version:
28
+
29
+ ## Screenshots
30
+
31
+ If applicable.
32
+
33
+ ## Additional context
34
+
35
+ Anything else relevant.
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Question
4
+ url: https://github.com/halilc4/tabbyspaces/discussions
5
+ about: Have a question? Start a discussion.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Feature request
3
+ about: Got an idea? Share it.
4
+ title: ''
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## The problem
10
+
11
+ What's missing or annoying?
12
+
13
+ ## Proposed solution
14
+
15
+ How would you solve it?
16
+
17
+ ## Alternatives considered
18
+
19
+ Any other approaches you thought about?
20
+
21
+ ## Additional context
22
+
23
+ Mockups, examples, or anything else useful.
package/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
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
package/CLAUDE.md ADDED
@@ -0,0 +1,159 @@
1
+ # TabbySpaces
2
+
3
+ Visual split-layout workspace editor for Tabby.
4
+
5
+ ## Tech Stack
6
+
7
+ - **Framework**: Angular 15 (Tabby uses Angular 15)
8
+ - **Language**: TypeScript 4.9
9
+ - **Templates**: Pug (.pug)
10
+ - **Styles**: SCSS
11
+ - **Build**: Webpack 5
12
+
13
+ ## Structure
14
+
15
+ ```
16
+ src/
17
+ ├── index.ts # NgModule entry point
18
+ ├── models/ # TypeScript interfaces
19
+ ├── services/ # Business logic
20
+ ├── providers/ # Tabby config/settings providers
21
+ └── components/ # Angular components (.ts, .pug, .scss)
22
+ ```
23
+
24
+ ## Build
25
+
26
+ ```bash
27
+ npm install # .npmrc has legacy-peer-deps=true
28
+ npm run build # Production build → dist/
29
+ npm run build:dev # Dev build → dist-dev/ (isolated package)
30
+ npm run watch:dev # Watch mode for dev build
31
+ ```
32
+
33
+ Debug: `Ctrl+Shift+I` in Tabby opens DevTools.
34
+
35
+ ## Tabby Plugin Patterns
36
+
37
+ ### package.json (required)
38
+ ```json
39
+ {
40
+ "keywords": ["tabby-plugin"],
41
+ "main": "dist/index.js",
42
+ "tabbyPlugin": {
43
+ "name": "tabbyspaces",
44
+ "displayName": "TabbySpaces",
45
+ "description": "Workspaces for Tabby - Visual split-layout workspace editor"
46
+ }
47
+ }
48
+ ```
49
+
50
+ ### Config Provider
51
+ ```typescript
52
+ @Injectable()
53
+ export class MyConfigProvider extends ConfigProvider {
54
+ defaults = { myPlugin: { setting: 'value' } }
55
+ }
56
+ ```
57
+
58
+ ### Settings Tab Provider
59
+ ```typescript
60
+ @Injectable()
61
+ export class MySettingsProvider extends SettingsTabProvider {
62
+ id = 'my-plugin'
63
+ icon = 'cog'
64
+ title = 'My Plugin'
65
+ getComponentType() { return MySettingsComponent }
66
+ }
67
+ ```
68
+
69
+ ### Module Registration
70
+ ```typescript
71
+ @NgModule({
72
+ providers: [
73
+ { provide: ConfigProvider, useClass: MyConfigProvider, multi: true },
74
+ { provide: SettingsTabProvider, useClass: MySettingsProvider, multi: true },
75
+ ],
76
+ })
77
+ export default class MyModule {}
78
+ ```
79
+
80
+ ## Data Model
81
+
82
+ - `Workspace` - Main object with name, icon, color, root split
83
+ - `WorkspaceSplit` - Recursive structure with orientation, ratios, children
84
+ - `WorkspacePane` - Leaf node with profileId, cwd, startupCommand, title
85
+
86
+ ## Tabby Profile Generation
87
+
88
+ Plugin stores a simplified model in `config.store.tabbyspaces.workspaces` and auto-generates verbose Tabby `split-layout` profiles in `config.store.profiles`.
89
+
90
+ ## Nushell Startup Commands
91
+
92
+ For Nushell, startup commands are passed as:
93
+ ```typescript
94
+ options.args = ['-e', startupCommand]
95
+ ```
96
+
97
+ ## References
98
+
99
+ - tabby-workspace-manager: https://github.com/composer404/tabby-workspace-manager
100
+ - tabby-clippy: https://github.com/Eugeny/tabby-clippy
101
+ - Tabby docs: https://docs.tabby.sh/
102
+
103
+ ## Installation
104
+
105
+ ### Plugin folder locations
106
+ ```
107
+ Windows: %APPDATA%\tabby\plugins
108
+ macOS: ~/Library/Application Support/tabby/plugins
109
+ Linux: ~/.config/tabby/plugins
110
+ ```
111
+
112
+ ### Production install
113
+ ```bash
114
+ cd <plugins-folder>
115
+ npm install tabby-tabbyspaces
116
+ ```
117
+
118
+ ## Development
119
+
120
+ ### Dev install (once)
121
+ ```bash
122
+ npm run build:dev
123
+ cd %APPDATA%\tabby\plugins
124
+ npm install "<path-to-repo>/dist-dev"
125
+ ```
126
+
127
+ ### Dev workflow (after install)
128
+ ```bash
129
+ npm run build:dev # Initial build (creates dist-dev/package.json)
130
+ npm run watch:dev # Watch mode - rebuilds on file changes
131
+ # restart Tabby after each rebuild
132
+ ```
133
+
134
+ npm auto-creates symlinks for local packages, so each build is immediately available.
135
+
136
+ ### Dev vs Prod Isolation
137
+
138
+ | | Prod | Dev |
139
+ |---|---|---|
140
+ | Package | `tabby-tabbyspaces` | `tabby-tabbyspaces-dev` |
141
+ | Config | `config.store.tabbyspaces` | `config.store.tabbyspaces_dev` |
142
+ | Display | "TabbySpaces" | "TabbySpaces DEV" |
143
+
144
+ Both plugins can be installed simultaneously.
145
+
146
+ ## Known Issues
147
+
148
+ ### 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.
150
+
151
+ ```yaml
152
+ # WRONG - \t becomes TAB character
153
+ command: "C:\\Users\\...\\Program\ts\\nu\\bin\\nu.exe"
154
+
155
+ # CORRECT - unquoted string
156
+ command: C:\Users\...\Programs\nu\bin\nu.exe
157
+ ```
158
+
159
+
@@ -0,0 +1,64 @@
1
+ # Contributing
2
+
3
+ You want to contribute to an Angular project? Respect.
4
+
5
+ ## Before you start
6
+
7
+ Read [CLAUDE.md](CLAUDE.md). It has the technical context: data model, Tabby plugin patterns, known issues.
8
+
9
+ ## Setup
10
+
11
+ ```bash
12
+ git clone https://github.com/halilc4/tabbyspaces.git
13
+ cd tabbyspaces
14
+ npm install
15
+ npm run build:dev
16
+ ```
17
+
18
+ Install the dev build in Tabby:
19
+ ```bash
20
+ cd %APPDATA%\tabby\plugins # Windows
21
+ cd ~/.config/tabby/plugins # Linux
22
+ cd ~/Library/Application\ Support/tabby/plugins # macOS
23
+
24
+ npm install "<path-to-repo>/dist-dev"
25
+ ```
26
+
27
+ Restart Tabby. You should see "TabbySpaces DEV" in Settings.
28
+
29
+ ## Development workflow
30
+
31
+ ```bash
32
+ npm run build:dev # rebuild
33
+ # restart Tabby to see changes
34
+ ```
35
+
36
+ No hot reload. Tabby doesn't support it for plugins. Restart after each build.
37
+
38
+ ## What we need
39
+
40
+ - Bug fixes (check Issues)
41
+ - UX improvements
42
+ - Better split layout manipulation
43
+ - Drag & drop support
44
+ - Import/export workspaces
45
+
46
+ ## Pull requests
47
+
48
+ 1. Fork the repo
49
+ 2. Create a branch (`git checkout -b fix/thing`)
50
+ 3. Make your changes
51
+ 4. Test manually in Tabby
52
+ 5. Submit PR with a clear description
53
+
54
+ No strict commit message format. Just be clear about what you changed and why.
55
+
56
+ ## Code style
57
+
58
+ - TypeScript, strongly typed
59
+ - No `any` unless absolutely necessary
60
+ - Keep it simple - this isn't enterprise software
61
+
62
+ ## Questions?
63
+
64
+ Open an issue. Don't overthink it.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Igor Halilović
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,61 @@
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
@@ -0,0 +1,161 @@
1
+ # TabbySpaces - Public Release Plan
2
+
3
+ ## Cilj
4
+
5
+ Napraviti public repo koji omogućava:
6
+ 1. Korisnicima da instaliraju plugin iz Tabby Plugin Manager-a
7
+ 2. Developerima da doprinose (fork → develop → PR)
8
+ 3. Maintaineru (Igor) da testira i dev i production verziju istovremeno
9
+
10
+ ---
11
+
12
+ ## 1. Package.json izmene
13
+
14
+ - [x] Verzija: `1.0.0` → `0.0.1`
15
+ - [x] Dodaj `repository` polje
16
+ - [x] Dodaj `homepage` polje
17
+ - [x] Dodaj `bugs` polje
18
+ - [x] Sredi `scripts` sekciju - uklonjena TABBY_PLUGINS zavisnost
19
+
20
+ ---
21
+
22
+ ## 2. Dev Workflow
23
+
24
+ **Pristup:** build:dev + instalacija u plugins folder
25
+
26
+ **Radi:**
27
+ - [x] `npm run build:dev` - kreira dist-dev/ sa izolovanim package-om
28
+ - [x] Instalacija u plugins folder
29
+
30
+ **Poznati problemi:**
31
+ - [x] ~~Prod i dev plugin imaju isto ime u Tabby UI~~ (REŠENO)
32
+
33
+ **TODO:**
34
+ - [x] ~~Popraviti izolaciju imena u UI~~ (DONE - toolbar, settings, profile groups)
35
+ - [ ] Testirati watch mode
36
+ - [ ] Dokumentovati u README
37
+
38
+ ---
39
+
40
+ ## 3. Testiranje
41
+
42
+ **Koegzistencija (maintainer)** ✅ RADI
43
+ ```
44
+ tabby-tabbyspaces (prod) + tabby-tabbyspaces-dev (dev) u plugins folderu
45
+ Različiti config keys, različita imena u UI
46
+ ```
47
+
48
+ **Napomene:**
49
+ - Contributor workflow će biti dokumentovan u CONTRIBUTING.md
50
+ - Production test će biti live npm publish
51
+
52
+ ---
53
+
54
+ ## 4. Potrebni fajlovi
55
+
56
+ | Fajl | Status | Prioritet |
57
+ |------|--------|-----------|
58
+ | `README.md` | DONE | P0 |
59
+ | `LICENSE` | DONE | P0 |
60
+ | `CHANGELOG.md` | DONE | P0 |
61
+ | `CONTRIBUTING.md` | DONE | P0 |
62
+ | `.github/ISSUE_TEMPLATE/*` | DONE | P0 |
63
+ | `CLAUDE.md` | DONE (EN) | P0 |
64
+ | `screenshots/` | DONE | P0 |
65
+
66
+ ---
67
+
68
+ ## 5. Distribucija
69
+
70
+ **Metod:** npm publish (jedini način da se pojavi u Tabby Plugin Manager-u)
71
+
72
+ **Proces:**
73
+ ```bash
74
+ # Setup (jednom)
75
+ npm login
76
+
77
+ # Release
78
+ npm version patch # ili minor/major
79
+ npm publish
80
+ ```
81
+
82
+ **Pre-publish checklist:**
83
+ - [ ] Verzija bump-ovana
84
+ - [ ] Build radi (`npm run build`)
85
+ - [ ] README ažuriran
86
+ - [ ] CHANGELOG ažuriran
87
+
88
+ ---
89
+
90
+ ## 6. GitHub Repo Setup
91
+
92
+ - [ ] Kreiraj repo: `github.com/halilc4/tabbyspaces`
93
+ - [ ] Dodaj opis
94
+ - [ ] Dodaj topics: `tabby`, `tabby-plugin`, `terminal`, `workspace`
95
+ - [ ] Uključi Issues
96
+ - [ ] Push koda
97
+
98
+ ---
99
+
100
+ ## 7. Redosled akcija
101
+
102
+ ```
103
+ 1. [x] Reši dev workflow → build:dev pristup
104
+ 2. [x] Popravi dev vs prod izolaciju (ime u UI)
105
+ 3. [x] Testiraj koegzistenciju (maintainer scenario)
106
+ 4. [x] Napravi LICENSE (MIT, engleski)
107
+ 5. [x] Napravi README.md (engleski, Claude Code attribution, screenshots)
108
+ 6. [x] Napravi CHANGELOG.md
109
+ 7. [x] Napravi CONTRIBUTING.md
110
+ 8. [x] Napravi .github/ISSUE_TEMPLATE/*
111
+ 9. [x] Prevedi CLAUDE.md na engleski
112
+ 10. [ ] Kreiraj GitHub repo (halilc4/tabbyspaces)
113
+ 11. [ ] Push
114
+ 12. [ ] npm publish
115
+ 13. [ ] Testiraj instalaciju iz Tabby Plugin Manager-a
116
+ ```
117
+
118
+ ---
119
+
120
+ ## Odluke
121
+
122
+ 1. **GitHub username** - `halilc4` → `github.com/halilc4/tabbyspaces`
123
+ 2. **CHANGELOG** - DA, vodimo ga
124
+ 3. **Jezici** - README i LICENSE na engleskom
125
+ 4. **Attribution** - README mora jasno naglasiti:
126
+ - Kod 100% napisan od Claude Code-a
127
+ - Igor = ideja i product vision
128
+ - Igor toliko mrzi Angular da nije ni pogledao kod
129
+
130
+ ---
131
+
132
+ ## Otvorena pitanja
133
+
134
+ ~~1. **CLAUDE.md jezik** - Prevesti na engleski za contributore?~~ → DA, engleski
135
+
136
+ ---
137
+
138
+ ## 8. Final Review (2026-01-03)
139
+
140
+ **Status:** ✅ PASS
141
+
142
+ **Pregledano:**
143
+ - [x] Struktura projekta - čista, standardni Angular pattern
144
+ - [x] Kod - tipiziran, bez `any`, čitljiv
145
+ - [x] README.md - jasan, sa screenshotovima
146
+ - [x] LICENSE, CONTRIBUTING.md, CHANGELOG.md - kompletno
147
+ - [x] package.json metapodaci - repo, bugs, homepage
148
+ - [x] .github/ISSUE_TEMPLATE/* - bug report, feature request
149
+ - [x] Dev/Prod izolacija - radi
150
+
151
+ **Zaključak:** Projekat je spreman za public release.
152
+
153
+ **Sledeća sesija:** Full publish (GitHub repo + npm publish)
154
+
155
+ ---
156
+
157
+ ## Stil dokumentacije
158
+
159
+ - Bez mainstream GitHub corporate stila
160
+ - Bez AI slop-a (generic, over-polished)
161
+ - Direktno, iskreno, sa karakterom
@@ -0,0 +1,4 @@
1
+ export declare const CONFIG_KEY: string;
2
+ export declare const DISPLAY_NAME: string;
3
+ export declare const IS_DEV: boolean;
4
+ //# sourceMappingURL=build-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../src/build-config.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,QAAyE,CAAA;AAChG,eAAO,MAAM,YAAY,QAA6E,CAAA;AACtG,eAAO,MAAM,MAAM,SAAyD,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { WorkspacePane, TabbyProfile } from '../models/workspace.model';
3
+ export declare class PaneEditorComponent implements OnInit {
4
+ pane: WorkspacePane;
5
+ profiles: TabbyProfile[];
6
+ save: EventEmitter<WorkspacePane>;
7
+ cancel: EventEmitter<void>;
8
+ editedPane: WorkspacePane;
9
+ ngOnInit(): void;
10
+ onSave(): void;
11
+ onCancel(): void;
12
+ getProfileName(profileId: string): string;
13
+ }
14
+ //# sourceMappingURL=paneEditor.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paneEditor.component.d.ts","sourceRoot":"","sources":["../../src/components/paneEditor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAEvE,qBAKa,mBAAoB,YAAW,MAAM;IACvC,IAAI,EAAG,aAAa,CAAA;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAK;IAC5B,IAAI,8BAAoC;IACxC,MAAM,qBAA2B;IAE3C,UAAU,EAAG,aAAa,CAAA;IAE1B,QAAQ,IAAI,IAAI;IAIhB,MAAM,IAAI,IAAI;IAId,QAAQ,IAAI,IAAI;IAIhB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAI1C"}
@@ -0,0 +1,36 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { WorkspaceSplit, WorkspacePane } from '../models/workspace.model';
3
+ import { WorkspaceEditorService } from '../services/workspaceEditor.service';
4
+ export declare class SplitPreviewComponent {
5
+ private workspaceService;
6
+ split: WorkspaceSplit;
7
+ depth: number;
8
+ paneClick: EventEmitter<WorkspacePane>;
9
+ splitHorizontal: EventEmitter<WorkspacePane>;
10
+ splitVertical: EventEmitter<WorkspacePane>;
11
+ removePane: EventEmitter<WorkspacePane>;
12
+ contextMenuPane: WorkspacePane | null;
13
+ contextMenuPosition: {
14
+ x: number;
15
+ y: number;
16
+ };
17
+ constructor(workspaceService: WorkspaceEditorService);
18
+ isPane(child: WorkspacePane | WorkspaceSplit): boolean;
19
+ isSplit(child: WorkspacePane | WorkspaceSplit): boolean;
20
+ asSplit(child: WorkspacePane | WorkspaceSplit): WorkspaceSplit;
21
+ asPane(child: WorkspacePane | WorkspaceSplit): WorkspacePane;
22
+ getFlexStyle(index: number): string;
23
+ onPaneClick(pane: WorkspacePane): void;
24
+ onContextMenu(event: MouseEvent, pane: WorkspacePane): void;
25
+ closeContextMenu(): void;
26
+ onSplitH(): void;
27
+ onSplitV(): void;
28
+ onRemove(): void;
29
+ getProfileName(profileId: string): string;
30
+ getPaneLabel(pane: WorkspacePane): string;
31
+ onNestedPaneClick(pane: WorkspacePane): void;
32
+ onNestedSplitH(pane: WorkspacePane): void;
33
+ onNestedSplitV(pane: WorkspacePane): void;
34
+ onNestedRemove(pane: WorkspacePane): void;
35
+ }
36
+ //# sourceMappingURL=splitPreview.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splitPreview.component.d.ts","sourceRoot":"","sources":["../../src/components/splitPreview.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,eAAe,CAAA;AACtE,OAAO,EACL,cAAc,EACd,aAAa,EAEd,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAE5E,qBAKa,qBAAqB;IAWpB,OAAO,CAAC,gBAAgB;IAV3B,KAAK,EAAG,cAAc,CAAA;IACtB,KAAK,SAAI;IACR,SAAS,8BAAoC;IAC7C,eAAe,8BAAoC;IACnD,aAAa,8BAAoC;IACjD,UAAU,8BAAoC;IAExD,eAAe,EAAE,aAAa,GAAG,IAAI,CAAO;IAC5C,mBAAmB;;;MAAiB;gBAEhB,gBAAgB,EAAE,sBAAsB;IAE5D,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,OAAO;IAItD,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,OAAO;IAIvD,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,cAAc;IAI9D,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,GAAG,aAAa;IAI5D,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAItC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAM3D,gBAAgB,IAAI,IAAI;IAIxB,QAAQ,IAAI,IAAI;IAOhB,QAAQ,IAAI,IAAI;IAOhB,QAAQ,IAAI,IAAI;IAOhB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIzC,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAUzC,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAI5C,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIzC,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIzC,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;CAG1C"}
@@ -0,0 +1,29 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { Workspace, WorkspacePane, TabbyProfile } from '../models/workspace.model';
3
+ import { WorkspaceEditorService } from '../services/workspaceEditor.service';
4
+ export declare class WorkspaceEditorComponent implements OnInit {
5
+ private workspaceService;
6
+ workspace: Workspace;
7
+ save: EventEmitter<Workspace>;
8
+ cancel: EventEmitter<void>;
9
+ selectedPane: WorkspacePane | null;
10
+ showPaneEditor: boolean;
11
+ profiles: TabbyProfile[];
12
+ availableIcons: string[];
13
+ constructor(workspaceService: WorkspaceEditorService);
14
+ ngOnInit(): Promise<void>;
15
+ onSave(): void;
16
+ onCancel(): void;
17
+ selectPane(pane: WorkspacePane): void;
18
+ closePaneEditor(): void;
19
+ onPaneSave(pane: WorkspacePane): void;
20
+ private updatePaneInTree;
21
+ splitPane(pane: WorkspacePane, orientation: 'horizontal' | 'vertical'): void;
22
+ private splitPaneInTree;
23
+ removePane(pane: WorkspacePane): void;
24
+ private removePaneFromTree;
25
+ private recalculateRatios;
26
+ setOrientation(orientation: 'horizontal' | 'vertical'): void;
27
+ updateRatio(index: number, value: number): void;
28
+ }
29
+ //# sourceMappingURL=workspaceEditor.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaceEditor.component.d.ts","sourceRoot":"","sources":["../../src/components/workspaceEditor.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EACL,SAAS,EACT,aAAa,EAEb,YAAY,EAIb,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAA;AAE5E,qBAKa,wBAAyB,YAAW,MAAM;IAczC,OAAO,CAAC,gBAAgB;IAb3B,SAAS,EAAG,SAAS,CAAA;IACpB,IAAI,0BAAgC;IACpC,MAAM,qBAA2B;IAE3C,YAAY,EAAE,aAAa,GAAG,IAAI,CAAO;IACzC,cAAc,UAAQ;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAK;IAC7B,cAAc,WAIb;gBAEmB,gBAAgB,EAAE,sBAAsB;IAEtD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAW/B,MAAM,IAAI,IAAI;IAOd,QAAQ,IAAI,IAAI;IAIhB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKrC,eAAe,IAAI,IAAI;IAKvB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAKrC,OAAO,CAAC,gBAAgB;IAexB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI;IAI5E,OAAO,CAAC,eAAe;IA2BvB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAIrC,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,iBAAiB;IAKzB,cAAc,CAAC,WAAW,EAAE,YAAY,GAAG,UAAU,GAAG,IAAI;IAI5D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAoBhD"}