779 Commits
Author SHA1 Message Date
github-actions[bot] d27a5b3725 Releasing 1.0.17 2026-08-23 05:33:35 +00:00
vorotamoroz f09b4c779e Expose P2P transport compatibility profiles 2026-08-21 16:28:42 +00:00
nimulaandClaude Opus 5 f8ee3c8662 i18n: wire the display-language translator into the settings manifest
Commonlib's `getConfig(key, translate?)` and `getConfName(key, translate?)`
default `translate` to `englishMessageTranslator`, and this plug-in never
passed the second argument. Every automatically wired setting therefore
rendered its name and description in English, whatever `displayLanguage` was
set to. Commonlib's own Config Doctor already threads a translator through
`getConfName`, so this only restores the argument which was missing here.

`src/modules/features/SettingDialogue/settingConstants.ts` now re-exports the
names it supplies explicitly and adds thin `getConfig` and `getConfName`
wrappers which default the translator to `translateLiveSyncMessage`. That
reaches all three existing call sites, and therefore the 102 `setAuto` and
`autoWire*` calls across the setting panes, the setup-wizard configuration
summaries, and the externally-modified-setting prompt. Of the 225 distinct
name and description strings in the two manifest tables, 160 are already
catalogue keys with translations; the remaining 65 are not catalogue keys and
pass through unchanged.

`ModuleResolveMismatchedTweaks` used `confName()`, which accepts no
translator, so it gains a local `localisedConfName()` instead. Swapping in
`getConfName()` there would have silently dropped the `statusDisplay()`
suffix, replaced the empty-string fallback for an unknown key with
`${key} (No info)`, and introduced `SettingInformation` as a second source.

English output is unchanged: every catalogue key which contains a space has a
value identical to the key itself, so translating under the default language
is idempotent.

Verified with `npm run check`, `npm run test:unit`, and `npm run build`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 02:17:20 +00:00
github-actions[bot] 98ea2b516a Releasing 1.0.16 2026-08-19 09:13:29 +00:00
vorotamoroz f02470ec5c docs: define independent revision properties 2026-08-19 06:25:00 +00:00
vorotamoroz dc5274df27 fix: persist document history restoration in the database 2026-08-19 06:24:50 +00:00
github-actions[bot] 3d69142a52 Releasing 1.0.15 2026-08-15 15:05:11 +00:00
vorotamoroz 3062d45dc5 Merge pull request #1106 from nimula/i18n/zh-tw-catalogue-coverage
i18n(zh-tw): complete the catalogue coverage
2026-08-15 23:08:40 +09:00
github-actions[bot] 3a4f84443c Releasing 1.0.14 2026-08-14 12:21:36 +00:00
vorotamoroz 74fdec7f96 test: separate finite maintenance connection ownership 2026-08-14 10:29:29 +00:00
vorotamoroz de03534d2f fix: close finite remote database connections 2026-08-14 10:29:29 +00:00
vorotamoroz 1e9ab39adc Update Commonlib to 0.1.13 2026-08-13 15:43:40 +00:00
nimulaandClaude Sonnet 5 0a1e1f3625 i18n(zh-tw): polish translation naturalness and terminology consistency
- Unify 資料庫適配器 -> 資料庫轉接器 across 6 entries so the database
  adapter setting uses one term throughout the catalogue.
- Drop the calqued "透過⋯⋯來⋯⋯" construction in 3 entries (Testing-only
  conflict resolution, the P2P replicator description, and the
  duplicated garbage-collection cleanup description); the sentences
  read the same without the borrowed English "by X to Y" shape.
- Rename the Eden-chunk "Incubate" feature's label from 孵化 (hatch) to
  暫存 (temporarily store) across 7 entries, matching the wording
  already used in the toggle's own description and avoiding a
  half-metaphor/half-literal split within the same feature.
- Convert the ASCII ellipsis "..." to the full-width "⋯" in 22
  in-progress/loading strings, per Taiwanese typography convention;
  the English source keys (which legitimately end in "...") are
  untouched.
- Reword "Fetch database with previous behaviour" to avoid a 以前/以
  + 前一種 parsing ambiguity, matching the 先前的行為 wording already
  used by the sibling 保留先前的行為 entry.
- Drop the orphaned closing paren in errMaxDocumentSize/errMaxRequestSize,
  fixing a display defect inherited from the English source.
