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
71 changes: 71 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Bug report
description: Something doesn't work the way it should.
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to file a report.
Before submitting, please check existing issues so we
don't duplicate effort.

- type: textarea
id: what-happened
attributes:
label: What happened?
description: Briefly describe the unexpected behaviour.
placeholder: e.g. "Multi-column layout drops the last paragraph when the document ends mid-page."
validations:
required: true

- type: textarea
id: expected
attributes:
label: What did you expect to happen?
placeholder: e.g. "The last paragraph should render in the next column instead of being clipped."
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: How can we reproduce it?
description: |
A minimal markdown file plus the exact `scroll` command
is the most useful form. If the bug only triggers in
the interactive viewer, list the keypresses too.
value: |
1. Save the following as `repro.md`:
```markdown
<!-- minimal markdown that triggers the bug -->
```
2. Run `scroll repro.md`
3. Press ...
validations:
required: true

- type: textarea
id: environment
attributes:
label: Environment
description: |
Helpful to nail down terminal-specific bugs. Run
`scroll --print-theme | head -5` for the version of
scroll you're using if it's not obvious.
value: |
- scroll version (or commit):
- OS:
- Terminal emulator + version:
- `$TERM`:
- `$COLORTERM`:
- `$SCROLL_IMG_PROTO` (if set):
validations:
required: true

- type: textarea
id: extra
attributes:
label: Anything else?
description: |
Logs, screenshots, or terminal recordings (e.g. asciinema)
are very welcome — drop them here.
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Usage question or design discussion
url: https://github.com/rynobey/scroll/discussions
about: |
For "how do I do X with scroll" or general design
conversations, please open a discussion instead of an
issue. Issues are reserved for actionable bugs and
concrete feature requests.
- name: Report a security vulnerability
url: https://github.com/rynobey/scroll/security/advisories/new
about: |
Security issues go through GitHub's private vulnerability
reporting, not the public issue tracker. See SECURITY.md.
43 changes: 43 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Feature request
description: Suggest a new capability or behaviour change.
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
Before filing, skim the
[roadmap](https://github.com/rynobey/scroll/blob/main/docs/roadmap.md)
— the idea may already be tracked.

- type: textarea
id: problem
attributes:
label: What problem does this solve?
description: |
Lead with the user-visible outcome you're trying to
reach. "I want to do X but can't" is more useful than
"scroll should have feature Y".
validations:
required: true

- type: textarea
id: proposal
attributes:
label: What do you have in mind?
description: |
Sketch the behaviour, CLI flag, config knob, or
keybinding. Doesn't have to be final — just enough to
discuss.

- type: textarea
id: alternatives
attributes:
label: What have you tried as a workaround?
description: |
Helps us understand whether the gap is fundamental or
ergonomic.

- type: textarea
id: extra
attributes:
label: Anything else?
34 changes: 34 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<!--
Thanks for the PR! Please skim CONTRIBUTING.md if you haven't:
https://github.com/rynobey/scroll/blob/main/CONTRIBUTING.md

A short focused PR is much easier to review than a sprawling
one. If your change naturally splits into "refactor + feature",
land them as two PRs.
-->

## Summary

<!-- One or two sentences. What's changing and why? -->

## Notes for review

<!-- Anything the reviewer should look at first, alternatives
you considered, or trade-offs you want a second opinion on. -->

## Testing

<!-- How did you verify this? Unit tests, manual smoke tests,
visual eyeball on a fixture from testdata/, etc. -->

## Checklist

- [ ] `go vet ./...` clean
- [ ] `staticcheck ./...` clean (if installed)
- [ ] `go test -race -count=1 ./...` passes
- [ ] User-visible behaviour changes have a `CHANGELOG.md`
`[Unreleased]` entry
- [ ] User-visible behaviour changes update the relevant page
in `docs/`
- [ ] Commits use imperative subject lines, capitalised, ≤70
chars (see CONTRIBUTING.md)
19 changes: 19 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
version: 2
updates:
- package-ecosystem: gomod
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 5
labels:
- dependencies
- go

- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 5
labels:
- dependencies
- github-actions
40 changes: 40 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: pr

on:
pull_request:
push:
branches: [main]

permissions:
contents: read

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true

- name: go vet
run: go vet ./...

- name: staticcheck
uses: dominikh/staticcheck-action@v1
with:
version: latest
install-go: false

- name: govulncheck
uses: golang/govulncheck-action@v1
with:
go-version-file: go.mod

- name: go test
run: go test -race -count=1 ./...

- name: go build
run: go build ./...
55 changes: 55 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: release

on:
push:
tags: ['v*']

permissions:
contents: write

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version-file: go.mod
cache: true

- name: Generate third-party license bundle
run: make licenses

- name: Build cross-platform binaries
run: make release

- name: Package archives
run: |
set -euo pipefail
tag="${GITHUB_REF#refs/tags/}"
cd bin
for f in scroll-*; do
# Skip anything that isn't a raw binary (defensive: a re-run
# with a non-empty bin/ would otherwise trip over its own
# generated archives).
case "$f" in *.tar.gz|checksums.txt) continue;; esac
arch="${f#scroll-}" # e.g. linux-amd64
pkg="scroll-${tag}-${arch}"
mkdir -p "${pkg}"
cp "${f}" "${pkg}/scroll"
cp ../LICENSE ../README.md "${pkg}/"
cp -r ../third_party "${pkg}/third_party"
tar czf "${pkg}.tar.gz" "${pkg}"
sha256sum "${pkg}.tar.gz" >> "checksums.txt"
rm -rf "${pkg}"
done

- name: Create GitHub release
uses: softprops/action-gh-release@v2
with:
files: |
bin/*.tar.gz
bin/checksums.txt
generate_release_notes: true
fail_on_unmatched_files: true
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/scroll
/bin/
/third_party/
*.test
*.out
Loading
Loading