mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-18 12:46:56 +02:00
Jauge de contexte, espace disque sur partage agrégé, panneau Fichiers
Trois défauts sans rapport entre eux, tous visibles à l'écran. Jauge de contexte bloquée à « 0 / N (0 %) » : le comptage exact vient de usage.prompt_tokens (include_usage), qu'un llama-server récent a cessé de renvoyer. On note désormais si l'usage est arrivé ; sinon la fin de tour publie l'estimation qui pilote déjà la compaction — approximative, mais jamais absente. Et la souscription envoie la valeur courante juste après le rattrapage : une page rechargée affichait zéro sur une discussion pourtant pleine, faute d'événement ctx_used dans la fenêtre rejouée. Espace disque : « il ne reste que 11,9 Go » sur un partage Unraid qui en a des centaines. /mnt/user est servi par shfs, un FUSE qui agrège plusieurs disques — statfs y renvoie l'espace d'un seul, et ce chiffre REFUSAIT l'installation du modèle. Les systèmes de fichiers qui approximent (FUSE, overlay, NFS, CIFS, Ceph, Gluster) sont reconnus par leur magie : leur chiffre reste affiché, précédé d'un « ~ », mais ne bloque plus rien. Panneau Fichiers : le panneau entier défilait, emportant vers le haut l'en-tête, le fil d'Ariane et le pied (occupation disque, bouton .zip) dès qu'il y avait quelques fichiers. Seule la liste défile maintenant ; le pied reste en bas et l'état vide se centre. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
895ff92ed8
commit
b405adea6c
5118 files changed
+1264007
-23
No files matched your search
+41
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* Like `Array#splice`, but smarter for giant arrays.
|
||||
*
|
||||
* `Array#splice` takes all items to be inserted as individual argument which
|
||||
* causes a stack overflow in V8 when trying to insert 100k items for instance.
|
||||
*
|
||||
* Otherwise, this does not return the removed items, and takes `items` as an
|
||||
* array instead of rest parameters.
|
||||
*
|
||||
* @template {unknown} T
|
||||
* Item type.
|
||||
* @param {Array<T>} list
|
||||
* List to operate on.
|
||||
* @param {number} start
|
||||
* Index to remove/insert at (can be negative).
|
||||
* @param {number} remove
|
||||
* Number of items to remove.
|
||||
* @param {Array<T>} items
|
||||
* Items to inject into `list`.
|
||||
* @returns {undefined}
|
||||
* Nothing.
|
||||
*/
|
||||
export function splice<T extends unknown>(list: Array<T>, start: number, remove: number, items: Array<T>): undefined;
|
||||
/**
|
||||
* Append `items` (an array) at the end of `list` (another array).
|
||||
* When `list` was empty, returns `items` instead.
|
||||
*
|
||||
* This prevents a potentially expensive operation when `list` is empty,
|
||||
* and adds items in batches to prevent V8 from hanging.
|
||||
*
|
||||
* @template {unknown} T
|
||||
* Item type.
|
||||
* @param {Array<T>} list
|
||||
* List to operate on.
|
||||
* @param {Array<T>} items
|
||||
* Items to add to `list`.
|
||||
* @returns {Array<T>}
|
||||
* Either `list` or `items`.
|
||||
*/
|
||||
export function push<T extends unknown>(list: Array<T>, items: Array<T>): Array<T>;
|
||||
//# sourceMappingURL=index.d.ts.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,uBAbuB,CAAC,SAAX,OAAS,QAEX,KAAK,CAAC,CAAC,CAAC,SAER,MAAM,UAEN,MAAM,SAEN,KAAK,CAAC,CAAC,CAAC,GAEN,SAAS,CA0CrB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBATuB,CAAC,SAAX,OAAS,QAEX,KAAK,CAAC,CAAC,CAAC,SAER,KAAK,CAAC,CAAC,CAAC,GAEN,KAAK,CAAC,CAAC,CAAC,CAUpB"}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
import {constants} from 'micromark-util-symbol'
|
||||
|
||||
/**
|
||||
* Like `Array#splice`, but smarter for giant arrays.
|
||||
*
|
||||
* `Array#splice` takes all items to be inserted as individual argument which
|
||||
* causes a stack overflow in V8 when trying to insert 100k items for instance.
|
||||
*
|
||||
* Otherwise, this does not return the removed items, and takes `items` as an
|
||||
* array instead of rest parameters.
|
||||
*
|
||||
* @template {unknown} T
|
||||
* Item type.
|
||||
* @param {Array<T>} list
|
||||
* List to operate on.
|
||||
* @param {number} start
|
||||
* Index to remove/insert at (can be negative).
|
||||
* @param {number} remove
|
||||
* Number of items to remove.
|
||||
* @param {Array<T>} items
|
||||
* Items to inject into `list`.
|
||||
* @returns {undefined}
|
||||
* Nothing.
|
||||
*/
|
||||
export function splice(list, start, remove, items) {
|
||||
const end = list.length
|
||||
let chunkStart = 0
|
||||
/** @type {Array<unknown>} */
|
||||
let parameters
|
||||
|
||||
// Make start between zero and `end` (included).
|
||||
if (start < 0) {
|
||||
start = -start > end ? 0 : end + start
|
||||
} else {
|
||||
start = start > end ? end : start
|
||||
}
|
||||
|
||||
remove = remove > 0 ? remove : 0
|
||||
|
||||
// No need to chunk the items if there’s only a couple (10k) items.
|
||||
if (items.length < constants.v8MaxSafeChunkSize) {
|
||||
parameters = Array.from(items)
|
||||
parameters.unshift(start, remove)
|
||||
// @ts-expect-error Hush, it’s fine.
|
||||
list.splice(...parameters)
|
||||
} else {
|
||||
// Delete `remove` items starting from `start`
|
||||
if (remove) list.splice(start, remove)
|
||||
|
||||
// Insert the items in chunks to not cause stack overflows.
|
||||
while (chunkStart < items.length) {
|
||||
parameters = items.slice(
|
||||
chunkStart,
|
||||
chunkStart + constants.v8MaxSafeChunkSize
|
||||
)
|
||||
parameters.unshift(start, 0)
|
||||
// @ts-expect-error Hush, it’s fine.
|
||||
list.splice(...parameters)
|
||||
|
||||
chunkStart += constants.v8MaxSafeChunkSize
|
||||
start += constants.v8MaxSafeChunkSize
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Append `items` (an array) at the end of `list` (another array).
|
||||
* When `list` was empty, returns `items` instead.
|
||||
*
|
||||
* This prevents a potentially expensive operation when `list` is empty,
|
||||
* and adds items in batches to prevent V8 from hanging.
|
||||
*
|
||||
* @template {unknown} T
|
||||
* Item type.
|
||||
* @param {Array<T>} list
|
||||
* List to operate on.
|
||||
* @param {Array<T>} items
|
||||
* Items to add to `list`.
|
||||
* @returns {Array<T>}
|
||||
* Either `list` or `items`.
|
||||
*/
|
||||
export function push(list, items) {
|
||||
if (list.length > 0) {
|
||||
splice(list, list.length, 0, items)
|
||||
return list
|
||||
}
|
||||
|
||||
return items
|
||||
}
|
||||
Reference in new issue
Block a user