Skip to content

Conversation

jjw24
Copy link
Member

@jjw24 jjw24 commented May 20, 2025

Context:
Currently all default built-in plugins have their own versioning. This creates manual work to bump them individually and accordingly.

We need to change this to have them all set to uniform versioning following flow's. Since they always get published along with flow there is little need for them to be different. Instead we bump them all at the same time to the same version as flow regardless of there are changes to them. This also will indicate which release they are from.

Changes:

  • Set their version to 1.0.0, which will be the version displayed when built locally.
  • Use AppVeyor CI to set them to flow's current version when built.

Tested:

  • Build passes
  • When built by CI the version displayed on all plugins are they same as flow's version in abouts settings page.

@jjw24 jjw24 added this to the 1.20.0 milestone May 20, 2025
@jjw24 jjw24 self-assigned this May 20, 2025
@jjw24 jjw24 added enhancement New feature or request CI/CD labels May 20, 2025
Copy link

gitstream-cm bot commented May 20, 2025

🥷 Code experts: no user but you matched threshold 10

Jack251970 has most 👩‍💻 activity in the files.
jjw24 has most 🧠 knowledge in the files.

See details

Plugins/Flow.Launcher.Plugin.BrowserBookmark/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 92%

Plugins/Flow.Launcher.Plugin.Calculator/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 67%

Plugins/Flow.Launcher.Plugin.Explorer/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB 7 additions & 6 deletions
JAN
DEC

Knowledge based on git-blame:
jjw24: 63%

Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 67%

Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 93%

Plugins/Flow.Launcher.Plugin.ProcessKiller/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 8%

Plugins/Flow.Launcher.Plugin.Program/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 75%

Plugins/Flow.Launcher.Plugin.Shell/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 75%

Plugins/Flow.Launcher.Plugin.Sys/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 75%

Plugins/Flow.Launcher.Plugin.Url/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 75%

Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR 1 additions & 1 deletions
MAR 5 additions & 4 deletions
FEB 2 additions & 1 deletions
JAN
DEC

Knowledge based on git-blame:
jjw24: 83%

Plugins/Flow.Launcher.Plugin.WindowsSettings/plugin.json

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:

appveyor.yml

Activity based on git-commit:

Jack251970
MAY
APR
MAR
FEB
JAN
DEC

Knowledge based on git-blame:
jjw24: 26%

To learn more about /:\ gitStream - Visit our Docs

Copy link

gitstream-cm bot commented May 20, 2025

Be a legend 🏆 by adding a before and after screenshot of the changes you made, especially if they are around UI/UX.

Copy link

@check-spelling-bot Report

🔴 Please review

See the 📂 files view, the 📜action log, or 📝 job summary for details.

❌ Errors and Warnings Count
❌ forbidden-pattern 22
⚠️ non-alpha-in-dictionary 13

See ❌ Event descriptions for more information.

If the flagged items are 🤯 false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it,
    try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

@jjw24 jjw24 enabled auto-merge May 20, 2025 09:16
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR centralizes versioning for all default built-in plugins by setting their local default to 1.0.0 and injecting the Flow release version during CI builds via AppVeyor.

  • Added a PowerShell loop in appveyor.yml to replace each plugin’s Version field with the $env:flowVersion value.
  • Updated every plugin.json to use "Version": "1.0.0" as the base local version.

Reviewed Changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
appveyor.yml Added script to batch-replace plugin.json Version fields with CI’s flowVersion
Plugins/Flow.Launcher.Plugin.WindowsSettings/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.Url/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.Sys/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.Shell/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.Program/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.ProcessKiller/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.Explorer/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.Calculator/plugin.json Bumped version to 1.0.0
Plugins/Flow.Launcher.Plugin.BrowserBookmark/plugin.json Bumped version to 1.0.0
Comments suppressed due to low confidence (2)

appveyor.yml:35

  • Specify an explicit encoding (e.g., -Encoding UTF8) when using Set-Content to ensure plugin.json files retain consistent encoding and avoid introducing BOM or platform-specific defaults.
... | Set-Content $file

appveyor.yml:32

  • Add an automated test or CI check to verify that all plugin.json files’ Version fields match the expected flowVersion after the build, preventing accidental mismatches in future changes.
$jsonFiles = Get-ChildItem -Path ".\Plugins\*\plugin.json"

