Skip to content
Closed
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
58 changes: 58 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Bug report
description: Report a reproducible problem in Echo Loop.
title: "FIX: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Thanks for reporting a problem. Please avoid attaching private learning materials unless you have permission to share them.
- type: textarea
id: expected
attributes:
label: Expected behavior
description: What did you expect Echo Loop to do?
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual behavior
description: What happened instead?
validations:
required: true
- type: textarea
id: steps
attributes:
label: Reproduction steps
description: List the smallest steps needed to reproduce the issue.
placeholder: |
1. Import ...
2. Tap ...
3. See ...
validations:
required: true
- type: dropdown
id: platform
attributes:
label: Platform
options:
- iOS
- Android
- macOS
- Windows
- Linux
- Other
validations:
required: true
- type: input
id: version
attributes:
label: App version
placeholder: "Example: 1.0.10"
- type: textarea
id: logs
attributes:
label: Screenshots or logs
description: Add screenshots, screen recordings, or logs if they help explain the problem.

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: true
contact_links:
- name: Echo Loop GitHub Discussions
url: https://github.com/echo-loop/Echo-Loop/discussions
about: Use discussions for open-ended product ideas, learning methods, and community questions.
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 product or developer-facing improvement.
title: "FEAT: "
labels: ["enhancement"]
body:
- type: textarea
id: problem
attributes:
label: Problem
description: What learner, teacher, or developer problem would this solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: Describe the smallest useful version of the feature.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: What workaround or simpler option did you consider?
- type: dropdown
id: area
attributes:
label: Area
options:
- Learning flow
- Audio import
- Subtitles
- Shadowing evaluation
- Review scheduling
- Flashcards
- AI features
- Platform support
- Developer experience
- Documentation
- Other
validations:
required: true

47 changes: 47 additions & 0 deletions .github/ISSUE_TEMPLATE/learning_feedback.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Learning-flow feedback
description: Share feedback after trying one real practice session.
title: "FEEDBACK: "
labels: ["feedback"]
body:
- type: markdown
attributes:
value: |
This template is for feedback after trying Echo Loop with a real audio clip. Concrete friction is more useful than general praise.
- type: textarea
id: material
attributes:
label: Practice material
description: What kind of audio did you try? Do not share private content.
placeholder: "Example: 3-minute podcast clip, interview audio, course listening material"
validations:
required: true
- type: checkboxes
id: steps
attributes:
label: Steps you tried
options:
- label: Blind listening
- label: Intensive listening
- label: Shadowing
- label: Retelling
- label: Spaced review
- label: Hard-sentence review
- label: Flashcards
- type: textarea
id: friction
attributes:
label: Biggest friction
description: Where did the workflow feel confusing, slow, or too heavy?
validations:
required: true
- type: textarea
id: value
attributes:
label: Most useful part
description: Which step made the practice better than your normal method?
- type: textarea
id: retention
attributes:
label: Would you use it again?
description: What would make you open Echo Loop again tomorrow?

45 changes: 45 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
## Summary

-

## Type

- [ ] Bug fix
- [ ] Feature
- [ ] Documentation
- [ ] Refactor / maintenance
- [ ] Test-only change
- [ ] Release / CI

## Checks

- [ ] `dart format .`
- [ ] `flutter analyze`
- [ ] `flutter test`
- [ ] Not run because this is a docs-only change

## Manual testing

Platform tested:

- [ ] iOS
- [ ] Android
- [ ] macOS
- [ ] Windows
- [ ] Linux
- [ ] Not applicable

Notes:

-

## Data and privacy impact

- [ ] No data/privacy impact
- [ ] Touches local audio, subtitles, transcripts, recordings, or learning records
- [ ] Touches AI/network requests
- [ ] Touches analytics, identifiers, consent, or session replay
- [ ] Touches import/export/backup/delete behavior

If any box except "No data/privacy impact" is checked, explain the user-visible behavior and whether docs or privacy policy updates are needed.

72 changes: 72 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Contributing to Echo Loop

Thanks for helping improve Echo Loop. This project is an English listening and speaking trainer built around one complete practice loop: blind listening, intensive listening, shadowing, retelling, and spaced review.

## Good first contributions

- Fix a bug that affects importing audio, subtitles, playback, review scheduling, or speech practice.
- Improve Chinese or English copy in the app and README.
- Add focused tests for learning flow, review reminders, subtitle parsing, ASR settings, or import edge cases.
- Improve Android, iOS, macOS, Windows, or Linux compatibility.
- Improve documentation for setup, release, privacy, or troubleshooting.

## Before opening an issue

Please include:

- What you expected to happen.
- What actually happened.
- Your platform and app version.
- Reproduction steps, preferably with a small sample file if the issue involves audio or subtitles.
- Screenshots or logs when they help explain the problem.

Do not attach private learning materials unless you have permission to share them.

## Development setup

```bash
git clone git@github.com:echo-loop/Echo-Loop.git
cd Echo-Loop
flutter pub get
dart run build_runner build
flutter run -d <ios|android|macos>
```

## Quality checks

Run these before submitting a pull request:

```bash
dart format .
flutter analyze
flutter test
```

If you only changed documentation, mention that no app tests were run because the change is docs-only.

