Skip to content

Add Chinese literary milestones and correct Han dictation counts - #120

Merged
bifrost-proxy merged 3 commits into
mainfrom
codex/chinese-literary-milestones
Sep 5, 2026
Merged

bifrost-proxy merged 3 commits into
mainfrom
codex/chinese-literary-milestones

Conversation

@bifrost-proxy

@bifrost-proxy bifrost-proxy commented Sep 5, 2026 •

Copy link
Copy Markdown
Owner

The dashboard compares cumulative dictation with familiar Chinese works, all Four Great Classical Novels, combined milestones and repeated complete sets. It shows next-target progress with Chinese/English translated titles and identical approximate Chinese-original thresholds. German translations are also supplied.

Han characters now count individually for session statistics. Historical counts are recomputed when retained text is available; missing text keeps legacy estimates. Additive count-version and local-only outbox fields preserve old data, prevent count downgrades and recover saved backfill after interruption. Duplicate history uses the existing canonical-row selector. Cleanup continues after a failed migration; remote text updates recount locally without echo writes. The short-enhancement threshold retains its original word segmentation.

Validation:

  • Final required local arm64 xcodebuild test command: 457 Swift Testing tests in 37 suites plus 2 rendering XCTest tests, all passed.
  • Final English UI test passed; Chinese UI test passed on retry after a transient macOS SecurityAgent interruption. No keychain or microphone permission was granted.
  • Real original-schema SwiftData store migrated and persisted both new optional fields; the original model reopened it with counts/duration retained.
  • Regression coverage includes all milestone boundaries, en/zh-Hans/de copy, interrupted 500-row backfill/retry, duplicate history, older-peer sync, restart before notification, durable outbox acknowledgement and no-echo behavior.
  • make check and git diff --check passed. An earlier local test run had window failures while macOS was locked; the final unlocked full run passed.
  • Previous PR revision passed both arm64 and x86_64 CI; final-head checks are tracked on this PR.
  • Local arm64 release rehearsal previously passed; online assets are verified separately after release.

Risk and rollback: benchmark lengths are rounded estimates, and deleted historical text cannot be reconstructed. Chinese totals and the derived time-saved estimate may rise. Roll back with the previous release or revert this PR. No ASR/model behavior changes, real-model benchmark or /Applications installation. See docs/chinese-literary-milestones.md. Intended formal release: 2.4.0.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-05T11:03:34.042070Z 5e3344c New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8dca54b79f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread VoiceInk/VoiceInk.swift Outdated
Comment thread VoiceInk/Services/CloudUsageDataSyncService.swift Outdated
Comment thread VoiceInk/Services/SessionWordCountMigration.swift Outdated
Comment thread VoiceInk/Services/SessionWordCountMigration.swift Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: adbbfaf522

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread VoiceInk/Services/SessionWordCountMigration.swift
Comment thread VoiceInk/Services/SessionWordCountMigration.swift Outdated
Comment thread VoiceInk/Services/WordCounter.swift
@bifrost-proxy
bifrost-proxy merged commit a7895a9 into main Sep 5, 2026
3 checks passed
@bifrost-proxy
bifrost-proxy deleted the codex/chinese-literary-milestones branch September 5, 2026 10:56

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5e3344c6ed

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread VoiceInk/VoiceInk.swift
Comment on lines +217 to 219
await SessionWordCountMigration.run(modelContainer: resolvedContainer)
// Retention remains active even if statistics backfill must retry.
TranscriptionAutoCleanupService.shared.startMonitoring(modelContext: mainContext)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Export backfilled counts before retention cleanup

When transcript retention is enabled but Usage Sync is disabled during this upgrade, the backfill sets wordCountNeedsSync, then this immediately starts a sweep that can delete the corresponding Transcription; if sync is enabled later, the outbox scan requeues the ID, but appendLocalChanges skips it because it requires a local transcription, so the corrected metric is never exported and its outbox flag is never cleared. Preserve enough data to export the metric independently, or defer cleanup until these durable outbox entries have been acknowledged.

AGENTS.md reference: AGENTS.md:L46-L46

Useful? React with 👍 / 👎.

Comment on lines +21 to +22
guard version < WordCounter.currentVersion
|| (recountCurrentVersion && version == WordCounter.currentVersion),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Recount metrics after local re-enhancement

When a user re-enhances a saved transcription while Usage Sync is off, AudioPlayerView.reEnhanceOnly saves the changed enhancedText and posts .transcriptionCompleted, but no local caller requests recountCurrentVersion. Because metrics created by this patch are already version 2, this guard also skips them during every startup backfill, leaving dashboard totals and saved-time estimates based on the previous text even though synchronized text changes are recounted; invoke the same recount path for local completed-text changes.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants