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
25 changes: 25 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Code Owners for Kite Glance
# These users are responsible for reviewing changes in specific areas

# Default owners for everything in the repo
* @sasly2048

# Core services - business logic and API integrations
/src/KiteGlance/Services/ @sasly2048

# UI components - WPF views and view models
/src/KiteGlance/ViewModels/ @sasly2048
/src/KiteGlance/*.xaml @sasly2048

# Windows interop - low-level OS integration
/src/KiteGlance/Interop/ @sasly2048

# Tests - all test files
/tests/ @sasly2048

# Build scripts and CI/CD
/scripts/ @sasly2048
/.github/workflows/ @sasly2048

# Documentation
*.md @sasly2048
25 changes: 12 additions & 13 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
# These are supported funding model platforms

github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: sasly204800
open_collective: # Replace with a single Open Collective username
ko_fi: ko-fi.com/sasly204800
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
ko_fi: sasly204800
# github: sasly2048 # Uncomment when GitHub Sponsors is enabled
# patreon: # Replace with a single Patreon username
# open_collective: # Replace with a single Open Collective username
# tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
# community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
# liberapay: # Replace with a single Liberapay username
# issuehunt: # Replace with a single IssueHunt username
# lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
# polar: # Replace with a single Polar username
# buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
# custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
39 changes: 39 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: Bug report
about: Create a report to help us improve
title: '[BUG] '
labels: bug
assignees: ''
---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Actual behavior**
What actually happened instead.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Environment**
- Windows version: [e.g., Windows 11 23H2]
- App version: [e.g., 1.0.0]
- Architecture: [ARM64/x64]

**Additional context**
Add any other context about the problem here.

**Log file contents** (if applicable)
Enable debug mode by setting KITEGLANCE_DEBUG=1 environment variable.
Logs are located at: %APPDATA%\KiteGlance\logs\kiteglance.log
Please paste relevant log excerpts here (remove any sensitive data).
26 changes: 26 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
name: Feature request
about: Suggest an idea for this project
title: '[FEATURE] '
labels: enhancement
assignees: ''
---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context, mockups, or screenshots about the feature request here.

**Platform considerations**
- Does this apply to ARM64, x64, or both?
- Are there Windows version requirements?

**Similar requests**
Have others requested similar features? Link any related issues.
49 changes: 49 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<!-- Thank you for contributing to Kite Glance! -->

## Description

<!-- Describe your changes in detail. What problem does this solve? What feature does it add? -->

## Type of Change

- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation update
- [ ] Code quality improvement
- [ ] CI/CD improvement

## Checklist

<!-- Please check all items that apply: -->

- [ ] My code follows the project's coding standards
- [ ] I have added XML documentation comments for public APIs
- [ ] I have added tests that prove my fix/feature works (if applicable)
- [ ] All new and existing tests pass locally
- [ ] I have updated the CHANGELOG.md (if applicable)
- [ ] My changes generate no new warnings or errors
- [ ] No sensitive data (credentials, tokens, PII) is logged or committed

## Testing

<!-- Describe how you tested your changes. Include steps to reproduce if fixing a bug. -->

### Test Cases Covered

1. <!-- Test case 1 -->
2. <!-- Test case 2 -->

## Screenshots (if UI changes)

<!-- If your changes affect the UI, please include before/after screenshots. -->

## Related Issues

<!-- Link any related issues using "Fixes #123" or "Closes #123" syntax -->

Fixes #

## Additional Notes

<!-- Any other context about the PR that reviewers should know. -->
60 changes: 60 additions & 0 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Security Policy

## Supported Versions

| Version | Supported |
| ------- | ------------------ |
| 1.0.x | :white_check_mark: |
| < 1.0 | :x: |

## Reporting a Vulnerability

We take the security of Kite Glance seriously. If you believe you've found a security vulnerability, please follow these steps:

### **DO NOT** file a public issue on GitHub

### How to Report

1. **Email**: Send your report to the maintainer at [contact email from README]
2. **Subject Line**: Use `[Security] Kite Glance - Brief Description`
3. **Include**:
- Description of the vulnerability
- Steps to reproduce (if applicable)
- Potential impact
- Suggested fix (if you have one)

### What to Expect

- **Acknowledgment**: Within 48 hours
- **Status Update**: Within 5 business days
- **Resolution Timeline**: Depends on severity
- Critical: 24-72 hours
- High: 1 week
- Medium: 2 weeks
- Low: Next release cycle

### Security Considerations in Kite Glance

The following areas are security-sensitive:

1. **Credential Storage**: Uses Windows DPAPI for encryption
2. **OAuth Flow**: Loopback server for token exchange (no external redirect)
3. **API Communication**: HTTPS-only with Kite Connect API
4. **Local Data**: No telemetry, no third-party servers

### Known Security Features

- Credentials encrypted at rest with per-user DPAPI
- Access tokens stored separately from API credentials
- No logging of sensitive data (tokens, credentials, holdings values)
- Single-instance mutex prevents duplicate processes
- Environment variables override stored credentials for development

### Responsible Disclosure

We appreciate responsible disclosure and will:
- Credit researchers who report valid vulnerabilities (unless they prefer anonymity)
- Keep you informed of our progress
- Coordinate public disclosure timing with you

Thank you for helping keep Kite Glance secure!
45 changes: 45 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
version: 2
updates:
# Maintain dependencies for .NET
- package-ecosystem: "nuget"
directory: "/src/KiteGlance"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "security"
commit-message:
prefix: "deps"
groups:
microsoft-packages:
patterns:
- "Microsoft.*"
- "System.*"

# Test project dependencies
- package-ecosystem: "nuget"
directory: "/tests/KiteGlance.Tests"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 3
labels:
- "dependencies"
- "testing"
commit-message:
prefix: "test-deps"

# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 3
labels:
- "ci/cd"
- "dependencies"
commit-message:
prefix: "ci"
12 changes: 11 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,17 @@ jobs:

- name: Test
working-directory: tests/KiteGlance.Tests
run: dotnet test -c Release
run: dotnet test -c Release --logger "console;verbosity=detailed" --collect:"XPlat Code Coverage"

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ github.run_id }}
path: |
tests/KiteGlance.Tests/TestResults/**/*
tests/KiteGlance.Tests/coverage.cobertura.xml
retention-days: 7

build:
name: Build (${{ matrix.rid }})
Expand Down
Loading
Loading