## Pull request checklist

- Keep the change focused on one problem.
- Add or update tests when behavior changes.
- Update README or docs when user-facing behavior changes.
- Keep generated files in sync after Riverpod, Drift, or localization changes.
- Explain manual testing for platform-specific changes.

## Commit style

Use the repository's existing prefix style:

```text
FEAT: add focused review entry point
FIX: handle empty subtitle import
DOCS: clarify Android APK install path
TEST: cover review schedule boundaries
CHORE: update release script comments
```

Common prefixes include `FEAT`, `FIX`, `DOCS`, `MOD`, `OPT`, `CHORE`, `CI`, `RELEASE`, and `TEST`.

## Community standards

Be respectful, specific, and practical. Assume maintainers and contributors are working with limited time. Avoid personal attacks, harassment, spam, and low-effort promotion.

12 changes: 11 additions & 1 deletion README.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,16 @@ Practice English alongside other committed learners: share methods, give feedbac

---

## 🤝 Get involved

- Share learning-flow feedback with the [Learning-flow feedback](https://github.com/echo-loop/Echo-Loop/issues/new?template=learning_feedback.yml) template.
- Report bugs or request features in [Issues](https://github.com/echo-loop/Echo-Loop/issues).
- Read [CONTRIBUTING.md](./CONTRIBUTING.md) before contributing code or docs.
- Report security or privacy issues privately through [SECURITY.md](./SECURITY.md).
- See [docs/privacy-and-data.md](./docs/privacy-and-data.md) for data-sensitive behavior notes.

---

## 🗺️ Roadmap

### ✅ 1 · Core features
Expand Down Expand Up @@ -253,7 +263,7 @@ flutter analyze
flutter test
```

Commit titles follow the `PREFIX: content` format (check `git log` for common prefixes — FEAT / FIX / DOCS / MOD / OPT / CHORE / CI / RELEASE, etc.). A detailed contribution guide will live in [CONTRIBUTING.md](#) (TBD). This project follows the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.
Commit titles follow the `PREFIX: content` format (check `git log` for common prefixes — FEAT / FIX / DOCS / MOD / OPT / CHORE / CI / RELEASE, etc.). See [CONTRIBUTING.md](./CONTRIBUTING.md) for the detailed contribution guide. This project follows the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.

</details>

Expand Down
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,16 @@ flowchart LR

---

## 🤝 参与项目

- 反馈学习流程:请使用 [Learning-flow feedback](https://github.com/echo-loop/Echo-Loop/issues/new?template=learning_feedback.yml) 模板,告诉我们哪一步最卡。
- 报告 Bug 或提功能建议:请到 [Issues](https://github.com/echo-loop/Echo-Loop/issues)。
- 贡献代码或文档:请先阅读 [CONTRIBUTING.md](./CONTRIBUTING.md)。
- 安全或隐私问题:请按 [SECURITY.md](./SECURITY.md) 私下报告。
- 数据与隐私说明:见 [docs/privacy-and-data.md](./docs/privacy-and-data.md)。

---

## 🗺️ Roadmap

### ✅ 1 · 核心功能
Expand Down Expand Up @@ -253,7 +263,7 @@ flutter analyze
flutter test
```

Commit 标题遵循 `PREFIX: 内容` 格式(参考 `git log` 看常用前缀,如 FEAT / FIX / DOCS / MOD / OPT / CHORE / CI / RELEASE 等)。详细贡献流程见 [CONTRIBUTING.md](#)(待补)。本项目遵循 [Contributor Covenant](https://www.contributor-covenant.org/) 行为准则。
Commit 标题遵循 `PREFIX: 内容` 格式(参考 `git log` 看常用前缀,如 FEAT / FIX / DOCS / MOD / OPT / CHORE / CI / RELEASE 等)。详细贡献流程见 [CONTRIBUTING.md](./CONTRIBUTING.md)。本项目遵循 [Contributor Covenant](https://www.contributor-covenant.org/) 行为准则。

</details>

Expand Down
32 changes: 32 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Security Policy

Echo Loop handles learning materials such as audio files, subtitles, transcripts, speech recordings, and learning progress. Please report security or privacy issues privately before opening a public issue.

## Reporting a vulnerability

Email: support@echo-loop.top

Please include:

- A short description of the issue.
- Steps to reproduce it.
- Affected platform and app version.
- Whether the issue may expose audio, subtitles, transcripts, recordings, API keys, analytics identifiers, or learning records.
- Any suggested fix, if you have one.

Please do not include private learning materials unless they are required to reproduce the issue and you have permission to share them.

## Scope

Security-sensitive areas include:

- Local audio, subtitle, transcript, recording, backup, and learning-progress storage.
- AI transcription, translation, sentence analysis, and official collection network requests.
- Analytics, user identifiers, session replay, and consent handling.
- Native iOS, macOS, and Android bridges for speech practice, audio decoding, file access, and permissions.
- Release scripts, signing configuration, and CI workflows.

## Disclosure

We will acknowledge valid reports as soon as practical, investigate the issue, and coordinate a fix before public disclosure. Please avoid publishing exploit details until a fixed release or mitigation is available.

Loading
Loading