Skip to content

fix: Fetch latest version automatically - #854#1127

Merged
lazysegtree merged 1 commit into
mainfrom
fetch-version-automatically
Dec 16, 2025
Merged

fix: Fetch latest version automatically - #854#1127
lazysegtree merged 1 commit into
mainfrom
fetch-version-automatically

Conversation

@lazysegtree

@lazysegtree lazysegtree commented Oct 12, 2025

Copy link
Copy Markdown
Collaborator

Fixes - #854

(1) Check if we should use this

Invoke-RestMethod "https://api.github.com/repos/yorukot/superfile/releases/latest"  | Select-Object -ExpandProperty tag_name

(2) Max time should be 5 sec, maybe?

(3) Test in Windows

Summary by CodeRabbit

  • New Features

    • Installer scripts now automatically detect and fetch the latest release version from the repository, ensuring installs use the most current release without manual version updates.
  • Bug Fixes / Reliability

    • If version retrieval fails, the installer reports the error and stops to avoid installing an unknown or incorrect version.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai

coderabbitai Bot commented Oct 12, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

The PR updates the install scripts (Bash and PowerShell) to retrieve the latest release tag from the GitHub API at runtime and use that value as the default install version, adding new functions to fetch and parse the tag (stripping a leading "v") and adding error handling.

Changes

Cohort / File(s) Summary
Install scripts: add runtime latest-version fetch
website/public/install.sh, website/public/install.ps1
Added fetch_latest_version (Bash) and Get-LatestVersion (PowerShell) to call the GitHub Releases API, parse tag_name (strip leading v), and return the version. Updated default version assignment to use these functions instead of a hardcoded 1.4.0. Each includes fetch/parse error handling (Bash exits on failure; PowerShell handles errors internally).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Verify Bash exit-on-failure vs PowerShell non-fatal behavior is intentional.
  • Confirm robust JSON parsing for varied tag formats and API responses.
  • Check API URL, rate-limiting/error responses, and retry/timeout considerations.

Possibly related PRs

Suggested reviewers

  • yorukot

Poem

🐰 I hopped to GitHub under moonlight bright,

I fetched the latest tag in one swift bite,
Stripped the little "v" so versions gleam,
Now installs fetch what the releases mean,
Hooray — no more hardcoded night!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: automatically fetching the latest version instead of using a hard-coded version number.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fetch-version-automatically

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c72c597 and af81a2b.

📒 Files selected for processing (2)
  • website/public/install.ps1 (1 hunks)
  • website/public/install.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • website/public/install.sh
  • website/public/install.ps1
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cloudflare Pages

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

Comment @coderabbitai help to get the list of available commands and usage tips.

@lazysegtree lazysegtree added the OS-Windows Issue is related to windows only, and doesn't affect Linux/Mac label Dec 12, 2025
@lazysegtree lazysegtree marked this pull request as ready for review December 14, 2025 10:33
Comment thread website/public/install.ps1

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (2)
website/public/install.ps1 (1)

24-37: Align GitHub API call with the “5 seconds” objective + add API headers / clearer fallback guidance.

  • Line 26 uses -TimeoutSec 10, but the PR objective suggests 5 seconds.
  • Consider adding User-Agent/Accept headers for GitHub API compatibility.
  • On failure, consider printing a hint that users can set SPF_INSTALL_VERSION to bypass the API dependency.
 function Get-LatestVersion {
     try {
-        $release = Invoke-RestMethod -Uri "https://api.github.com/repos/yorukot/superfile/releases/latest" -TimeoutSec 10
+        $headers = @{
+            "Accept"     = "application/vnd.github+json"
+            "User-Agent" = "superfile-installer"
+        }
+        $release = Invoke-RestMethod -Uri "https://api.github.com/repos/yorukot/superfile/releases/latest" -Headers $headers -TimeoutSec 5
         $version = $release.tag_name -replace '^v', ''
         if ([string]::IsNullOrEmpty($version)) {
             Write-Host "Failed to parse version from GitHub API"
             exit 1
         }
         return $version
     } catch {
-        Write-Host "Failed to fetch latest version from GitHub API: $_"
+        Write-Host "Failed to fetch latest version from GitHub API: $_"
+        Write-Host "Tip: set SPF_INSTALL_VERSION to install a specific version without calling the GitHub API."
         exit 1
     }
 }
website/public/install.sh (1)

41-59: Harden GitHub API fetch (fail on HTTP errors), match 5s objective, and fix Shellcheck SC2155.

  • Add --fail (and optionally -S) so HTTP 4xx/5xx don’t look like success.
  • Objective asks for ~5s max; currently --max-time 10.
  • Split local declarations from assignments to satisfy SC2155.
 fetch_latest_version() {
-    local temp_file=$(mktemp)
-    if curl -s --connect-timeout 5 --max-time 10 "https://api.github.com/repos/yorukot/superfile/releases/latest" -o "$temp_file"; then
-        local version=$(grep '"tag_name"' "$temp_file" | cut -d'"' -f4 | sed 's/^v//')
+    local temp_file
+    temp_file=$(mktemp)
+    if curl -fsS --connect-timeout 2 --max-time 5 "https://api.github.com/repos/yorukot/superfile/releases/latest" -o "$temp_file"; then
+        local version
+        version=$(grep '"tag_name"' "$temp_file" | cut -d'"' -f4 | sed 's/^v//')
         rm -f "$temp_file"
         if [ -n "$version" ]; then
             echo "$version"
         else
             echo -e "${red}❌ Failed to parse version from GitHub API${nc}" >&2
             rm -rf "$temp_dir"
             exit 1
         fi
     else
         rm -f "$temp_file"
         echo -e "${red}❌ Failed to fetch latest version from GitHub API${nc}" >&2
         rm -rf "$temp_dir"
         exit 1
     fi
 }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1ac2338 and 95fb2be.

