mulmoclaude 1.19.0 → 1.20.0

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.
Files changed (44) hide show
  1. package/README.md +2 -1
  2. package/bin/mulmoclaude.js +7 -0
  3. package/client/assets/{index-B7yEOa95.css → index-Def7sR1B.css} +1 -1
  4. package/client/assets/{index-C4i9LSUV.js → index-j5_nUbq5.js} +147 -147
  5. package/client/assets/{marp-Bj6GVklq.js → marp-C8br1NFj.js} +1 -1
  6. package/client/index.html +2 -2
  7. package/package.json +10 -10
  8. package/server/api/routes/files.ts +68 -41
  9. package/server/api/routes/secrets.ts +138 -0
  10. package/server/build/mcp-server.mjs +327 -327
  11. package/server/index.ts +16 -1
  12. package/server/remoteHost/handlers/googleCalendar.ts +34 -7
  13. package/server/system/announceGeminiKey.ts +7 -7
  14. package/server/system/env.ts +26 -3
  15. package/server/system/geminiKeyGuidance.ts +62 -0
  16. package/server/system/loadEnv.ts +12 -0
  17. package/server/system/logs/aaa +737 -0
  18. package/server/system/logs/bb +446 -0
  19. package/server/system/secrets.ts +160 -0
  20. package/server/utils/files/text-extensions.ts +245 -0
  21. package/server/utils/gemini.ts +2 -2
  22. package/server/utils/launch-vars.d.mts +5 -0
  23. package/server/utils/launch-vars.mjs +24 -0
  24. package/server/utils/launcher/macos/create-app.mjs +1 -0
  25. package/server/utils/launcher/start.d.mts +2 -0
  26. package/server/utils/launcher/start.mjs +20 -1
  27. package/server/utils/launcher/windows/create-launcher.mjs +1 -0
  28. package/server/utils/text.ts +18 -0
  29. package/src/App.vue +10 -2
  30. package/src/components/FileContentRenderer.vue +31 -10
  31. package/src/components/SettingsGeminiTab.vue +186 -0
  32. package/src/components/SettingsModal.vue +36 -35
  33. package/src/composables/useHealth.ts +8 -1
  34. package/src/composables/useRawFileDownload.ts +84 -0
  35. package/src/config/apiRoutes.ts +6 -0
  36. package/src/lang/de.ts +17 -1
  37. package/src/lang/en.ts +20 -4
  38. package/src/lang/es.ts +17 -1
  39. package/src/lang/fr.ts +18 -1
  40. package/src/lang/ja.ts +17 -1
  41. package/src/lang/ko.ts +17 -1
  42. package/src/lang/pt-BR.ts +17 -1
  43. package/src/lang/zh.ts +17 -1
  44. package/src/utils/path/posixPath.ts +9 -0
package/README.md CHANGED
@@ -150,7 +150,8 @@ Recommended: ≥ 32 characters of random data (shorter values trigger a startup
150
150
 
151
151
  ## Optional features
152
152
 
153
- - **Gemini API key** (`GEMINI_API_KEY` in environment or `.env`) — enables AI image generation (`generateImage`), audio / video. Free tier suffices for everyday use; get one from [Google AI Studio](https://aistudio.google.com/). Set it in both places and the exported shell value wins, `.env` is ignored — the app now says so in the notification bell instead of leaving you editing a file that has no effect.
153
+ - **Gemini API key** — enables AI image generation (`generateImage`), audio / video. Free tier suffices for everyday use; get one from [Google AI Studio](https://aistudio.google.com/). Paste it into **Settings → Gemini**: it takes effect immediately, with no restart and no file to find, and it wins over anything in the shell or a `.env`. The older routes still work — `GEMINI_API_KEY` exported in the shell, or in a `.env` — but which `.env` gets read depends on how you started the app (from the icon there is no launch directory, so it reads `~/.env`), which is why the Settings tab names the exact path this launch is reading.
154
+ - **Download any workspace file** — the Files view previews text and renders known media; anything else (and any file too large to preview) offers a direct download of the bytes. This replaces relying on "Open in OS", which spawns a handler on the *server's* desktop — under Docker, WSL2 or a remote host there is none, so those files used to be unreachable from the UI.
154
155
  - **Local voice input** (macOS only, opt-in) — `whisper.cpp` for dictating chat messages without sending audio to a cloud API.
155
156
  - **Marp slides** — `marp: true` frontmatter on any markdown file renders a slide deck in the canvas with PDF export. Custom themes via `config/marp-themes/<name>.css`.
156
157
  - **Auto memory** — the agent maintains a typed memory layout (`conversations/memory/<type>/<topic>.md`) and reads it ambient-style.
@@ -19,6 +19,7 @@ import { isPortFree, findAvailablePort, MAX_PORT_PROBES } from "../server/utils/
19
19
  import { parseDevPluginArgs } from "../server/utils/dev-plugin-args.mjs";
20
20
  import { cliFlagHelpLines, flagEnvOverrides } from "../server/utils/cli-flags.mjs";
21
21
  import { parseEnvFile, mergeLaunchEnv, describeLaunchEnvLoad } from "../server/utils/launch-env.mjs";
22
+ import { LAUNCH_ENV_PATH_VAR } from "../server/utils/launch-vars.mjs";
22
23
  import { findLiveInstancePort, instanceGuardMessage, serverPortPathIn, shouldStopForRunningInstance } from "../server/utils/instance-guard.mjs";
23
24
  import { resolveWorkspacePath } from "../server/utils/workspace-path.mjs";
24
25
 
@@ -282,6 +283,12 @@ delete serverEnv.MULMOCLAUDE_SHADOWED_ENV_KEYS;
282
283
  if (skippedKeys.length > 0) {
283
284
  serverEnv.MULMOCLAUDE_SHADOWED_ENV_KEYS = skippedKeys.join(",");
284
285
  }
286
+ // Hand over WHICH `.env` this was, so the server can name it when a key
287
+ // is missing (#2626). Set whether or not the file exists — "put it here"
288
+ // is exactly the case where it doesn't. An icon launch has no launch
289
+ // directory to name, and the server cannot recompute this: its own cwd is
290
+ // the package directory, not the user's.
291
+ serverEnv[LAUNCH_ENV_PATH_VAR] = launchEnvPath;
285
292
  // Boolean CLI flags that mirror an env var (#1089 + bundle): inject
286
293
  // the corresponding VAR=1 into the spawned server so the flag is
287
294
  // equivalent to the env-var prefix. The server reads these via