Commit graph

769 commits

Author SHA1 Message Date
pewdiepie-archdaemon
6f10e07ef5 Clarify cookbook conda env support 2026-06-27 22:27:55 +00:00
pewdiepie-archdaemon
b4b3a1e18c Move serve memory fields left again 2026-06-27 22:25:25 +00:00
pewdiepie-archdaemon
1aa3af750f Adjust serve preset and memory field offsets 2026-06-27 22:15:07 +00:00
pewdiepie-archdaemon
20f5fa905d Align runtime note with serve presets 2026-06-27 22:13:20 +00:00
pewdiepie-archdaemon
d33e3fd6f5 Move core serve memory fields further left 2026-06-27 22:11:18 +00:00
pewdiepie-archdaemon
59c2cbe405 Move core serve memory fields farther left 2026-06-27 22:10:15 +00:00
pewdiepie-archdaemon
80b287ee56 Move core serve memory fields left 2026-06-27 22:09:14 +00:00
pewdiepie-archdaemon
97f8b3bcd3 Add icons to cookbook engine filter 2026-06-27 22:01:23 +00:00
pewdiepie-archdaemon
6d31cfcf4c Move vllm block size left again 2026-06-27 21:55:53 +00:00
pewdiepie-archdaemon
91a94cf00a Move vllm block size left 2026-06-27 21:54:18 +00:00
pewdiepie-archdaemon
7d3f8d6527 Move vllm attention farther right 2026-06-27 21:49:35 +00:00
pewdiepie-archdaemon
3abe4f75b7 Lower CPU llama memory row 2026-06-27 21:48:19 +00:00
pewdiepie-archdaemon
60e13cf8db Adjust CPU llama row and VRAM readout 2026-06-27 21:45:04 +00:00
pewdiepie-archdaemon
c288fb9f4a Match launch command hover surface 2026-06-27 21:42:06 +00:00
pewdiepie-archdaemon
d46b08d8c6 Darken cookbook launch command 2026-06-27 21:39:26 +00:00
pewdiepie-archdaemon
4db0feed10 Nudge vllm attention field right 2026-06-27 21:38:34 +00:00
pewdiepie-archdaemon
46e01b49f4 Increase llama mode toggle height 2026-06-27 21:37:11 +00:00
pewdiepie-archdaemon
eb51935074 Lower stabilized llama advanced block 2026-06-27 21:34:37 +00:00
pewdiepie-archdaemon
c0ee638fcc Stabilize llama advanced row spacing 2026-06-27 21:33:13 +00:00
pewdiepie-archdaemon
edf06a8048 Tighten llama memory row gap again 2026-06-27 21:31:00 +00:00
pewdiepie-archdaemon
5bc3a69251 Tighten llama memory row gap 2026-06-27 21:29:19 +00:00
pewdiepie-archdaemon
a193e6b815 Tighten first llama advanced row gap 2026-06-27 21:28:14 +00:00
pewdiepie-archdaemon
7fe55a2942 Fine tune llama advanced spacing 2026-06-27 21:25:37 +00:00
pewdiepie-archdaemon
0c53672ae9 Adjust llama advanced top spacing 2026-06-27 21:23:39 +00:00
pewdiepie-archdaemon
1eebfb862e Lower cookbook serve top row 2026-06-27 21:20:27 +00:00
pewdiepie-archdaemon
0ee2e0069f Tint Ollama engine icon 2026-06-27 21:18:15 +00:00
pewdiepie-archdaemon
c157553fb7 Refine llama advanced row spacing 2026-06-27 21:17:24 +00:00
pewdiepie-archdaemon
cbc5d6c341 Simplify llama MTP token input 2026-06-27 21:14:21 +00:00
pewdiepie-archdaemon
a0f6f27ff7 Nudge llama advanced rows right 2026-06-27 21:13:20 +00:00
pewdiepie-archdaemon
4ced5da463 Tighten llama advanced vertical spacing 2026-06-27 21:12:12 +00:00
pewdiepie-archdaemon
3b7e6bb3fd Nudge vllm attention field 2026-06-27 21:11:18 +00:00
pewdiepie-archdaemon
277879beec Tighten llama advanced rows further 2026-06-27 21:10:38 +00:00
pewdiepie-archdaemon
d45543abaa Tighten llama advanced rows 2026-06-27 21:07:57 +00:00
pewdiepie-archdaemon
448ed1b4e9 Limit cookbook spacing change to advanced tab 2026-06-27 21:05:07 +00:00
pewdiepie-archdaemon
912a4e2ba7 Color cookbook context fit notes 2026-06-27 21:02:10 +00:00
pewdiepie-archdaemon
424ebfa5cb Raise unified llama context estimate 2026-06-27 20:56:57 +00:00
pewdiepie-archdaemon
f177d38c62 Clamp unified llama context estimate 2026-06-27 20:52:31 +00:00
pewdiepie-archdaemon
6d78f6f7f7 Add cookbook empty scan buttons 2026-06-27 20:48:24 +00:00
pewdiepie-archdaemon
e9446f41c0 Register email auto translate task 2026-06-27 20:43:56 +00:00
Arpit
2d194b26b9 fix(notes): allow inline editing of checklist items (#4832)
* Refresh README screenshot

* fix(notes): allow inline editing of checklist items

* fix(notes): delete checklist item if inline edit is empty

* fix(notes): use debounce for text click to bypass toggle on double click

* fix(notes): use Edit button exclusively for inline edit to avoid UX delay on toggle

---------

Co-authored-by: pewdiepie-archdaemon <pewdiepie-archdaemon@users.noreply.github.com>
2026-06-27 17:37:28 +02:00
pewdiepie-archdaemon
1e4d06e6c5 Reduce cookbook startup polling 2026-06-27 13:50:21 +00:00
pewdiepie-archdaemon
4ab68b6566 Polish mobile UI and editor workflows 2026-06-27 13:05:44 +00:00
Rishi Sharma
e1481218e9 feat: add dismiss (×) button to all toast notifications (#1355) (#1755)
* feat: add dismiss (×) button to all toast notifications (#1355)

* Refresh README presentation

* fix: reset pointer-events on toast dismiss button click

Action toasts set pointer-events:auto on #toast for their clickable
button, but the × close-button handler only cleared the auto-hide timer
without resetting pointer-events. This left an invisible fixed overlay
blocking clicks in the top-right area after manual dismissal.

- Add pointerEvents reset in both showToast and showError close handlers
- Add DOM behavior tests for pointer-events across all toast types

---------

Co-authored-by: pewdiepie-archdaemon <pewdiepie-archdaemon@users.noreply.github.com>
2026-06-26 14:02:35 +01:00
Hinode
e86791702b fix: group selection drop-downs recreation and repopulation logic (#3424)
* fix: include in-memory templates in group participant character list

_getCharacterList() only fetched user templates from the /api/presets/templates
endpoint. When a character was just created in the Character tab, the async
auto-save to the templates API might not have completed by the time the Group
tab loaded its participant dropdown — causing newly created characters to be
missing.

Now also merges the in-memory userTemplates array from presets.js as a
fallback. These are updated as soon as the async save completes (via the
loadUserTemplates callback), so they bridge the gap between character creation
and API persistence.

Fixes #3207

* fix: optimistic userTemplates update on character save

Update the in-memory userTemplates array immediately when saveCustomPreset()
succeeds, before the fire-and-forget templates API POST completes. This
bridges the timing gap where _getCharacterList() calls getUserTemplates()
and gets stale data because loadUserTemplates() hasn't been triggered yet.

* test: verify group participant dropdown merges in-memory templates

Source-level guards for the #3207 fix:
- group.js imports and calls getUserTemplates() to merge in-memory templates
- presets.js exports getUserTemplates and does optimistic in-memory update on save

5 tests ensuring the fix can't be silently reverted.

* fix: generate client-side id for optimistic update, return shallow copy from getUserTemplates

1. New characters now get a 'user-<hex>' id immediately on save, matching
   the server's convention (uuid.uuid4().hex[:8]). Previously the id was ''
   which the merge guard in _getCharacterList filtered as falsy.

2. getUserTemplates() now returns [...userTemplates] so callers cannot
   accidentally mutate module state.

* fix(group.js): fix selection drop-downs behavior

- add an identifier to the selection drop-downs
  based on what type it is.
- fix behavior of continuously adding a row
  when a user clicks the "Group" tab button.
- fix behavior of not repopulating existing
  selection drop-downs whenever a user
  clicks the "Group" tab button.

* fix(#3207): remove duplicate of latest persona

- fix the duplication of the latest persona
  or character being shown in selection
  drop-downs.
- remove unnecessary blocks of code in
  `_getCharacterList()`
- add functionality to show error toast if saving
  a preset template/character fails.
- add functionality to revert optimistic update
  of preset template/character if saving fails.

* chore(group.js,preset.js): fix test & format errors

remove trailing whitespaces in lines 230 and 232
in /static/group.js

add back the expected syntax from
tests/test_group_character_dropdown.py

* fix(presets.js,group.js): fix runtime errors

as stated in a comment by @alteixeira20,
runtime errors exist for the applied fixes.

fixes:

- missing ending `]`
  querySelectorAll("select.preset-input[data-selection-type=character")
  in `group.js`
- spelling error in `modelSelection.vale` in `group.js`
- fix the ordering logic error in optimistic rollback where `Object.assign` is called first before the clone happens in `saveCustomPreset` in `presets.js`.
- add tests for the cloning logic bug with the same format as previous tests by checking the order of LOC in `tests/test_group_character_dropdown.py`.

---------

Co-authored-by: michaelxer <michaelxer@users.noreply.github.com>
Co-authored-by: Alexandre Teixeira <111787685+alteixeira20@users.noreply.github.com>
2026-06-26 13:35:25 +01:00
Dividesbyzer0
d5810e220e fix(cookbook): treat local Windows as Windows for serve commands (#3975)
* fix(cookbook): prefer native llama-server on local Windows

* fix(cookbook): harden local llama-server launch commands

* fix(cookbook): build serve commands for selected target
2026-06-26 13:13:01 +01:00
Kenny Van de Maele
39080917ce fix(ui): route tasks.js + skills.js dropdowns through topPortalZ() (#4768)
Fixes #4767. #4724 routed 16 body-portaled dropdowns through the shared
topPortalZ() helper so they always render just above the currently-raised tool
modal, but two were missed and still used a hardcoded z-index, so they hit the
same #4720 bug once a modal's bring-to-front counter climbed past the literal:

  - tasks.js _showTaskDropdown(): inline z-index:100000 on .task-dropdown
  - skills.js kebab menu (.skill-kebab-menu): z-index:100002 in style.css

Both now set zIndex from topPortalZ() after they are appended to the body,
matching the other migrated sites. The dead CSS z-index on .skill-kebab-menu is
removed (the inline value always wins). test_portal_dropdown_z_js.py gains a
source guard asserting both files use topPortalZ() and that no hardcoded
100000/100002 portal literal survives in either file or style.css.
2026-06-24 22:29:36 +02:00
Samy
070360d549 fix(cookbook): only block model launch on real port collisions (#4760)
* Fix #4507: only block model launch on real port collisions

Quick-run hardcoded port 8000 and never called _nextAvailablePort(), so
every launch collided. Both pre-launch guards (serve panel + quick-run)
were count-based and fired regardless of port.

- quick-run now auto-assigns a free port (8080 for llama.cpp)
- both guards parse the new port and only prompt on a real overlap,
  stopping only the colliding serve
- dialog reports the actual port instead of a hardcoded 8000

* refactor(cookbook): share _taskPort for port parsing; auto-assign llama.cpp port

Addresses review on #4760:
- _taskPort regex now matches --port= as well as --port (space)
- _nextAvailablePort and both launch guards reuse _taskPort instead of inline regex
- quick-run llama.cpp no longer pins 8080, so two can run concurrently

* fix(cookbook): _taskPort also parses -p; add port-parsing tests

Addresses review on #4760:
- _taskPort now matches -p <n> too, so it's the complete single reader
  (was missing the short flag that other readers already handle)
- add tests/test_cookbook_port_parsing_js.py covering the port forms,
  shared-reader reuse, and llama.cpp auto-assign

* test(cookbook): extract pure port helpers and test behavior

Addresses review on #4760: the prior tests only asserted source strings.
- extract portOf() and nextFreePort() into static/js/cookbookPorts.js
- cookbookRunning.js imports them; _taskPort and _nextAvailablePort delegate
- tests run the helpers via node and assert real behavior: all port forms
  (--port, --port=, -p, -p=), next-free-port skipping taken ports, and the
  same-port-clash / different-port-coexist outcome

---------

Co-authored-by: samy <samy@odysseus.boukouro.com>
2026-06-24 19:44:09 +02:00
pewdiepie-archdaemon
21d6e62179 Fix calendar recurrence controls 2026-06-24 11:11:07 +00:00
Joel Alejandro Escareño Fernández
d23b501f3c feat(discovery): detect llama.cpp servers and label local providers (#4729)
* feat(discovery): detect llama.cpp servers and label local providers

Scan port 8080 (llama-server) and 11435 (APFEL) during discovery, fingerprint
llama.cpp via its native /props endpoint, and label well-known local serving
ports (8080 llama.cpp, 8000 vLLM, 1234 LM Studio, 11434 Ollama) consistently
in both the Python provider helper and the JS endpoint UI. Adds a llama.cpp
hint to the /setup slash command.

* fix(discovery): don't infer the serving tool from the port alone

Per review: vLLM, SGLang, llama.cpp and plain OpenAI-compatible servers all
share 8000/8080, so labeling by port mislabels real setups (a vLLM box on 8080
shown as llama.cpp). Drop the port->tool assertions from _provider_label and
providerLabel; the authoritative signal is the /props fingerprint done during
discovery, which is unchanged. Loopback now reads a neutral 'local endpoint' /
'Local'. Tests updated to assert the neutral labels.
2026-06-23 23:39:56 +02:00
Jakub Grula
b921e9121a feat: Allow admins to choose if they want to share defaults (#4752)
* First bare fix

* Adding the option toggle

* toggle function fix

* Final fix, added missing /auth/

* Extended toggle text & added tests

* Comments change

* Description toggle change

* br tag fix

* description change based on suggestion
2026-06-23 23:06:45 +02:00