$jsonFiles = Get-ChildItem -Path ".\Plugins\*\plugin.json"
foreach ($file in $jsonFiles) {
$plugin_old_ver = Get-Content $file.FullName -Raw | ConvertFrom-Json
(Get-Content $file) -replace '"Version"\s*:\s*".*?"', "`"Version`": `"$env:flowVersion`"" | Set-Content $file
Copy link

Copilot AI May 20, 2025

Choose a reason for hiding this comment

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

Consider parsing each plugin.json with ConvertFrom-Json, updating the Version property directly, and then emitting the file via ConvertTo-Json. This approach is more robust than regex and guarantees valid JSON structure.

Suggested change
(Get-Content $file) -replace '"Version"\s*:\s*".*?"', "`"Version`": `"$env:flowVersion`"" | Set-Content $file
$plugin_old_ver.Version = $env:flowVersion
$plugin_old_ver | ConvertTo-Json -Depth 10 | Set-Content $file.FullName

Copilot uses AI. Check for mistakes.

Copy link
Member Author

@jjw24 jjw24 May 20, 2025

Choose a reason for hiding this comment

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

FYI, this approach is fine but I found it it does change formatting of existing json files, which is also fine. However it didn't handle the Shell plugin with action keyword '>'. So I purposedly avoided using it and just directly and specifically modify the value of 'Version' key on all json files.

@jjw24 jjw24 disabled auto-merge May 20, 2025 09:17
Copy link
Contributor

coderabbitai bot commented May 20, 2025

📝 Walkthrough

Walkthrough

This update standardizes the version numbers of multiple plugin manifest files by resetting them to "1.0.0". Additionally, the AppVeyor CI configuration is enhanced to automatically update the "Version" field in each plugin's plugin.json file to match the flowVersion environment variable during the build process.

Changes

Files/Paths Change Summary
Plugins/Flow.Launcher.Plugin.BrowserBookmark/plugin.json
Plugins/Flow.Launcher.Plugin.Calculator/plugin.json
Plugins/Flow.Launcher.Plugin.Explorer/plugin.json
Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json
Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json
Plugins/Flow.Launcher.Plugin.ProcessKiller/plugin.json
Plugins/Flow.Launcher.Plugin.Program/plugin.json
Plugins/Flow.Launcher.Plugin.Shell/plugin.json
Plugins/Flow.Launcher.Plugin.Sys/plugin.json
Plugins/Flow.Launcher.Plugin.Url/plugin.json
Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json
Plugins/Flow.Launcher.Plugin.WindowsSettings/plugin.json
Updated the "Version" field in each plugin's plugin.json to "1.0.0". No other metadata or functionality changed.
appveyor.yml Modified the before_build step to run a PowerShell script that updates each plugin's "Version" field in plugin.json to the value of the flowVersion environment variable during CI builds.

Sequence Diagram(s)

sequenceDiagram
    participant AppVeyor CI
    participant PowerShell Script
    participant plugin.json Files

    AppVeyor CI->>PowerShell Script: Run before_build step
    PowerShell Script->>plugin.json Files: Enumerate all plugin.json files
    loop For each plugin.json
        PowerShell Script->>plugin.json Files: Read current Version
        PowerShell Script->>plugin.json Files: Replace Version with $env:flowVersion
        PowerShell Script->>plugin.json Files: Write updated Version
        PowerShell Script->>AppVeyor CI: Output version change message
    end
Loading

Poem

A hop, a skip, a version flip—
Each plugin dons a brand-new chip!
The CI script, with nimble paws,
Updates the numbers without a pause.
Now all in sync, the bunnies cheer,
"Our plugins start fresh—let’s hop this year!"
🐇✨

Note

⚡️ AI Code Reviews for VS Code, Cursor, Windsurf

CodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback.
Learn more here.


Note

⚡️ Faster reviews with caching

CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.
Enjoy the performance boost—your workflow just got faster.


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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

♻️ Duplicate comments (2)
Plugins/Flow.Launcher.Plugin.Calculator/plugin.json (1)

7-7: Same version strategy applied This sets the default to "1.0.0" consistent with the unified versioning across all plugins. See the Shell plugin review for details on verifying the CI automation.

Plugins/Flow.Launcher.Plugin.BrowserBookmark/plugin.json (1)

7-7: Same version strategy applied This sets the default to "1.0.0" consistent with the unified versioning across all plugins. See the Shell plugin review for details on verifying the CI automation.

🧹 Nitpick comments (1)
appveyor.yml (1)

29-38: Automate plugin.json version updates in CI.
The PowerShell script correctly enumerates all plugin.json files and replaces their "Version" fields with $env:flowVersion. To enhance robustness and future-proofing, consider:

  • Explicitly specifying -Encoding UTF8 in Set-Content to preserve JSON encoding.
  • Using Get-ChildItem -Recurse to catch nested plugin directories.
  • Leveraging JSON cmdlets (ConvertFrom-Json/ConvertTo-Json) for safe read-modify-write instead of regex.

Example diff:

- (Get-Content $file) -replace '"Version"\s*:\s*".*?"', "`"Version`": `"$env:flowVersion`"" | Set-Content $file
+ (Get-Content $file) -replace '"Version"\s*:\s*".*?"', "`"Version`": `"$env:flowVersion`"" | Set-Content $file -Encoding UTF8
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3abb2f0 and 2b9529d.

📒 Files selected for processing (13)
  • Plugins/Flow.Launcher.Plugin.BrowserBookmark/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.Calculator/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.Explorer/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.ProcessKiller/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.Program/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.Shell/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.Sys/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.Url/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json (1 hunks)
  • Plugins/Flow.Launcher.Plugin.WindowsSettings/plugin.json (1 hunks)
  • appveyor.yml (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (7)
  • GitHub Check: gitStream.cm
  • GitHub Check: gitStream.cm
  • GitHub Check: gitStream.cm
  • GitHub Check: gitStream.cm
  • GitHub Check: gitStream.cm
  • GitHub Check: gitStream.cm
  • GitHub Check: build
🔇 Additional comments (11)
Plugins/Flow.Launcher.Plugin.PluginsManager/plugin.json (1)

9-9: Aligns with local default versioning.
Setting the default plugin version to "1.0.0" for local builds simplifies maintenance. The AppVeyor CI script will override this with the actual Flow Launcher version at build time.

Plugins/Flow.Launcher.Plugin.WindowsSettings/plugin.json (1)

7-7: Aligns with local default versioning.
Resetting the plugin version to "1.0.0" ensures consistency across default plugins for local builds. CI will sync it with Flow Launcher's version at build time.

Plugins/Flow.Launcher.Plugin.Program/plugin.json (1)

7-7: Aligns with local default versioning.
Changing the version to "1.0.0" matches the unified default for local development. The CI automation will update it to the release version automatically.

Plugins/Flow.Launcher.Plugin.Url/plugin.json (1)

7-7: Aligns with local default versioning.
Standardizing the version to "1.0.0" simplifies plugin maintenance locally; the CI process will override it correctly during builds.

Plugins/Flow.Launcher.Plugin.ProcessKiller/plugin.json (2)

7-7: Consistent default version update
The Version field has been correctly reset to "1.0.0" to align with the unified plugin versioning strategy for local builds.


7-7:

✅ Verification successful

Verify complete coverage of plugin manifest version updates
Ensure that every plugin.json under Plugins/Flow.Launcher.Plugin.* has its Version field reset to "1.0.0" to prevent inconsistencies across default plugins. You can run:

No output indicates full coverage.


🏁 Script executed:

#!/usr/bin/env bash
# Verify that all plugin.json files have Version "1.0.0"
grep -R '"Version":' Plugins/Flow.Launcher.Plugin.*/*.json | grep -v '"Version": "1.0.0"'

Length of output: 792


Plugin manifest version coverage confirmed
All plugin.json files under Plugins/Flow.Launcher.Plugin.* have their "Version" field set to "1.0.0". No inconsistencies detected.

Plugins/Flow.Launcher.Plugin.Sys/plugin.json (1)

7-7: Consistent default version update
The Version field has been reset to "1.0.0" in line with the unified versioning approach.

Plugins/Flow.Launcher.Plugin.Explorer/plugin.json (1)

14-14: Consistent default version update
The Version field has been updated to "1.0.0", matching the standard default for all built-in plugins.

Plugins/Flow.Launcher.Plugin.WebSearch/plugin.json (1)

30-30: Consistent default version update
The Version field is now "1.0.0", ensuring consistency with the unified plugin versioning scheme.

Plugins/Flow.Launcher.Plugin.PluginIndicator/plugin.json (1)

7-7: Consistent default version update
The Version field has been reset to "1.0.0" to align with the main Flow Launcher versioning strategy.

Plugins/Flow.Launcher.Plugin.Shell/plugin.json (1)

7-7: Default local build version set to 1.0.0 The plugin manifest now defaults to "1.0.0", which aligns with the main Flow Launcher version for local development and will be overridden by the flowVersion environment variable during CI builds. Please verify that the before_build step in appveyor.yml enumerates this file so its "Version" field is updated to the CI-provided flowVersion.

@jjw24 jjw24 enabled auto-merge May 20, 2025 09:22
@jjw24 jjw24 merged commit b4a3e06 into dev May 20, 2025
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI/CD enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants