feat(insights): UX gap closure — i18n, network graph, recalc panel, toasts
Bugs fixes: - network-graph.tsx: 2 strings hardcoded FR → props i18n (untitledLabel, resetFocusLabel) - Panneau recalcul: clés i18n réutilisées avec mauvais sens → nouvelles clés recalcSystem.* - 13 locales: section insightsView.* complète (67 clés × 13 = 871 traductions) UX features: - Hint /insights ≠ /graph (semanticGraphLegend + lien vers /graph) - Toasts succès/échec/zéro-clusters après analyse (analysisSuccess/Failed/NoClusters) - État vide différencié: emptyNeedMoreNotes si < 10 notes - Tips contextuels sections Bridge Notes et Suggestions Sprint: - 4 epics marqués done (3,4,5,6 — toutes stories terminées) - sprint-status.yaml last_updated corrigé
This commit is contained in:
142
.agents/skills/find-skills/SKILL.md
Normal file
142
.agents/skills/find-skills/SKILL.md
Normal file
@@ -0,0 +1,142 @@
|
||||
---
|
||||
name: find-skills
|
||||
description: Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
|
||||
---
|
||||
|
||||
# Find Skills
|
||||
|
||||
This skill helps you discover and install skills from the open agent skills ecosystem.
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
Use this skill when the user:
|
||||
|
||||
- Asks "how do I do X" where X might be a common task with an existing skill
|
||||
- Says "find a skill for X" or "is there a skill for X"
|
||||
- Asks "can you do X" where X is a specialized capability
|
||||
- Expresses interest in extending agent capabilities
|
||||
- Wants to search for tools, templates, or workflows
|
||||
- Mentions they wish they had help with a specific domain (design, testing, deployment, etc.)
|
||||
|
||||
## What is the Skills CLI?
|
||||
|
||||
The Skills CLI (`npx skills`) is the package manager for the open agent skills ecosystem. Skills are modular packages that extend agent capabilities with specialized knowledge, workflows, and tools.
|
||||
|
||||
**Key commands:**
|
||||
|
||||
- `npx skills find [query] [--owner <owner>]` - Search for skills interactively or by keyword, optionally scoped to a GitHub owner
|
||||
- `npx skills add <package>` - Install a skill from GitHub or other sources
|
||||
- `npx skills check` - Check for skill updates
|
||||
- `npx skills update` - Update all installed skills
|
||||
|
||||
**Browse skills at:** https://skills.sh/
|
||||
|
||||
## How to Help Users Find Skills
|
||||
|
||||
### Step 1: Understand What They Need
|
||||
|
||||
When a user asks for help with something, identify:
|
||||
|
||||
1. The domain (e.g., React, testing, design, deployment)
|
||||
2. The specific task (e.g., writing tests, creating animations, reviewing PRs)
|
||||
3. Whether this is a common enough task that a skill likely exists
|
||||
|
||||
### Step 2: Check the Leaderboard First
|
||||
|
||||
Before running a CLI search, check the [skills.sh leaderboard](https://skills.sh/) to see if a well-known skill already exists for the domain. The leaderboard ranks skills by total installs, surfacing the most popular and battle-tested options.
|
||||
|
||||
For example, top skills for web development include:
|
||||
- `vercel-labs/agent-skills` — React, Next.js, web design (100K+ installs each)
|
||||
- `anthropics/skills` — Frontend design, document processing (100K+ installs)
|
||||
|
||||
### Step 3: Search for Skills
|
||||
|
||||
If the leaderboard doesn't cover the user's need, run the find command:
|
||||
|
||||
```bash
|
||||
npx skills find [query] [--owner <owner>]
|
||||
```
|
||||
|
||||
For example:
|
||||
|
||||
- User asks "how do I make my React app faster?" → `npx skills find react performance`
|
||||
- User asks "can you help me with PR reviews?" → `npx skills find pr review`
|
||||
- User asks "I need to create a changelog" → `npx skills find changelog`
|
||||
|
||||
### Step 4: Verify Quality Before Recommending
|
||||
|
||||
**Do not recommend a skill based solely on search results.** Always verify:
|
||||
|
||||
1. **Install count** — Prefer skills with 1K+ installs. Be cautious with anything under 100.
|
||||
2. **Source reputation** — Official sources (`vercel-labs`, `anthropics`, `microsoft`) are more trustworthy than unknown authors.
|
||||
3. **GitHub stars** — Check the source repository. A skill from a repo with <100 stars should be treated with skepticism.
|
||||
|
||||
### Step 5: Present Options to the User
|
||||
|
||||
When you find relevant skills, present them to the user with:
|
||||
|
||||
1. The skill name and what it does
|
||||
2. The install count and source
|
||||
3. The install command they can run
|
||||
4. A link to learn more at skills.sh
|
||||
|
||||
Example response:
|
||||
|
||||
```
|
||||
I found a skill that might help! The "react-best-practices" skill provides
|
||||
React and Next.js performance optimization guidelines from Vercel Engineering.
|
||||
(185K installs)
|
||||
|
||||
To install it:
|
||||
npx skills add vercel-labs/agent-skills@react-best-practices
|
||||
|
||||
Learn more: https://skills.sh/vercel-labs/agent-skills/react-best-practices
|
||||
```
|
||||
|
||||
### Step 6: Offer to Install
|
||||
|
||||
If the user wants to proceed, you can install the skill for them:
|
||||
|
||||
```bash
|
||||
npx skills add <owner/repo@skill> -g -y
|
||||
```
|
||||
|
||||
The `-g` flag installs globally (user-level) and `-y` skips confirmation prompts.
|
||||
|
||||
## Common Skill Categories
|
||||
|
||||
When searching, consider these common categories:
|
||||
|
||||
| Category | Example Queries |
|
||||
| --------------- | ---------------------------------------- |
|
||||
| Web Development | react, nextjs, typescript, css, tailwind |
|
||||
| Testing | testing, jest, playwright, e2e |
|
||||
| DevOps | deploy, docker, kubernetes, ci-cd |
|
||||
| Documentation | docs, readme, changelog, api-docs |
|
||||
| Code Quality | review, lint, refactor, best-practices |
|
||||
| Design | ui, ux, design-system, accessibility |
|
||||
| Productivity | workflow, automation, git |
|
||||
|
||||
## Tips for Effective Searches
|
||||
|
||||
1. **Use specific keywords**: "react testing" is better than just "testing"
|
||||
2. **Try alternative terms**: If "deploy" doesn't work, try "deployment" or "ci-cd"
|
||||
3. **Check popular sources**: Many skills come from `vercel-labs/agent-skills` or `ComposioHQ/awesome-claude-skills`
|
||||
|
||||
## When No Skills Are Found
|
||||
|
||||
If no relevant skills exist:
|
||||
|
||||
1. Acknowledge that no existing skill was found
|
||||
2. Offer to help with the task directly using your general capabilities
|
||||
3. Suggest the user could create their own skill with `npx skills init`
|
||||
|
||||
Example:
|
||||
|
||||
```
|
||||
I searched for skills related to "xyz" but didn't find any matches.
|
||||
I can still help you with this task directly! Would you like me to proceed?
|
||||
|
||||
If this is something you do often, you could create your own skill:
|
||||
npx skills init my-xyz-skill
|
||||
```
|
||||
@@ -59,11 +59,13 @@
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ea18d177-228d-4e44-8e79-8957e6f2da39/subagents/375b2e07-202f-4e8e-9e80-718bbdf88005.jsonl": 1781973640324,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ea18d177-228d-4e44-8e79-8957e6f2da39/subagents/6cba0291-51b3-42d9-939c-2e95d01128f8.jsonl": 1781975383642,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ea18d177-228d-4e44-8e79-8957e6f2da39/subagents/d6546245-4e3f-47dd-bc3e-39e1af726138.jsonl": 1781973598054,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ec2b194c-c67e-4089-a434-6daff69ca69d/ec2b194c-c67e-4089-a434-6daff69ca69d.jsonl": 1782057901186,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ec2b194c-c67e-4089-a434-6daff69ca69d/ec2b194c-c67e-4089-a434-6daff69ca69d.jsonl": 1782633068860,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ec2b194c-c67e-4089-a434-6daff69ca69d/subagents/99e20a50-1e7b-4ed8-931a-5c4c7a65ea4d.jsonl": 1782037965469,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/f0ad176d-04d7-4d9a-82b8-65273acd313a/subagents/96507ccc-6150-4260-a55c-94abd2b57441.jsonl": 1778946698447,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/fb7fd15f-b9ef-490b-a1de-8238ea026e53/fb7fd15f-b9ef-490b-a1de-8238ea026e53.jsonl": 1780001507987,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/fb7fd15f-b9ef-490b-a1de-8238ea026e53/subagents/a5601ff1-7934-4872-acd8-266e416c3680.jsonl": 1779998536313,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ec2b194c-c67e-4089-a434-6daff69ca69d/subagents/993325c9-a748-4183-9b2d-866cc0d73338.jsonl": 1782056882673,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ec2b194c-c67e-4089-a434-6daff69ca69d/subagents/e483aeb3-3b38-4f7f-9ad8-d79f362c102d.jsonl": 1782057932702
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ec2b194c-c67e-4089-a434-6daff69ca69d/subagents/e483aeb3-3b38-4f7f-9ad8-d79f362c102d.jsonl": 1782058095940,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ec2b194c-c67e-4089-a434-6daff69ca69d/subagents/372b1e4e-cc60-4117-b3c1-48af0dbc38d9.jsonl": 1782059598659,
|
||||
"/home/devparsa/.cursor/projects/home-devparsa-dev-Momento/agent-transcripts/ec2b194c-c67e-4089-a434-6daff69ca69d/subagents/8ad24313-529f-41f7-96b3-dc6314e94c72.jsonl": 1782633077601
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"version": 1,
|
||||
"lastRunAtMs": 1782057894900,
|
||||
"turnsSinceLastRun": 15,
|
||||
"lastTranscriptMtimeMs": 1782057894796.2778,
|
||||
"lastProcessedGenerationId": "3c5517c8-a954-41c8-ba2d-9a8578c05e67",
|
||||
"lastRunAtMs": 1782633053032,
|
||||
"turnsSinceLastRun": 1,
|
||||
"lastTranscriptMtimeMs": 1782633052959.9294,
|
||||
"lastProcessedGenerationId": "17310ec7-5a0e-406b-a1a4-75a7c0439ee3",
|
||||
"trialStartedAtMs": null
|
||||
}
|
||||
|
||||
@@ -27,5 +27,5 @@
|
||||
- CI/CD Gitea : `.gitea/workflows/ci.yaml` — CI sur `ubuntu-24.04`, deploy sur runner **`docker-host`** (sur le serveur) ; deploy manuel via `.gitea/workflows/deploy.yaml` ou `bash scripts/deploy-prod.sh`.
|
||||
- Migrations prebuilt + vérif deploy : `docker compose exec memento-note node ./node_modules/prisma/build/index.js migrate deploy` (pas `npx prisma`) ; helper `scripts/migrate-docker.sh` ; `GET /api/build-info` (SHA Git) ; comparer `127.0.0.1:3000` et domaine Cloudflare — purger cache si versions divergent ; 403 `/api/manifest` côté domaine = souvent Cloudflare.
|
||||
- Éditeur riche : `rich-text-editor.tsx` — `immediatelyRender: false` ; activer **`shouldRerenderOnTransaction: false`** (quick win perf TipTap 2.5) ; **drag handle / menu bloc** via **`@tiptap/extension-drag-handle-react`** (spec officielle — pas de double plugin `DragHandleExtension` + composant React, pas de repositionnement maison) ; poignée dans **colonne gutter fixe** du wrapper (padding + `getReferencedVirtualElement`), pas sur le bord des listes/numéros ; CSS : **pas `opacity:0` sur `.drag-handle`** (visibilité gérée par le plugin) ; config/callbacks **stables hors composant** ; fondation blocs : `tiptap-unique-id-extension.ts` / **`data-id` persisté à la sauvegarde** (références « Copier la référence ») ; **Smart Paste** : `lib/editor/smart-paste-extension.ts` ; **peek split** note source : `lib/note-peek-sync.ts` + `note-editor-split-peek.tsx` ; **US-4 `structuredViewBlock`** (`tiptap-structured-view-block-extension.tsx`, `structured-view-block-embed.tsx`) : **dual-mode** — base locale autonome par défaut (`/database`, `/vue`, `isLocal: true`) + option « Lier à un carnet » (Structured Views) ; i18n `structuredViewBlock.*` ; **rejeté** : ancien `databaseBlock` « Auteurs & Œuvres » et spec embed-only `docs/story-nextgen-editor-us4-redesign.md` ; epic active `docs/story-nextgen-editor.md` — priorité **PERF > NEXTGEN > UX > MOBILE > MARKDOWN**.
|
||||
- Sync mutations notes entre composants : `memento-note/lib/note-change-sync.ts` (`emitNoteChange`, événement `NOTE_CHANGE_EVENT`).
|
||||
- Roadmap / écart prototype vs prod : Web Clipper — **`ClipperSimulator.tsx` = référence design uniquement** (pas de simulateur en prod) ; extension **`memento-note/extension/`** v0.3 **Side Panel** (clip page/sélection/lien ; popup Chrome se ferme au clic page — Side Panel pour la sélection) ; i18n extension **15 langues** (`_locales/`, détection locale navigateur ; script `extension/i18n/generate-translations.cjs`) ; **`host_permissions`** incl. LAN ; **URL serveur configurable en dev**, adresse prod figée en release ; cookies/session alignés avec l'instance cible ; **Flashcards IA SM-2 livrées** : `/revision`, `/api/flashcards/*`, génération depuis l'éditeur (GraduationCap) — réf. prototype `RevisionView.tsx` ; **Structured Views partiellement livrées** : schéma par carnet, Table/Kanban, champs partagés et valeurs par note (`/home` + toolbar carnet) — **suivi de tâches par carnet via Kanban structuré** (pas de vue agrégée Notes/Tâches sur la home ; cases à cocher inline dans les notes) ; **Living Blocks partiellement livrées** : `data-id`, Smart Paste, nœud `liveBlock`, détacher/supprimer, peek split — **US-NEXTGEN-EDITOR** en cours (`docs/story-nextgen-editor.md`, **US-TEMPORAL reporté**) ; encore en gap : transclusion bidirectionnelle complète, graphe knowledge enrichi (`GraphKnowledgeMap.tsx`), **insights sémantiques** (`InsightsView.tsx`, **`/insights` ≠ `/graph`**) ; publication **Chrome Web Store** : icônes 16/48/128, privacy policy, `host_permissions` prod restreints vs build dev ; **Wizards** : `NotebookOrganizerDialog` (tags/doublons) branché via bouton "Tags IA" dans `home-client.tsx` — `StructuredViewsWizard` encore **orphelin** (pas de point d'entrée UI) ; **Publication web** (`note-editor-toolbar.tsx`) : deux modes — simple (copie directe) + IA (2-3 templates, reformulation adaptée au contenu, KaTeX pour équations, images incluses) — quota IA consommé uniquement sur publication IA.
|
||||
- Sync mutations notes entre composants : `memento-note/lib/note-change-sync.ts` (`emitNoteChange`, événement `NOTE_CHANGE_EVENT`) ; tracking quotas IA : événement `ai-usage-changed` (window) — doit être dispatché depuis **tous** les points d'appel IA (recherche sémantique, auto-tag, auto-title, chat, reformulation, analyse carnet, etc.) ; UI quotas : `usage-meter.tsx` (polling 5s + écoute événement).
|
||||
- Roadmap / écart prototype vs prod : Web Clipper — **`ClipperSimulator.tsx` = référence design uniquement** (pas de simulateur en prod) ; extension **`memento-note/extension/`** v0.3 **Side Panel** (clip page/sélection/lien ; popup Chrome se ferme au clic page — Side Panel pour la sélection) ; i18n extension **15 langues** (`_locales/`, détection locale navigateur ; script `extension/i18n/generate-translations.cjs`) ; **`host_permissions`** incl. LAN ; **URL serveur configurable en dev**, adresse prod figée en release ; cookies/session alignés avec l'instance cible ; **Flashcards IA SM-2 livrées** : `/revision`, `/api/flashcards/*`, génération depuis l'éditeur (GraduationCap) — réf. prototype `RevisionView.tsx` ; **Structured Views partiellement livrées** : schéma par carnet, Table/Kanban, champs partagés et valeurs par note (`/home` + toolbar carnet) — **suivi de tâches par carnet via Kanban structuré** (pas de vue agrégée Notes/Tâches sur la home ; cases à cocher inline dans les notes) ; **Living Blocks partiellement livrées** : `data-id`, Smart Paste, nœud `liveBlock`, détacher/supprimer, peek split — **US-NEXTGEN-EDITOR** en cours (`docs/story-nextgen-editor.md`, **US-TEMPORAL reporté**) ; encore en gap : transclusion bidirectionnelle complète, graphe knowledge enrichi (`GraphKnowledgeMap.tsx`), **insights sémantiques** (`InsightsView.tsx`, **`/insights` ≠ `/graph`**) ; publication **Chrome Web Store** : icônes 16/48/128, privacy policy, `host_permissions` prod restreints vs build dev ; **Wizards** : `NotebookOrganizerDialog` (tags/doublons) branché via bouton "Tags IA" dans `home-client.tsx` — `StructuredViewsWizard` encore **orphelin** (pas de point d'entrée UI) ; **Publication web** (`note-editor-toolbar.tsx`) : deux modes — simple (copie directe) + IA (2-3 templates, reformulation adaptée au contenu, KaTeX pour équations, images incluses) — quota IA consommé uniquement sur publication IA ; **champs DB publication** sur modèle `Note` : `publicSlug` (pas `publishedSlug`), `publishedContent` (pas `publishedHtml`) — `publishMode` est paramètre API uniquement (`mode: 'simple' | 'ai'`), **pas** un champ en base.
|
||||
|
||||
@@ -35,14 +35,14 @@
|
||||
# - Dev moves story to 'review', then runs code-review (fresh context, different LLM recommended)
|
||||
|
||||
generated: 2026-05-14T16:06:50Z
|
||||
last_updated: 2026-05-23T20:03:48Z
|
||||
last_updated: 2026-06-28T16:45:00Z
|
||||
project: Memento
|
||||
project_key: NOKEY
|
||||
tracking_system: file-system
|
||||
story_location: docs
|
||||
|
||||
development_status:
|
||||
epic-3: in-progress
|
||||
epic-3: done
|
||||
3-1-freemium-quota-tracking: done
|
||||
3-2-custom-llm-router: done
|
||||
3-3-smart-routing-fallback: done
|
||||
@@ -50,7 +50,7 @@ development_status:
|
||||
3-5-secure-byok-management: done
|
||||
3-6-stripe-subscription-tiers: done
|
||||
epic-3-retrospective: optional
|
||||
epic-4: in-progress
|
||||
epic-4: done
|
||||
4-1-gdpr-cookie-consent: done
|
||||
4-2-gdpr-right-to-be-forgotten: done
|
||||
4-3-data-portability: done
|
||||
@@ -58,11 +58,12 @@ development_status:
|
||||
4-5-eu-data-residency: done
|
||||
4-6-sso-saml-audit-logging: done
|
||||
epic-4-retrospective: optional
|
||||
epic-5: in-progress
|
||||
epic-5: done
|
||||
5-1-nextgen-editor: done
|
||||
epic-5-retrospective: optional
|
||||
|
||||
# Epic 6 — Croissance & Activation (PLG) — ajouté 2026-05-29
|
||||
epic-6: in-progress
|
||||
epic-6: done
|
||||
6-1-onboarding-activation: done # story-onboarding-activation.md
|
||||
6-2-markdown-roundtrip: done # brief-markdown-roundtrip.md
|
||||
6-3-brainstorm-canvas-finalize: done # story: 6-3-brainstorm-canvas-finalize.md
|
||||
|
||||
@@ -18,7 +18,10 @@ import {
|
||||
AlertCircle,
|
||||
ChevronRight,
|
||||
Database,
|
||||
ArrowRight,
|
||||
} from 'lucide-react'
|
||||
import { toast } from 'sonner'
|
||||
import Link from 'next/link'
|
||||
|
||||
interface Note {
|
||||
id: string
|
||||
@@ -199,6 +202,12 @@ export default function InsightsPage() {
|
||||
|
||||
if (res.ok) {
|
||||
const data = await res.json()
|
||||
const clusterCount = data.clusters?.length || 0
|
||||
if (clusterCount === 0) {
|
||||
toast.info(t('insightsView.analysisNoClusters'))
|
||||
} else {
|
||||
toast.success(t('insightsView.analysisSuccess', { count: clusterCount }))
|
||||
}
|
||||
const clustersWithColors = (data.clusters || []).map((c: Cluster, i: number) => ({
|
||||
...c,
|
||||
id: c.clusterId.toString(),
|
||||
@@ -225,6 +234,7 @@ export default function InsightsPage() {
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error running analysis:', error)
|
||||
toast.error(t('insightsView.analysisFailed'))
|
||||
} finally {
|
||||
setIsCalculating(false)
|
||||
}
|
||||
@@ -253,6 +263,12 @@ export default function InsightsPage() {
|
||||
<p className="text-[10px] text-concrete tracking-[0.25em] uppercase font-bold">
|
||||
{t('insightsView.subtitle')}
|
||||
</p>
|
||||
<div className="flex items-center gap-1.5 mt-1.5 text-[10px] text-concrete">
|
||||
<span>{t('insightsView.semanticGraphLegend')}</span>
|
||||
<Link href="/graph" className="inline-flex items-center gap-0.5 text-ochre hover:underline font-medium">
|
||||
{t('insightsView.openGraphMap')} <ArrowRight size={9} />
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="flex items-center justify-between sm:justify-end gap-3">
|
||||
@@ -324,7 +340,9 @@ export default function InsightsPage() {
|
||||
{t('insightsView.emptyTitle')}
|
||||
</h3>
|
||||
<p className="text-sm text-concrete leading-relaxed mb-6">
|
||||
{t('insightsView.emptyDescription')}
|
||||
{embeddingStats && embeddingStats.total < 10
|
||||
? t('insightsView.emptyNeedMoreNotes', { count: 10 - embeddingStats.total })
|
||||
: t('insightsView.emptyDescription')}
|
||||
</p>
|
||||
<button
|
||||
onClick={performAnalysis}
|
||||
@@ -378,6 +396,9 @@ export default function InsightsPage() {
|
||||
onNoteSelect={handleNoteClick}
|
||||
selectedClusterId={selectedClusterId}
|
||||
onClusterSelect={setSelectedClusterId}
|
||||
untitledLabel={t('insightsView.unknownNote')}
|
||||
resetFocusLabel={t('insightsView.resetFocus')}
|
||||
fitViewLabel={t('insightsView.fitGraphView')}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -508,22 +529,22 @@ export default function InsightsPage() {
|
||||
<div className="flex items-center gap-2">
|
||||
<Sliders size={15} className="text-ochre" />
|
||||
<h4 className="text-[11px] font-black uppercase tracking-[0.2em] text-ink dark:text-dark-ink">
|
||||
{t('insightsView.clusters.title')}
|
||||
{t('insightsView.recalcSystem.title')}
|
||||
</h4>
|
||||
</div>
|
||||
<span className="flex items-center gap-1 text-[9.5px] font-bold text-emerald-500 uppercase">
|
||||
<CheckCircle2 size={11} /> {t('insightsView.resync')}
|
||||
<CheckCircle2 size={11} /> {t('insightsView.recalcSystem.statusSynced')}
|
||||
</span>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-4 pt-1">
|
||||
<div className="space-y-1">
|
||||
<span className="text-[9px] text-concrete block">{t('insightsView.mapping')}</span>
|
||||
<span className="text-[9px] text-concrete block">{t('insightsView.recalcSystem.scheduledCron')}</span>
|
||||
<p className="text-xs text-ink dark:text-dark-ink font-semibold flex items-center gap-1.5">
|
||||
<Clock size={12} className="opacity-50" /> 04:00
|
||||
</p>
|
||||
</div>
|
||||
<div className="space-y-1">
|
||||
<span className="text-[9px] text-concrete block">{t('insightsView.resync')}</span>
|
||||
<span className="text-[9px] text-concrete block">{t('insightsView.recalcSystem.lastSync')}</span>
|
||||
<p className="text-xs text-ink dark:text-dark-ink font-bold font-mono">
|
||||
{lastSyncTime || '—'}
|
||||
</p>
|
||||
@@ -613,6 +634,7 @@ export default function InsightsPage() {
|
||||
{t('insightsView.bridgeNotes.title')}
|
||||
</h3>
|
||||
</div>
|
||||
<p className="text-[10px] text-concrete italic px-1 -mt-2 leading-relaxed">{t('insightsView.tipBridgeNotes')}</p>
|
||||
<div className="space-y-3">
|
||||
{bridgeList.map(bridge => (
|
||||
<motion.div
|
||||
@@ -672,6 +694,7 @@ export default function InsightsPage() {
|
||||
{t('insightsView.suggestions.title')}
|
||||
</h3>
|
||||
</div>
|
||||
<p className="text-[10px] text-concrete italic px-1 -mt-2 leading-relaxed">{t('insightsView.tipSuggestions')}</p>
|
||||
<div className="space-y-4">
|
||||
{suggestions.map(s => (
|
||||
<div
|
||||
|
||||
@@ -31,6 +31,9 @@ interface NetworkGraphProps {
|
||||
onNoteSelect: (id: string) => void
|
||||
selectedClusterId?: string | null
|
||||
onClusterSelect?: (id: string | null) => void
|
||||
untitledLabel?: string
|
||||
resetFocusLabel?: string
|
||||
fitViewLabel?: string
|
||||
}
|
||||
|
||||
export function NetworkGraph({
|
||||
@@ -39,7 +42,10 @@ export function NetworkGraph({
|
||||
bridgeNotes,
|
||||
onNoteSelect,
|
||||
selectedClusterId = null,
|
||||
onClusterSelect
|
||||
onClusterSelect,
|
||||
untitledLabel = 'Untitled',
|
||||
resetFocusLabel = 'Reset focus',
|
||||
fitViewLabel = 'Fit view',
|
||||
}: NetworkGraphProps) {
|
||||
const svgRef = useRef<SVGSVGElement>(null)
|
||||
const containerRef = useRef<HTMLDivElement>(null)
|
||||
@@ -268,7 +274,7 @@ export function NetworkGraph({
|
||||
.attr('fill', '#4b5563')
|
||||
.attr('class', 'dark:fill-zinc-300 font-sans pointer-events-none')
|
||||
.text(d => {
|
||||
const title = d.title || 'Sans titre'
|
||||
const title = d.title || untitledLabel
|
||||
return title.length > 20 ? title.substring(0, 18) + '...' : title
|
||||
})
|
||||
|
||||
@@ -368,7 +374,7 @@ export function NetworkGraph({
|
||||
onClick={() => onClusterSelect?.(null)}
|
||||
className="px-3 py-1.5 rounded-full border border-rose-200 bg-rose-50 dark:bg-rose-950/20 dark:border-rose-900/40 text-rose-500 text-[9px] font-bold uppercase tracking-wider hover:bg-rose-100 dark:hover:bg-rose-950/30 transition-all shadow-sm"
|
||||
>
|
||||
Réinitialiser focus
|
||||
{resetFocusLabel}
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "رؤى دلالية",
|
||||
"subtitle": "اكتشف البنية المخفية لمعرفتك",
|
||||
"resync": "إعادة مزامنة الشبكة",
|
||||
"mapping": "جاري الربط…",
|
||||
"loading": "جاري تحميل الملاحظات…",
|
||||
"mappingTitle": "جاري رسم خريطة معرفتك…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "بدء التحليل الدلالي",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "فقط {indexed} من أصل {total} ملاحظة مفهرسة للذكاء الاصطناعي.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "فتح خريطة الروابط",
|
||||
"analysisFailed": "فشل التحليل. تحقق من إعدادات الذكاء الاصطناعي.",
|
||||
"analysisSuccess": "اكتمل التحليل: تم اكتشاف {count} موضوع.",
|
||||
"analysisNoClusters": "لم يتم اكتشاف موضوعات بعد.",
|
||||
"staleResults": "عرض نتائج آخر تحليل.",
|
||||
"semanticGraphLegend": "نظرة عامة على الموضوعات (وليست خريطة الروابط)",
|
||||
"fitGraphView": "ملاءمة العرض",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "ملاحظات",
|
||||
"clusterFallback": "موضوع {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "اكتشف مجموعات معرفتك",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "المجموعات",
|
||||
"bridgeNotes": "ملاحظات جسر"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "النتيجة: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "ربط {clusterA} و {clusterB}",
|
||||
"emptyTitle": "لا توجد اقتراحات",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "إنشاء ملاحظة جسر"
|
||||
},
|
||||
"unknownNote": "بدون عنوان",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "الرسم البياني",
|
||||
"viewDashboard": "لوحة التحكم",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "غير متصل",
|
||||
"empty": "جميع المجموعات مترابطة!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "تركيز على المجموعة",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "إغلاق"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "جسر/جسور",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "نظام إعادة الحساب",
|
||||
"statusSynced": "متزامن",
|
||||
"scheduledCron": "مجدول",
|
||||
"lastSync": "آخر مزامنة"
|
||||
},
|
||||
"resetFocus": "إعادة ضبط التركيز"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "Semantische Einblicke",
|
||||
"subtitle": "Entdecke die verborgene Architektur deines Wissens",
|
||||
"resync": "Netzwerk neu syncen",
|
||||
"mapping": "Kartierung…",
|
||||
"loading": "Deine Notizen werden geladen…",
|
||||
"mappingTitle": "Dein Wissen wird kartiert…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "Semantische Analyse starten",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "Nur {indexed} von {total} Notizen sind für KI indiziert.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "Link-Map öffnen",
|
||||
"analysisFailed": "Analyse fehlgeschlagen. Überprüfe deine KI-Einstellungen.",
|
||||
"analysisSuccess": "Analyse abgeschlossen: {count} Themen erkannt.",
|
||||
"analysisNoClusters": "Noch keine Themen erkannt.",
|
||||
"staleResults": "Zeigt Ergebnisse der letzten Analyse.",
|
||||
"semanticGraphLegend": "Themenüberblick (nicht die Link-Map)",
|
||||
"fitGraphView": "Ansicht anpassen",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "Notizen",
|
||||
"clusterFallback": "Thema {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "Entdecke deine Wissenscluster",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "Cluster",
|
||||
"bridgeNotes": "Brücken-Notizen"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "Score: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "Verbindet {clusterA} & {clusterB}",
|
||||
"emptyTitle": "Keine Verbindungsvorschläge",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "Brücken-Notiz erstellen"
|
||||
},
|
||||
"unknownNote": "Ohne Titel",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "Graph",
|
||||
"viewDashboard": "Dashboard",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "Nicht verbunden",
|
||||
"empty": "Alle Cluster sind verbunden!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "Cluster-Fokus aktiv",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "Schließen"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "Brücke(n)",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "Neuberechnungssystem",
|
||||
"statusSynced": "Synchronisiert",
|
||||
"scheduledCron": "Geplant",
|
||||
"lastSync": "Letzte Sync"
|
||||
},
|
||||
"resetFocus": "Fokus zurücksetzen"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3525,7 +3525,14 @@
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking."
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "Recalculation system",
|
||||
"statusSynced": "Synced",
|
||||
"scheduledCron": "Scheduled",
|
||||
"lastSync": "Last sync"
|
||||
},
|
||||
"resetFocus": "Reset focus"
|
||||
},
|
||||
"consent": {
|
||||
"banner": {
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "Insights semánticos",
|
||||
"subtitle": "Descubre la arquitectura oculta de tu conocimiento",
|
||||
"resync": "Resincronizar red",
|
||||
"mapping": "Mapeando…",
|
||||
"loading": "Cargando tus notas…",
|
||||
"mappingTitle": "Mapeando tu conocimiento…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "Iniciar análisis semántico",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "Solo {indexed} de {total} notas están indexadas para IA.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "Abrir mapa de enlaces",
|
||||
"analysisFailed": "Análisis fallido. Revisa tu configuración de IA.",
|
||||
"analysisSuccess": "Análisis completo: {count} temas detectados.",
|
||||
"analysisNoClusters": "Aún no se detectaron temas.",
|
||||
"staleResults": "Mostrando resultados del último análisis.",
|
||||
"semanticGraphLegend": "Vista general de temas (no el mapa de enlaces)",
|
||||
"fitGraphView": "Ajustar vista",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "notas",
|
||||
"clusterFallback": "Tema {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "Descubre tus clústeres de conocimiento",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "Clústeres",
|
||||
"bridgeNotes": "Notas puente"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "Puntaje: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "Conectando {clusterA} & {clusterB}",
|
||||
"emptyTitle": "Sin sugerencias de conexión",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "Crear nota puente"
|
||||
},
|
||||
"unknownNote": "Sin título",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "Grafo",
|
||||
"viewDashboard": "Panel",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "No conectado",
|
||||
"empty": "¡Todos tus clústeres están interconectados!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "Foco de clúster activo",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "Cerrar"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "puente(s)",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "Sistema de recálculo",
|
||||
"statusSynced": "Sincronizado",
|
||||
"scheduledCron": "Programado",
|
||||
"lastSync": "Última sync"
|
||||
},
|
||||
"resetFocus": "Restablecer enfoque"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2959,5 +2959,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "بینشهای معنایی",
|
||||
"subtitle": "معماری پنهان دانش خود را کشف کنید",
|
||||
"resync": "همگامسازی مجدد شبکه",
|
||||
"mapping": "در حال نقشهبرداری…",
|
||||
"loading": "در حال بارگذاری یادداشتها…",
|
||||
"mappingTitle": "در حال نقشهبرداری دانش شما…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "شروع تحلیل معنایی",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "فقط {indexed} از {total} یادداشت برای هوش مصنوعی نمایهسازی شدهاند.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "باز کردن نقشه پیوندها",
|
||||
"analysisFailed": "تحلیل ناموفق. تنظیمات هوش مصنوعی را بررسی کنید.",
|
||||
"analysisSuccess": "تحلیل کامل شد: {count} موضوع شناسایی شد.",
|
||||
"analysisNoClusters": "هنوز موضوعی شناسایی نشده است.",
|
||||
"staleResults": "نمایش نتایج آخرین تحلیل.",
|
||||
"semanticGraphLegend": "نمای کلی موضوعات (نه نقشه پیوندها)",
|
||||
"fitGraphView": "تنظیم نما",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "یادداشت",
|
||||
"clusterFallback": "موضوع {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "کلاسترهای دانش خود را کشف کنید",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "کلاسترها",
|
||||
"bridgeNotes": "یادداشتهای پل"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "امتیاز: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "اتصال {clusterA} و {clusterB}",
|
||||
"emptyTitle": "بدون پیشنهاد",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "ایجاد یادداشت پل"
|
||||
},
|
||||
"unknownNote": "بدون عنوان",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "گراف",
|
||||
"viewDashboard": "داشبورد",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "متصل نیست",
|
||||
"empty": "همه کلاسترها به هم متصلاند!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "تمرکز روی کلاستر فعال",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "بستن"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "پل",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "سیستم محاسبه مجدد",
|
||||
"statusSynced": "همگامشده",
|
||||
"scheduledCron": "برنامهریزیشده",
|
||||
"lastSync": "آخرین همگامسازی"
|
||||
},
|
||||
"resetFocus": "بازنشانی تمرکز"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3529,7 +3529,14 @@
|
||||
"tipSuggestions": "Ces thèmes n'ont pas encore de note qui les relie. L'IA te propose une idée de départ. Clique sur « Créer la note pont » pour la rédiger et l'ouvrir dans l'éditeur.",
|
||||
"tipSuggestionsAction": "Clique sur « Créer la note pont » pour créer la note et l'ouvrir immédiatement.",
|
||||
"tipIsolated": "Ces thèmes sont isolés : aucune note ne les relie aux autres. Peut-être explores-tu une idée encore fragile ? Une note de synthèse suffirait à créer le lien.",
|
||||
"tipIsolatedAction": "Ces thèmes n'ont aucune note qui les relie au reste de ta réflexion."
|
||||
"tipIsolatedAction": "Ces thèmes n'ont aucune note qui les relie au reste de ta réflexion.",
|
||||
"recalcSystem": {
|
||||
"title": "Système de recalcul",
|
||||
"statusSynced": "Synchronisé",
|
||||
"scheduledCron": "CRON planifié",
|
||||
"lastSync": "Dernière synchro"
|
||||
},
|
||||
"resetFocus": "Réinitialiser focus"
|
||||
},
|
||||
"consent": {
|
||||
"banner": {
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "सिमेंटिक इनसाइट्स",
|
||||
"subtitle": "अपने ज्ञान की छिपी संरचना खोजें",
|
||||
"resync": "नेटवर्क पुनः सिंक करें",
|
||||
"mapping": "मैपिंग…",
|
||||
"loading": "नोट लोड हो रहे हैं…",
|
||||
"mappingTitle": "आपका ज्ञान मैप किया जा रहा है…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "सिमेंटिक विश्लेषण शुरू करें",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "केवल {indexed}/{total} नोट्स AI के लिए अनुक्रमित हैं।",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "लिंक मानचित्र खोलें",
|
||||
"analysisFailed": "विश्लेषण विफल। AI सेटिंग्स जांचें।",
|
||||
"analysisSuccess": "विश्लेषण पूर्ण: {count} विषय मिले।",
|
||||
"analysisNoClusters": "अभी कोई विषय नहीं मिला।",
|
||||
"staleResults": "पिछले विश्लेषण के परिणाम दिख रहे हैं।",
|
||||
"semanticGraphLegend": "विषय अवलोकन (लिंक मानचित्र नहीं)",
|
||||
"fitGraphView": "दृश्य फिट करें",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "नोट्स",
|
||||
"clusterFallback": "विषय {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "अपने ज्ञान क्लस्टर खोजें",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "क्लस्टर",
|
||||
"bridgeNotes": "ब्रिज नोट्स"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "स्कोर: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "{clusterA} और {clusterB} जोड़ें",
|
||||
"emptyTitle": "कोई सुझाव नहीं",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "ब्रिज नोट बनाएं"
|
||||
},
|
||||
"unknownNote": "बिना शीर्षक",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "ग्राफ",
|
||||
"viewDashboard": "डैशबोर्ड",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "कनेक्टेड नहीं",
|
||||
"empty": "सभी क्लस्टर जुड़े हुए हैं!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "क्लस्टर फोकस सक्रिय",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "बंद करें"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "ब्रिज",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "पुनर्गणना प्रणाली",
|
||||
"statusSynced": "सिंक्रनाइज़्ड",
|
||||
"scheduledCron": "अनुसूचित",
|
||||
"lastSync": "अंतिम सिंक"
|
||||
},
|
||||
"resetFocus": "फोकस रीसेट करें"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "Insights semantici",
|
||||
"subtitle": "Scopri l'architettura nascosta della tua conoscenza",
|
||||
"resync": "Risincronizza rete",
|
||||
"mapping": "Mappatura…",
|
||||
"loading": "Caricamento delle note…",
|
||||
"mappingTitle": "Mappatura della tua conoscenza…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "Avvia analisi semantica",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "Solo {indexed} di {total} note indicizzate per IA.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "Apri mappa link",
|
||||
"analysisFailed": "Analisi fallita. Controlla le impostazioni IA.",
|
||||
"analysisSuccess": "Analisi completata: {count} temi rilevati.",
|
||||
"analysisNoClusters": "Nessun tema rilevato.",
|
||||
"staleResults": "Risultati dell'ultima analisi.",
|
||||
"semanticGraphLegend": "Panoramica temi (non la mappa link)",
|
||||
"fitGraphView": "Adatta vista",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "note",
|
||||
"clusterFallback": "Tema {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "Scopri i tuoi cluster di conoscenza",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "Cluster",
|
||||
"bridgeNotes": "Note ponte"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "Punteggio: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "Collega {clusterA} & {clusterB}",
|
||||
"emptyTitle": "Nessun suggerimento",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "Crea nota ponte"
|
||||
},
|
||||
"unknownNote": "Senza titolo",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "Grafo",
|
||||
"viewDashboard": "Pannello",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "Non connesso",
|
||||
"empty": "Tutti i cluster sono interconnessi!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "Focus cluster attivo",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "Chiudi"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "ponte/i",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "Sistema di ricalcolo",
|
||||
"statusSynced": "Sincronizzato",
|
||||
"scheduledCron": "Programmato",
|
||||
"lastSync": "Ultima sync"
|
||||
},
|
||||
"resetFocus": "Reimposta focus"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "セマンティックインサイト",
|
||||
"subtitle": "知識の隠された構造を発見",
|
||||
"resync": "ネットワークを再同期",
|
||||
"mapping": "マッピング中…",
|
||||
"loading": "ノート読み込み中…",
|
||||
"mappingTitle": "知識をマッピング中…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "セマンティック分析を開始",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "AI索引付き:{indexed}/{total}ノートのみ。",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "リンクマップを開く",
|
||||
"analysisFailed": "分析失敗。AI設定を確認。",
|
||||
"analysisSuccess": "分析完了:{count}テーマ検出。",
|
||||
"analysisNoClusters": "テーマ未検出。",
|
||||
"staleResults": "前回分析の結果を表示。",
|
||||
"semanticGraphLegend": "テーマ概覧(リンクマップではない)",
|
||||
"fitGraphView": "全体表示",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "ノート",
|
||||
"clusterFallback": "テーマ {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "知識クラスターを発見",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "クラスター",
|
||||
"bridgeNotes": "ブリッジノート"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "スコア:{score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "{clusterA}と{clusterB}を接続",
|
||||
"emptyTitle": "提案なし",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "ブリッジノート作成"
|
||||
},
|
||||
"unknownNote": "無題",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "グラフ",
|
||||
"viewDashboard": "ダッシュボード",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "未接続",
|
||||
"empty": "全クラスター接続済み!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "クラスターフォーカス中",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "閉じる"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "ブリッジ",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "再計算システム",
|
||||
"statusSynced": "同期済み",
|
||||
"scheduledCron": "予定済み",
|
||||
"lastSync": "前回同期"
|
||||
},
|
||||
"resetFocus": "フォーカス解除"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "시맨틱 인사이트",
|
||||
"subtitle": "지식의 숨겨진 구조 발견",
|
||||
"resync": "네트워크 재동기화",
|
||||
"mapping": "매핑 중…",
|
||||
"loading": "노트 로딩 중…",
|
||||
"mappingTitle": "지식 매핑 중…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "시맨틱 분석 시작",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "AI 인덱싱: {indexed}/{total}노트만.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "링크 맵 열기",
|
||||
"analysisFailed": "분석 실패. AI 설정을 확인하세요.",
|
||||
"analysisSuccess": "분석 완료: {count}개 테마 감지.",
|
||||
"analysisNoClusters": "아직 테마가 없습니다.",
|
||||
"staleResults": "마지막 분석 결과 표시 중.",
|
||||
"semanticGraphLegend": "테마 개요 (링크 맵 아님)",
|
||||
"fitGraphView": "화면에 맞춤",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "노트",
|
||||
"clusterFallback": "테마 {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "지식 클러스터 발견",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "클러스터",
|
||||
"bridgeNotes": "브리지 노트"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "점수: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "{clusterA}와 {clusterB} 연결",
|
||||
"emptyTitle": "제안 없음",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "브리지 노트 만들기"
|
||||
},
|
||||
"unknownNote": "제목 없음",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "그래프",
|
||||
"viewDashboard": "대시보드",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "연결 안 됨",
|
||||
"empty": "모든 클러스터 연결됨!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "클러스터 포커스 활성",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "닫기"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "브리지",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "재계산 시스템",
|
||||
"statusSynced": "동기화됨",
|
||||
"scheduledCron": "예약됨",
|
||||
"lastSync": "마지막 동기화"
|
||||
},
|
||||
"resetFocus": "포커스 해제"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "Semantische inzichten",
|
||||
"subtitle": "Ontdek de verborgen architectuur van je kennis",
|
||||
"resync": "Netwerk hersynchroniseren",
|
||||
"mapping": "In kaart brengen…",
|
||||
"loading": "Notizen laden…",
|
||||
"mappingTitle": "Je kennis in kaart brengen…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "Semantische analyse starten",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "Slechts {indexed} van {total} notities geïndexeerd voor AI.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "Linkkaart openen",
|
||||
"analysisFailed": "Analyse mislukt. Controleer je AI-instellingen.",
|
||||
"analysisSuccess": "Analyse voltooid: {count} thema's gevonden.",
|
||||
"analysisNoClusters": "Nog geen thema's gedetecteerd.",
|
||||
"staleResults": "Resultaten van de laatste analyse.",
|
||||
"semanticGraphLegend": "Themoverzicht (niet de linkkaart)",
|
||||
"fitGraphView": "Weergave aanpassen",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "notities",
|
||||
"clusterFallback": "Thema {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "Ontdek je kennisclusters",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "Clusters",
|
||||
"bridgeNotes": "Brugnotities"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "Score: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "Verbindt {clusterA} & {clusterB}",
|
||||
"emptyTitle": "Geen suggesties",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "Brugnotitie maken"
|
||||
},
|
||||
"unknownNote": "Zonder titel",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "Graaf",
|
||||
"viewDashboard": "Dashboard",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "Niet verbonden",
|
||||
"empty": "Alle clusters zijn verbonden!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "Clusterfocus actief",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "Sluiten"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "brug(en)",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "Herberekeningssysteem",
|
||||
"statusSynced": "Gesynchroniseerd",
|
||||
"scheduledCron": "Gepland",
|
||||
"lastSync": "Laatste sync"
|
||||
},
|
||||
"resetFocus": "Focus resetten"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "Insighty semantyczne",
|
||||
"subtitle": "Odkryj ukrytą architekturę swojej wiedzy",
|
||||
"resync": "Ponowna synchronizacja",
|
||||
"mapping": "Mapowanie…",
|
||||
"loading": "Ładowanie notatek…",
|
||||
"mappingTitle": "Mapowanie Twojej wiedzy…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "Rozpocznij analizę semantyczną",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "Tylko {indexed} z {total} notatek zaindeksowanych dla AI.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "Otwórz mapę linków",
|
||||
"analysisFailed": "Analiza nieudana. Sprawdź ustawienia AI.",
|
||||
"analysisSuccess": "Analiza zakończona: wykryto {count} tematów.",
|
||||
"analysisNoClusters": "Nie wykryto jeszcze tematów.",
|
||||
"staleResults": "Wyniki ostatniej analizy.",
|
||||
"semanticGraphLegend": "Przegląd tematów (nie mapa linków)",
|
||||
"fitGraphView": "Dopasuj widok",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "notatki",
|
||||
"clusterFallback": "Temat {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "Odkryj swoje klastry wiedzy",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "Klastry",
|
||||
"bridgeNotes": "Notatki-pomosty"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "Wynik: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "Łączy {clusterA} & {clusterB}",
|
||||
"emptyTitle": "Brak sugestii",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "Utwórz notatkę-pomost"
|
||||
},
|
||||
"unknownNote": "Bez tytułu",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "Graf",
|
||||
"viewDashboard": "Panel",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "Niepowiązany",
|
||||
"empty": "Wszystkie klastry są połączone!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "Fokus klastra aktywny",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "Zamknij"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "most(ów)",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "System przeliczania",
|
||||
"statusSynced": "Zsynchronizowano",
|
||||
"scheduledCron": "Zaplanowano",
|
||||
"lastSync": "Ostatnia sync"
|
||||
},
|
||||
"resetFocus": "Resetuj fokus"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "Insights semânticos",
|
||||
"subtitle": "Descobre a arquitetura oculta do teu conhecimento",
|
||||
"resync": "Ressincronizar rede",
|
||||
"mapping": "Mapeando…",
|
||||
"loading": "A carregar notas…",
|
||||
"mappingTitle": "Mapeando o teu conhecimento…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "Iniciar análise semântica",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "Apenas {indexed} de {total} notas indexadas para IA.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "Abrir mapa de links",
|
||||
"analysisFailed": "Análise falhou. Verifica as configurações de IA.",
|
||||
"analysisSuccess": "Análise completa: {count} temas detectados.",
|
||||
"analysisNoClusters": "Nenhum tema detectado.",
|
||||
"staleResults": "Resultados da última análise.",
|
||||
"semanticGraphLegend": "Visão geral de temas (não o mapa de links)",
|
||||
"fitGraphView": "Ajustar vista",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "notas",
|
||||
"clusterFallback": "Tema {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "Descobre os teus clusters de conhecimento",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "Clusters",
|
||||
"bridgeNotes": "Notas ponte"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "Pontuação: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "Ligar {clusterA} & {clusterB}",
|
||||
"emptyTitle": "Sem sugestões",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "Criar nota ponte"
|
||||
},
|
||||
"unknownNote": "Sem título",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "Grafo",
|
||||
"viewDashboard": "Painel",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "Não conectado",
|
||||
"empty": "Todos os clusters estão interligados!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "Foco de cluster ativo",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "Fechar"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "ponte(s)",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "Sistema de recálculo",
|
||||
"statusSynced": "Sincronizado",
|
||||
"scheduledCron": "Programado",
|
||||
"lastSync": "Última sync"
|
||||
},
|
||||
"resetFocus": "Repor foco"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "Семантические инсайты",
|
||||
"subtitle": "Откройте скрытую архитектуру вашего знания",
|
||||
"resync": "Пересинхронизировать",
|
||||
"mapping": "Картирование…",
|
||||
"loading": "Загрузка заметок…",
|
||||
"mappingTitle": "Картирование вашего знания…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "Запустить семантический анализ",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "Только {indexed} из {total} заметок индексированы для ИИ.",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "Открыть карту связей",
|
||||
"analysisFailed": "Анализ не удался. Проверьте настройки ИИ.",
|
||||
"analysisSuccess": "Анализ завершён: обнаружено {count} тем.",
|
||||
"analysisNoClusters": "Темы пока не обнаружены.",
|
||||
"staleResults": "Результаты последнего анализа.",
|
||||
"semanticGraphLegend": "Обзор тем (не карта связей)",
|
||||
"fitGraphView": "Уместить в экран",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "заметки",
|
||||
"clusterFallback": "Тема {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "Откройте свои кластеры знания",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "Кластеры",
|
||||
"bridgeNotes": "Мосты-заметки"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "Оценка: {score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "Связать {clusterA} & {clusterB}",
|
||||
"emptyTitle": "Нет предложений",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "Создать мост-заметку"
|
||||
},
|
||||
"unknownNote": "Без названия",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "Граф",
|
||||
"viewDashboard": "Панель",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "Не связан",
|
||||
"empty": "Все кластеры связаны!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "Фокус на кластере",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "Закрыть"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "мост(ов)",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "Система пересчёта",
|
||||
"statusSynced": "Синхронизировано",
|
||||
"scheduledCron": "Запланировано",
|
||||
"lastSync": "Последняя sync"
|
||||
},
|
||||
"resetFocus": "Сбросить фокус"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2920,5 +2920,88 @@
|
||||
"copyRefFailed": "Could not copy block reference",
|
||||
"copyRefNoNote": "Save the note before copying a block reference",
|
||||
"copyRefUnsupported": "This block type cannot be referenced yet"
|
||||
},
|
||||
"insightsView": {
|
||||
"title": "语义洞察",
|
||||
"subtitle": "发现知识背后的隐藏架构",
|
||||
"resync": "重新同步网络",
|
||||
"mapping": "映射中…",
|
||||
"loading": "加载笔记中…",
|
||||
"mappingTitle": "正在映射您的知识…",
|
||||
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
|
||||
"analyzeNow": "开始语义分析",
|
||||
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
|
||||
"embeddingsHint": "仅{indexed}/{total}笔记被AI索引。",
|
||||
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
|
||||
"openGraphMap": "打开链接地图",
|
||||
"analysisFailed": "分析失败。请检查AI设置。",
|
||||
"analysisSuccess": "分析完成:检测到{count}个主题。",
|
||||
"analysisNoClusters": "尚未检测到主题。",
|
||||
"staleResults": "显示上次分析的结果。",
|
||||
"semanticGraphLegend": "主题概览(非链接地图)",
|
||||
"fitGraphView": "适应视图",
|
||||
"graphPreviewHint": "Theme overview: the number is how many notes belong here. Hover a dot for the title, click to open. Full list on the right.",
|
||||
"graphMoreNotes": "+{count} more in this theme",
|
||||
"graphNotesLabel": "笔记",
|
||||
"clusterFallback": "主题 {index}",
|
||||
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
|
||||
"emptyTitle": "发现您的知识集群",
|
||||
"emptyDescription": "Click \"Re-sync network\" to analyze your notes and find hidden connections",
|
||||
"stats": {
|
||||
"clusters": "集群",
|
||||
"bridgeNotes": "桥梁笔记"
|
||||
},
|
||||
"clusters": {
|
||||
"title": "Semantic clusters",
|
||||
"notesCount": "{count} notes",
|
||||
"centralNotes": "Central notes",
|
||||
"emptyCluster": "No notes in this cluster"
|
||||
},
|
||||
"bridgeNotes": {
|
||||
"title": "Powerful bridge notes",
|
||||
"score": "分数:{score}%",
|
||||
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
|
||||
},
|
||||
"suggestions": {
|
||||
"title": "Missing links (AI generated)",
|
||||
"bridging": "连接 {clusterA} 和 {clusterB}",
|
||||
"emptyTitle": "暂无建议",
|
||||
"emptyDescription": "All your clusters may already be connected!",
|
||||
"createNote": "创建桥梁笔记"
|
||||
},
|
||||
"unknownNote": "无标题",
|
||||
"viewSplit": "Split",
|
||||
"viewGraph": "图谱",
|
||||
"viewDashboard": "仪表板",
|
||||
"isolatedClusters": {
|
||||
"title": "Isolated clusters ({count})",
|
||||
"badge": "未连接",
|
||||
"empty": "所有集群已互联!"
|
||||
},
|
||||
"focusCluster": {
|
||||
"title": "集群焦点已激活",
|
||||
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
|
||||
"close": "关闭"
|
||||
},
|
||||
"badgeDominant": "Dominant",
|
||||
"bridgeCount": "桥梁",
|
||||
"echoTitle": "You keep returning to this idea",
|
||||
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
|
||||
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
|
||||
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
|
||||
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
|
||||
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
|
||||
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
|
||||
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
|
||||
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
|
||||
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
|
||||
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
|
||||
"recalcSystem": {
|
||||
"title": "重算系统",
|
||||
"statusSynced": "已同步",
|
||||
"scheduledCron": "已计划",
|
||||
"lastSync": "上次同步"
|
||||
},
|
||||
"resetFocus": "重置焦点"
|
||||
}
|
||||
}
|
||||
|
||||
11
skills-lock.json
Normal file
11
skills-lock.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"version": 1,
|
||||
"skills": {
|
||||
"find-skills": {
|
||||
"source": "vercel-labs/skills",
|
||||
"sourceType": "github",
|
||||
"skillPath": "skills/find-skills/SKILL.md",
|
||||
"computedHash": "781bd6d3f9b19f8c9af6b53d8d0e4876d0183841b565db34ca7092ffa412d111"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user