@loicngr/kobo 1.11.45 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +17 -2
- package/CHANGELOG.md +12 -0
- package/CODE_OF_CONDUCT.md +16 -0
- package/CONFIGURATION.md +1968 -0
- package/CONTRIBUTING.md +83 -0
- package/DESIGN.md +296 -0
- package/README.md +35 -7
- package/SECURITY.md +54 -0
- package/THIRD_PARTY_NOTICES.md +20 -0
- package/dist/server/db/migrations.js +31 -0
- package/dist/server/db/schema.js +4 -0
- package/dist/server/index.js +6 -0
- package/dist/server/routes/environment.js +18 -0
- package/dist/server/routes/health.js +17 -2
- package/dist/server/routes/integrations.js +29 -0
- package/dist/server/routes/settings.js +5 -0
- package/dist/server/routes/sounds.js +60 -0
- package/dist/server/routes/usage.js +28 -2
- package/dist/server/routes/workspaces.js +46 -12
- package/dist/server/services/agent/engines/claude-code/engine.js +37 -4
- package/dist/server/services/agent/engines/codex/options-builder.js +1 -0
- package/dist/server/services/agent/engines/codex/spawn.js +2 -2
- package/dist/server/services/agent/integration-mcp.js +49 -0
- package/dist/server/services/agent/orchestrator.js +6 -2
- package/dist/server/services/auto-loop-service.js +45 -25
- package/dist/server/services/custom-sound-service.js +0 -0
- package/dist/server/services/environment-check-service.js +125 -0
- package/dist/server/services/initial-prompt-template-service.js +8 -21
- package/dist/server/services/integration-config-service.js +65 -0
- package/dist/server/services/legacy-public-prompts.js +112 -0
- package/dist/server/services/notion-service.js +25 -61
- package/dist/server/services/sentry-service.js +17 -12
- package/dist/server/services/settings-defaults.js +5 -0
- package/dist/server/services/settings-service.js +112 -23
- package/dist/server/services/skill-suite-prompts.js +29 -22
- package/dist/server/services/templates-service.js +31 -8
- package/dist/server/services/terminal-service.js +16 -0
- package/dist/server/services/usage/reliability.js +24 -0
- package/dist/server/services/wakeup-service.js +7 -5
- package/dist/server/services/workspace-service.js +25 -4
- package/dist/server/services/worktree-service.js +3 -1
- package/dist/server/utils/git-repo-lock.js +7 -3
- package/dist/server/utils/mcp-client.js +26 -12
- package/dist/server/utils/mcp-process.js +25 -0
- package/dist/server/utils/node-pty-spawn-helper.js +31 -0
- package/dist/server/utils/paths.js +7 -0
- package/dist/shared/auto-loop-prompts.js +6 -2
- package/dist/shared/automatic-admission.js +1 -0
- package/dist/shared/environment.js +1 -0
- package/dist/shared/notification-assets.js +73 -0
- package/dist/shared/skill-suite-prompts.js +6 -3
- package/dist/shared/workflow-policy.js +25 -0
- package/docs/getting-started.md +47 -0
- package/docs/troubleshooting.md +49 -0
- package/package.json +19 -7
- package/src/client/dist/pwa/assets/ActivityFeed-DeJ0V6CW.js +8 -0
- package/src/client/dist/pwa/assets/{ChangelogPage-CnXTnFhe.js → ChangelogPage-OoOnn4q9.js} +1 -1
- package/src/client/dist/pwa/assets/{ComparisonPanel-CKylN45q.js → ComparisonPanel-BYpe6Nch.js} +2 -2
- package/src/client/dist/pwa/assets/CreatePage-B9C9J9Pw.css +1 -0
- package/src/client/dist/pwa/assets/CreatePage-COQwHyqL.js +2 -0
- package/src/client/dist/pwa/assets/DashboardPage-CZ2036MC.js +1 -0
- package/src/client/dist/pwa/assets/DashboardPage-XiCj24i2.css +1 -0
- package/src/client/dist/pwa/assets/DiffViewer-CXBmMV9R.js +8 -0
- package/src/client/dist/pwa/assets/{DocumentsPanel-BeCttB-x.js → DocumentsPanel-mLGU5aTb.js} +1 -1
- package/src/client/dist/pwa/assets/{DrawerToggleButton-BJBBYeOc.js → DrawerToggleButton-C39pfWBD.js} +1 -1
- package/src/client/dist/pwa/assets/GitPanel-BQk7kJO-.js +3 -0
- package/src/client/dist/pwa/assets/{GitPanel-BFCnyhE2.css → GitPanel-C4wOcZV2.css} +1 -1
- package/src/client/dist/pwa/assets/{HealthPage-l88TEk-k.js → HealthPage-CnJWXfa8.js} +1 -1
- package/src/client/dist/pwa/assets/MainLayout-Cc4XzCAy.css +1 -0
- package/src/client/dist/pwa/assets/MainLayout-D3zfT61Y.js +2 -0
- package/src/client/dist/pwa/assets/{QBtnDropdown-44Mj-y_1.js → QBtnDropdown-DGLLlBf3.js} +1 -1
- package/src/client/dist/pwa/assets/{QExpansionItem-Bok1m8Wi.js → QExpansionItem-CQ2LzM8P.js} +1 -1
- package/src/client/dist/pwa/assets/QSelect-DoTWgQAO.js +1 -0
- package/src/client/dist/pwa/assets/{QTooltip-BDihn2aY.js → QTooltip-DKvUeiR_.js} +1 -1
- package/src/client/dist/pwa/assets/SchedulePanel-BYKSFoFj.css +1 -0
- package/src/client/dist/pwa/assets/SchedulePanel-DIMzNIO3.js +1 -0
- package/src/client/dist/pwa/assets/{SearchPage-BwZ2TX1G.js → SearchPage-COWnMxRZ.js} +1 -1
- package/src/client/dist/pwa/assets/SettingsPage-B9cLhFnO.js +9 -0
- package/src/client/dist/pwa/assets/{SettingsPage-W6N01tGz.css → SettingsPage-BYdLXJEJ.css} +1 -1
- package/src/client/dist/pwa/assets/SplitWorkspacePage-BJKssJyI.js +1 -0
- package/src/client/dist/pwa/assets/{TerminalPanel-Cq-FR7A7.js → TerminalPanel-C_HNpN1X.js} +4 -4
- package/src/client/dist/pwa/assets/{TouchPan-BQ1cvzRC.js → TouchPan-CCllyaAF.js} +1 -1
- package/src/client/dist/pwa/assets/{TourReplayButton-Dz1yEz_z.js → TourReplayButton-Cp2UnxWa.js} +1 -1
- package/src/client/dist/pwa/assets/WorkspaceAttentionLabels-B-SuQuS_.js +1 -0
- package/src/client/dist/pwa/assets/{WorkspacePage-BbUvR1Vf.css → WorkspacePage--5HsnMQ1.css} +1 -1
- package/src/client/dist/pwa/assets/WorkspacePage-6lN4iF5W.js +4 -0
- package/src/client/dist/pwa/assets/{browser-BmWgBx9M.js → browser-uy3hmwKo.js} +1 -1
- package/src/client/dist/pwa/assets/{build-path-tree-6EjBmYYY.js → build-path-tree-DZrp6Aji.js} +1 -1
- package/src/client/dist/pwa/assets/custom-sounds-Du8ReMlU.js +1 -0
- package/src/client/dist/pwa/assets/de-CTE3Xb7Z.js +17 -0
- package/src/client/dist/pwa/assets/{documents-BZ8bwcjr.js → documents-BtNrB6d0.js} +1 -1
- package/src/client/dist/pwa/assets/{editor.api-CK7--ckY.js → editor.api-P-eJRcVK.js} +1 -1
- package/src/client/dist/pwa/assets/efforts-ChUC4xtk.js +9 -0
- package/src/client/dist/pwa/assets/engineFeatures-D-0NPZBE.js +1 -0
- package/src/client/dist/pwa/assets/es-CZxg1xjh.js +17 -0
- package/src/client/dist/pwa/assets/{expand-template-C8VyjASo.js → expand-template-ByoC_kxX.js} +1 -1
- package/src/client/dist/pwa/assets/{format-LtTLLitJ.js → format-CeidAPFn.js} +7 -7
- package/src/client/dist/pwa/assets/{formatters-Bl9zA7Ai.js → formatters-BtG6lb4d.js} +1 -1
- package/src/client/dist/pwa/assets/fr-C7HCclxj.js +17 -0
- package/src/client/dist/pwa/assets/{freemarker2-DxezMaje.js → freemarker2-CDYXi2tK.js} +1 -1
- package/src/client/dist/pwa/assets/{handlebars-DK_Bj6Rx.js → handlebars-AVkJuN-_.js} +1 -1
- package/src/client/dist/pwa/assets/{html-DFfsfStD.js → html-CpvEZlmO.js} +1 -1
- package/src/client/dist/pwa/assets/i18n-KVkTJG-4.js +1 -0
- package/src/client/dist/pwa/assets/index-DsaWUT_Z.js +20 -0
- package/src/client/dist/pwa/assets/it-DoOWwqZz.js +17 -0
- package/src/client/dist/pwa/assets/{javascript-DuNbcaL7.js → javascript-BYnnBLH9.js} +1 -1
- package/src/client/dist/pwa/assets/{liquid-CM3JKyhv.js → liquid-CzqlB3Um.js} +1 -1
- package/src/client/dist/pwa/assets/{mdx-BG3zYwNF.js → mdx-hrYFnJVZ.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco-contributions-DLscZGH-.js → monaco-contributions-D2YXqNaH.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco.contribution-DnhZHwXT.js → monaco.contribution-Dl22KqTL.js} +2 -2
- package/src/client/dist/pwa/assets/network-auth-Dq0I5kjv.js +1 -0
- package/src/client/dist/pwa/assets/notify-theme-vV3Rm4_v.js +1 -0
- package/src/client/dist/pwa/assets/{pending-diff-open-dYIFdS4r.js → pending-diff-open-BJYqBOUG.js} +1 -1
- package/src/client/dist/pwa/assets/permissionModes-B-ciuUbz.js +36 -0
- package/src/client/dist/pwa/assets/{project-color-R_1je4vW.js → project-color-W5mMgIKK.js} +1 -1
- package/src/client/dist/pwa/assets/{python-COs6pHk2.js → python-DafgCozG.js} +1 -1
- package/src/client/dist/pwa/assets/{razor-Jl1VqMsk.js → razor-CWYrTLCm.js} +1 -1
- package/src/client/dist/pwa/assets/render-chat-markdown-CE5RIL0s.js +69 -0
- package/src/client/dist/pwa/assets/{typescript-BU_TUuAM.js → typescript-DLSIuW9u.js} +1 -1
- package/src/client/dist/pwa/assets/use-tours-CDdnvIaG.js +2 -0
- package/src/client/dist/pwa/assets/workspace-templates-C88VmFdQ.js +1 -0
- package/src/client/dist/pwa/assets/{xml-gFFsobxE.js → xml-BAmdYarn.js} +1 -1
- package/src/client/dist/pwa/assets/{yaml-DaXaqaGD.js → yaml-RQqNMXWh.js} +1 -1
- package/src/client/dist/pwa/index.html +1 -1
- package/src/client/dist/pwa/sounds/neutral.wav +0 -0
- package/src/client/dist/pwa/sounds/ready.wav +0 -0
- package/src/client/dist/pwa/sw.js +1 -1
- package/src/client/dist/pwa/assets/ActivityFeed-CLXjdqS8.js +0 -8
- package/src/client/dist/pwa/assets/CreatePage-SoCcvxuD.js +0 -2
- package/src/client/dist/pwa/assets/CreatePage-TY9g3hZb.css +0 -1
- package/src/client/dist/pwa/assets/DashboardPage-CZQLfoV1.js +0 -1
- package/src/client/dist/pwa/assets/DashboardPage-D8g7_r4S.css +0 -1
- package/src/client/dist/pwa/assets/DiffViewer-Csf3WmLc.js +0 -8
- package/src/client/dist/pwa/assets/GitPanel-B-ZHgghQ.js +0 -3
- package/src/client/dist/pwa/assets/MainLayout-BAAQLq95.css +0 -1
- package/src/client/dist/pwa/assets/MainLayout-Cf4Q9x1u.js +0 -2
- package/src/client/dist/pwa/assets/QDrawer-B4qHw8wt.js +0 -1
- package/src/client/dist/pwa/assets/QSelect-BbtD5Iks.js +0 -1
- package/src/client/dist/pwa/assets/SchedulePanel-BAA4Aajn.css +0 -1
- package/src/client/dist/pwa/assets/SchedulePanel-DiWCDNZ8.js +0 -1
- package/src/client/dist/pwa/assets/SettingsPage-BUh0WfNf.js +0 -9
- package/src/client/dist/pwa/assets/SplitWorkspacePage-Bg6nKBcA.js +0 -1
- package/src/client/dist/pwa/assets/WorkspaceAttentionLabels-BCVOP8vp.js +0 -1
- package/src/client/dist/pwa/assets/WorkspacePage-Cl8gap4b.js +0 -4
- package/src/client/dist/pwa/assets/de-COObokpu.js +0 -17
- package/src/client/dist/pwa/assets/efforts-Bw0o2Bud.js +0 -9
- package/src/client/dist/pwa/assets/engineFeatures-DQO9HHXI.js +0 -1
- package/src/client/dist/pwa/assets/es-By2Q9Tca.js +0 -17
- package/src/client/dist/pwa/assets/fouet-ahh-DdxrUXRj.mp3 +0 -0
- package/src/client/dist/pwa/assets/fr-D-sd0ddn.js +0 -17
- package/src/client/dist/pwa/assets/i18n-aDWy4KHt.js +0 -1
- package/src/client/dist/pwa/assets/index-BLd8DAzg.js +0 -20
- package/src/client/dist/pwa/assets/it-CeK5lyIA.js +0 -17
- package/src/client/dist/pwa/assets/network-auth-BJiPbO5l.js +0 -1
- package/src/client/dist/pwa/assets/notify-theme-D4p3qPkp.js +0 -1
- package/src/client/dist/pwa/assets/permissionModes-B7fuUegU.js +0 -36
- package/src/client/dist/pwa/assets/render-chat-markdown-AaOo0Tgq.js +0 -67
- package/src/client/dist/pwa/assets/use-tours-CVn874kD.js +0 -2
- package/src/client/dist/pwa/assets/workspace-templates-BCKR8TXr.js +0 -1
- package/src/client/dist/pwa/sounds/7eme-compagnie-03.mp3 +0 -0
- package/src/client/dist/pwa/sounds/aller-ftg.mp3 +0 -0
- package/src/client/dist/pwa/sounds/arrete-de-mentir.mp3 +0 -0
- package/src/client/dist/pwa/sounds/arretez-les-messages.mp3 +0 -0
- package/src/client/dist/pwa/sounds/bah-alors-on-est-nul.mp3 +0 -0
- package/src/client/dist/pwa/sounds/basic-notification.mp3 +0 -0
- package/src/client/dist/pwa/sounds/ca_va_peter.mp3 +0 -0
- package/src/client/dist/pwa/sounds/dry-fart.mp3 +0 -0
- package/src/client/dist/pwa/sounds/faaah.mp3 +0 -0
- package/src/client/dist/pwa/sounds/for-shure.mp3 +0 -0
- package/src/client/dist/pwa/sounds/gta-v-death.mp3 +0 -0
- package/src/client/dist/pwa/sounds/hey.mp3 +0 -0
- package/src/client/dist/pwa/sounds/mais-laisse-moi-dormir-zebi.mp3 +0 -0
- package/src/client/dist/pwa/sounds/nan-tu-degages.mp3 +0 -0
- package/src/client/dist/pwa/sounds/nan-wallah-pardon.mp3 +0 -0
- package/src/client/dist/pwa/sounds/ouais-cest-greg.mp3 +0 -0
- package/src/client/dist/pwa/sounds/pas-ca-zinedine.mp3 +0 -0
- package/src/client/dist/pwa/sounds/ta-gueule.mp3 +0 -0
- package/src/client/dist/pwa/sounds/travail_termine.mp3 +0 -0
- package/src/client/dist/pwa/sounds/tu-vas-la-fermer.mp3 +0 -0
- package/src/client/dist/pwa/sounds/warcraft-3-humain-travail.mp3 +0 -0
- package/src/client/dist/pwa/sounds/yaaa.mp3 +0 -0
package/AGENTS.md
CHANGED
|
@@ -225,7 +225,8 @@ Two emit flavors in `websocket-service.ts`:
|
|
|
225
225
|
|
|
226
226
|
1. `NOTION_API_TOKEN` env var
|
|
227
227
|
2. `NOTION_TOKEN` env var
|
|
228
|
-
3.
|
|
228
|
+
3. Direct Notion configuration in `KOBO_HOME/integrations.json`, when saved in Settings
|
|
229
|
+
4. Otherwise `~/.claude.json` → `mcpServers.notion.env.NOTION_TOKEN` / `NOTION_API_TOKEN` (legacy shared Claude MCP config)
|
|
229
230
|
|
|
230
231
|
The selected Claude config entry defaults to the enabled key named exactly `notion`; `global.notionMcpKey` selects another exact key. Its command/args are reused unless `NOTION_MCP_COMMAND` / `NOTION_MCP_ARGS` override them; otherwise the fallback is `npx -y @notionhq/notion-mcp-server`. Existing `OPENAPI_MCP_HEADERS` are preserved; when absent, the resolved token is used to construct them.
|
|
231
232
|
|
|
@@ -513,7 +514,7 @@ These rules are the source of truth and are also written to `.ai/.git-convention
|
|
|
513
514
|
- Subject: imperative mood, lowercase, no trailing period, max 72 chars
|
|
514
515
|
- Body: wrap at 72 chars, explain *why* not *what*
|
|
515
516
|
- Reference issues with `Refs #123` or `Closes #123`
|
|
516
|
-
-
|
|
517
|
+
- Add a `Co-Authored-By:` trailer for an LLM only when it materially contributed to the code included in that commit. Do not add one automatically when the LLM did not contribute to the code.
|
|
517
518
|
|
|
518
519
|
**Branches**
|
|
519
520
|
- Feature: `feature/<short-kebab-case>`
|
|
@@ -574,3 +575,17 @@ deviate from the documented system without explicit user approval.
|
|
|
574
575
|
- Conversation loading indicators follow outstanding session/history/sync requests only while no content is available. Background refreshes must preserve the displayed conversation, component state and reading position, including feeds containing only user messages.
|
|
575
576
|
- PR diagnosis fingerprints are asynchronous and include binary staged/unstaged diffs and untracked file contents (symlink targets, not their destinations). Untracked nested Git repositories are fingerprinted recursively, including HEAD and index changes; ignored files and Git internals are excluded. Await them at every callsite. Workspace matching always includes normalized project identity.
|
|
576
577
|
- Daily DB backups are checked at startup and hourly, with the existing 24-hour minimum age and retention. Stop the scheduler and await its active backup before closing SQLite.
|
|
578
|
+
|
|
579
|
+
## Public-use defaults and release checks
|
|
580
|
+
|
|
581
|
+
Fresh installs use the `standard` skill suite, model `auto`, Plan permissions, manual commit/push/publish workflow preferences, two unattended slots, and disabled optional integrations/audio. Do not rewrite custom settings while updating shipped defaults. Historical migrations must keep their original semantic defaults; shipped prompt constants needed by old migrations are frozen in `legacy-public-prompts.ts`.
|
|
582
|
+
|
|
583
|
+
Settings migration v59 updates only exact known shipped prompts, v60 marks existing installs onboarded, v61 maps retired sounds to the original neutral asset, and v62 preserves the legacy workflow policy. SQLite v48 snapshots workspace policies; v49 separates wakeup `retry_at` from the original `target_at`. Never mutate a wakeup deadline just to wait for capacity. Admission status shares the existing gate; manual starts remain exempt while their controllers count against unattended capacity.
|
|
584
|
+
|
|
585
|
+
Workflow preferences do not replace engine permissions. Never promote Plan to Bypass because of grooming, auto-loop or an `ExitPlanMode` tool event. Global/project policy edits apply to future workspace snapshots. Explicit narrower user constraints always prevail.
|
|
586
|
+
|
|
587
|
+
Notion/Sentry direct configurations live in `KOBO_HOME/integrations.json`, atomically written with mode 0600, separate from settings exports. Legacy Claude configuration remains a fallback. Read APIs return configured status only; never include raw MCP errors, command arguments or stderr in public responses/logs. Do not execute provider connection checks at UI mount.
|
|
588
|
+
|
|
589
|
+
Users import their own notification sounds through `custom-sound-service.ts` into `<KOBO_HOME>/sounds/`, referenced in settings as `custom:<id>`. Identifiers are generated server-side; an uploaded filename is a display label and never a path. `normalizePublicNotificationSound` keeps a well-formed reference on its shape alone, because settings migrations run before the catalogue is readable. A reference whose file is gone must fall back to `neutral.wav` rather than fail, so deletion never needs to inspect the eleven sound settings.
|
|
590
|
+
|
|
591
|
+
`npm run test:package` after build installs the actual tarball in a disposable home and checks native dependencies, real PWA assets and HTTP/stdio MCP. `npm run security:scan` requires Gitleaks 8.30.1 and scans all local refs plus current nonignored source with redacted output. Public docs use a narrow `.gitignore` allowlist; internal plans and captures remain excluded. Read `docs/release/public-opening-checklist.md` before releasing; CI configuration alone is not platform validation evidence.
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,18 @@ All notable changes to Kōbō are documented here. The format is based on
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/). Each release is an `## <version>`
|
|
5
5
|
section — the in-app "What's new" dialog reads this file.
|
|
6
6
|
|
|
7
|
+
## 2.1.1
|
|
8
|
+
|
|
9
|
+
- feat(dashboard): allow resetting the model reliability table
|
|
10
|
+
|
|
11
|
+
## 2.1.0
|
|
12
|
+
|
|
13
|
+
- chore(deps): update dependencies
|
|
14
|
+
|
|
15
|
+
## 2.0.0
|
|
16
|
+
|
|
17
|
+
- feat(public-readiness): prepare Kobo for public use
|
|
18
|
+
|
|
7
19
|
## 1.11.45
|
|
8
20
|
|
|
9
21
|
- fix(sessions): harden handoff recovery and highlight transfer progress
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Community conduct
|
|
2
|
+
|
|
3
|
+
Be respectful, describe technical disagreements with evidence, and welcome users
|
|
4
|
+
with different tools, experience and working habits. Harassment, threats,
|
|
5
|
+
discriminatory remarks and disclosure of another person's private information
|
|
6
|
+
are not acceptable in issues, pull requests or other project spaces.
|
|
7
|
+
|
|
8
|
+
For private conduct reports, contact the maintainer at the email listed in
|
|
9
|
+
`package.json` (`loicnogier@ik.me`). Include links and relevant context, avoiding
|
|
10
|
+
unnecessary personal data. Security vulnerabilities belong in the private channel
|
|
11
|
+
described in `SECURITY.md`.
|
|
12
|
+
|
|
13
|
+
The maintainer may edit or remove content, close a thread, or restrict participation
|
|
14
|
+
to protect contributors and users. Decisions should be proportionate to the
|
|
15
|
+
behavior and context. Reports are handled privately as far as practical; no
|
|
16
|
+
response-time commitment is offered.
|