Modernize fishmarks for Fish plugin managers with tests and CI#24
Merged
Modernize fishmarks for Fish plugin managers with tests and CI#24
Conversation
Refactor fishmarks to use fish-native parsing with safer bookmark handling, and package it with conf.d/functions/completions for Fisher compatibility while keeping legacy marks.fish loading. Add an automated Fish test suite and update install/docs to match modern Fish workflows.
Introduce a shared fish check runner, pre-commit/prek hooks, and a GitHub Actions workflow so local and remote validation stay aligned. Include an installer smoke test and document the development workflow in the README.
Document local contribution workflow, community conduct expectations, and a private vulnerability reporting process so contributors have clear standards and maintainers have a safer intake path.
Provide structured bug report, feature request, and pull request templates to improve triage quality and keep validation expectations consistent across contributions.
Introduce a Keep-a-Changelog file and document Semantic Versioning expectations in contributor and user docs so release impact is explicit and traceable.
Publish GitHub Releases automatically for version tags and attach a source tarball so users can install from a stable release artifact.
Execute checks and tests in a matrix of official fish container images to catch regressions across supported shell versions while preserving the installer smoke test.
Automatically track GitHub Actions dependency updates so workflow security patches and improvements are proposed regularly.
Define branch protection defaults in a GitHub Settings policy file and document how to apply the same rules manually when the Settings app is unavailable.
Escape and unescape shell-sensitive path characters when writing and reading ~/.sdirs so fishmarks remains interoperable with bashmarks for complex directory names. Add regression tests for special-character round-tripping and stored export line encoding.
Fix installer source-path quoting and harden decode behavior for safer /home/kunal handling, then strengthen escape regression assertions to avoid implementation-coupled expectations. Clean README quality issues, defer contribution details to CONTRIBUTING.md, and remove the unused GitHub Settings app policy file.
Use a 2013-present copyright range in the loader header and README license section to reflect continued maintenance.
Introduce a fishmarks_version command and document the plugin-first layout while keeping marks.fish compatibility loading. Reject unsupported newline/carriage-return paths in save_bookmark, add regression coverage, and add make-based check/test shortcuts for contributors.
Replace container-based fish execution with GitHub runner best-practice setup using fish-actions/install-fish, run checks on ubuntu and macOS, and add a fisher installation smoke test to verify plugin-manager compatibility.
a62b76f to
216bff6
Compare
Point the CI badge at the active branch status and replace unstable release/license badges with reliable semver and Apache 2.0 badges.
Point the README CI badge back to master so it reflects default-branch workflow health instead of the feature branch.
This was referenced Mar 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
functions/,conf.d/,completions/) while preserving compatibility via a legacymarks.fishloader.~/.sdirsformat.prek/pre-commit), CI, multi-version Fish test matrix, release workflow, and Dependabot updates.CONTRIBUTING.md,CODE_OF_CONDUCT.md,SECURITY.md, PR/issue templates, changelog policy).fishmarks_version), stricter path validation (reject newline/CR paths), and expanded regression tests.Key Changes
functions/*.fishconf.d/fishmarks.fishcompletions/*.fishmarks.fishas a compatibility loader for existing manual installsexport DIR_<name>="..."in~/.sdirs)",$,`,\)fishmarks_versiontests/run.fishbehavioral test suitetests/check.fishsyntax/format checks.pre-commit-config.yamlfor local enforcement.github/workflows/ci.yml) with Fish version matrix.github/workflows/release.yml).github/dependabot.yml)Makefileshortcuts (make check,make test)CONTRIBUTING.md,CODE_OF_CONDUCT.md,SECURITY.md,CHANGELOG.mdValidation
fish tests/check.fishfish tests/run.fishResult: all tests pass (33 assertions).
Compatibility Notes
marks.fishremain supported.~/.sdirsdata remains supported.