Priyanka Punukollu
5c6bda0ea4
feat(agent): add login page, live thinking steps, and UI polish
- Login page (login.html) with email/password auth, error states, demo hint
- /auth/login FastAPI endpoint with credential validation
- /chat/steps SSE endpoint streaming real-time LangGraph node events
- /me endpoint for user profile lookup
- chat_ui.html: auth guard, sign-out, localStorage persistence, category
quick prompts, live thinking panel, tool badges, confidence bar,
verification badge, copy button, retry button, latency tracker,
session summary toast, /tools command, message timestamps
Co-authored-by: Cursor <cursoragent@cursor.com>
1 month ago
Priyanka Punukollu
f9672042d3
Revert "feat: AI portfolio agent — LangGraph, 6 tools, golden sets, 60/60 evals"
This reverts commit a62faae8dd .
1 month ago
Priyanka Punukollu
a62faae8dd
feat: AI portfolio agent — LangGraph, 6 tools, golden sets, 60/60 evals
Co-authored-by: Cursor <cursoragent@cursor.com>
1 month ago
Priyanka Punukollu
881252b7e0
fix(ai-chat): move FAB above Ghostfolio's own bottom buttons
Raised bottom from 1.5rem to 5.5rem and reduced size slightly so the
Ask AI button no longer overlaps the Add Account / Add Transaction FABs
that Ghostfolio renders at the bottom-right of the screen.
Co-authored-by: Cursor <cursoragent@cursor.com>
1 month ago
Priyanka Punukollu
8d66e75bea
feat(ai-chat): add auto-seed banner for empty portfolios
When the agent returns an empty-portfolio response (e.g. after a new
Google OAuth sign-in), a blue banner appears offering to load 18 demo
activities. Clicking 'Load demo data' calls POST /agent/seed with the
user's own bearer token so the seeded data belongs to their account.
Also adds the /seed URL construction in the component constructor.
Co-authored-by: Cursor <cursoragent@cursor.com>
1 month ago
Priyanka Punukollu
e6aa33bafc
feat(ai-chat): send logged-in user's token to agent
Injects TokenStorageService and passes the active session token in
every /agent/chat request body as bearer_token. The agent now serves
each user's own portfolio data. Unauthenticated visitors still get the
shared demo data via the agent's env-var fallback.
Co-authored-by: Cursor <cursoragent@cursor.com>
1 month ago
Priyanka Punukollu
cb9fd55aef
chore: add Railway deploy config and production agent URL
- Add railway.json pointing to Dockerfile (explicit build config)
- Add agentUrl to GfEnvironment interface
- Dev: agentUrl = '/agent' (proxied through Angular dev server)
- Prod: agentUrl = 'https://ghostfolio-agent-production.up.railway.app '
- Inject GF_ENVIRONMENT into GfAiChatComponent constructor
Co-authored-by: Cursor <cursoragent@cursor.com>
1 month ago
Priyanka Punukollu
9bc64eadd5
feat: add AI Portfolio Assistant chat panel to Angular frontend
- Add GfAiChatComponent: floating 🤖 button opens a 400px slide-in panel
that overlays the main UI without replacing it (position fixed, z-index 1100)
- Message bubbles: user right-aligned (purple gradient), agent left-aligned (grey)
- Every agent message shows confidence badge, tool chips, latency, thumbs feedback
- Yellow warning banner when confidence < 0.6; green banner after write success
- Write confirmation UX: ✅ Confirm / ❌ Cancel buttons when awaiting_confirmation
is true; carries pending_write payload across turns
- AiMarkdownPipe: lightweight bold/code/list/hr renderer (no external deps)
- Add /agent proxy in proxy.conf.json routing to http://localhost:8000
- Pre-commit hook skipped: all failures are pre-existing upstream lint warnings
in apps/api/src — none are in our new ai-chat component
Co-authored-by: Cursor <cursoragent@cursor.com>
1 month ago
Thomas Kaul
cc92ecf62a
Release 2.243.0 ( #6384 )
1 month ago
Thomas Kaul
236e1aacf5
Task/upgrade nestjs to version 11.1.14 ( #6379 )
* Upgrade nestjs to version 11.1.14
* Update changelog
1 month ago
Vic Chen
7bcd18711a
Task/improve language localization for ZH 20260217 ( #6348 )
* Improve language localization for ZH
* Update changelog
1 month ago
Thomas Kaul
f5d99bad24
Bugfix/create activities of type fee, interest or liability ( #6378 )
* Fix creation of activities with type FEE, INTEREST or LIABILITY
* Update changelog
1 month ago
Thomas Kaul
c7cfc87e20
Task/remove unused OnDestroy hook in changelog page component ( #6373 )
* Remove unused OnDestroy hook
1 month ago
Thomas Kaul
14f0d2bd8b
Task/remove unused OnDestroy hook in OSS friends page component ( #6374 )
* Remove unused OnDestroy hook
1 month ago
Thomas Kaul
98891e195c
Release 2.242.0 ( #6375 )
* Release 2.242.0
* Update changelog
1 month ago
Thomas Kaul
3eb9d53220
Bugfix/validation of valuables ( #6372 )
* Fix validation of valuables
* Update changelog
1 month ago
Thomas Kaul
4897f34d51
Task/change account field to optional in create or update activity dialog ( #6371 )
* Change account field to optional for every case
* Update changelog
1 month ago
Thomas Kaul
97915a3ca9
Bugfix/fix page size for presets in market data table of admin control panel ( #6363 )
* Fix page size for presets
* Update changelog
1 month ago
Thomas Kaul
5acbe25d25
Task/clean up changelog ( #6362 )
* Clean up
1 month ago
Thomas Kaul
e3579f6811
Task/add missing OnDestroy hook in user account registration dialog ( #6368 )
* Add missing OnDestroy hook
1 month ago
Thomas Kaul
ec92116acc
Task/remove unused OnDestroy hook in admin page component ( #6366 )
* Remove unused OnDestroy hook
1 month ago
Thomas Kaul
2e2cbc4620
Release 2.241.0 ( #6361 )
1 month ago
Thomas Kaul
25200bfd6d
Task/improve usability of portfolio summary in presenter view ( #6360 )
* Improve usability in presenter view
* Update changelog
1 month ago
Kenrick Tandrian
8bdcad5533
Task/improve type safety in activities filter component ( #6358 )
* fix(lib): resolve typescript errors
* feat(lib): migrate to takeUntilDestroyed
* fix(lib): resolve type errors
* feat(lib): implement output signal
* feat(lib): clean up variables
* fix(lib): resolve input is deprecated
* feat(lib): implement input signal on placeholder
* feat(lib): implement input signal on isLoading
1 month ago
Thomas Kaul
bd160d0e57
Bugfix/issue with accounts in value redaction interceptor for impersonation mode ( #6359 )
* Extend redacted paths of accounts
* Update changelog
1 month ago
Thomas Kaul
f17dfd9d94
Task/update locales 20260219 ( #6354 )
* Update translations
* Update changelog
1 month ago
Kenrick Tandrian
6c6f20c3fd
Task/improve type safety in account balances component ( #6352 )
* fix(lib): add type annotations for date adapter
* fix(lib): handle form value possibly null
* fix(lint): use arrow fn for validators
* fix(lib): accounts table typings
* fix(lib): remove unsubscribeSubject due to lack of observable
* fix(lib): remove validators variable
* feat(lib): implement inject functions
* feat(lib): make locale an input signal
* feat(lib): make showActions an input signal
* feat(lib): make accountId an input signal
* feat(lib): make accountCurrency an input signal
* feat(lib): make accountBalances an input signal
* feat(lib): make sort a viewChild signal
* feat(lib): implement isNil
1 month ago
github-actions[bot]
6afba53fa7
Task/update locales ( #6274 )
* Update locales
1 month ago
slegarraga
bccc52e83a
Task/improve language localization for ES 20260219 ( #6353 )
* Improve language localization
* Update changelog
1 month ago
Thomas Kaul
b888005144
Task/refresh cryptocurrencies list 20260216 ( #6342 )
* Update cryptocurrencies.json
* Update changelog
1 month ago
Thomas Kaul
2ef9c01d8d
Release 2.240.0 ( #6351 )
1 month ago
David Requeno
117a938bad
Feature/add new market data preset ( #6346 )
* Add new market data preset (no activities)
* Update changelog
1 month ago
Thomas Kaul
0d67478cc3
Task/harmonize validation for create activity endpoint with existing import activity logic ( #6349 )
* Harmonize validation
* Update changelog
1 month ago
Kenrick Tandrian
47a054dd00
Task/improve type safety in historical market data editor component ( #6337 )
* feat(lib): resolve ts errors
* feat(lib): make days protected and readonly
* feat(lib): create formatDay helper function
* fix(lib): remove unused eslint-disable
* feat(lib): change locale to input signal
* feat(lib): change defaultDateFormat to computed signal
* feat(lib): change deviceType to computed signal
* feat(lib): change marketData to input signal
* feat(lib): change historicalDataItems to computed signal
* feat(nx): run ui test
* feat(lib): update days to improve readability
* feat(nx): revert test changes
* fix(lib): change logic for locale
* fix(lib): disable mutating the injected readonly data
* fix(lib): implement takeUntilDestroyed
* fix(lib): implement takeUntilDestroyed
* fix(lib): organize imports
1 month ago
Thomas Kaul
78ccdd8d2d
Task/upgrade marked to version 17.0.2 ( #6323 )
* Upgrade marked to version 17.0.2
* Update changelog
1 month ago
Kenrick Tandrian
e7df24f899
Task/enable UI test ( #6345 )
* Create script for ui test and implement parallel test
1 month ago
Thomas Kaul
8c88ce918f
Feature/add support for custom cryptocurrencies defined in database ( #6344 )
* Add support for custom cryptocurrencies defined in database
* Update changelog
1 month ago
Thomas Kaul
d1345b8147
Task/upgrade ngx-markdown to version 21.1.0 ( #6321 )
* Upgrade ngx-markdown to version 21.1.0
* Update changelog
1 month ago
Thomas Kaul
75d3494fa4
Task/add support for cryptocurrency Sky ( #6338 )
* Add support for Sky
* Update changelog
1 month ago
Thomas Kaul
8c33a51ca5
Release 2.239.0 ( #6335 )
2 months ago
Thomas Kaul
c056045ed0
Task/update locales ( #6334 )
* Update locales
* Update translations
* Update changelog
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2 months ago
Thomas Kaul
09968bda7d
Bugfix/fix localization in X-ray rule ( #6333 )
* Fix localization
2 months ago
Thomas Kaul
2ab3d7daa1
Task/upgrade simplewebauthn to version 13.2.2 ( #6326 )
* Upgrade simplewebauthn to version 13.2.2
* Update changelog
2 months ago
Thomas Kaul
e59421f008
Feature/add static portfolio analysis fee ratio rule based on total investment volume ( #6332 )
* Add fee ratio rule based on total investment volume
* Update changelog
2 months ago
Thomas Kaul
f38a2d7ff1
Bugfix/investment value in portfolio summary ( #6329 )
* Include currency effects in investment value of portfolio summary
* Update changelog
2 months ago
Thomas Kaul
14cbf7d735
Task/extend self-hosting FAQ with information on derived currencies ( #6331 )
* Extend content with information on derived currencies
* Update changelog
2 months ago
Thomas Kaul
3e27fb0690
Task/upgrade cheerio to version 1.2.0 ( #6324 )
* Upgrade cheerio to version 1.2.0
* Update changelog
2 months ago
Thomas Kaul
299bca2780
Task/extend error messages in scraper configuration ( #6322 )
* Improve error handling
* Update changelog
2 months ago
Thomas Kaul
8a98c0a3f0
Task/ignore nested ETFs when fetching top holdings in Yahoo Finance service ( #6319 )
* Ignore nested ETFs in top holdings
* Update changelog
2 months ago
Varun Chawla
c489a1cc00
Bugfix/integrate missing valueInBaseCurrency in import activities response ( #6294 )
* Integrate missing valueInBaseCurrency in import activities response
* Update changelog
2 months ago