Skip to content

[refactor] pre-flight stops asking where to save; sharing is the only choice left - #214

Merged
Lanznx merged 1 commit into
mainfrom
refactor/share-is-the-only-save-choice
Aug 9, 2026
Merged

[refactor] pre-flight stops asking where to save; sharing is the only choice left#214
Lanznx merged 1 commit into
mainfrom
refactor/share-is-the-only-save-choice

Conversation

@Lanznx

@Lanznx Lanznx commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

What this changes

The 存到 section disappears from pre-flight. Filing follows the customer (or the root with no customer) — nothing to choose, so nothing is shown. The one real decision left, sharing a copy to an organization, becomes its own row (visible only when signed in with sync on) and a matching Settings entry retitled "auto-share to an organization".

Follow-up to #211/#213, prompted by user feedback on 0.22.6: even trimmed to one option, a folder-shaped dropdown on the meeting screen kept the retired model visible.

Why

Two reasons, one visible and one structural:

  1. A picker with one option is noise. After [fix] the save picker was the last place still selling folders as customers #213 the personal side of the save picker offered exactly 個人 ·(根目錄)— a "search folders" dropdown whose only choice was already selected.
  2. The override model was subtly wrong. An org "save destination" beat the company link in resolveMeetingSave, dropping the local copy at the personal root — sharing a customer's call with your team silently un-filed it from that customer. Sharing and filing are different questions; they now compose instead of competing:
local filing  = linked customer's folder, else root   (never a choice)
org autoShare = per-meeting choice ?? settings default (independent)

meetingSaveOverridemeetingOrgShare ("off" suppresses a default share for one meeting; null follows the settings default). SaveDestinationPickerOrgSharePicker. The stored DefaultSaveLocation shape is unchanged: existing org defaults keep auto-sharing, personal ones now simply mean "off".

How it was verified

  • bunx tsc --noEmit passes
  • bunx vitest run passes (329 tests; save-target suite rewritten — includes the regression test that sharing to an org keeps the customer's local filing)
  • Ran the app: pre-flight shows 場景/公司/階段 only, no 存到 section, no console errors
  • Added or updated tests
  • New user-facing strings in both zh-TW and en; 12 orphaned keys pruned

… choice left

Even after #213 trimmed the save picker to one personal option, pre-flight
still showed a 存到 section with a folder-shaped dropdown — a control whose
only remaining personal choice was itself. The user's read was correct:
if the customer decides filing, no folder control belongs on the meeting
screen at all.

The 存到 section is gone. Filing is the customer's folder (or the root
with no customer) with nothing to choose; the one real decision left —
share a copy to an org — is now its own row, shown only when signed in
with sync on, and phrased as sharing rather than saving.

The share is also independent of the customer now. The old override
model made an org "save destination" beat the company link, silently
dropping the local copy at the root — sharing to a team un-filed the
customer's own recording. resolveMeetingSave now composes them: local
filing always follows the customer; autoShare rides alongside.

- meetingSaveOverride → meetingOrgShare ("off" suppresses a default
  share for one meeting; null follows the settings default)
- SaveDestinationPicker → OrgSharePicker (off + orgs/org folders only)
- Settings "default save location" becomes "auto-share to an
  organization"; the stored DefaultSaveLocation shape is unchanged, so
  existing org defaults keep working and personal ones mean "off"

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Lanznx
Lanznx merged commit 79c30cb into main Aug 9, 2026
@Lanznx
Lanznx deleted the refactor/share-is-the-only-save-choice branch August 9, 2026 06:51
@sonarqubecloud

sonarqubecloud Bot commented Aug 9, 2026

Copy link
Copy Markdown

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.

1 participant