Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Bug report
description: Report a reproducible problem in fishmarks
title: "bug: "
labels:
- bug
body:
- type: markdown
attributes:
value: |
Thanks for reporting a bug.
- type: input
id: fish-version
attributes:
label: Fish version
placeholder: fish, version 4.0.6
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
description: Provide exact commands and inputs.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected behavior
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behavior
validations:
required: true
- type: textarea
id: additional
attributes:
label: Additional context
description: Logs, screenshots, and environment details.
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability report
url: https://github.com/techwizrd/fishmarks/security/advisories/new
about: Please report security issues privately.
32 changes: 32 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Feature request
description: Propose an improvement for fishmarks
title: "feat: "
labels:
- enhancement
body:
- type: markdown
attributes:
value: |
Thanks for the idea.
- type: textarea
id: problem
attributes:
label: Problem statement
description: What user problem does this solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: Describe expected behavior and UX.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
- type: textarea
id: context
attributes:
label: Additional context
22 changes: 22 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## Summary

-

## Why

-

## Changes

-

## Validation

- [ ] `fish tests/check.fish`
- [ ] `fish tests/run.fish`

## Checklist

- [ ] Tests added or updated for behavior changes
- [ ] Docs updated when setup or usage changed
- [ ] No breaking changes, or migration path documented
10 changes: 10 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: 2
updates:
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
labels:
- dependencies
- ci
61 changes: 61 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: CI

on:
push:
pull_request:

jobs:
test:
name: test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Show fish version
uses: fish-actions/install-fish@v1

- name: Print fish version
run: fish --version

- name: Validate fish scripts
run: fish tests/check.fish

- name: Run test suite
run: fish tests/run.fish

- name: Smoke test installer
if: matrix.os == 'ubuntu-latest'
run: |
TEST_HOME=$(mktemp -d)
HOME="$TEST_HOME" fish install.fish
test -f "$TEST_HOME/.config/fish/conf.d/fishmarks.fish"

fisher-smoke:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install fish
uses: fish-actions/install-fish@v1

- name: Install plugin with fisher
uses: fish-actions/fisher@v1
with:
plugins: $GITHUB_WORKSPACE

- name: Verify plugin commands load
run: |
type -q save_bookmark
type -q go_to_bookmark
type -q fishmarks_version
shell: fish {0}
27 changes: 27 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Release

on:
push:
tags:
- "v*"

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Create source archive
run: |
git archive --format=tar.gz --output="fishmarks-${GITHUB_REF_NAME}.tar.gz" HEAD

- name: Publish GitHub release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: fishmarks-${{ github.ref_name }}.tar.gz
21 changes: 21 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: check-merge-conflict
- id: end-of-file-fixer
- id: trailing-whitespace
- id: check-added-large-files

- repo: local
hooks:
- id: fish-check
name: fish syntax and formatting
entry: fish tests/check.fish
language: system
files: \.fish$
- id: fish-tests
name: fishmarks behavior tests
entry: fish tests/run.fish
language: system
pass_filenames: false
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Changelog

All notable changes to this project are documented in this file.

The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added

- Fish plugin packaging with `functions/`, `conf.d/`, and `completions/` layout.
- Automated test suite (`tests/run.fish`) and style/syntax checks (`tests/check.fish`).
- GitHub Actions CI workflow and pre-commit/prek hook configuration.
- Contributor policy docs and GitHub issue/PR templates.
- `fishmarks_version` command to report plugin version.

### Changed

- Core bookmark handling refactored to fish-native parsing and safer file processing.
- Installer updated for Fish 3+ and modern startup integration via `conf.d`.
- `save_bookmark` now rejects paths containing newline or carriage-return characters.
29 changes: 29 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Code of Conduct

## Our pledge

We want fishmarks to be a welcoming, inclusive, and respectful community for everyone.

## Our standards

Examples of behavior that contributes to a positive environment:

- Being respectful and considerate in communication
- Giving and accepting constructive feedback
- Focusing on what is best for the community and users

Examples of unacceptable behavior:

- Harassment or personal attacks
- Discriminatory language or conduct
- Trolling, insulting, or deliberately disruptive behavior

## Scope

This Code of Conduct applies in project spaces, including issues, pull requests, and discussions.

## Enforcement

Project maintainers are responsible for clarifying and enforcing this Code of Conduct and may remove, edit, or reject comments, commits, code, issues, and other contributions that are not aligned with it.

To report concerns, open a private security advisory or contact the maintainers through repository administrators.
52 changes: 52 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Contributing to fishmarks

Thanks for contributing.

## Development setup

1. Fork and clone the repository.
2. Create a feature branch from `master`.
3. Install Fish 3+.
4. Install local hooks:

```fish
prek install
```

## Validate changes locally

Run checks before committing:

```fish
fish tests/check.fish
fish tests/run.fish
```

Shortcut:

```sh
make test
```

Or run all hooks:

```fish
prek run --all-files
```

## Pull requests

- Keep PRs focused and small when possible.
- Include tests for behavior changes.
- Update docs when usage or setup changes.
- Use clear commit messages that explain why the change is needed.

## Compatibility policy

- The project targets Fish 3+.
- Backward compatibility with existing bookmark storage (`~/.sdirs`) should be preserved unless a migration path is documented.

## Versioning and changelog

- Releases follow Semantic Versioning.
- User-visible changes should be added to `CHANGELOG.md` under `Unreleased`.
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.PHONY: check test

check:
fish tests/check.fish

test: check
fish tests/run.fish
Loading