Commit Graph

521 Commits

Author SHA1 Message Date
pewdiepie-archdaemon 5d5500fbb3 Keep open editor drafts in chat context 2026-06-29 03:10:42 +00:00
pewdiepie-archdaemon ff6359ae81 Restore cookbook download task progress 2026-06-29 03:02:58 +00:00
pewdiepie-archdaemon 4a7c03d536 Link gallery uploads back to chat 2026-06-29 02:34:11 +00:00
pewdiepie-archdaemon e2c8b8eb37 Allow stalled chat uploads to be cancelled 2026-06-29 02:06:39 +00:00
pewdiepie-archdaemon b419caf9f7 Show chat uploads in gallery immediately 2026-06-29 01:57:35 +00:00
pewdiepie-archdaemon 402a2771b3 Persist upload OCR captions in gallery 2026-06-29 01:45:05 +00:00
pewdiepie-archdaemon 3b6d771be9 Restore chat thumbnails and gallery OCR captions 2026-06-29 01:19:50 +00:00
pewdiepie-archdaemon 4d90eb3d44 Show overlays during bulk email delete 2026-06-28 23:42:53 +00:00
pewdiepie-archdaemon 240768a7a1 Show email delete overlay before request 2026-06-28 22:41:09 +00:00
pewdiepie-archdaemon 1e78ac999d Show busy spinner while deleting email 2026-06-28 22:19:32 +00:00
pewdiepie-archdaemon 4143bfaa2a Clear stale chat stream indicators 2026-06-28 22:06:20 +00:00
pewdiepie-archdaemon 6b617f9cad Move email writing style into AI settings 2026-06-28 14:27:52 +00:00
pewdiepie-archdaemon 7094c8e285 Merge dev into main for testing 2026-06-28 14:07:23 +00:00
pewdiepie-archdaemon 613a4c059a Close notes when opening documents 2026-06-28 12:58:01 +00:00
pewdiepie-archdaemon 2cf7f24afc Keep PDF annotation controls hoverable 2026-06-28 11:26:45 +00:00
pewdiepie-archdaemon 55661b8925 Fix failed task activity colors 2026-06-28 11:04:26 +00:00
pewdiepie-archdaemon 31dbc6bec6 Fix mobile note archive action 2026-06-28 09:11:59 +00:00
pewdiepie-archdaemon e58d9702b7 Avoid model endpoint probes on boot 2026-06-28 08:07:15 +00:00
pewdiepie-archdaemon ac7cf67ab6 Harden added models endpoint rendering 2026-06-28 05:29:25 +00:00
pewdiepie-archdaemon 3aa48e9025 Persist OCR captions in gallery 2026-06-28 04:50:20 +00:00
pewdiepie-archdaemon a32c3f26ab Adjust vllm preset and offsets 2026-06-27 23:57:44 +00:00
pewdiepie-archdaemon 63c07c2188 Set vllm env preset width 2026-06-27 23:54:46 +00:00
pewdiepie-archdaemon c95bbd6992 Nudge serve engine control up 2026-06-27 23:48:21 +00:00
pewdiepie-archdaemon ded57e5740 Align serve backend controls 2026-06-27 23:42:11 +00:00
pewdiepie-archdaemon a5eea9c093 Toggle manual hardware edit button 2026-06-27 22:35:50 +00:00
pewdiepie-archdaemon f0b3c0bb83 Simplify cookbook scan use cases 2026-06-27 22:30:54 +00:00
pewdiepie-archdaemon 2cf1e13cab Clarify cookbook conda env support 2026-06-27 22:27:55 +00:00
pewdiepie-archdaemon 61cf07eaf1 Align runtime note with serve presets 2026-06-27 22:13:20 +00:00
pewdiepie-archdaemon ef7e5f90ec Add icons to cookbook engine filter 2026-06-27 22:01:23 +00:00
pewdiepie-archdaemon 721261402d Increase llama mode toggle height 2026-06-27 21:37:11 +00:00
pewdiepie-archdaemon fc566cf31a Stabilize llama advanced row spacing 2026-06-27 21:33:13 +00:00
pewdiepie-archdaemon cc784db006 Tint Ollama engine icon 2026-06-27 21:18:15 +00:00
pewdiepie-archdaemon bab45142a5 Simplify llama MTP token input 2026-06-27 21:14:21 +00:00
pewdiepie-archdaemon 28974ae787 Limit cookbook spacing change to advanced tab 2026-06-27 21:05:07 +00:00
pewdiepie-archdaemon 7af3f15288 Color cookbook context fit notes 2026-06-27 21:02:10 +00:00
pewdiepie-archdaemon da7c6a667b Raise unified llama context estimate 2026-06-27 20:56:57 +00:00
pewdiepie-archdaemon a40371d532 Clamp unified llama context estimate 2026-06-27 20:52:31 +00:00
pewdiepie-archdaemon be4c4f2926 Add cookbook empty scan buttons 2026-06-27 20:48:24 +00:00
pewdiepie-archdaemon 23b844f113 Register email auto translate task 2026-06-27 20:43:56 +00:00
Arpit a05666a1b0 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 4222039b67 Reduce cookbook startup polling 2026-06-27 13:50:21 +00:00
pewdiepie-archdaemon 45ee5a71f4 Polish mobile UI and editor workflows 2026-06-27 13:05:44 +00:00
Rishi Sharma 6ee51b6b10 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 a5b60a34ee 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 f5200ec45b 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 de12d4734a 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 5d23495eb2 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 87e46e576a Fix calendar recurrence controls 2026-06-24 11:11:07 +00:00
Joel Alejandro Escareño Fernández e0ccf250a4 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 060dbf0681 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