Skip to content

[refactor] remove the live intelligence board, scenarios and pre-flight - #247

Merged
YJack0000 merged 1 commit into
mainfrom
refactor/remove-intel-board
Aug 16, 2026
Merged

YJack0000 merged 1 commit into
mainfrom
refactor/remove-intel-board

Conversation

@YJack0000

Copy link
Copy Markdown
Contributor

Why

Parley is now record → transcribe → analyze → search. The live intelligence board (a 30-second LLM pass extracting slots mid-call), the scenario / stage / bundle / meeting-kind system underneath it, and the pre-flight screen all served a different product. Removed.

81 files, +198 / −9,109. Preserved at tag archive/intel-board-before-removal.

The useful residue survives: meetingContext — free text, already fed verbatim into every analysis prompt, and settable over MCP. "What kind of meeting this was and what matters in it" now goes there instead of into a template system. update_recording_meta's description was rewritten to say exactly that, and its meetingType / meetingTypeName / meetingTypeIcon / meetingTypeGuidance params are gone.

Kept — three of these were close calls

  • settings.evaluations + eval templates. runAnalysis passes them to analyzeTimeline({ evals }); findings die without them. Not board machinery despite living next to it.
  • meetingBatna / meetingTarget / meetingFloor. The brief said to delete these if pre-flight was their only input surface — it wasn't. MeetingContextField mounts from SpeakerBar→MeetingContextButton (live), IngestWizard, StudyGenerationChip and StudyLinkBar, so all four keep a real way in.
  • The live TODO checklist. TodosPanel was mounted only from IntelligenceBoard, so it would have vanished silently. Moved into the third live column the board vacated.

autoIntel had a second job — gating the 45s TODO auto-check. That check now runs unconditionally while recording (the setting defaulted on) and no longer only for meetingType === "general".

Things that went with it

  1. The study report lost its 情報 section — brief / action items / delivery, 3 sections. The post-meeting readout, the per-type ledgers (BANT, numbers, concessions…) and the objection tracker all rendered from intel.
  2. Analysis no longer gets per-kind guidance. withKindGuidance appended a scenario's lens to the prompt. meetingContext is the only per-meeting steering now — and since the analysis cache keys on it, editing it still invalidates and re-analyzes.
  3. Home lost its second start button — "Start meeting" and "Start right now" became the same action once pre-flight went. Added a module-level in-flight latch inside beginMeeting so the three call sites can't race two STT sessions open.
  4. Cancelling a meeting returns to Home, not pre-flight.
  5. The Settings 情境 panel is gone; stage-bundles.json is orphaned on disk (no cleanup code written — user data is never deleted).

Old data

Verified with a throwaway test: a meta.json carrying meetingType + intel loads fine — appMode: "study", brief and context restored, no crash. Extra keys ride through the read-modify-write ({...meta}) rather than being stripped. Stale settings keys spread harmlessly; nothing reads them. MCP whitelists response keys, so they never surface.

i18n

486 entries removed (243 per dictionary; both verified at 906 keys, no orphans in either direction). preflight.search / preflight.noMatch were used by FolderPicker and were renamed to folder.* rather than dropped. Every t("…"), translate(…) and t(`…`) template was scanned against the pruned dictionaries — no dangling key.

How it was verified

  • bunx tsc --noEmit clean
  • bunx vitest run — 216 passed, from 327. All 111 accounted for: 101 from deleted test files, 10 from edits (intel-scheduling and setMeetingType cases)
  • bun run build ok
  • cargo check ok, cargo clippy zero warnings
  • Rebased on main; search_meetings verified intact
  • Ran the app — the live screen's third column and the trimmed study report want a human pass

Website

Fixed two more places selling removed features ("final deal intelligence" in the report section and the iOS sync section). The README prose and alt text were updated by this change, but the three screenshots still show the board and would need re-shooting.

Parley converges on one job: record, transcribe, analyze, search. Three
subsystems that only served the live "where does the deal stand" board are
gone with it.

- The live intelligence board and its 30s LLM slot extraction (the whole
  `lib/intel` module, the `autoIntel` switch, and the store's intel state).
  Every pass re-read the entire transcript, so an hour-long meeting paid for
  ~120 growing prompts to fill a rail nobody acted on mid-call.
- The scenario / stage / bundle / slot system underneath it: the
  stage-bundles file and its Rust commands, the Settings scenario editor, the
  boardless "kind" authoring sheet, the icon registry that existed only to
  mark scenarios, and `meetingType` everywhere it was threaded (store, saved
  entries, the session snapshot, MCP).
- The pre-flight screen and its AI prep copilot. Starting a meeting is now
  one button; the prep draft it used to gather survives, and clearing it is
  still one explicit action on the start button's menu.

What replaces the meeting-type picker is `meetingContext` — the per-recording
free-text field that already fed every analysis prompt. `update_recording_meta`
now says so in its description, so an external analyst re-aims the analysis by
writing that field instead of inventing a scenario id.

The live coach rail keeps the agenda checklist, which moves into the column the
board vacated. Eval templates, TODO templates, findings, action items, brief,
delivery and search are untouched.

Old recordings keep `meetingType` / `intel` in their meta.json; nothing reads
them and nothing rewrites them.

The removed code is recoverable from the tag
`archive/intel-board-before-removal`.
@YJack0000
YJack0000 merged commit c809f73 into main Aug 16, 2026
@YJack0000
YJack0000 deleted the refactor/remove-intel-board branch August 16, 2026 15:13
@sonarqubecloud

Copy link
Copy Markdown

YJack0000 added a commit that referenced this pull request Aug 17, 2026
Live translation went in #242 and took `virtual_mic.rs` with it, but the
CoreAudio HAL driver it drove was left fully wired into the build. Nothing
has read it since: CI still built the driver universal, signed it, and
ditto'd it into `src-tauri/virtualmic/`, and `tauri.conf.json` still listed
it as a bundle resource — so every notarized DMG since v0.22.14 has carried
a signed audio driver that no code path can install or reach.

Removed:
- The "Build Parley Microphone driver" release step, and the
  `virtualmic/ParleyMicrophone.driver` bundle resource that consumed it.
- `build.rs`'s placeholder-directory dance, which existed only so
  tauri-build would not hard-fail on that missing resource in dev builds,
  and whose comment still pointed at the deleted `virtual_mic.rs`.
- tokio's `process` feature. Its comment credited the privileged osascript
  installer; nothing in src-tauri imports `tokio::process` any more (the
  one `Command::new` left is `std::process::Command` in a replay_audio
  test oracle). Dropping it drops `signal-hook-registry` from Cargo.lock,
  which confirms nothing else was pulling the feature in.
- All 15 orphaned `titlebar.translate.*` / `settings.translate.*` /
  `settings.kw.translate` / `meeting.translate.*` keys, in both locales.
  `en` is typed `Record<keyof typeof zhTW, string>` and `TranslationKey`
  is `keyof typeof zhTW`, so tsc proves none of them had a caller left.
- `virtual-mic/` itself, following the same delete-and-archive precedent as
  #242, #245 and #247. The whole directory *and* `virtual_mic.rs` are
  preserved together at `archive/live-translate-before-removal`, so
  restoring the feature restores both halves from one tag.

`ios/README.md` described the repo as containing `virtual-mic/` and `mcp/`;
the latter had already stopped existing. It now names what is actually
there. `docs/design/ios-app.md` mentions both too, but as part of a
signed-off decision record describing the repo at decision time, so it is
left as written.

Verified: `cargo check`, `bunx tsc --noEmit`, and `bunx vitest run` (216
tests) all pass; release.yml and tauri.conf.json still parse.
YJack0000 added a commit that referenced this pull request Aug 18, 2026
…eature claims (#256)

Five of the six desktop screenshots predated the v0.22.14–v0.22.16 removals.
The worst was the hero, which is both the largest image on parley.tw and the
first image in the README: its right-hand column was the intel board, removed
in #247. The page around it had already been rewritten in #252 to stop
promising that feature; the picture kept promising it anyway.

Reshot against current main, seeded through the store with a fictional renewal
negotiation (Northwind Logistics / Dana Whitfield — no real customer data):

- showcase-hero — the live cockpit as it actually is now: transcript, coach
  feed, agenda checklist. No intel board, because there is no intel board.
- showcase-transcript — the transcript posture with the findings column.
- showcase-study — the report: brief with clickable timestamp pills, action
  items with severity, filed into a customer folder.
- showcase-qa — Ask, in the drawer it actually lives in now. The old shot
  still had the v0.11 "Ask / TODO" tab pair and the old delivery panel.
- showcase-eval — Settings → Evaluations, showing the built-in playbooks and
  an editable prompt, which is what "your checks" means concretely.

showcase-voicetyping is kept: the overlay has only had behaviour fixes since it
was shot (screen placement, tap-to-toggle, preview cap), no visual redesign.
The two iPhone shots are also kept — they predate the #248 restyle, so they are
next in line, but they show nothing that no longer exists.

The capture shims (a store handle in main.tsx, a thread seeder in AskPanel) are
reverted, not committed, per the standing recipe.

Alongside that, the store listings still sold "deal intelligence" / 成交情報 —
the mini-CRM removed in #245 — in all four locale files, in the paragraph that
tells a phone user what they get on the desktop. Replaced with cross-meeting
search, which is what actually replaced it.

Also settled two stale open items that #235 had already resolved without the
docs catching up: Android does ship in-app account deletion, and
parley.tw/account-deletion/ is the Play-required web route, so
`android/AppStore/data-safety.md` no longer opens with a TODO gate and the
listings point at the real URL rather than the privacy policy. The remaining
`[TODO: confirm with Jack]` markers there are genuine questions for a human
(whether to over-declare usage data, and whether api.parley.tw retains
account-linked request logs) and are left alone.

Smaller corrections: iOS is 1.2 on the App Store, not 1.1; the iOS listing's
rationale notes described a name and a subtitle it does not ship; CLAUDE.md
listed "interpreter" among the secondary windows, which went with #242; and
docs/design/mini-crm.md now says up front that it documents a subsystem that
was built and then removed, rather than reading as current design.

Verified: bunx tsc --noEmit and bunx vitest run (221 tests) pass, and all eight
media slots load at their intended dimensions on a local serve of website/.
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