📒 Files selected for processing (2)
  • website/public/install.ps1 (1 hunks)
  • website/public/install.sh (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1013
File: src/internal/utils/file_utils.go:252-275
Timestamp: 2025-08-24T03:25:10.117Z
Learning: In PR #1013 for yorukot/superfile, when reviewing the ReadFileContent utility function, lazysegtree chose to implement only the parameter renaming fix (filepath → filePath) to avoid shadowing and declined buffer size increases and optional truncation enhancements, preferring to keep the utility function scope focused and avoid over-engineering when the additional features aren't immediately needed.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.ps1:25-25
Timestamp: 2025-07-21T08:49:13.055Z
Learning: In the superfile PowerShell installer (website/public/install.ps1), lazysegtree prefers that users supply correct environment variable values (like SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the principle that users should provide properly formatted values.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.sh:42-42
Timestamp: 2025-07-21T08:49:44.628Z
Learning: In the superfile bash installer (website/public/install.sh), lazysegtree maintains the same principle as the PowerShell installer - users should supply correct environment variable values (SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the philosophy that users should provide properly formatted values.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/default_config.go:16-16
Timestamp: 2025-07-27T07:40:51.938Z
Learning: lazysegtree prefers simpler implementation approaches when the alternatives are significantly more complex, even if the alternatives might be architecturally cleaner, prioritizing maintainability and avoiding over-engineering.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/default_config.go:16-16
Timestamp: 2025-07-27T07:40:51.938Z
Learning: lazysegtree prefers simpler implementation approaches when the alternatives are significantly more complex, even if the alternatives might be architecturally cleaner, prioritizing maintainability and avoiding over-engineering.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 969
File: src/internal/key_function.go:40-40
Timestamp: 2025-08-03T09:34:55.721Z
Learning: lazysegtree emphasizes proper dependency direction in software architecture, preferring that low-level components (like modal handlers) should not depend on high-level components (like the main model object). He also prioritizes performance considerations, noting that creating objects on every keypress in hot code paths like key handling is inefficient and should be avoided.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1013
File: src/internal/model_render.go:329-341
Timestamp: 2025-08-29T14:11:21.380Z
Learning: lazysegtree prefers to defer help menu rendering optimizations and other technical debt improvements to separate GitHub issues when the current PR scope has grown too large, maintaining focus on the primary refactoring objectives while tracking performance improvements for future work.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 985
File: src/internal/model.go:0-0
Timestamp: 2025-08-11T01:49:30.040Z
Learning: lazysegtree prefers maintaining code correctness through proper design and invariants rather than adding defensive bounds checks at every slice access point, viewing such defensive programming as "duct taping" that can mask actual bugs instead of fixing them at their source.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 973
File: src/internal/ui/processbar/model_update.go:7-27
Timestamp: 2025-08-03T14:49:31.221Z
Learning: lazysegtree prefers to keep test-only code simple without adding production-level concerns like goroutine synchronization, cancellation contexts, or complex lifecycle management, even when such patterns might prevent potential issues, since the complexity isn't justified for test utilities.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1044
File: src/internal/utils/file_utils.go:149-149
Timestamp: 2025-09-09T13:29:11.771Z
Learning: lazysegtree prefers to keep PR scope focused on the primary objectives and considers pre-existing technical debt issues as out of scope for migration/refactoring PRs, preferring to defer such issues to separate GitHub issues rather than expanding the current PR scope.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 950
File: src/internal/ui/metadata/README.md:7-7
Timestamp: 2025-07-24T03:46:29.516Z
Learning: lazysegtree prefers to defer comprehensive unit testing to separate PRs when the current PR has grown too large, maintaining focus on the primary refactoring objectives while tracking testing requirements in dedicated GitHub issues.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 967
File: src/internal/key_function.go:45-47
Timestamp: 2025-08-02T11:47:07.713Z
Learning: lazysegtree prefers to track technical debt and architectural improvements in dedicated GitHub issues when they are identified during PR reviews but are beyond the scope of the current PR, particularly for complex refactoring needs like input handling architecture that would require significant changes.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/handle_file_operations.go:567-570
Timestamp: 2025-07-27T08:49:09.687Z
Learning: lazysegtree prefers to defer technical debt issues like model mutation concerns to later PRs when the current PR has already grown too large, maintaining focus on the primary objectives while acknowledging the need to track such issues for future work.
📚 Learning: 2025-07-21T08:49:13.055Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.ps1:25-25
Timestamp: 2025-07-21T08:49:13.055Z
Learning: In the superfile PowerShell installer (website/public/install.ps1), lazysegtree prefers that users supply correct environment variable values (like SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the principle that users should provide properly formatted values.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-07-21T08:49:44.628Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.sh:42-42
Timestamp: 2025-07-21T08:49:44.628Z
Learning: In the superfile bash installer (website/public/install.sh), lazysegtree maintains the same principle as the PowerShell installer - users should supply correct environment variable values (SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the philosophy that users should provide properly formatted values.

Applied to files:

  • website/public/install.ps1
  • website/public/install.sh
🪛 Shellcheck (0.11.0)
website/public/install.sh

[warning] 42-42: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 44-44: Declare and assign separately to avoid masking return values.

(SC2155)

🔇 Additional comments (2)
website/public/install.ps1 (1)

40-40: Dynamic default for SPF_INSTALL_VERSION looks good.

This keeps the override behavior intact while removing the hardcoded default.

website/public/install.sh (1)

62-62: Dynamic version default is consistent with the PS script.

Behavior is clear: env var wins, otherwise fetch latest.

Comment thread website/public/install.sh
Comment on lines -42 to +62
version=${SPF_INSTALL_VERSION:-1.4.0}
version=${SPF_INSTALL_VERSION:-$(fetch_latest_version)}

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Why not fallback to the latest known good version?
That will defeat the purpose of doing this. We need to avoid having to update these files every release.

If the version fetch fails, the download might fail too.

The trigger for doing this was the dependency on the website update for the release to be downloadable.

@lazysegtree lazysegtree force-pushed the fetch-version-automatically branch from 95fb2be to deee26d Compare December 14, 2025 10:54
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Dec 14, 2025

Copy link
Copy Markdown

Deploying superfile with  Cloudflare Pages  Cloudflare Pages

Latest commit: af81a2b
Status: ✅  Deploy successful!
Preview URL: https://ff7c095b.superfile.pages.dev
Branch Preview URL: https://fetch-version-automatically.superfile.pages.dev

View logs

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
AGENT.md (1)

321-321: Consider using a heading instead of bold text.

Static analysis suggests line 321 would be better formatted as a heading rather than bold emphasis for consistency with markdown best practices.

Apply this diff:

-**Times failed to follow CLAUDE.md instructions: 1**
+### Times failed to follow CLAUDE.md instructions: 1
website/public/install.sh (1)

41-58: LGTM! Implementation correctly mirrors the PowerShell version.

The function properly:

  • Fetches from GitHub API with 5-second timeout
  • Parses and strips leading 'v' from version tags
  • Handles fetch and parse failures with explicit exits
  • Respects SPF_INSTALL_VERSION environment variable precedence

Optional improvement: Shellcheck suggests separating variable declaration from assignment on line 44 to avoid masking the pipeline exit status:

 fetch_latest_version() {
     local response
     if response=$(curl -s --max-time 5 "https://api.github.com/repos/yorukot/superfile/releases/latest"); then
-        local version=$(echo "$response" | grep '"tag_name"' | cut -d'"' -f4 | sed 's/^v//')
+        local version
+        version=$(echo "$response" | grep '"tag_name"' | cut -d'"' -f4 | sed 's/^v//')
         if [ -n "$version" ]; then

This is a shellcheck best practice, though the current code already handles empty results correctly.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 95fb2be and deee26d.

📒 Files selected for processing (4)
  • AGENT.md (1 hunks)
  • src/internal/ui/zoxide/model.go.orig (1 hunks)
  • website/public/install.ps1 (1 hunks)
  • website/public/install.sh (1 hunks)
🧰 Additional context used
🧠 Learnings (15)
📓 Common learnings
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1013
File: src/internal/utils/file_utils.go:252-275
Timestamp: 2025-08-24T03:25:10.117Z
Learning: In PR #1013 for yorukot/superfile, when reviewing the ReadFileContent utility function, lazysegtree chose to implement only the parameter renaming fix (filepath → filePath) to avoid shadowing and declined buffer size increases and optional truncation enhancements, preferring to keep the utility function scope focused and avoid over-engineering when the additional features aren't immediately needed.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/default_config.go:16-16
Timestamp: 2025-07-27T07:40:51.938Z
Learning: lazysegtree prefers simpler implementation approaches when the alternatives are significantly more complex, even if the alternatives might be architecturally cleaner, prioritizing maintainability and avoiding over-engineering.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/default_config.go:16-16
Timestamp: 2025-07-27T07:40:51.938Z
Learning: lazysegtree prefers simpler implementation approaches when the alternatives are significantly more complex, even if the alternatives might be architecturally cleaner, prioritizing maintainability and avoiding over-engineering.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 969
File: src/internal/key_function.go:40-40
Timestamp: 2025-08-03T09:34:55.721Z
Learning: lazysegtree emphasizes proper dependency direction in software architecture, preferring that low-level components (like modal handlers) should not depend on high-level components (like the main model object). He also prioritizes performance considerations, noting that creating objects on every keypress in hot code paths like key handling is inefficient and should be avoided.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1013
File: src/internal/model_render.go:329-341
Timestamp: 2025-08-29T14:11:21.380Z
Learning: lazysegtree prefers to defer help menu rendering optimizations and other technical debt improvements to separate GitHub issues when the current PR scope has grown too large, maintaining focus on the primary refactoring objectives while tracking performance improvements for future work.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 985
File: src/internal/model.go:0-0
Timestamp: 2025-08-11T01:49:30.040Z
Learning: lazysegtree prefers maintaining code correctness through proper design and invariants rather than adding defensive bounds checks at every slice access point, viewing such defensive programming as "duct taping" that can mask actual bugs instead of fixing them at their source.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 973
File: src/internal/ui/processbar/model_update.go:7-27
Timestamp: 2025-08-03T14:49:31.221Z
Learning: lazysegtree prefers to keep test-only code simple without adding production-level concerns like goroutine synchronization, cancellation contexts, or complex lifecycle management, even when such patterns might prevent potential issues, since the complexity isn't justified for test utilities.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1044
File: src/internal/utils/file_utils.go:149-149
Timestamp: 2025-09-09T13:29:11.771Z
Learning: lazysegtree prefers to keep PR scope focused on the primary objectives and considers pre-existing technical debt issues as out of scope for migration/refactoring PRs, preferring to defer such issues to separate GitHub issues rather than expanding the current PR scope.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 950
File: src/internal/ui/metadata/README.md:7-7
Timestamp: 2025-07-24T03:46:29.516Z
Learning: lazysegtree prefers to defer comprehensive unit testing to separate PRs when the current PR has grown too large, maintaining focus on the primary refactoring objectives while tracking testing requirements in dedicated GitHub issues.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 967
File: src/internal/key_function.go:45-47
Timestamp: 2025-08-02T11:47:07.713Z
Learning: lazysegtree prefers to track technical debt and architectural improvements in dedicated GitHub issues when they are identified during PR reviews but are beyond the scope of the current PR, particularly for complex refactoring needs like input handling architecture that would require significant changes.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/handle_file_operations.go:567-570
Timestamp: 2025-07-27T08:49:09.687Z
Learning: lazysegtree prefers to defer technical debt issues like model mutation concerns to later PRs when the current PR has already grown too large, maintaining focus on the primary objectives while acknowledging the need to track such issues for future work.
📚 Learning: 2025-07-21T08:49:44.628Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.sh:42-42
Timestamp: 2025-07-21T08:49:44.628Z
Learning: In the superfile bash installer (website/public/install.sh), lazysegtree maintains the same principle as the PowerShell installer - users should supply correct environment variable values (SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the philosophy that users should provide properly formatted values.

Applied to files:

  • website/public/install.sh
  • website/public/install.ps1
📚 Learning: 2025-07-21T08:49:13.055Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.ps1:25-25
Timestamp: 2025-07-21T08:49:13.055Z
Learning: In the superfile PowerShell installer (website/public/install.ps1), lazysegtree prefers that users supply correct environment variable values (like SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the principle that users should provide properly formatted values.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-08-06T10:54:31.444Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 979
File: src/internal/common/predefined_variable.go:47-47
Timestamp: 2025-08-06T10:54:31.444Z
Learning: When lazysegtree says a review is "inaccurate and pre-existing issues. Not much useful," it means I should focus specifically on bugs or problems introduced by the current PR changes, not architectural concerns or code quality issues that were already present. The refactoring work in superfile PRs is generally well-implemented and should be evaluated on whether the specific changes work correctly, not on broader codebase architecture.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-04-28T03:48:46.327Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 781
File: src/internal/ui/sidebar/render.go:46-48
Timestamp: 2025-04-28T03:48:46.327Z
Learning: The user (lazysegtree) prefers to keep PRs focused and manageable in size, sometimes intentionally leaving TODO comments to track minor issues for later PRs rather than addressing everything at once.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-08-24T03:25:10.117Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1013
File: src/internal/utils/file_utils.go:252-275
Timestamp: 2025-08-24T03:25:10.117Z
Learning: In PR #1013 for yorukot/superfile, when reviewing the ReadFileContent utility function, lazysegtree chose to implement only the parameter renaming fix (filepath → filePath) to avoid shadowing and declined buffer size increases and optional truncation enhancements, preferring to keep the utility function scope focused and avoid over-engineering when the additional features aren't immediately needed.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-04-28T04:27:33.074Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 781
File: src/internal/model_render.go:254-256
Timestamp: 2025-04-28T04:27:33.074Z
Learning: When race conditions or other issues that are unrelated to the current PR's focus are identified during review, lazysegtree prefers creating separate GitHub issues to track them rather than addressing them in the current PR. This helps maintain PR focus and scope.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-08-06T10:27:20.420Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 979
File: src/internal/common/predefined_variable.go:47-47
Timestamp: 2025-08-06T10:27:20.420Z
Learning: lazysegtree specifically asked for a "strict review to find bad stuff" in PR reviews, indicating he wants comprehensive analysis that identifies all potential issues regardless of scope, not just issues within the current PR's scope.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-08-02T11:47:07.713Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 967
File: src/internal/key_function.go:45-47
Timestamp: 2025-08-02T11:47:07.713Z
Learning: lazysegtree prefers to track technical debt and architectural improvements in dedicated GitHub issues when they are identified during PR reviews but are beyond the scope of the current PR, particularly for complex refactoring needs like input handling architecture that would require significant changes.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-07-27T15:32:06.922Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/default_config.go:16-16
Timestamp: 2025-07-27T15:32:06.922Z
Learning: When reviewing large refactoring PRs that change async patterns (like moving from goroutines to tea.Cmd), always check for incomplete refactoring where some call sites still use the old pattern while others use the new pattern, as this often leads to compilation errors and architectural inconsistencies.

Applied to files:

  • website/public/install.ps1
  • AGENT.md
📚 Learning: 2025-08-06T10:54:31.444Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 979
File: src/internal/common/predefined_variable.go:47-47
Timestamp: 2025-08-06T10:54:31.444Z
Learning: When reviewing PRs, especially large refactoring ones, focus specifically on issues introduced by the changes rather than flagging pre-existing architectural problems or code smells that were already present before the PR. Distinguish between new bugs versus existing technical debt.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-07-29T03:42:36.581Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 965
File: src/internal/config_function.go:8-8
Timestamp: 2025-07-29T03:42:36.581Z
Learning: When reviewing large refactoring PRs that introduce new async patterns (like moving from global channels to dedicated processbar channels), always check for incomplete refactoring where critical functionality like navigation depends on data structures that are no longer being populated, as this often leads to completely broken features.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-07-24T03:46:29.516Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 950
File: src/internal/ui/metadata/README.md:7-7
Timestamp: 2025-07-24T03:46:29.516Z
Learning: lazysegtree prefers to defer comprehensive unit testing to separate PRs when the current PR has grown too large, maintaining focus on the primary refactoring objectives while tracking testing requirements in dedicated GitHub issues.

Applied to files:

  • website/public/install.ps1
📚 Learning: 2025-09-06T13:42:44.590Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1039
File: src/internal/ui/zoxide/model.go:53-54
Timestamp: 2025-09-06T13:42:44.590Z
Learning: The zoxide modal in src/internal/ui/zoxide/model.go is missing handling for common.Hotkeys.Quit when zClient is nil (lines 52-54), only handling ConfirmTyping and CancelTyping. This creates inconsistency with other modals like sort options menu, help menu, and notify model which all properly handle the Quit hotkey. The prompt modal has the same inconsistency.

Applied to files:

  • src/internal/ui/zoxide/model.go.orig
📚 Learning: 2025-09-04T07:24:30.872Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1041
File: src/internal/default_config.go:38-38
Timestamp: 2025-09-04T07:24:30.872Z
Learning: In the superfile codebase, the main model struct has a zClient field for zoxide directory tracking, and the trackDirectoryWithZoxide function in model.go checks if m.zClient is nil before proceeding. When reviewing model initialization functions like defaultModelConfig, ensure all struct fields are properly assigned, especially external service clients like zClient that enable core functionality.

Applied to files:

  • src/internal/ui/zoxide/model.go.orig
🪛 markdownlint-cli2 (0.18.1)
AGENT.md

321-321: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)

🪛 Shellcheck (0.11.0)
website/public/install.sh

[warning] 44-44: Declare and assign separately to avoid masking return values.

(SC2155)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Analyze (go)
  • GitHub Check: Cloudflare Pages
🔇 Additional comments (1)
website/public/install.ps1 (1)

24-40: LGTM! All past review feedback has been addressed.

The implementation correctly:

  • Uses 5-second timeout as suggested in PR description
  • Employs direct property access ($release.tag_name) which is the idiomatic approach for PowerShell
  • Strips leading 'v' from version tags
  • Provides proper error handling with informative messages
  • Respects SPF_INSTALL_VERSION environment variable precedence

This matches the bash script approach and is ready to merge.

Comment thread src/internal/ui/zoxide/model.go.orig Outdated
Comment thread src/internal/ui/zoxide/model.go.orig Outdated
@lazysegtree lazysegtree force-pushed the fetch-version-automatically branch from deee26d to c72c597 Compare December 14, 2025 11:10
@@ -21,8 +21,23 @@ Write-Host -ForegroundColor DarkRed " `$`$ |
Write-Host -ForegroundColor Red " `$`$/ "

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Test

➜  superfile git:(fetch-version-automatically) bash website/public/install.sh

                                                    ______   __  __
                                                   /      \ /  |/  |
  _______  __    __   ______    ______    ______  /$$$$$$  |$$/ $$ |  ______
 /       |/  |  /  | /      \  /      \  /      \ $$ |_ $$/ /  |$$ | /      \
/$$$$$$$/ $$ |  $$ |/$$$$$$  |/$$$$$$  |/$$$$$$  |$$   |    $$ |$$ |/$$$$$$  |
$$      \ $$ |  $$ |$$ |  $$ |$$    $$ |$$ |  $$/ $$$$/     $$ |$$ |$$    $$ |
 $$$$$$  |$$ \__$$ |$$ |__$$ |$$$$$$$$/ $$ |      $$ |      $$ |$$ |$$$$$$$$/
/     $$/ $$    $$/ $$    $$/ $$       |$$ |      $$ |      $$ |$$ |$$       |
$$$$$$$/   $$$$$$/  $$$$$$$/   $$$$$$$/ $$/       $$/       $$/ $$/  $$$$$$$/
                    $$ |
                    $$ |
                    $$/

Downloading superfile v1.4.0 for darwin (arm64)...
Extracting superfile...
Installing superfile...
Press ctrl+C to not install as sudo and try locally.
Password:
Sorry, try again.
Password:
🎉 Installation complete!
You can type "spf" to start!
➜  superfile git:(fetch-version-automatically)

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between deee26d and c72c597.

📒 Files selected for processing (2)
  • website/public/install.ps1 (1 hunks)
  • website/public/install.sh (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • website/public/install.ps1
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1013
File: src/internal/utils/file_utils.go:252-275
Timestamp: 2025-08-24T03:25:10.117Z
Learning: In PR #1013 for yorukot/superfile, when reviewing the ReadFileContent utility function, lazysegtree chose to implement only the parameter renaming fix (filepath → filePath) to avoid shadowing and declined buffer size increases and optional truncation enhancements, preferring to keep the utility function scope focused and avoid over-engineering when the additional features aren't immediately needed.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.sh:42-42
Timestamp: 2025-07-21T08:49:44.628Z
Learning: In the superfile bash installer (website/public/install.sh), lazysegtree maintains the same principle as the PowerShell installer - users should supply correct environment variable values (SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the philosophy that users should provide properly formatted values.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.ps1:25-25
Timestamp: 2025-07-21T08:49:13.055Z
Learning: In the superfile PowerShell installer (website/public/install.ps1), lazysegtree prefers that users supply correct environment variable values (like SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the principle that users should provide properly formatted values.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/default_config.go:16-16
Timestamp: 2025-07-27T07:40:51.938Z
Learning: lazysegtree prefers simpler implementation approaches when the alternatives are significantly more complex, even if the alternatives might be architecturally cleaner, prioritizing maintainability and avoiding over-engineering.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/default_config.go:16-16
Timestamp: 2025-07-27T07:40:51.938Z
Learning: lazysegtree prefers simpler implementation approaches when the alternatives are significantly more complex, even if the alternatives might be architecturally cleaner, prioritizing maintainability and avoiding over-engineering.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 969
File: src/internal/key_function.go:40-40
Timestamp: 2025-08-03T09:34:55.721Z
Learning: lazysegtree emphasizes proper dependency direction in software architecture, preferring that low-level components (like modal handlers) should not depend on high-level components (like the main model object). He also prioritizes performance considerations, noting that creating objects on every keypress in hot code paths like key handling is inefficient and should be avoided.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1013
File: src/internal/model_render.go:329-341
Timestamp: 2025-08-29T14:11:21.380Z
Learning: lazysegtree prefers to defer help menu rendering optimizations and other technical debt improvements to separate GitHub issues when the current PR scope has grown too large, maintaining focus on the primary refactoring objectives while tracking performance improvements for future work.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 985
File: src/internal/model.go:0-0
Timestamp: 2025-08-11T01:49:30.040Z
Learning: lazysegtree prefers maintaining code correctness through proper design and invariants rather than adding defensive bounds checks at every slice access point, viewing such defensive programming as "duct taping" that can mask actual bugs instead of fixing them at their source.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 973
File: src/internal/ui/processbar/model_update.go:7-27
Timestamp: 2025-08-03T14:49:31.221Z
Learning: lazysegtree prefers to keep test-only code simple without adding production-level concerns like goroutine synchronization, cancellation contexts, or complex lifecycle management, even when such patterns might prevent potential issues, since the complexity isn't justified for test utilities.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 1044
File: src/internal/utils/file_utils.go:149-149
Timestamp: 2025-09-09T13:29:11.771Z
Learning: lazysegtree prefers to keep PR scope focused on the primary objectives and considers pre-existing technical debt issues as out of scope for migration/refactoring PRs, preferring to defer such issues to separate GitHub issues rather than expanding the current PR scope.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 950
File: src/internal/ui/metadata/README.md:7-7
Timestamp: 2025-07-24T03:46:29.516Z
Learning: lazysegtree prefers to defer comprehensive unit testing to separate PRs when the current PR has grown too large, maintaining focus on the primary refactoring objectives while tracking testing requirements in dedicated GitHub issues.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 967
File: src/internal/key_function.go:45-47
Timestamp: 2025-08-02T11:47:07.713Z
Learning: lazysegtree prefers to track technical debt and architectural improvements in dedicated GitHub issues when they are identified during PR reviews but are beyond the scope of the current PR, particularly for complex refactoring needs like input handling architecture that would require significant changes.
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 963
File: src/internal/handle_file_operations.go:567-570
Timestamp: 2025-07-27T08:49:09.687Z
Learning: lazysegtree prefers to defer technical debt issues like model mutation concerns to later PRs when the current PR has already grown too large, maintaining focus on the primary objectives while acknowledging the need to track such issues for future work.
📚 Learning: 2025-07-21T08:49:44.628Z
Learnt from: lazysegtree
Repo: yorukot/superfile PR: 953
File: website/public/install.sh:42-42
Timestamp: 2025-07-21T08:49:44.628Z
Learning: In the superfile bash installer (website/public/install.sh), lazysegtree maintains the same principle as the PowerShell installer - users should supply correct environment variable values (SPF_INSTALL_VERSION without leading 'v') rather than adding validation code to handle malformed input, following the philosophy that users should provide properly formatted values.

Applied to files:

  • website/public/install.sh
🪛 Shellcheck (0.11.0)
website/public/install.sh

[warning] 44-44: Declare and assign separately to avoid masking return values.

(SC2155)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Cloudflare Pages
🔇 Additional comments (1)
website/public/install.sh (1)

41-55: Approach aligns well with PR objectives and prior feedback.

The function correctly fetches the latest release from GitHub API with the requested 5-second timeout, strips the v prefix, and exits on failure rather than falling back to a hardcoded version—which is exactly what the issue tracker discussion indicated was needed. The assignment pattern on line 58 properly allows users to override via SPF_INSTALL_VERSION while automatically fetching the latest when not set.

Also applies to: 58-58

Comment thread website/public/install.sh
- Removed --connect-timeout flag from curl
- Changed timeout from 10s to 5s for both scripts
- Use local variable instead of temp file in shell script
- Fixed bug where undefined temp_dir was being removed
@lazysegtree lazysegtree force-pushed the fetch-version-automatically branch from c72c597 to af81a2b Compare December 14, 2025 11:18
@lazysegtree lazysegtree added the pr-needs-testing This PR needs some thorough testing before we can merge label Dec 14, 2025
@lazysegtree

Copy link
Copy Markdown
Collaborator Author

Need test in windows.

@NSPC911

NSPC911 commented Dec 14, 2025

Copy link
Copy Markdown
image broski is not quitting
Invoke-RestMethod "https://api.github.com/repos/yorukot/superfile/releases/latest"  | Select-Object -ExpandProperty tag_name

yeah this works, but you can also choose to use

(Invoke-RestMethod "https://api.github.com/repos/yorukot/superfile/releases/latest" ).tag_name

if you want.`

@NSPC911

NSPC911 commented Dec 14, 2025

Copy link
Copy Markdown

No issues other than that, but I think I'll come back later to make some minor changes to the PS1 script, to be a bit nicer.

@lazysegtree lazysegtree requested a review from yorukot December 16, 2025 07:02
@lazysegtree lazysegtree removed the pr-needs-testing This PR needs some thorough testing before we can merge label Dec 16, 2025
@lazysegtree lazysegtree merged commit 6cb5efe into main Dec 16, 2025
15 checks passed
@lazysegtree lazysegtree deleted the fetch-version-automatically branch January 1, 2026 18:21
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Jan 17, 2026
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [yorukot/superfile](https://github.com/yorukot/superfile) | minor | `v1.4.0` → `v1.5.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>yorukot/superfile (yorukot/superfile)</summary>

### [`v1.5.0`](https://github.com/yorukot/superfile/releases/tag/v1.5.0)

[Compare Source](yorukot/superfile@v1.4.0...v1.5.0)

This release brings major new features, including video and PDF preview support, multi-column file panels, and configurable navigation, alongside significant code refactoring and comprehensive bug fixes.

#### Install:

[**Click me to know how to install**](https://github.com/yorukot/superfile?tab=readme-ov-file#installation)

#### Highlights

- Added video and PDF preview support via loading the first frame/page as an image. Thanks [@&#8203;Yassen-Higazi](https://github.com/Yassen-Higazi) for the implementation

<details><summary>Screenshots</summary>
<p>

<img width="951" height="596" alt="image" src="https://github.com/user-attachments/assets/6edfa9c2-ebcd-4622-a115-f71fa533b3e1" />

<img width="949" height="594" alt="image" src="https://github.com/user-attachments/assets/8d15fa46-5178-422d-8eea-455cac31fdd0" />

</p>
</details>

- Multi-column file panel view with date/size/permission columns. Thanks [@&#8203;xelavopelk](https://github.com/xelavopelk) for the implementation

<details><summary>Screenshots</summary>
<p>

<img width="420" height="264" alt="image" src="https://github.com/user-attachments/assets/e172f1e8-c2a5-42d2-8eeb-62e721f61a4f" />

</p>
</details>

- Configurable fast navigation in the Filepanel. See this MR for more details: [#&#8203;1220](yorukot/superfile#1220)
- You can now configure `spf` to open files with specific extensions with your choice of editor application. Thanks  [@&#8203;litvinov-git](https://github.com/litvinov-git) for the implementation See this MR for more details: [#&#8203;1197](yorukot/superfile#1197)
- Terminal stdout support for shell commands
- Allow launching with the filename. `spf /a/b/c.txt` will launch in `/a/b` with `c.txt` as the selected file.
- Various bug fixes, including modal confirmations, layout issues, and race conditions. See 'Detailed Change Summary'

##### Internal Updates

- Separated FilePanel and FileModel into a dedicated package for better code organization
- Comprehensive end-to-end testing with layout fixes
- Enhanced dimension validation and sidebar fixes
- Updated multiple dependencies including Astro, Go toolchain, and linters
- Added gosec linter and MND linter with magic number cleanup

#### Detailed Change Summary

<details><summary>Details</summary>
<p>

##### Update
- allow hover to file [`#1177`](yorukot/superfile#1177) by @&#8203;lazysegtree
- show count selected items in select mode [`#1187`](yorukot/superfile#1187) by @&#8203;xelavopelk
- Add icon alias for kts to kt [`#1153`](yorukot/superfile#1153) by @&#8203;nicolaic
- link icon and metadata [`#1171`](yorukot/superfile#1171) by @&#8203;xelavopelk
- user configuration of editors by file extension [`#1197`](yorukot/superfile#1197) by @&#8203;litvinov-git
- add video preview support [`#1178`](yorukot/superfile#1178) by @&#8203;Yassen-Higazi
- Add pdf preview support [`#1198`](yorukot/superfile#1198) by @&#8203;Yassen-Higazi
- Add icons in pinned directories [`#1215`](yorukot/superfile#1215) by @&#8203;lazysegtree
- Enable fast configurable navigation [`#1220`](yorukot/superfile#1220) by @&#8203;lazysegtree
- add Trash bin to default directories for Linux [`#1236`](yorukot/superfile#1236) by @&#8203;lazysegtree
- add terminal stdout support for shell commands [`#1250`](yorukot/superfile#1250) by @&#8203;majiayu000
- More columns in file panel (MVP) [`#1268`](yorukot/superfile#1268) by @&#8203;xelavopelk

##### Bug Fix
- only calculate checksum on files [`#1119`](yorukot/superfile#1119) by @&#8203;nikero41
- Linter issue with PrintfAndExit [`#1133`](yorukot/superfile#1133) by @&#8203;xelavopelk
- Remove repeated os.ReadDir calls [`#1155`](yorukot/superfile#1155) by @&#8203;lazysegtree
- Disable COPYFILE in macOS [`#1194`](yorukot/superfile#1194) by @&#8203;lazysegtree
- add missing hotkeys to help menu [`#1192`](yorukot/superfile#1192) by @&#8203;lazysegtree
- Fetch latest version automatically [`#1127`](yorukot/superfile#1127) by @&#8203;lazysegtree
- Use async methods to prevent test race conditions [`#1201`](yorukot/superfile#1201) by @&#8203;lazysegtree
- update metadata and process bar sizes when toggling footer [`#1218`](yorukot/superfile#1218) by @&#8203;lazysegtree
- File panel dimension management [`#1222`](yorukot/superfile#1222) by @&#8203;lazysegtree
- Layout fixes with full end-to-end tests [`#1227`](yorukot/superfile#1227) by @&#8203;lazysegtree
- Fix flaky tests [`#1233`](yorukot/superfile#1233) by @&#8203;lazysegtree
- modal confirmation bug with arrow keys [`#1243`](yorukot/superfile#1243) by @&#8203;lazysegtree
- small file panel optimization [`#1241`](yorukot/superfile#1241) by @&#8203;xelavopelk
- use ExtractOperationMsg for extraction [`#1248`](yorukot/superfile#1248) by @&#8203;lazysegtree
- skip open_with from missing field validation [`#1251`](yorukot/superfile#1251) by @&#8203;lazysegtree
- border height validation fixes [`#1267`](yorukot/superfile#1267) by @&#8203;lazysegtree
- fix case with two active panes [`#1271`](yorukot/superfile#1271) by @&#8203;xelavopelk
- help model formatting [`#1277`](yorukot/superfile#1277) by @&#8203;booth-w

##### Optimization
- simplify renameIfDuplicate logic [`#1100`](yorukot/superfile#1100) by @&#8203;sarff
- separate FilePanel into dedicated package [`#1195`](yorukot/superfile#1195) by @&#8203;lazysegtree
- File model separation [`#1223`](yorukot/superfile#1223) by @&#8203;lazysegtree
- Dimension validations [`#1224`](yorukot/superfile#1224) by @&#8203;lazysegtree
- layout validation and sidebar dimension fixes [`#1228`](yorukot/superfile#1228) by @&#8203;lazysegtree
- user rendering package and removal of unused preview code [`#1245`](yorukot/superfile#1245) by @&#8203;lazysegtree
- user rendering package for file preview [`#1249`](yorukot/superfile#1249) by @&#8203;lazysegtree

##### Documentation
- update Fish shell setup docs [`#1142`](yorukot/superfile#1142) by @&#8203;wleoncio
- fix macOS typo [`#1212`](yorukot/superfile#1212) by @&#8203;wcbing
- stylistic and linguistic cleanup of config documentation [`#1184`](yorukot/superfile#1184) by @&#8203;ninetailedtori

##### Dependencies
- update astro monorepo [`#1010`](yorukot/superfile#1010) by @&#8203;renovate[bot]
- update starlight-giscus [`#1020`](yorukot/superfile#1020) by @&#8203;renovate[bot]
- bump astro versions [`#1138`](yorukot/superfile#1138), [`#1157`](yorukot/superfile#1157), [`#1158`](yorukot/superfile#1158) by @&#8203;dependabot[bot], @&#8203;renovate[bot]
- bump vite [`#1134`](yorukot/superfile#1134) by @&#8203;dependabot[bot]
- update setup-go action [`#1038`](yorukot/superfile#1038) by @&#8203;renovate[bot]
- update expressive-code plugins [`#1189`](yorukot/superfile#1189), [`#1246`](yorukot/superfile#1246) by @&#8203;renovate[bot]
- update sharp [`#1256`](yorukot/superfile#1256) by @&#8203;renovate[bot]
- update fontsource monorepo [`#1257`](yorukot/superfile#1257) by @&#8203;renovate[bot]
- update urfave/cli [`#1136`](yorukot/superfile#1136), [`#1190`](yorukot/superfile#1190) by @&#8203;renovate[bot]
- update astro / starlight / ansi / toolchain deps [`#1275`](yorukot/superfile#1275), [`#1278`](yorukot/superfile#1278), [`#1280`](yorukot/superfile#1280) by @&#8203;renovate[bot]
- update python and go versions [`#1276`](yorukot/superfile#1276), [`#1191`](yorukot/superfile#1191) by @&#8203;renovate[bot]
- update golangci-lint action [`#1286`](yorukot/superfile#1286) by @&#8203;renovate[bot]

##### Misc
- update CI input names [`#1120`](yorukot/superfile#1120) by @&#8203;nikero41
- Everforest Dark Hard theme [`#1114`](yorukot/superfile#1114) by @&#8203;fzahner
- migrate tutorial demo assets to local [`#1140`](yorukot/superfile#1140) by @&#8203;yorukot
- new logo asset [`#1145`](yorukot/superfile#1145) by @&#8203;nonepork
- mirror repository to codeberg [`#1141`](yorukot/superfile#1141) by @&#8203;yorukot
- sync package lock [`#1143`](yorukot/superfile#1143) by @&#8203;yorukot
- bump golangci-lint version [`#1135`](yorukot/superfile#1135) by @&#8203;lazysegtree
- add gosec linter [`#1185`](yorukot/superfile#1185) by @&#8203;lazysegtree
- enable MND linter and clean magic numbers [`#1180`](yorukot/superfile#1180) by @&#8203;lazysegtree
- skip permission tests when running as root [`#1186`](yorukot/superfile#1186) by @&#8203;lazysegtree
- release v1.4.1-rc [`#1203`](yorukot/superfile#1203) by @&#8203;lazysegtree
- 1.5.0-rc1 housekeeping changes [`#1264`](yorukot/superfile#1264) by @&#8203;lazysegtree

</p>
</details> 

#### New Contributors
* @&#8203;fzahner made their first contribution in yorukot/superfile#1114
* @&#8203;sarff made their first contribution in yorukot/superfile#1100
* @&#8203;nicolaic made their first contribution in yorukot/superfile#1153
* @&#8203;Yassen-Higazi made their first contribution in yorukot/superfile#1178
* @&#8203;ninetailedtori made their first contribution in yorukot/superfile#1184
* @&#8203;litvinov-git made their first contribution in yorukot/superfile#1197
* @&#8203;wcbing made their first contribution in yorukot/superfile#1212
* @&#8203;majiayu000 made their first contribution in yorukot/superfile#1250

**Full Changelog**: <yorukot/superfile@v1.4.0...v1.5.0>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44MC4xIiwidXBkYXRlZEluVmVyIjoiNDIuODAuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6Om1pbm9yIl19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

OS-Windows Issue is related to windows only, and doesn't affect Linux/Mac

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants