Feat: LLM Chat #155

Merged
zach merged 67 commits from feat/llm-chat-tab into main 2026-10-18 17:05:05 +02:00
Owner

What & why

New chat interface in sidebar

The sidebar now has two tabs, notifications and chat. The chat is a frontend for whatever endpoint API the user sets in Config.llm.endpoint. Currently hardcoded-ish for llama.cpp endpoints but will generalize.

Tools

The chat has these tools defined:

  • WebFetch - Fetches a website's contents
  • Readfile - Reads a file from disk
  • Shell commands - Sandboxed shell usage with readonly view of actual filesystem

Related issue

No response

Type

New feature

Tested

  • Build succeeds
  • Existing tests pass
  • Manually verified

Breaking changes?

No response

Checklist

  • CI passes (format, lint, typecheck)
  • Clean commits
  • No new warnings
  • Docs updated if needed
### What & why ## New chat interface in sidebar The sidebar now has two tabs, notifications and chat. The chat is a frontend for whatever endpoint API the user sets in `Config.llm.endpoint`. Currently hardcoded-ish for `llama.cpp` endpoints but will generalize. ### Tools The chat has these tools defined: - WebFetch - Fetches a website's contents - Readfile - Reads a file from disk - Shell commands - Sandboxed shell usage with readonly view of actual filesystem ### Related issue _No response_ ### Type New feature ### Tested - [x] Build succeeds - [ ] Existing tests pass - [x] Manually verified ### Breaking changes? _No response_ ### Checklist - [ ] CI passes (format, lint, typecheck) - [x] Clean commits - [ ] No new warnings - [x] Docs updated if needed
zach added 9 commits 2026-08-31 18:57:52 +02:00
Collaborator

AI concern

My main concern would be if the chat window is an opt-in setting. I would personally think many users are not waiting for an llm integration into a quickshell project; I know I am not.

Will this be an opt-in feature? Meaning that the user would need to go into settings or the config file to enable the front-end to even show the chat window.

Build failure

It seems build is failing due to missing libcmark-gfm. I'm not sure what package this is as in artix repo + arch extra and multilib as I can't find it. I cannot find it in https://archlinux.org/packages or https://aur.archlinux.org either.

### AI concern My main concern would be if the chat window is an opt-in setting. I would personally think many users are not waiting for an llm integration into a quickshell project; I know I am not. Will this be an opt-in feature? Meaning that the user would need to go into settings or the config file to enable the front-end to even show the chat window. ### Build failure It seems build is failing due to missing `libcmark-gfm`. I'm not sure what package this is as in artix repo + arch extra and multilib as I can't find it. I cannot find it in https://archlinux.org/packages or https://aur.archlinux.org either.
Author
Owner

There will be a config option to disable it, like everything else. It'll most likely be enabled by default though so that users can see that it exists without going deep into settings and stumble upon it.

I would personally think many users are not waiting for an llm integration into a quickshell project; I know I am not.

I disagree with that statement wholeheartedly, I don't think that LLM integration and Quickshell projects are mutually exclusive, in fact there's already multiple Quickshell configs that implement an LLM chat interface.

The package is just called cmark.

There will be a config option to disable it, like everything else. It'll most likely be enabled by default though so that users can see that it exists without going deep into settings and stumble upon it. >I would personally think many users are not waiting for an llm integration into a quickshell project; I know I am not. I disagree with that statement wholeheartedly, I don't think that LLM integration and Quickshell projects are mutually exclusive, in fact there's already multiple Quickshell configs that implement an LLM chat interface. The package is just called `cmark`.
Collaborator

I meant to say opt-out, not opt-in. I'd prefer opt-in personally.

I mean to say that a general user using a desktop environment or a desktop like shell would unlikely want llm chat integration. There are no statistics I have found of this, but reading people leaving windows generally do not like AI. Granted; Microsoft shoves Copilot everywhere in Windows.

It's up to you. I'm okay with it so long it can be hidden completely (apart from the setting to be able to toggle it to enable the feature). Since it is a config option, all good for me.

I meant to say opt-out, not opt-in. I'd prefer opt-in personally. I mean to say that a general user using a desktop environment or a desktop like shell would unlikely want llm chat integration. There are no statistics I have found of this, but reading people leaving windows generally do not like AI. Granted; Microsoft shoves Copilot everywhere in Windows. It's up to you. I'm okay with it so long it can be hidden completely (apart from the setting to be able to toggle it to enable the feature). Since it is a config option, all good for me.
AramJonghu force-pushed feat/llm-chat-tab from 24593472e3 to c9f7856982 2026-08-31 22:48:06 +02:00 Compare
Collaborator

c9f7856982 fixes the missing dependencies in the Dockerfile. Issue is that the build still fails, maybe related to ci/CMakeLists mismatch with new dependencies.

[c9f7856982](https://git.zach-dev.cc/zach/z-bar-qt/commit/c9f7856982d970955ac87db29098ac6eb929f81d) fixes the missing dependencies in the Dockerfile. Issue is that the build still fails, maybe related to ci/CMakeLists mismatch with new dependencies.
Collaborator

I have stopped the runner service temporarily. Some change in workflows or resources on the server is causing issues.

I have stopped the runner service temporarily. Some change in workflows or resources on the server is causing issues.
zach force-pushed feat/llm-chat-tab from dfecaf9cbc to fcb848b6d2 2026-09-03 22:48:30 +02:00 Compare
zach added 29 commits 2026-09-30 15:13:53 +02:00
separate dashboard and settings changes to new branch
C++ / fmt (pull_request) Successful in 6s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 11s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 49s
Python / verify (pull_request) Successful in 1m40s
Rust / fmt (pull_request) Successful in 26s
Rust / clippy (pull_request) Successful in 46s
4f797a9741
zach force-pushed feat/llm-chat-tab from 34d4c6a57a to 4f797a9741 2026-09-30 15:13:53 +02:00 Compare
zach changed title from Feat: LLM Chat and Nightlight shader to Feat: LLM Chat 2026-09-30 15:23:57 +02:00
zach added 1 commit 2026-09-30 17:59:19 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 3s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 9s
JS/TS / lint (pull_request) Successful in 10s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 49s
Python / verify (pull_request) Successful in 1m40s
Rust / fmt (pull_request) Successful in 27s
Rust / clippy (pull_request) Successful in 46s
63b96471b0
zach added 2 commits 2026-09-30 18:41:20 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 6s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 29s
Rust / build (pull_request) Successful in 47s
Rust / fmt (pull_request) Successful in 30s
Python / verify (pull_request) Successful in 1m43s
Rust / clippy (pull_request) Successful in 46s
54f966b4ea
zach added 1 commit 2026-09-30 19:30:10 +02:00
fix: restore lost changes
C++ / fmt (pull_request) Failing after 3s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 25s
Rust / build (pull_request) Successful in 50s
Rust / fmt (pull_request) Successful in 30s
Python / verify (pull_request) Successful in 1m44s
Rust / clippy (pull_request) Successful in 45s
e8bf8b9727
zach added 1 commit 2026-09-30 23:33:45 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 24s
C++ / clang-tidy (pull_request) Failing after 18s
JS/TS / fmt (pull_request) Successful in 9s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 27s
Rust / build (pull_request) Successful in 52s
Rust / fmt (pull_request) Successful in 29s
Python / verify (pull_request) Successful in 1m44s
Rust / clippy (pull_request) Successful in 45s
c64088441b
zach added 1 commit 2026-10-01 17:11:31 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 8s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 32s
Rust / build (pull_request) Successful in 51s
Rust / fmt (pull_request) Successful in 29s
Python / verify (pull_request) Successful in 1m55s
Rust / clippy (pull_request) Successful in 45s
4b67cc1d88
zach added 1 commit 2026-10-02 19:54:46 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 9s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 30s
Rust / build (pull_request) Successful in 48s
Python / verify (pull_request) Successful in 1m37s
Rust / fmt (pull_request) Successful in 26s
Rust / clippy (pull_request) Successful in 47s
add3beed59
zach added 1 commit 2026-10-03 20:26:22 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 16s
JS/TS / lint (pull_request) Successful in 10s
Python / static (pull_request) Successful in 35s
Rust / build (pull_request) Successful in 50s
Python / verify (pull_request) Successful in 1m39s
Rust / fmt (pull_request) Successful in 29s
Rust / clippy (pull_request) Successful in 51s
506b69165d
zach added 1 commit 2026-10-04 13:54:06 +02:00
fix: merge two strokecanvas into one + better cursorShape and pointer handling
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 8s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 47s
Python / verify (pull_request) Successful in 1m34s
Rust / fmt (pull_request) Successful in 35s
Rust / clippy (pull_request) Successful in 1m0s
f1918172c3
zach added 1 commit 2026-10-04 13:56:09 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 12s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 8s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 26s
Rust / build (pull_request) Successful in 48s
Rust / fmt (pull_request) Successful in 29s
Python / verify (pull_request) Successful in 1m40s
Rust / clippy (pull_request) Successful in 44s
e148a0f843
zach added 1 commit 2026-10-04 18:20:24 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 4s
C++ / clang-tidy (pull_request) Failing after 10s
C++ / build (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 9s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 35s
Rust / build (pull_request) Successful in 50s
Python / verify (pull_request) Successful in 1m40s
Rust / fmt (pull_request) Successful in 28s
Rust / clippy (pull_request) Successful in 51s
99fdfbc465
zach added 1 commit 2026-10-05 09:58:02 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 11s
Python / static (pull_request) Successful in 30s
Rust / build (pull_request) Successful in 49s
Python / verify (pull_request) Successful in 1m30s
Rust / fmt (pull_request) Successful in 30s
Rust / clippy (pull_request) Successful in 48s
b91befa9f7
zach added 1 commit 2026-10-05 19:34:08 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 47s
Python / verify (pull_request) Successful in 1m40s
Rust / fmt (pull_request) Successful in 29s
Rust / clippy (pull_request) Successful in 46s
11e94fbb4b
zach added 1 commit 2026-10-06 00:55:55 +02:00
add rounding var
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 8s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 48s
Python / verify (pull_request) Successful in 1m43s
Rust / fmt (pull_request) Successful in 25s
Rust / clippy (pull_request) Successful in 46s
a00bbe50f2
zach added 1 commit 2026-10-06 13:33:45 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 8s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 30s
Rust / build (pull_request) Successful in 48s
Python / verify (pull_request) Successful in 1m40s
Rust / fmt (pull_request) Successful in 25s
Rust / clippy (pull_request) Successful in 43s
c06cbea854
zach added 1 commit 2026-10-07 13:32:50 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 29s
C++ / build (pull_request) Failing after 33s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 11s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 51s
Python / verify (pull_request) Successful in 1m36s
Rust / fmt (pull_request) Successful in 43s
Rust / clippy (pull_request) Successful in 1m4s
76823eff79
zach added 1 commit 2026-10-07 13:33:58 +02:00
revert rounding var
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 18s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 8s
JS/TS / lint (pull_request) Successful in 12s
Python / static (pull_request) Successful in 30s
Rust / build (pull_request) Successful in 52s
Python / verify (pull_request) Successful in 1m38s
Rust / fmt (pull_request) Successful in 31s
Rust / clippy (pull_request) Successful in 1m0s
4d75b317cd
zach added 1 commit 2026-10-07 22:37:49 +02:00
fix: qt 6.12 build
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 22s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 54s
Python / verify (pull_request) Successful in 1m41s
Rust / fmt (pull_request) Successful in 28s
Rust / clippy (pull_request) Successful in 53s
a13fa8442b
zach added 1 commit 2026-10-07 22:39:21 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 7s
C++ / build (pull_request) Failing after 21s
C++ / clang-tidy (pull_request) Failing after 12s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 29s
Rust / build (pull_request) Successful in 47s
Python / verify (pull_request) Successful in 1m33s
Rust / fmt (pull_request) Successful in 28s
Rust / clippy (pull_request) Successful in 49s
4c410d638c
zach added 1 commit 2026-10-08 12:08:55 +02:00
gemini glow fixes + positioning for window view
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 50s
Python / verify (pull_request) Successful in 1m38s
Rust / fmt (pull_request) Successful in 27s
Rust / clippy (pull_request) Successful in 53s
d70fb61e4a
zach added 1 commit 2026-10-08 12:10:16 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 7s
C++ / build (pull_request) Failing after 13s
C++ / clang-tidy (pull_request) Failing after 12s
JS/TS / fmt (pull_request) Successful in 9s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 27s
Rust / build (pull_request) Successful in 49s
Rust / fmt (pull_request) Successful in 28s
Python / verify (pull_request) Successful in 1m40s
Rust / clippy (pull_request) Successful in 47s
bf6a7027e4
zach added 1 commit 2026-10-11 08:42:24 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 16s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 14s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 29s
Rust / build (pull_request) Successful in 50s
Python / verify (pull_request) Successful in 1m37s
Rust / fmt (pull_request) Successful in 31s
Rust / clippy (pull_request) Successful in 49s
a4f6aa1d4a
zach added 1 commit 2026-10-12 15:54:54 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 12s
C++ / clang-tidy (pull_request) Failing after 12s
JS/TS / fmt (pull_request) Successful in 8s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 31s
Rust / build (pull_request) Successful in 49s
Python / verify (pull_request) Successful in 1m32s
Rust / fmt (pull_request) Successful in 51s
Rust / clippy (pull_request) Successful in 1m1s
2cabd72fc0
zach added 1 commit 2026-10-12 15:58:34 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 7s
C++ / build (pull_request) Failing after 11s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 48s
Python / verify (pull_request) Successful in 1m39s
Rust / fmt (pull_request) Successful in 28s
Rust / clippy (pull_request) Successful in 46s
bee8cd061b
zach added 1 commit 2026-10-12 16:06:24 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 48s
Python / verify (pull_request) Successful in 1m38s
Rust / fmt (pull_request) Successful in 28s
Rust / clippy (pull_request) Successful in 46s
fc81be922f
zach added 1 commit 2026-10-18 12:58:44 +02:00
chore: restructure llm plugin to be more coherent & fix various bugs in llm ui
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 30s
Rust / build (pull_request) Successful in 49s
Python / verify (pull_request) Successful in 1m35s
Rust / fmt (pull_request) Successful in 36s
Rust / clippy (pull_request) Successful in 54s
1fe8a3a959
zach added 1 commit 2026-10-18 13:03:27 +02:00
fix: remove unimplemented method
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Successful in 27s
Rust / build (pull_request) Successful in 49s
Rust / fmt (pull_request) Successful in 28s
Python / verify (pull_request) Successful in 1m41s
Rust / clippy (pull_request) Successful in 45s
0a503bc27c
zach added 1 commit 2026-10-18 14:43:01 +02:00
Merge branch 'main' into feat/llm-chat-tab
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 20s
C++ / clang-tidy (pull_request) Failing after 12s
JS/TS / fmt (pull_request) Successful in 6s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 28s
Rust / build (pull_request) Successful in 48s
Rust / fmt (pull_request) Successful in 28s
Python / verify (pull_request) Successful in 1m45s
Rust / clippy (pull_request) Successful in 46s
45aa6c9005
zach added 1 commit 2026-10-18 15:23:45 +02:00
chore: formatter & clangd lsp option
C++ / fmt (pull_request) Successful in 5s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 27s
Rust / build (pull_request) Successful in 50s
Python / verify (pull_request) Successful in 1m40s
Rust / fmt (pull_request) Successful in 28s
Rust / clippy (pull_request) Successful in 45s
08d42e1f8a
zach merged commit d3345906b9 into main 2026-10-18 17:05:05 +02:00
zach deleted branch feat/llm-chat-tab 2026-10-18 17:05:06 +02:00
Sign in to join this conversation.