- Add 同步 to beforeLiveSync for clarity.

Regenerated messagesJson/zh-tw.json and combinedMessages.prod.ts via
`npm run i18n:bake`; no other locale's entries changed.

Verified with tsc-check, lint, lint:community, lint:community:tools,
svelte-check, build, check:compatibility, and test:unit (630 tests,
88 files) — all pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 15:18:35 +08:00
nimulaandClaude Opus 5 b939687cb3 i18n(zh-tw): complete the catalogue coverage
Continues the zh-tw work from commit 0f50f290, which only translated the
190 keys `$msg()` calls in `src/` resolved through the catalogue at the
time. This closes the remaining gap: 573 of 1450 keys (39.5%) to 1446 of
1450 (99.7%), matching es (99.9%) and comfortably ahead of every other
locale except it.

While re-scanning to find the next batch, the earlier "code-referenced"
count turned out to be wrong: the previous grep only matched single-line
`$msg("literal")` calls and missed multi-line calls and the `msg`, `_msg`,
and `translateMessage` aliases various Svelte components import (e.g.
`import { $msg as msg } from "@/common/translation"`). A corrected scan
found 624 referenced keys, not 309, of which 350 were still untranslated —
mostly the P2P Sync status panes and several SetupWizard dialogues. Since
this pass translates everything remaining regardless of reference status,
that gap closes as a side effect; it is called out here only because it
explains why some of the newly translated strings are already visible in
today's UI rather than being pure catalogue completeness.

