Skip to content

feat(integrations): multi-account support with aliases - #370

Closed
AlanAAG wants to merge 6 commits into
V1.4.1from
feature/multi-account-integrations
Closed

AlanAAG wants to merge 6 commits into
V1.4.1from
feature/multi-account-integrations

Conversation

@AlanAAG

@AlanAAG AlanAAG commented Jul 7, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Adds multi-account support to 10 integrations: Gmail, Google Calendar,
    Google Drive, Google Docs, YouTube, Outlook, LinkedIn, Notion, HubSpot,
    and Slack. Each can hold more than one connected account, with a
    user-assignable nickname (alias) and a designated primary account.
  • New shared layer (craftos_integrations/accounts.py) handles listing,
    resolving (by exact identity, alias, or unique substring), aliasing,
    and promoting/demoting primary — built once, reused by all 10
    integrations rather than reimplemented per-service.
  • Fixes the root OAuth bug: "Add account" was silently re-authenticating
    the same account instead of prompting a chooser (missing
    select_account/prompt=login params). Fixed per-provider.
  • Aliases are shared across the Google family for the same underlying
    account — set a nickname once on Gmail and it applies to Calendar,
    Drive, Docs, and YouTube automatically. Existing per-service aliases
    migrate transparently.
  • ~290 agent actions across all 10 integrations accept an optional
    account parameter, defaulting to the primary account when omitted.
    Includes closing a gap found during testing: LinkedIn's 10 social/write
    actions (create_linkedin_post, likes, comments, DMs, follow) used a
    different dispatch path that never accepted account — now fixed and
    verified (intercepted the real HTTP call to confirm the correct
    account's token is used).
  • The Manage modal now stages account edits (alias, primary, disconnect)
    locally; nothing is written until "Save changes" is clicked, or
    discarded on modal close. "Add account" is the one exception — it's a
    real external OAuth grant and applies immediately.
  • Strengthened the routing/system prompts (agent_core/core/prompts/action.py,
    AGENT.md, all 10 integrations' INTEGRATION.md) to explicitly direct
    the agent to extract account qualifiers from natural language ("my
    school calendar") rather than silently defaulting to primary.
  • Fixed a keyword-matching bug in the just-in-time prompt injection
    (_integration_essentials.py): bare words like "calendar"/"docs"/
    "drive"/"youtube" never matched anything (only the full "google X"
    form did), so the per-integration guidance never reached the model
    for the most natural phrasing.

Test plan

  • New unit tests: tests/test_accounts_generic.py (integration-agnostic
    layer, tested against a synthetic credential shape) and
    tests/test_google_multi_account.py (Google-specific behavior,
    legacy alias migration)
  • Full backend suite passes (109/109 relevant tests; 4 pre-existing
    unrelated failures untouched)
  • Frontend type-checks with zero new TypeScript errors
  • Manually verified end-to-end against real connected Google accounts:
    write actions (Gmail draft, Google Doc) correctly scoped to the
    targeted account by alias, with real Google 404/403 responses
    confirming true cross-account isolation
  • LinkedIn account-routing fix verified by intercepting the HTTP call
    and confirming the correct account's bearer token was used
  • Keyword-matching fix verified: "what's on my school calendar" now
    correctly triggers Calendar-specific guidance (didn't before);
    confirmed "lark calendar" still resolves correctly alongside it
  • Manual verification of Outlook/LinkedIn/Notion/HubSpot/Slack against
    real accounts (only simulated/seeded credentials tested for these)
  • Live conversational test to confirm the LLM reliably extracts
    account qualifiers from natural language per the strengthened
    prompts — the code/prompt delivery side is verified, but actual
    model compliance can only be confirmed by using it

closes issue #368

@AlanAAG
AlanAAG requested a review from korivi-CraftOS July 7, 2026 02:31
* feature/chat questionaire

* bug fixes and corrections

* fix: harden clarifying-questions flow per PR #377 review

- Error instead of parking 3h when no UI can answer (CLI mode / no
  clients), via new InterfaceAdapter.can_prompt_user()
- Drop duplicate submits from stale tabs (atomic first-submission-wins
  in storage) and broadcast resolution to all clients
- QuestionStepper: structured per-question drafts (comma values no longer
  corrupt on back-nav), selected-choice highlight, Dismiss button, Esc in
  free-text clears instead of declining
- Resume text falls back to storage after restart (no more raw "q1" ids)
- Dedupe question serializers into ChatMessageQuestion to_dict/from_dict
- Extract WAIT_FOR_REPLY_PARK_DELAY_SECONDS (imported inside action bodies - executor exec()s function source only)

---------

Co-authored-by: ahmad-ajmal <ahmadajmal1514@gmail.com>
@zfoong

zfoong commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

@AlanAAG You can remove Outlook for verification.

@CraftOS-dev
CraftOS-dev requested a review from ahmad-ajmal July 21, 2026 04:10
@zfoong

zfoong commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

Scope for V1.4.2. Need a complete port to a newer version. Too complex for rebase and migration.

@zfoong zfoong closed this Aug 21, 2026
ahmad-ajmal added a commit that referenced this pull request Aug 24, 2026
* feat(integrations): multi-account support with aliases and per-account listeners

Rebuilt the integration layer as a host-agnostic package (supersedes
PR #370; design: docs/plans/multi-account-v2-plan.md). The 10 major
integrations now hold a primary account plus any number of additional
accounts with nicknames (shared across the Google family).

- AccountSet document store: atomic writes, deterministic account
  resolution, one-time migration of existing credential files
- 10 providers / 397 operations; @action wrappers are generated, with
  the account param injected centrally so no action can bypass it
- OAuth account choosers fixed (Google/Outlook select_account)
- Manage-accounts modal with staged edits and add-account OAuth
- Gmail/Outlook/Slack listeners run per account, triggers account-tagged
- Router extracts account qualifiers ("my job email") and sees live
  account lists just-in-time

516 tests passing, tsc clean. closes #368

* integrations: multi-account for all 23 platforms via auth-layer bridge

Legacy platforms get thin v2 providers (identity + login + bound client +
listener); their existing actions stay and become account-aware centrally
(contextvar hint + run_client routing + schema injection into 676 actions).
whatsapp_web moves from a singleton Node bridge to per-identity bridges
with QR sessions and a max_accounts cap; telegram_user logs in via
two-phase phone->code(+2FA) token connect.

Also fixes: fcntl broke the v2 system on Windows (msvcrt locking);
list/info/metrics read legacy cred files so v2 connects showed
disconnected; notion token connects could silently overwrite the first
account. Adds manage_integration_account agent action and Living UI
account param. 609 tests green.

* Integrations Fix + media recieve

* fix(integrations): resolve tester-reported failures across Jira, disconnect, Lark, WhatsApp, and notifications

* fix(integrations): gmail forwards carry the original body, whatsapp replies route to the receiving account, discord multi-server sends land once in the right channel

* feat(whatsapp): desktop-parity session durability — per-account session actor with supervised reconnect/heartbeat, bridge.js generation rewrite (no synthetic ready, PID-exact kills), LinkFlow QR with idempotent completion, legacy single-account path removed

* fix(whatsapp): adopt the live bridge at link instead of restart-from-disk (torn LocalAuth), park never-connected sessions as needs-relink, resolve account="primary"

* feat(whatsapp): migrate bridge from whatsapp-web.js/Chromium to Baileys — protocol-native WebSocket, plain-file sessions, ~50MB/account, legacy system fully removed (existing accounts re-link once via QR)

* install whatsapp bridge

* update multiaccount integration setting UI

* use SVGL for integration logo

* fix: env install for transformers

---------

Co-authored-by: CraftBot <craftbot@craftbot.dev>
ahmad-ajmal added a commit that referenced this pull request Aug 28, 2026
* Changed AI enhance reasoning to stick to the chosen language unless stated so.

* If the input is empty, stop enhancing and reset to false state.

* Updated chat.tsx as i committed the wrong version.

* Fix issue #416

* Added loading spinner to + button for visual communication.

* Disabled send and dictate button, added 'no entry' thing when hovering on dictate.

* splash page loading animation

* Added 30s timeout - needs testing?

* make chat input disabled

* Remove outdated sections in living UI setting page

* introduce graph into the memory system

* fix coloring issue on nodes

* remove pending visualization

* Update graph UI and update relevent memories preview logic

* entity in memory graph are stored and retrieved as embedding

* Advertisement Widget

Advertisement widget for CraftBot dashboard

* Update memory setting page and added configurable memory processing condition

* improve welcome widget

* minor update to the token usage widget

* Code clean up and refactor

* refactor memory system and consolidate magic numbers into a file

* fix entities and connection pipeline

* bug:invoking skill and command cause new chat session to stuck

* Added new guide tour with driver js

* update guide text

* Added more providers and provider refactor

* fix: merge reset-agent chat options and refresh the session list

* feat: agent questions with suggested responses (pinned question box)

* bug:fix run shell mangle issue on windows

* Fix message disappearing issue

* fix event stream summarization failed and chat session UI scrolling issue

* bug:fix reset agent require refresh to take effect

* fix: unify Living UI dev/live lifecycle to stop live pb_data wipes (#427)

* fix: unify Living UI dev/live lifecycle to stop live pb_data wipes

* feat: scheduled + pre-promote backups of Living UI live data

* change delete orphan living UI project to log only

* set living UI launch by default and optimize launch time

* fix: naming fix + backup on reset agent

* fix: restore UI + restore from leftover backups

---------

Co-authored-by: CraftBot <craftbot@craftbot.dev>

* fix and improve reset agent feature from merge

* bug:schedule task list action parameter bug

* update intsaller check in run script

* fix multiple file indexing issue

* Feature/multiaccount integrations (#419)

* feat(integrations): multi-account support with aliases and per-account listeners

Rebuilt the integration layer as a host-agnostic package (supersedes
PR #370; design: docs/plans/multi-account-v2-plan.md). The 10 major
integrations now hold a primary account plus any number of additional
accounts with nicknames (shared across the Google family).

- AccountSet document store: atomic writes, deterministic account
  resolution, one-time migration of existing credential files
- 10 providers / 397 operations; @action wrappers are generated, with
  the account param injected centrally so no action can bypass it
- OAuth account choosers fixed (Google/Outlook select_account)
- Manage-accounts modal with staged edits and add-account OAuth
- Gmail/Outlook/Slack listeners run per account, triggers account-tagged
- Router extracts account qualifiers ("my job email") and sees live
  account lists just-in-time

516 tests passing, tsc clean. closes #368

* integrations: multi-account for all 23 platforms via auth-layer bridge

Legacy platforms get thin v2 providers (identity + login + bound client +
listener); their existing actions stay and become account-aware centrally
(contextvar hint + run_client routing + schema injection into 676 actions).
whatsapp_web moves from a singleton Node bridge to per-identity bridges
with QR sessions and a max_accounts cap; telegram_user logs in via
two-phase phone->code(+2FA) token connect.

Also fixes: fcntl broke the v2 system on Windows (msvcrt locking);
list/info/metrics read legacy cred files so v2 connects showed
disconnected; notion token connects could silently overwrite the first
account. Adds manage_integration_account agent action and Living UI
account param. 609 tests green.

* Integrations Fix + media recieve

* fix(integrations): resolve tester-reported failures across Jira, disconnect, Lark, WhatsApp, and notifications

* fix(integrations): gmail forwards carry the original body, whatsapp replies route to the receiving account, discord multi-server sends land once in the right channel

* feat(whatsapp): desktop-parity session durability — per-account session actor with supervised reconnect/heartbeat, bridge.js generation rewrite (no synthetic ready, PID-exact kills), LinkFlow QR with idempotent completion, legacy single-account path removed

* fix(whatsapp): adopt the live bridge at link instead of restart-from-disk (torn LocalAuth), park never-connected sessions as needs-relink, resolve account="primary"

* feat(whatsapp): migrate bridge from whatsapp-web.js/Chromium to Baileys — protocol-native WebSocket, plain-file sessions, ~50MB/account, legacy system fully removed (existing accounts re-link once via QR)

* install whatsapp bridge

* update multiaccount integration setting UI

* use SVGL for integration logo

* fix: env install for transformers

---------

Co-authored-by: CraftBot <craftbot@craftbot.dev>

* fix: import external apps

* Document + version fix

* memory entity connection processed by deterministic pipeline for now

* Add guided tour for memory panel

* Update multiple options UI

* fix: update node install

* fix: normalise python

* fix: windows dll issue

* feat: scoped walk-verify - the verifier decides what to re-test

* feat: make Living UI marketplace branch configurable

* refactor: Cleanup legacy integrations code

* hard onboarding step upgrad

* Overwrite ENTITIES.md with clean data

* Fix local LLM provider dropdown, server url input, and test connection issue

* Fix question UI and updated AGENT.md to fit the latest update

* Give agent more context of living UI, memory and integration

* fix provider issue with openai and gemini

* fix: version name + event stream summarization

* fix: tunnel fix for pocketbase

* fix: marketplace name normalization

* fix: delete dead file

* fix: cleanup dead file references

---------

Co-authored-by: RooberSmoth <96537304+RooberSmoth@users.noreply.github.com>
Co-authored-by: CraftBot <craftbot@craftbot.dev>
Co-authored-by: イツミネ <tham_yikfoong@outlook.com>
Co-authored-by: Aima <aimaajmal91203@gmail.com>
Co-authored-by: false200 <214800619+false200@users.noreply.github.com>
Co-authored-by: CraftOS <thamyikfoong@craftos.net>
@ahmad-ajmal ahmad-ajmal mentioned this pull request Aug 28, 2026
ahmad-ajmal added a commit that referenced this pull request Aug 28, 2026
* V1.4.2 (#432)

* Changed AI enhance reasoning to stick to the chosen language unless stated so.

* If the input is empty, stop enhancing and reset to false state.

* Updated chat.tsx as i committed the wrong version.

* Fix issue #416

* Added loading spinner to + button for visual communication.

* Disabled send and dictate button, added 'no entry' thing when hovering on dictate.

* splash page loading animation

* Added 30s timeout - needs testing?

* make chat input disabled

* Remove outdated sections in living UI setting page

* introduce graph into the memory system

* fix coloring issue on nodes

* remove pending visualization

* Update graph UI and update relevent memories preview logic

* entity in memory graph are stored and retrieved as embedding

* Advertisement Widget

Advertisement widget for CraftBot dashboard

* Update memory setting page and added configurable memory processing condition

* improve welcome widget

* minor update to the token usage widget

* Code clean up and refactor

* refactor memory system and consolidate magic numbers into a file

* fix entities and connection pipeline

* bug:invoking skill and command cause new chat session to stuck

* Added new guide tour with driver js

* update guide text

* Added more providers and provider refactor

* fix: merge reset-agent chat options and refresh the session list

* feat: agent questions with suggested responses (pinned question box)

* bug:fix run shell mangle issue on windows

* Fix message disappearing issue

* fix event stream summarization failed and chat session UI scrolling issue

* bug:fix reset agent require refresh to take effect

* fix: unify Living UI dev/live lifecycle to stop live pb_data wipes (#427)

* fix: unify Living UI dev/live lifecycle to stop live pb_data wipes

* feat: scheduled + pre-promote backups of Living UI live data

* change delete orphan living UI project to log only

* set living UI launch by default and optimize launch time

* fix: naming fix + backup on reset agent

* fix: restore UI + restore from leftover backups

---------

Co-authored-by: CraftBot <craftbot@craftbot.dev>

* fix and improve reset agent feature from merge

* bug:schedule task list action parameter bug

* update intsaller check in run script

* fix multiple file indexing issue

* Feature/multiaccount integrations (#419)

* feat(integrations): multi-account support with aliases and per-account listeners

Rebuilt the integration layer as a host-agnostic package (supersedes
PR #370; design: docs/plans/multi-account-v2-plan.md). The 10 major
integrations now hold a primary account plus any number of additional
accounts with nicknames (shared across the Google family).

- AccountSet document store: atomic writes, deterministic account
  resolution, one-time migration of existing credential files
- 10 providers / 397 operations; @action wrappers are generated, with
  the account param injected centrally so no action can bypass it
- OAuth account choosers fixed (Google/Outlook select_account)
- Manage-accounts modal with staged edits and add-account OAuth
- Gmail/Outlook/Slack listeners run per account, triggers account-tagged
- Router extracts account qualifiers ("my job email") and sees live
  account lists just-in-time

516 tests passing, tsc clean. closes #368

* integrations: multi-account for all 23 platforms via auth-layer bridge

Legacy platforms get thin v2 providers (identity + login + bound client +
listener); their existing actions stay and become account-aware centrally
(contextvar hint + run_client routing + schema injection into 676 actions).
whatsapp_web moves from a singleton Node bridge to per-identity bridges
with QR sessions and a max_accounts cap; telegram_user logs in via
two-phase phone->code(+2FA) token connect.

Also fixes: fcntl broke the v2 system on Windows (msvcrt locking);
list/info/metrics read legacy cred files so v2 connects showed
disconnected; notion token connects could silently overwrite the first
account. Adds manage_integration_account agent action and Living UI
account param. 609 tests green.

* Integrations Fix + media recieve

* fix(integrations): resolve tester-reported failures across Jira, disconnect, Lark, WhatsApp, and notifications

* fix(integrations): gmail forwards carry the original body, whatsapp replies route to the receiving account, discord multi-server sends land once in the right channel

* feat(whatsapp): desktop-parity session durability — per-account session actor with supervised reconnect/heartbeat, bridge.js generation rewrite (no synthetic ready, PID-exact kills), LinkFlow QR with idempotent completion, legacy single-account path removed

* fix(whatsapp): adopt the live bridge at link instead of restart-from-disk (torn LocalAuth), park never-connected sessions as needs-relink, resolve account="primary"

* feat(whatsapp): migrate bridge from whatsapp-web.js/Chromium to Baileys — protocol-native WebSocket, plain-file sessions, ~50MB/account, legacy system fully removed (existing accounts re-link once via QR)

* install whatsapp bridge

* update multiaccount integration setting UI

* use SVGL for integration logo

* fix: env install for transformers

---------

Co-authored-by: CraftBot <craftbot@craftbot.dev>

* fix: import external apps

* Document + version fix

* memory entity connection processed by deterministic pipeline for now

* Add guided tour for memory panel

* Update multiple options UI

* fix: update node install

* fix: normalise python

* fix: windows dll issue

* feat: scoped walk-verify - the verifier decides what to re-test

* feat: make Living UI marketplace branch configurable

* refactor: Cleanup legacy integrations code

* hard onboarding step upgrad

* Overwrite ENTITIES.md with clean data

* Fix local LLM provider dropdown, server url input, and test connection issue

* Fix question UI and updated AGENT.md to fit the latest update

* Give agent more context of living UI, memory and integration

* fix provider issue with openai and gemini

* fix: version name + event stream summarization

* fix: tunnel fix for pocketbase

* fix: marketplace name normalization

* fix: delete dead file

* fix: cleanup dead file references

---------

Co-authored-by: RooberSmoth <96537304+RooberSmoth@users.noreply.github.com>
Co-authored-by: CraftBot <craftbot@craftbot.dev>
Co-authored-by: イツミネ <tham_yikfoong@outlook.com>
Co-authored-by: Aima <aimaajmal91203@gmail.com>
Co-authored-by: false200 <214800619+false200@users.noreply.github.com>
Co-authored-by: CraftOS <thamyikfoong@craftos.net>

* fix: lint + formatting

* fix: formatter

---------

Co-authored-by: RooberSmoth <96537304+RooberSmoth@users.noreply.github.com>
Co-authored-by: CraftBot <craftbot@craftbot.dev>
Co-authored-by: イツミネ <tham_yikfoong@outlook.com>
Co-authored-by: Aima <aimaajmal91203@gmail.com>
Co-authored-by: false200 <214800619+false200@users.noreply.github.com>
Co-authored-by: CraftOS <thamyikfoong@craftos.net>
@ahmad-ajmal ahmad-ajmal mentioned this pull request Aug 28, 2026
zfoong added a commit that referenced this pull request Aug 29, 2026
* Changed AI enhance reasoning to stick to the chosen language unless stated so.

* If the input is empty, stop enhancing and reset to false state.

* Updated chat.tsx as i committed the wrong version.

* Fix issue #416

* Added loading spinner to + button for visual communication.

* Disabled send and dictate button, added 'no entry' thing when hovering on dictate.

* splash page loading animation

* Added 30s timeout - needs testing?

* make chat input disabled

* Remove outdated sections in living UI setting page

* introduce graph into the memory system

* fix coloring issue on nodes

* remove pending visualization

* Update graph UI and update relevent memories preview logic

* entity in memory graph are stored and retrieved as embedding

* Advertisement Widget

Advertisement widget for CraftBot dashboard

* Update memory setting page and added configurable memory processing condition

* improve welcome widget

* minor update to the token usage widget

* Code clean up and refactor

* refactor memory system and consolidate magic numbers into a file

* fix entities and connection pipeline

* bug:invoking skill and command cause new chat session to stuck

* Added new guide tour with driver js

* update guide text

* Added more providers and provider refactor

* fix: merge reset-agent chat options and refresh the session list

* feat: agent questions with suggested responses (pinned question box)

* bug:fix run shell mangle issue on windows

* Fix message disappearing issue

* fix event stream summarization failed and chat session UI scrolling issue

* bug:fix reset agent require refresh to take effect

* fix: unify Living UI dev/live lifecycle to stop live pb_data wipes (#427)

* fix: unify Living UI dev/live lifecycle to stop live pb_data wipes

* feat: scheduled + pre-promote backups of Living UI live data

* change delete orphan living UI project to log only

* set living UI launch by default and optimize launch time

* fix: naming fix + backup on reset agent

* fix: restore UI + restore from leftover backups

---------

Co-authored-by: CraftBot <craftbot@craftbot.dev>

* fix and improve reset agent feature from merge

* bug:schedule task list action parameter bug

* update intsaller check in run script

* fix multiple file indexing issue

* Feature/multiaccount integrations (#419)

* feat(integrations): multi-account support with aliases and per-account listeners

Rebuilt the integration layer as a host-agnostic package (supersedes
PR #370; design: docs/plans/multi-account-v2-plan.md). The 10 major
integrations now hold a primary account plus any number of additional
accounts with nicknames (shared across the Google family).

- AccountSet document store: atomic writes, deterministic account
  resolution, one-time migration of existing credential files
- 10 providers / 397 operations; @action wrappers are generated, with
  the account param injected centrally so no action can bypass it
- OAuth account choosers fixed (Google/Outlook select_account)
- Manage-accounts modal with staged edits and add-account OAuth
- Gmail/Outlook/Slack listeners run per account, triggers account-tagged
- Router extracts account qualifiers ("my job email") and sees live
  account lists just-in-time

516 tests passing, tsc clean. closes #368

* integrations: multi-account for all 23 platforms via auth-layer bridge

Legacy platforms get thin v2 providers (identity + login + bound client +
listener); their existing actions stay and become account-aware centrally
(contextvar hint + run_client routing + schema injection into 676 actions).
whatsapp_web moves from a singleton Node bridge to per-identity bridges
with QR sessions and a max_accounts cap; telegram_user logs in via
two-phase phone->code(+2FA) token connect.

Also fixes: fcntl broke the v2 system on Windows (msvcrt locking);
list/info/metrics read legacy cred files so v2 connects showed
disconnected; notion token connects could silently overwrite the first
account. Adds manage_integration_account agent action and Living UI
account param. 609 tests green.

* Integrations Fix + media recieve

* fix(integrations): resolve tester-reported failures across Jira, disconnect, Lark, WhatsApp, and notifications

* fix(integrations): gmail forwards carry the original body, whatsapp replies route to the receiving account, discord multi-server sends land once in the right channel

* feat(whatsapp): desktop-parity session durability — per-account session actor with supervised reconnect/heartbeat, bridge.js generation rewrite (no synthetic ready, PID-exact kills), LinkFlow QR with idempotent completion, legacy single-account path removed

* fix(whatsapp): adopt the live bridge at link instead of restart-from-disk (torn LocalAuth), park never-connected sessions as needs-relink, resolve account="primary"

* feat(whatsapp): migrate bridge from whatsapp-web.js/Chromium to Baileys — protocol-native WebSocket, plain-file sessions, ~50MB/account, legacy system fully removed (existing accounts re-link once via QR)

* install whatsapp bridge

* update multiaccount integration setting UI

* use SVGL for integration logo

* fix: env install for transformers

---------

Co-authored-by: CraftBot <craftbot@craftbot.dev>

* fix: import external apps

* Document + version fix

* memory entity connection processed by deterministic pipeline for now

* Add guided tour for memory panel

* Update multiple options UI

* fix: update node install

* fix: normalise python

* fix: windows dll issue

* feat: scoped walk-verify - the verifier decides what to re-test

* feat: make Living UI marketplace branch configurable

* refactor: Cleanup legacy integrations code

* hard onboarding step upgrad

* Overwrite ENTITIES.md with clean data

* Fix local LLM provider dropdown, server url input, and test connection issue

* Fix question UI and updated AGENT.md to fit the latest update

* Give agent more context of living UI, memory and integration

* fix provider issue with openai and gemini

* fix: version name + event stream summarization

* fix: tunnel fix for pocketbase

* fix: marketplace name normalization

* fix: delete dead file

* fix: cleanup dead file references

---------

Co-authored-by: RooberSmoth <96537304+RooberSmoth@users.noreply.github.com>
Co-authored-by: CraftBot <craftbot@craftbot.dev>
Co-authored-by: イツミネ <tham_yikfoong@outlook.com>
Co-authored-by: Aima <aimaajmal91203@gmail.com>
Co-authored-by: false200 <214800619+false200@users.noreply.github.com>
Co-authored-by: CraftOS <thamyikfoong@craftos.net>
@zfoong
zfoong deleted the feature/multi-account-integrations branch August 29, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants