Menu ▾ ▴

#456 feat: move to Chatpane's identifier, binary and repository

closed
nobody
None
6 days ago
6 days ago
Anonymous
No

Originally created by: kristofferR

Chatpane still used Carrier's bundle identifier, binary name and repository, so carrier remained in data paths, process names, the updater URL and links. This moves all three. Afterwards only code that brings existing installs over from Carrier says carrier.

Identifier app.chatpane.Chatpane. Every OS keeps app data in folders named after the identifier, including the webview's Facebook login and encrypted-chat keys. src-tauri/src/identity.rs moves Carrier's folders to the new names on the first launch, before anything reads or creates them.

  • It first stops a Carrier that is still running: on macOS by bundle identifier, on Linux through Carrier's single-instance D-Bus name. On Windows the installer already runs Carrier's uninstaller, which closes it.
  • All folders move or none do. If one can't move, the others go back and that launch runs on Carrier's identifier, so the next launch tries again.
  • The macOS login item is registered again for the new identifier, and Windows keeps notification opt-outs set for Carrier.
  • macOS asks for notification, camera and microphone permission once more, since those belong to the bundle identifier. Release signing needs the new Developer ID provisioning profile, which is created; the CI secret is swapped at merge.

Binary chatpane on every platform: /usr/bin/chatpane, chatpane.exe, Contents/MacOS/chatpane, the Linux window class and icon name, the Snap and the debug tooling. The Windows installer hook names carrier.exe to find Carrier's shortcuts.

Repository kristofferR/Chatpane: the updater endpoint, links, AUR sources and the debug updater. The repository is renamed before the release, and old installs keep finding updates through GitHub's redirect from the old name.

Also a new README, and the AppStream screenshots point at the new images on chatpane.app.

Testing

  • cargo fmt, clippy -D warnings on Linux plus cross-checks for macOS and Windows, cargo test (441), bun run check, appstreamcli validate.
  • Windows VM: with Carrier installed and running, a silent install (as winget runs it) closed Carrier, removed its install and shortcuts and put Chatpane's in place. The first launch moved both data folders and opened logged in with the same chats.

Removing the migration code later: Ref [#455]

Summary by CodeRabbit

  • New Features
  • Renamed the app to Chatpane across desktop integrations, installers, notifications, and update workflows.
  • Migrates existing app data from the previous identity on first launch, with rollback if migration fails.
  • Preserves existing notification preferences and startup behavior during the transition.
  • Documentation
  • Updated product, installation, and screenshot guidance, including available language information.

Related

Tickets: #455

Discussion

  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: chatgpt-codex-connector[bot]

    Codex Review Summary: 🔄 Running This comment shows the latest Codex review activity on this pull request. | Review | Status | Commit | Review trigger | | --- | --- | --- | --- | | 📝 **Code Review** | 🔄 **Running** since <relative-time datetime="2026-11-09T01:17:39.381379Z">2026-11-09T01:17:39.381379Z</relative-time> | `df5d817` | Manual request |
    ℹ️ About Codex in GitHub
    [Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). 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.
     
  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: coderabbitai[bot]

    Action not completed

    Review rate limited. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: coderabbitai[bot]

    <picture>Explain Change →</picture>

    [!WARNING]

    Review limit reached

    You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

    Next included review available in 46 minutes.

    Check out review usage here.


    View limit details



    Limit details: You’ve used the included review currently available.

    Learn how review limits work.

    Review configuration:


    <picture></picture> Run configuration






    <picture></picture> Commits



    Reviewing files that changed from the base of the PR and between [df5d81] and 9a345e38a49f47dfb41eca116cf80cb7e4e15d2e.




    <picture></picture> Files selected for processing: 2



    • scripts/debug/enroll.ts
    • src-tauri/src/identity.rs





    Walkthrough

    The pull request adopts Chatpane names and identifiers across application startup, platform integrations, build and package metadata, debug tooling, and project documentation. It adds migration of selected Carrier data folders and updates identity-dependent startup and notification handling. **Changes: Chatpane identity and rename** |Layer / File(s)|Summary| |:---|:---| |**Identity selection and migration implementation**
    `src-tauri/src/identity.rs`, `src-tauri/src/lib.rs`, `src-tauri/tauri.conf.json`|The new identity module discovers platform-specific Carrier data folders, attempts to move them to Chatpane locations, and rolls back earlier moves if a move fails. Application setup uses the selected identity.| |**Migration startup and identity-dependent behavior**
    `src-tauri/src/debug_install.rs`, `src-tauri/src/autostart.rs`, `src-tauri/src/settings.rs`, `src-tauri/src/windows/toast.rs`, `docs/debug-installs.md`, `AGENTS.md`|Startup runs migration before native-output capture. Settings, macOS startup registration, and Windows notification checks account for the current or previous identity. Documentation describes first-launch migration and rename handling.| |**Runtime names and platform integrations**
    `src-tauri/Info.plist`, `src-tauri/entitlements.release.plist`, `src-tauri/src/{actions,cli,commands,download,macos/share_intake,notifications,renderer_memory,settings,tray,windows/jumplist}.rs`, `src-tauri/linux/app.chatpane.Chatpane.metainfo.xml`, `share-extension/macos/*`, `snap/gui/*`|Platform identifiers, executable names, icons, share handoffs, and paths use Chatpane naming. Related tests update their fixtures without changing their stated expectations.| |**Build, update, and package naming**
    `.github/workflows/*`, `scripts/debug/*`, `package.json`, `src-tauri/Cargo.toml`, `src-tauri/tauri.conf.json`, `packaging/aur/PKGBUILD.tpl`, `snap/snapcraft.yaml`, `src-tauri/windows/installer-hooks.nsh`|Build and release workflows, debug enrollment and update paths, installer tests, and package metadata use Chatpane names, identifiers, or repository paths.| |**Project documentation and repository references**
    `README.md`, `AGENTS.md`, `packaging/screenshots/README.md`, `packaging/snap/README.md`, `inject/src/messenger/*`, `src-tauri/src/{growth,menu}.rs`|Project and package documentation and repository references use Chatpane naming. The README also updates feature and language descriptions. Screenshot documentation describes mock renders, new checksums, and a separate real-capture process.| **Estimated code review effort:** 4 (Complex) | ~60 minutes **Change:** Other ### Sequence Diagram(s) :::mermaid sequenceDiagram participant ChatpaneStartup participant IdentityMigration participant CarrierProcess participant DataFolders participant TauriContext ChatpaneStartup->>IdentityMigration: migrate previous identity folders IdentityMigration->>DataFolders: discover and move folders IdentityMigration->>CarrierProcess: stop previous app when old folders exist ChatpaneStartup->>TauriContext: configure with current identity
    Pre-merge checks: <picture>Passed</picture> 3 · <picture>Failed</picture> 1 · <picture>Inconclusive</picture> 1

    <picture>Failed</picture> Failed checks: 1 warning · 1 inconclusive | Check name | Status | Explanation | Resolution | | :---------------- | :--------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Description check | ![Warning](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-warning.svg) | The description explains the purpose (Chatpane still used Carrier's identifier, binary, and repository), the identity migration design, binary and repository changes, and testing performed. It is deta… | Add the "## AI models used" section to the PR description. Replace the placeholder with the model names and versions used to create or edit code, tests, or PR text, or write "None" if no AI helped. The "## Summary" section already exists in… | | Docstring Coverage | ![Inconclusive](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-inconclusive.svg) | Docstring coverage is 38.71% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documenta… | Write docstrings for the functions missing them to satisfy the coverage threshold. |
    <picture>Passed</picture> Passed checks: 3 passed

    | Check name | Status | Explanation | | :------------------------ | :--------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Title check | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | The title "feat: move to Chatpane's identifier, binary and repository" matches the main change in the changeset. The PR renames the bundle identifier to app.chatpane.Chatpane, the binary to chatpane, … | | Linked Issues check | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ![Passed](https://storage.googleapis.com/coderabbit_public_assets/pre-merge-checks-passed.svg) | Check skipped because no linked issues were found for this pull request. |
    Full details: Title check

    **Explanation** The title "feat: move to Chatpane's identifier, binary and repository" matches the main change in the changeset. The PR renames the bundle identifier to app.chatpane.Chatpane, the binary to chatpane, and repository references to kristofferR/Chatpane, and adds identity migration code. The title is specific and concise, and it follows a conventional commit prefix. It does not mention the data-folder migration, which is the most consequential addition, but it does not need to cover every detail.
    Full details: Description check

    **Explanation** The description explains the purpose (Chatpane still used Carrier's identifier, binary, and repository), the identity migration design, binary and repository changes, and testing performed. It is detailed and matches the spirit of a summary section. However, the repository template requires an "AI models used" section, and the description does not include it. It also does not include the optional reasoning-levels field. Because the required AI models disclosure is missing, the description is incomplete against the template. **Resolution** Add the "## AI models used" section to the PR description. Replace the placeholder with the model names and versions used to create or edit code, tests, or PR text, or write "None" if no AI helped. The "## Summary" section already exists in substance; consider adding that heading so the structure matches the template. The "## Reasoning levels" section is optional and may be added if the tool exposes it.
    Full details: Docstring Coverage

    **Explanation** Docstring coverage is 38.71% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 31 functions across 27 files. (22 skipped: 21 unsupported, 1 too large.) **Resolution** Write docstrings for the functions missing them to satisfy the coverage threshold.
    Finishing Touches

    Generate docstrings

    - [ ] Commit to this branch - [ ] Create a new PR
    Generate unit tests (beta)

    - [ ] Commit to this branch - [ ] Create a new PR
    • [ ] Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

    Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

    Share

    - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
     

    Related

    Commit: [df5d81]

  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: coderabbitai[bot]

    Action performed

    Review finished. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: coderabbitai[bot]

    Action not completed

    Review rate limited. > Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
     
  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: chatgpt-codex-connector[bot]

    Codex Review: Didn't find any major issues. More of your lovely PRs please.

    Reviewed commit: a8b654fe04

    ℹ️ About Codex in GitHub
    [Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). 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".
     
  • Anonymous

    Anonymous - 6 days ago

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.