- Translated by area: P2P Sync replicator panes and the `P2P.*` runtime
  messages; ConfigSync's plugin/snippet/theme comparison UI; the
  SetupWizard's remote-setup, rebuild/fetch, and outro dialogues (both the
  legacy flat-key strings and the newer `Ui.SetupWizard.*` Svelte
  component keys); the Svelte-based `Ui.Settings.*` settings panels
  (Maintenance, Patches, Hatch, Remote, Common, Selector, PowerUsers,
  CustomisationSync, Advanced, Setup, SyncSettings); Setting Doctor
  (`Doctor.*`); the remote-size warning flow (`moduleCheckRemoteSize.*`);
  the redflag3 fetch-method chooser (`RedFlag.*`); the remaining
  `moduleMigration.*`, `liveSyncReplicator.*`, `Replicator.*`, and
  `TweakMismatchResolve.*` entries; and the rest of the plain
  English-sentence keys, including the language-picker's native-script
  entries (added `lang-he: עברית`, matching how `lang-de`/`lang-ja`/etc.
  already show each language's own name rather than a Chinese gloss).
- Wording follows docs/terms.md and the register already established in
  this file: `Setup URI`, `Vault`, `chunk(s)`, `Peer`, `Peer-to-Peer`,
  `Hatch`, and `CouchDB` stay untranslated as proper nouns; `resolved`
  (device/database state) is consistently 已處理, matching the existing
  Scram-dialogue usage.
- `${...}` placeholders and `%{...}` keyword references are kept
  byte-identical to the English source, including the multi-paragraph
  `RedFlag.Fetch.Method.Desc` and `moduleCheckRemoteSize.msgDatabaseGrowing`
  callout blocks; verified programmatically against all 1446 zh-tw
  entries.
- 4 keys are still deliberately left untranslated, unchanged from the
  previous commit: `moduleMigration.docUri` and
  `obsidianLiveSyncSettingTab.linkTroubleshooting` are a URL and a doc
  path, `obsidianLiveSyncSettingTab.logServerConfigurationCheck`'s English
  value is the key name itself, and `moduleLiveSyncMain.logPluginVersion`
  is a version-number template.
- Regenerated `messagesJson/zh-tw.json` and `combinedMessages.prod.ts`
  through the documented `i18n:bake` pipeline; no other language's
  entries changed.

Verified with tsc-check, tsc-check:apps, lint, lint:community,
lint:community:tools, svelte-check, check:compatibility, and test:unit
(604 tests, 86 files) — all pass.

Not in scope, unchanged from the previous commit: the ~137 Commonlib-owned
setting labels/descriptions never reach any translator because
`getConfig()` call sites in SettingDialogue omit the `translate` argument;
German is staged in the catalogue but never imported by
`combinedMessages.dev.ts`; Hebrew keyword references are never expanded by
`expandKeywords()`. None of these are specific to zh-tw and none are
touched here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:18:35 +08:00
nimulaandClaude Opus 5 df8c79538e i18n(zh-tw): translate the keys the application actually renders
The zh-tw catalogue was the weakest of the ten supported locales at 380 of
1450 keys (26%), well behind zh (75%) and ja (57%). Users who select
繁體中文 saw English for most of the interface.

This does not attempt full parity. It closes the gap for the 190 keys that
`$msg()` calls in `src/` actually resolve through the catalogue (zh-tw had
no entry for any of them), plus the 7 `K.*` keyword fragments that
`expandKeywords()` substitutes into `%{...}` references at build time
(zh-tw had none of these either, so any zh-tw message referencing `%{Peer}`
etc. would have shown the raw token on screen — the same defect currently
affecting `he`).

- 186 of the 190 code-referenced keys are translated. The remaining 4 are
  left as-is because their English value is not translatable prose:
  `moduleMigration.docUri` and `obsidianLiveSyncSettingTab.linkTroubleshooting`
  are a URL and a doc path, `obsidianLiveSyncSettingTab.logServerConfigurationCheck`'s
  English value is the key name itself, and `moduleLiveSyncMain.logPluginVersion`
  is a version-number template.
- Two pre-existing entries are corrected for internal consistency: `Bucket
  Name` (儲存桶→儲存庫) and `Peer-to-Peer Synchronisation` (點對點同步→
  Peer-to-Peer 同步), the latter matching the other three occurrences of
  "Peer-to-Peer" already left untranslated in this same file.
- Wording follows docs/terms.md and the existing zh-tw register: `Setup
  URI`, `Vault`, `chunk(s)`, `Hatch`, and `Peer-to-Peer` stay untranslated
  as proper nouns, matching how the rest of the file already treats them.
- `${...}` placeholders and `%{...}` keyword references are kept
  byte-identical to the English source; verified programmatically against
  all 573 zh-tw entries, not just the new ones.
- Regenerated `messagesJson/zh-tw.json` and `combinedMessages.prod.ts`
  through the documented `i18n:bake` pipeline; no other language's entries
  changed.

Coverage: 380/1450 (26.2%) -> 573/1450 (39.5%).

Verified with tsc-check, tsc-check:apps, lint, lint:community,
lint:community:tools, svelte-check, check:compatibility, and test:unit
(604 tests, 86 files) — all pass.

Not in scope, left for follow-up: the ~137 Commonlib-owned setting
labels/descriptions never reach any translator because `getConfig()` call
sites in SettingDialogue omit the `translate` argument; German is staged
in the catalogue but never imported by `combinedMessages.dev.ts`; Hebrew
keyword references are never expanded by `expandKeywords()`. None of these
are specific to zh-tw and none are touched here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-13 15:18:35 +08:00
github-actions[bot] b3bf717947 Releasing 1.0.13 2026-08-13 02:48:28 +00:00
vorotamoroz c933674a0d Add safe Metadata document ID repair 2026-08-12 18:56:17 +00:00
github-actions[bot] 1735bc4d66 Releasing 1.0.12 2026-08-11 03:29:34 +00:00
github-actions[bot] 1bb50c1580 Releasing 1.0.11 2026-08-09 14:49:28 +00:00
vorotamoroz 21d904cfd6 fix(storage): adapt timestamp guard to current Commonlib
Use the packaged Commonlib type import and add regression coverage for every Obsidian vault and storage write method. Verify that fractional timestamps are floored without mutating caller-owned options.
2026-08-09 08:46:21 +00:00
vorotamoroz 00de35e5d4 Merge current main into PR 1039 2026-08-09 08:45:16 +00:00
github-actions[bot] b65deede79 Releasing 1.0.10 2026-08-09 02:50:06 +00:00
github-actions[bot] c5835a9da6 Releasing 1.0.9 2026-08-08 13:00:23 +00:00
vorotamoroz d37af53858 Stop repeating cancelled scheduled Fetch 2026-08-08 04:29:57 +00:00
github-actions[bot] b05309ad9c Releasing 1.0.7 2026-08-08 02:51:53 +00:00
vorotamoroz 15abe344bb Keep incomplete Fast Setup isolated 2026-08-07 08:27:04 +00:00
vorotamoroz 741551be3a Releasing 1.0.6 2026-08-06 10:29:58 +00:00
vorotamoroz b42df389fb Distinguish absent and unreadable remote settings during setup
Use typed Commonlib outcomes to guide Fetch and Rebuild without treating a new remote as a failed read. Preserve automatic synchronisation choices when scheduled initialisation is cancelled.
2026-08-06 08:34:41 +00:00
github-actions[bot] 18bf31a01b Releasing 1.0.5 2026-08-05 10:46:11 +00:00
vorotamoroz be6da86a3a Merge pull request #1075 from motolies/korean-translations-100
Complete the Korean translations to full coverage
2026-08-05 19:31:37 +09:00
vorotamoroz 9d25a00c1d Add sleep preferences for finite synchronisation 2026-08-05 09:50:13 +00:00
github-actions[bot] 185ec2c392 Releasing 1.0.4 2026-08-05 04:27:56 +00:00
Namwon KimandClaude Opus 5 697ebe8272 Complete Korean translations to full coverage
Fill in the 318 remaining untranslated message keys for Korean, bringing
`ko` from 1132/1450 to 1450/1450 against the English base locale.

The gap was concentrated in recently added areas: P2P synchronisation UI,
the setup wizard confirmation dialogues, S3/MinIO/R2 and JWT authentication
settings, and the diagnostics/maintenance panels. These keys are looked up
by their English source text, so an absent translation silently fell back
to English.

Terminology follows the existing Korean resource: Vault as 보관함, chunk as
청크, passphrase as 패스프레이즈, replication as 복제, rebuild as 재구축.
Proper nouns (CouchDB, LiveSync, Setup URI, JWT, TURN) are left as-is.

Sentence fragments that are concatenated in the setup wizard were adapted
to Korean word order — Korean places the predicate last, so the emphasised
trailing fragment carries the verb (e.g. "the single, authoritative master
copy" renders as a complete predicate).

Only ko.yaml was hand-edited; ko.json and combinedMessages.prod.ts are
regenerated by `npm run i18n:bake`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R5avHoUL5zBwBfakGHyeFz
2026-08-05 12:37:15 +09:00
vorotamoroz c27dbbd572 Fix CLI settings write-back behaviour 2026-08-05 03:24:56 +00:00
github-actions[bot] d672ff04c3 Releasing 1.0.3 2026-08-03 12:07:33 +00:00
vorotamoroz 19f0b3d145 fix(cli): replace the headless log handler 2026-08-01 15:30:46 +00:00
vorotamoroz 42f37753b8 Address WebPeer CSS review warnings 2026-07-31 17:56:26 +00:00
vorotamoroz c97346e262 Unify WebPeer visual design 2026-07-31 15:05:22 +00:00
vorotamoroz 48c398948a Add browser P2P connection check 2026-07-31 14:13:34 +00:00
vorotamoroz 50a51bf07e Use setting control for remediation status 2026-07-31 10:08:34 +00:00
vorotamoroz 1570136703 Fix remediation status element insertion 2026-07-31 09:13:56 +00:00
vorotamoroz b700c631ca Releasing 1.0.2 2026-07-31 07:28:27 +00:00
vorotamoroz fbfb77440d Merge branch 'main' into pr/zeedif/1015 2026-07-31 07:14:14 +01:00
vorotamoroz 21dd24682b Merge branch 'main' into pr/zeedif/1059 2026-07-31 06:00:59 +01:00
vorotamoroz 5c52d69d66 Merge pull request #1055 from motolies/complete-korean-translations
Complete and correct the Korean translations
2026-07-31 13:44:52 +09:00
vorotamoroz a251648e48 Merge pull request #1009 from SeleiXi/feat/history-rev-nav
feat: Add revision prev/next buttons next to history slider
2026-07-31 13:43:14 +09:00
vorotamoroz 57c9726ae5 Merge pull request #1032 from apple-ouyang/fix/keep-replicated-document-apply-active
Keep replicated document application active
2026-07-31 13:41:07 +09:00
vorotamoroz a6977da9e8 Merge pull request #1058 from vrtmrz/issue-1056-preserve-utf8-bom
Preserve UTF-8 BOMs during Vault ingestion
2026-07-31 13:39:27 +09:00
vorotamoroz ce573f18a6 Update octagonal-wheels for Node base64 fallback 2026-07-31 03:13:53 +00:00
Ouyang Xingyuan 0df1f57f3b fix: keep replicated document application active
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.
2026-07-31 11:06:18 +08:00