Why:
- Large downloaded batches can outlive the finite remote operation and be suspended before every document reaches the Vault.
- The v1.0 activity contract requires local application to remain distinct from remote-operation reporting.
Changes:
- Add an Obsidian-owned local application activity boundary which reuses Wake Lock policy without incrementing remote activity.
- Retain one boundary through queue processing and the final recovery snapshot, releasing and reacquiring it around suspension.
- Log final snapshot failures, preserve processing results, and cover the lifecycle with focused tests and documentation.
Fills every untranslated key in the Spanish catalogue: coverage goes from
643/1132 to 1131/1132 against `en.yaml`.
- Translate the 488 keys that had no Spanish entry, covering the Config
Doctor, tweak-mismatch resolution, the P2P notes and panes, the Setup
Wizard, the maintenance and patch panels, Garbage Collection V3 and the
migration dialogues.
- Register follows the existing catalogue: informal address, `es-ES`
vocabulary, British-style source wording preserved where it is a proper
noun (Setup URI, Vault, chunk).
- Placeholders (`${...}`), keyword references (`%{...}`) and Markdown
callout syntax are kept byte-identical to the English source.
- Regenerate `messagesJson/es.json` and `combinedMessages.prod.ts` with the
documented `i18n:bake` pipeline.
`obsidianLiveSyncSettingTab.logServerConfigurationCheck` is deliberately left
untranslated: its English value is the key itself, so it looks like a
placeholder rather than a message.
Regenerating the catalogue also normalises three pre-existing entries each in
`ko.json` and `zh.json`, where the committed JSON kept a trailing space before
a newline that YAML cannot represent.
Verified with tsc-check and test:unit.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Continues the source-key migration inside the application boundary introduced
in 1.0.0, where LiveSync owns its catalogue and consumes Commonlib as a
published package.
- Replace hardcoded user-visible strings in the Obsidian UI (Setup Wizard
dialogues, P2P panes, Customisation Sync panes, Global History, the JSON
conflict pane and the remote-configuration menu) with `$msg` calls, keeping
the English source string as the key.
- Wire up strings whose translations already existed in the catalogue but were
still rendered as literals, for example the whole Intro dialogue.
- Add the new entries to `src/common/messagesYAML/en.yaml` and `es.yaml`, then
regenerate `messagesJson/` and `combinedMessages.prod.ts` through the
documented `i18n:bake` pipeline.
- No Commonlib gitlink or catalogue is involved; every change is
LiveSync-owned.
Regenerating the catalogue also normalises three pre-existing entries each in
`ko.json` and `zh.json`, where the committed JSON kept a trailing space before
a newline that YAML cannot represent.
Verified with tsc-check, tsc-check:apps, svelte-check and lint.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Korean coverage was 796 of 1132 keys (70%), so a large part of the UI fell
back to English. Alongside the missing entries, the existing translations
carried a few defects that were visible to users.
Fixes:
- Three messages had lost the `$` from their placeholders, leaving a literal
`{origin}`, `{org}` and `{from}->{to}` on screen, because `$msg()` only
substitutes `${...}`.
- `dialog.yourLanguageAvailable` referenced `%{Display language}`, but the key
is `Display Language`, so the raw token was shown. Corrected to match ja.
- Sixteen onboarding messages ended with the Japanese full stop `。`.
- Four messages hard-coded a particle after a variable (`${measuredSize}가`),
which is ungrammatical for values ending in a consonant. They now use the
paired form `이(가)`, `을(를)`, `(으)로`.
Terminology is now consistent with the Obsidian Korean UI and with the
definitions in docs/terms.md:
- `vault` is 보관함, `device` is 기기, `status bar` is 상태 표시줄.
- `chunk` is 청크 everywhere; the Eden settings had rendered it as 변경 기록
("change record"), which is not what a chunk is.
- `Compaction` is 압축 정리, separating it from `Data Compression` (데이터 압축),
which had shared the same word.
- HTTP `Origin` is 출처; it had been 원점, the geometric origin.
- Six English strings that had mapped to two different Korean strings each are
now unified.
The remaining 336 keys are translated, including the setup wizard outro, the
insecure-chunk and v0.25.6 recovery dialogues, and the database adapter
migration messages.
This ports vrtmrz/livesync-commonlib#79 to this repository, following the
v1.0.0 boundary change that moved application translations here. On top of
the original work, the 17 keys newly introduced in v1.0.0 (the P2P setup
wizard Invitation, OutroNewP2PUser and RebuildEverythingP2P dialogues, and
the moduleCheckRemoteSize notices) are translated as well.
Verified with _tools/checkI18nCoverage.ts (ko: 1132/1132, 0 missing),
tsc --noEmit, and a dev build. Generated resources are committed as produced
by `npm run i18n:bake`; besides the `ko` entries it also trims a stale
trailing space from five es/zh entries in combinedMessages.prod.ts that had
been left behind by the migration.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EtFsro96LHztmoYmRjtfAy
Use the preferred Obsidian element helper and preseed the real-Obsidian scenario before startup. Register the focused test and strengthen revision boundary coverage.