gloomberb 0.1.0 → 0.2.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.
- package/LICENSE +25 -0
- package/README.md +68 -122
- package/install.mjs +1 -2
- package/package.json +10 -2
package/LICENSE
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Gloomberb Contributors
|
|
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
|
+
When using this software in a product or service, attribution to the Gloomberb
|
|
16
|
+
project (https://github.com/vincelwt/gloomberb) is appreciated and encouraged,
|
|
17
|
+
though not legally required beyond preserving the above copyright notice.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
20
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
21
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
22
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
23
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
24
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
25
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,152 +1,98 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# 📉 Gloomberb
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
+--[ GLOOMBERB TERMINAL ]----------[ 15:42:03 ]--[ USD ]--+
|
|
7
|
-
| | |
|
|
8
|
-
| [Main Portfolio|Tech WL] | [Overview|Financials|Chart] |
|
|
9
|
-
| -------------------------| |
|
|
10
|
-
| TICKER PRICE CHG% PE | AAPL - Apple Inc. |
|
|
11
|
-
| AAPL $189.50 +1.2% 29 | Price: $189.50 (+$2.24) |
|
|
12
|
-
|>MSFT $420.10 -0.3% 35 | ▁▂▃▄▅▆▅▄▅▆▇▆▅▆▇▆▅▆▇█▇▆▇ |
|
|
13
|
-
| GOOGL $175.80 +0.8% 25 | MCap: $2.91T P/E: 29.1 |
|
|
14
|
-
| NVDA $875.30 +2.1% 62 | Revenue: $391B FCF: $112B |
|
|
15
|
-
+---[ Ctrl+P search | Tab switch | q quit ]---------------+
|
|
16
|
-
```
|
|
5
|
+
**Extensible financial terminal, for the terminal.**
|
|
17
6
|
|
|
18
|
-
|
|
7
|
+
> Why pay for Bloomberg when you can have Gloomberb?
|
|
19
8
|
|
|
20
|
-
|
|
21
|
-
- **Yahoo Finance integration** for real-time quotes, fundamentals, and 5-year price history
|
|
22
|
-
- **Markdown-based storage** - one `.md` file per ticker with YAML frontmatter, perfect for LLM agents
|
|
23
|
-
- **Multiple portfolios & watchlists** with configurable columns
|
|
24
|
-
- **Plugin architecture** - everything is a plugin, including core panes and broker integrations
|
|
25
|
-
- **Prefix command bar** (`Ctrl+P`) for fast keyboard-driven workflow
|
|
26
|
-
- **Multi-currency** support with cached exchange rates
|
|
27
|
-
- **ASCII stock charts** using braille characters with price/time axes
|
|
28
|
-
- **Editable notes** per ticker, saved to markdown
|
|
29
|
-
- **Interactive Brokers** integration via Flex Queries
|
|
30
|
-
- **Local-first** - all data stays on your machine (SQLite cache + markdown files)
|
|
9
|
+
<img src="https://gloomberb.com/landing-terminal.png" alt="Gloomberb terminal screenshot" width="720" />
|
|
31
10
|
|
|
32
|
-
|
|
11
|
+
</div>
|
|
33
12
|
|
|
34
|
-
|
|
35
|
-
# Install dependencies
|
|
36
|
-
bun install
|
|
13
|
+
## ✨ Features
|
|
37
14
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
15
|
+
- **Track portfolios & trade**
|
|
16
|
+
- **Real-time quotes & fundamentals**
|
|
17
|
+
- **Beautiful terminal charts**
|
|
18
|
+
- **Keyboard-driven**
|
|
19
|
+
- **Extensible**
|
|
20
|
+
- **100% local**
|
|
41
21
|
|
|
42
|
-
|
|
22
|
+
## 🚀 Install
|
|
43
23
|
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
currency: USD
|
|
49
|
-
name: Apple Inc.
|
|
50
|
-
sector: Technology
|
|
51
|
-
portfolios:
|
|
52
|
-
- main
|
|
53
|
-
watchlists:
|
|
54
|
-
- tech
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Notes
|
|
58
|
-
|
|
59
|
-
Strong services growth. Watch for Vision Pro adoption.
|
|
24
|
+
```bash
|
|
25
|
+
bun install -g gloomberb
|
|
26
|
+
# or
|
|
27
|
+
npm install -g gloomberb
|
|
60
28
|
```
|
|
61
29
|
|
|
62
|
-
|
|
30
|
+
Then run `gloomberb` to start.
|
|
63
31
|
|
|
64
|
-
|
|
65
|
-
|-----|--------|
|
|
66
|
-
| `Ctrl+P` or `` ` `` | Open command bar |
|
|
67
|
-
| `Tab` | Switch between left/right panels |
|
|
68
|
-
| `j` / `k` | Navigate ticker list |
|
|
69
|
-
| `h` / `l` | Switch tabs |
|
|
70
|
-
| `r` | Refresh selected ticker |
|
|
71
|
-
| `Shift+R` | Refresh all tickers |
|
|
72
|
-
| `Ctrl+,` | Open settings |
|
|
73
|
-
| `q` | Quit |
|
|
32
|
+
## 🧩 Plugins
|
|
74
33
|
|
|
75
|
-
|
|
34
|
+
Gloomberb has a plugin architecture where everything, from the portfolio list to broker integrations, is a plugin.
|
|
76
35
|
|
|
77
|
-
|
|
36
|
+
Plugins can add tabs, columns, commands, status bar widgets, and more.
|
|
78
37
|
|
|
79
|
-
|
|
80
|
-
|--------|--------|
|
|
81
|
-
| `T <query>` | Search Yahoo Finance for a ticker |
|
|
82
|
-
| `AW` | Add current ticker to watchlist |
|
|
83
|
-
| `AP` | Add current ticker to portfolio |
|
|
84
|
-
| `RW` | Remove from watchlist |
|
|
85
|
-
| `RP` | Remove from portfolio |
|
|
86
|
-
| `NP` | New portfolio |
|
|
87
|
-
| `NW` | New watchlist |
|
|
88
|
-
| `R` | Refresh current ticker |
|
|
89
|
-
| `RA` | Refresh all |
|
|
90
|
-
| `IB` | Import from Interactive Brokers |
|
|
91
|
-
| `S` | Open settings |
|
|
38
|
+
See **[PLUGINS.md](PLUGINS.md)** for the plugin API and the shared UI surface available through `gloomberb/components`.
|
|
92
39
|
|
|
93
|
-
|
|
40
|
+
### Core plugins
|
|
94
41
|
|
|
95
|
-
|
|
42
|
+
| Plugin | Description |
|
|
43
|
+
|--------|-------------|
|
|
44
|
+
| **Portfolio List** | Main ticker list with portfolios & watchlists |
|
|
45
|
+
| **Ticker Detail** | Overview, financials, and chart tabs |
|
|
46
|
+
| **News** | View latest news for each ticker (via Yahoo Finance) |
|
|
47
|
+
| **SEC** | View recent SEC filings for supported US equities |
|
|
48
|
+
| **Notes** | Write and save markdown notes, stored locally |
|
|
49
|
+
| **Options** | View US equity options chains |
|
|
50
|
+
| **Ask AI** | Chat with AI about tickers using local CLI tools |
|
|
51
|
+
| **Compare Charts** | Compare multiple ticker charts overlaid on one shared chart |
|
|
52
|
+
| **X Scanner** | WIP |
|
|
53
|
+
| **Alerts** | WIP |
|
|
54
|
+
| **Scanner** | WIP |
|
|
96
55
|
|
|
97
|
-
|
|
98
|
-
src/
|
|
99
|
-
plugins/
|
|
100
|
-
registry.ts # OpenTUI slot-based plugin system
|
|
101
|
-
pane-manager.ts # Customizable pane layout
|
|
102
|
-
builtin/
|
|
103
|
-
portfolio-list.tsx # Left pane (portfolios + watchlists)
|
|
104
|
-
ticker-detail.tsx # Right pane (overview, financials, chart, notes)
|
|
105
|
-
ibkr-flex.tsx # IBKR Flex Query broker plugin
|
|
106
|
-
manual-entry.tsx # Manual position entry
|
|
107
|
-
sources/
|
|
108
|
-
yahoo-finance.ts # Yahoo Finance client with retry + caching
|
|
109
|
-
data/
|
|
110
|
-
markdown-store.ts # Ticker markdown file read/write
|
|
111
|
-
sqlite-cache.ts # Bun SQLite cache for Yahoo data
|
|
112
|
-
```
|
|
56
|
+
### Data providers
|
|
113
57
|
|
|
114
|
-
|
|
58
|
+
| Provider | Description |
|
|
59
|
+
|----------|-------------|
|
|
60
|
+
| **Gloomberb Cloud** | Real-time data (recommended, free) |
|
|
61
|
+
| **Yahoo Finance** | Delayed data, rate-limiting |
|
|
115
62
|
|
|
116
|
-
|
|
63
|
+
### Brokers connectors
|
|
117
64
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
- `config:section` - Settings page sections
|
|
123
|
-
- `data:post-refresh` / `data:enricher` - Hook into data lifecycle
|
|
65
|
+
| Plugin | Description |
|
|
66
|
+
|--------|-------------|
|
|
67
|
+
| **IBKR** | Import positions from Interactive Brokers (Flex Query or Gateway API) |
|
|
68
|
+
| **Manual Entry** | Manually add positions, saved locally |
|
|
124
69
|
|
|
125
|
-
|
|
70
|
+
Toggleable plugins can be enabled/disabled from the command bar screen (`Ctrl+p`).
|
|
126
71
|
|
|
127
|
-
|
|
128
|
-
- Chat component
|
|
129
|
-
- Option chain viewer
|
|
130
|
-
- Analyst ratings
|
|
131
|
-
- Tweet/social scanner
|
|
132
|
-
- Crypto feeds
|
|
133
|
-
- Custom columns (conviction score, etc.)
|
|
134
|
-
- Live stock feeds
|
|
72
|
+
### Plugin slots
|
|
135
73
|
|
|
136
|
-
|
|
74
|
+
Plugins extend the UI through defined slots:
|
|
137
75
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
| App config | `config.json` | User settings |
|
|
76
|
+
- `detail:tab` / `detail:section` — tabs or sections in the detail pane
|
|
77
|
+
- `list:column` — custom columns in the ticker list
|
|
78
|
+
- `command:extra` / `command:preset` — extend the command bar
|
|
79
|
+
- `status:widget` — status bar widgets
|
|
80
|
+
- `config:section` — settings page sections
|
|
81
|
+
- `data:post-refresh` / `data:enricher` — hook into the data lifecycle
|
|
145
82
|
|
|
146
|
-
##
|
|
83
|
+
## ⌨️ Keyboard Shortcuts
|
|
147
84
|
|
|
148
|
-
|
|
149
|
-
|
|
85
|
+
| Key | Action |
|
|
86
|
+
|-----|--------|
|
|
87
|
+
| `Ctrl+P` or `` ` `` | Open command bar |
|
|
88
|
+
| `Tab` | Switch between panels |
|
|
89
|
+
| `j` / `k` | Navigate ticker list |
|
|
90
|
+
| `h` / `l` | Switch tabs |
|
|
91
|
+
| `r` | Refresh selected ticker |
|
|
92
|
+
| `Shift+R` | Refresh all tickers |
|
|
93
|
+
| `Ctrl+,` | Open settings |
|
|
94
|
+
| `m` | Cycle chart mode in the chart tab |
|
|
95
|
+
| `q` | Quit |
|
|
150
96
|
|
|
151
97
|
## License
|
|
152
98
|
|
package/install.mjs
CHANGED
|
@@ -6,8 +6,7 @@ import https from "https";
|
|
|
6
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
7
|
|
|
8
8
|
// Skip when running in the source repo (dev install)
|
|
9
|
-
|
|
10
|
-
if (pkg.dependencies) process.exit(0);
|
|
9
|
+
if (existsSync(join(__dirname, "src"))) process.exit(0);
|
|
11
10
|
const REPO = "vincelwt/gloomberb";
|
|
12
11
|
|
|
13
12
|
const platform = process.platform;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gloomberb",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Bloomberg-style stock portfolio tracker for the terminal",
|
|
5
5
|
"module": "src/index.tsx",
|
|
6
6
|
"type": "module",
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
"dev": "bun run --watch src/index.tsx",
|
|
16
16
|
"build": "bun run scripts/build.ts",
|
|
17
17
|
"build:all": "bun run scripts/build.ts --all",
|
|
18
|
+
"test": "bun test",
|
|
19
|
+
"release": "./scripts/release.sh",
|
|
18
20
|
"postinstall": "node install.mjs"
|
|
19
21
|
},
|
|
20
22
|
"license": "MIT",
|
|
@@ -38,10 +40,16 @@
|
|
|
38
40
|
},
|
|
39
41
|
"dependencies": {
|
|
40
42
|
"@opentui-ui/dialog": "^0.1.2",
|
|
43
|
+
"@opentui-ui/toast": "^0.0.5",
|
|
41
44
|
"@opentui/core": "^0.1.90",
|
|
42
45
|
"@opentui/react": "^0.1.90",
|
|
46
|
+
"@stoqey/ib": "^1.5.3",
|
|
43
47
|
"gray-matter": "^4.0.3",
|
|
48
|
+
"opentui-spinner": "^0.0.6",
|
|
44
49
|
"react": "^19.2.4",
|
|
45
50
|
"yahoo-finance2": "^3.13.2"
|
|
51
|
+
},
|
|
52
|
+
"patchedDependencies": {
|
|
53
|
+
"@opentui/core@0.1.90": "patches/@opentui%2Fcore@0.1.90.patch"
|
|
46
54
|
}
|
|
47
|
-
}
|
|
55
|
+
}
|