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
84 changes: 84 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Bug report
description: Report a reproducible bug in FluentTyper
title: "[Bug]: "
labels:
- bug
body:
- type: markdown
attributes:
value: |
Thanks for reporting a bug. Please fill in the details below so we can reproduce and fix it.

- type: textarea
id: summary
attributes:
label: What happened?
description: Describe the bug clearly and briefly.
placeholder: FluentTyper suggestions disappear when...
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: Provide a minimal set of steps.
placeholder: |
1. Open ...
2. Type ...
3. Press ...
4. Observe ...
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected behavior
placeholder: Suggestions should stay visible and selectable.
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual behavior
placeholder: Suggestions disappear after the first keystroke.
validations:
required: true

- type: dropdown
id: browser
attributes:
label: Browser
options:
- Chrome
- Firefox
- Edge
- Other
validations:
required: true

- type: input
id: fluenttyper_version
attributes:
label: FluentTyper version
description: You can usually find this in your browser extension manager.
placeholder: e.g. 2026.2.1
validations:
required: true

- type: input
id: os
attributes:
label: Operating system
placeholder: e.g. macOS 15.3, Windows 11, Ubuntu 24.04
validations:
required: true

- type: textarea
id: extra
attributes:
label: Logs, screenshots, or recordings
description: Drag and drop media files here if helpful.
placeholder: Add any extra context that might help debugging.
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Feature ideas and feedback
url: https://github.com/bartekplus/FluentTyper/issues/new?template=feature_request.yml
about: Share product suggestions or general feedback via the feature request form.
- name: Report a security vulnerability
url: https://github.com/bartekplus/FluentTyper/security/policy
about: Please do not post security vulnerabilities in public issues.
77 changes: 77 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Feature request
description: Suggest an improvement or new capability for FluentTyper
title: "[Feature]: "
labels:
- enhancement
body:
- type: markdown
attributes:
value: |
Thanks for suggesting an improvement. Please share enough detail to evaluate scope and impact.

- type: textarea
id: problem
attributes:
label: Problem to solve
description: What pain point are you experiencing today?
placeholder: I often need to...
validations:
required: true

- type: textarea
id: proposal
attributes:
label: Proposed solution
description: Describe what you want FluentTyper to do.
placeholder: Add an option to...
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Any workaround or alternative approaches you tried.
placeholder: I tried...
validations:
required: false

- type: dropdown
id: browsers
attributes:
label: Affected browser(s)
description: Select the browser where this feature matters most.
options:
- Chrome
- Firefox
- Edge
- All browsers
- Other
validations:
required: true

- type: input
id: fluenttyper_version
attributes:
label: FluentTyper version
description: Optional but helpful for context.
placeholder: e.g. 2026.2.1
validations:
required: false

- type: textarea
id: mockups
attributes:
label: Mockups, examples, or references
description: Add screenshots, links, or examples from other tools.
placeholder: Link or drag files here.
validations:
required: false

- type: textarea
id: extra
attributes:
label: Additional context
placeholder: Anything else that would help evaluate this request.
validations:
required: false
143 changes: 143 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
# Contributing to FluentTyper

Thanks for your interest in improving FluentTyper. This document is for developers and contributors.

## Before You Start

- Read the user docs in [README.md](README.md) to understand product behavior.
- Check open issues before starting work: [github.com/bartekplus/FluentTyper/issues](https://github.com/bartekplus/FluentTyper/issues)
- For bugs, use the bug report template: [issues/new/choose](https://github.com/bartekplus/FluentTyper/issues/new/choose)

## Development Setup

### Requirements

- Node.js 24 (matches CI)
- npm

### Local Setup

1. Fork the repository and clone your fork.
2. Install dependencies:
```bash
npm ci
```
3. Build the extension:
```bash
npm run build
```

## Run Locally in a Browser

Build once:

```bash
npm run build
```

Or run watch mode for iterative development:

```bash
npm run watch
```

To test a Chrome/Edge build specifically:

```bash
PLATFORM=chrome npm run watch
```

Load the unpacked extension from the `build/` directory:

- Chrome/Edge: open extensions page, enable developer mode, choose "Load unpacked", select `build/`
- Firefox: open `about:debugging`, choose "This Firefox", click "Load Temporary Add-on", select `build/manifest.json`

## Quality Checks

Run these before opening a pull request:

```bash
npm run check
npm run test
```

Optional local autofix formatting and linting:

```bash
npm run lint
```

Optional end-to-end tests:

```bash
npm run test:e2e
```

## Branch and PR Workflow

1. Create a branch from `master`.
2. Keep commits focused and descriptive.
3. Open a pull request against `master`.
4. Ensure CI is green (tests and lint checks).
5. Describe what changed, why, and how it was tested.

## Bug Reporting Process

Both users and contributors should report product bugs via GitHub issue forms:

- Issue chooser: [github.com/bartekplus/FluentTyper/issues/new/choose](https://github.com/bartekplus/FluentTyper/issues/new/choose)
- Direct bug form: [bug_report.yml](https://github.com/bartekplus/FluentTyper/issues/new?template=bug_report.yml)

Include these details in every bug report:

- Clear reproduction steps
- Expected result
- Actual result
- Browser and OS
- FluentTyper version
- Screenshots or recordings (if available)

## Feature Request Process

Use GitHub issue forms for feature ideas and product improvements:

- Issue chooser: [github.com/bartekplus/FluentTyper/issues/new/choose](https://github.com/bartekplus/FluentTyper/issues/new/choose)
- Direct feature form: [feature_request.yml](https://github.com/bartekplus/FluentTyper/issues/new?template=feature_request.yml)

Strong feature requests include:

- The user problem and impact
- A concrete proposal
- Alternatives considered
- Browser-specific context

## Security Reporting

Do not disclose vulnerabilities in public issues. Follow [SECURITY.md](SECURITY.md) for private reporting.

## Documentation Contributions

Documentation improvements are welcome. Keep audience separation:

- `README.md`: end-user focused
- `CONTRIBUTING.md`: developer and contribution workflow

When behavior changes, update docs in the same pull request.

## Dependencies

FluentTyper is built with:

- [Tribute](https://github.com/bartekplus/tribute)
- [Presage](https://github.com/bartekplus/presage)
- [Fancier Settings](https://github.com/bartekplus/fancier-settings)

## License

By contributing, you agree that your contributions are licensed under the [MIT License](LICENSE).

## Sponsorship and Support

If you want to support maintenance and development:

[![Buy Me a Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support-FFDD00?logo=buymeacoffee&logoColor=000000)](https://www.buymeacoffee.com/FluentTyper)
Loading
Loading