Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
09ea9d3
Initial plan
Copilot Feb 18, 2026
a2b1c34
Initial plan
Copilot Feb 18, 2026
e8571a0
Initial plan
Copilot Feb 18, 2026
73995e5
Improve code readability: refactor animation code and translate comments
Copilot Feb 18, 2026
9d2f852
Fix critical buffer overflow and memory leak vulnerabilities
Copilot Feb 18, 2026
c08c9c4
Add macro documentation and translate remaining Chinese comments
Copilot Feb 18, 2026
d017fc4
Address code review feedback on security fixes
Copilot Feb 18, 2026
7df8631
Improve config.conf with comprehensive inline documentation
Copilot Feb 18, 2026
e2649dd
Final security improvements based on code review
Copilot Feb 18, 2026
3336d8d
Address code review feedback: improve array formatting and extract si…
Copilot Feb 18, 2026
12fe0ab
Polish security fixes with minor improvements
Copilot Feb 18, 2026
df6b10f
Add comprehensive documentation: COMMANDS.md, USAGE.md, and enhanced …
Copilot Feb 18, 2026
21088fe
Final refinements for security and performance
Copilot Feb 18, 2026
ffa83cd
Translate remaining Chinese comments in parse_config.h to English
Copilot Feb 18, 2026
0f5ed24
Add documentation index section to README
Copilot Feb 18, 2026
5d145cc
Simplify code based on final review feedback
Copilot Feb 18, 2026
969c68b
Fix remaining memory and buffer issues
Copilot Feb 18, 2026
3f0c11b
Translate final Chinese comments in mango.c and parse_config.h
Copilot Feb 18, 2026
1350b77
Final code polish for consistency and correctness
Copilot Feb 18, 2026
433a14a
Merge pull request #1 from squassina/copilot/improve-code-readability
squassina Feb 18, 2026
30d6ace
Merge pull request #2 from squassina/copilot/fix-security-issues
squassina Feb 18, 2026
2d42571
Merge pull request #3 from squassina/copilot/update-documentation-for…
squassina Feb 18, 2026
9f93921
Initial plan
Copilot Feb 18, 2026
a43d87d
Fix keybinding conflicts and documentation inconsistencies
Copilot Feb 18, 2026
3ae1c3b
Merge pull request #4 from squassina/copilot/review-agent-responses
squassina Feb 18, 2026
2c567cd
Update project version to 0.12.3-squassina
squassina Feb 18, 2026
11cf138
Initial plan
Copilot Feb 18, 2026
288710a
Translate Chinese comments to English in mmsg.c and animation files
Copilot Feb 18, 2026
2c181fc
Translate all Chinese comments to English in source files
Copilot Feb 18, 2026
0bcc5d7
Address code review feedback: improve comment clarity and remove dupl…
Copilot Feb 18, 2026
ebe407b
Merge pull request #5 from squassina/copilot/translate-comments-to-en…
squassina Feb 18, 2026
173a24d
Initial plan
Copilot Feb 18, 2026
3f9c379
Add build workflow for CI/CD
Copilot Feb 18, 2026
ca33f1d
Add workflows documentation
Copilot Feb 18, 2026
831dc99
Fix version consistency in workflow documentation
Copilot Feb 18, 2026
c13f7a6
Add explicit permissions to build workflow for security
Copilot Feb 18, 2026
f1b97a5
Add path filters to workflows and create docs linting workflow
Copilot Feb 18, 2026
b67179d
Fix build workflow by building wayland 1.23.1 from source
Copilot Feb 18, 2026
739add6
Fix version reference in workflow comment
Copilot Feb 18, 2026
9c8dad2
Initial plan
Copilot Feb 18, 2026
91f2cfd
Fix COMMANDS.md and bug_report.md linting errors
Copilot Feb 18, 2026
0587472
Fix USAGE.md linting errors - add code block languages and fix format…
Copilot Feb 18, 2026
d063da9
Fix README.md linting errors - structural and formatting improvements
Copilot Feb 18, 2026
57a4b1a
Merge pull request #7 from squassina/copilot/fix-documentation-linter…
squassina Feb 18, 2026
e21ae7e
Merge remote-tracking branch 'origin/main' into copilot/create-simple…
Copilot Feb 18, 2026
f2b3b1b
Prefer apt packages over building from source when available
Copilot Feb 18, 2026
304832e
Improve version checking logic and documentation
Copilot Feb 18, 2026
fe85cbb
Restrict markdown linter to repository files only
Copilot Feb 18, 2026
d2ae6c6
Revert to building from source and use meson subprojects download
Copilot Feb 18, 2026
c1a909b
Fix version consistency in documentation
Copilot Feb 18, 2026
e2c86e0
Initial plan
Copilot Feb 18, 2026
f1c8016
Add .markdownlintrc to configure linting exceptions
Copilot Feb 18, 2026
8318318
Add OpenGL ES dependencies for scenefx build
Copilot Feb 18, 2026
118a0bb
Merge pull request #8 from squassina/copilot/fix-markdown-lint-errors
squassina Feb 18, 2026
76ca96e
Fix workflows README to match actual docs.yml behavior
Copilot Feb 18, 2026
ba9dffc
Add libgbm-dev for wlroots EGL support
Copilot Feb 18, 2026
b2652b2
Fix markdown linting errors in workflows README
Copilot Feb 18, 2026
1e266b0
Merge branch 'main' into copilot/create-simple-build-workflow
squassina Feb 18, 2026
d80f080
Improve formatting in README.md for workflows
squassina Feb 18, 2026
ea18f96
Fix README.md to comply with 80-column rule and remove inline HTML
Copilot Feb 18, 2026
dccd11a
Fix formatting in README for lock.yml section
squassina Feb 18, 2026
c26dd2d
Update README layout description for 'tile'
squassina Feb 18, 2026
fa51bed
Add libinput 1.27.1 build from source for version requirement
Copilot Feb 18, 2026
6a20910
Switch CI to Arch Linux container for better package availability
Copilot Feb 18, 2026
9f4b2a6
Use pacman for all dependencies, install scenefx from AUR
Copilot Feb 18, 2026
bc2cf39
Update wlroots package version in build workflow
squassina Feb 18, 2026
de5007f
Remove scenefx installation from build.yml
squassina Feb 18, 2026
179a2b6
Install scenefx from AUR in build workflow
squassina Feb 18, 2026
ce48f13
Fix path for scenefx build in workflow
squassina Feb 18, 2026
982b427
Fix directory name for scenefx AUR clone
squassina Feb 18, 2026
50ad5e8
Merge pull request #6 from squassina/copilot/create-simple-build-work…
squassina Feb 18, 2026
9a3b5f9
Initial plan
Copilot Feb 18, 2026
a22a203
Add NixOS build workflow
Copilot Feb 18, 2026
2c73142
Document NixOS build workflow in README
Copilot Feb 18, 2026
8de9685
Rename build.yml to build-arch.yml and add different checks for each …
Copilot Feb 18, 2026
b1438b7
Remove code formatting checks from both workflows
Copilot Feb 18, 2026
18dc083
Merge pull request #9 from squassina/copilot/add-pipeline-for-nixos
squassina Feb 18, 2026
2423285
Merge branch 'DreamMaoMao:main' into main
squassina Feb 18, 2026
1341f84
Merge branch 'DreamMaoMao:main' into main
squassina Feb 19, 2026
afdcae7
Initial plan
Copilot Feb 19, 2026
42e9187
Add comprehensive code review findings document
Copilot Feb 19, 2026
d97ec4a
Implement 3 code review recommendations: security fix, translations, …
Copilot Feb 19, 2026
d344ab8
Add implementation summary and mark recommendations as completed
Copilot Feb 19, 2026
8a7fa8d
Fix markdown linting errors in documentation files
Copilot Feb 19, 2026
50f339d
Merge pull request #10 from squassina/copilot/review-latest-changes-s…
squassina Feb 19, 2026
42b0353
Merge branch 'DreamMaoMao:main' into main
squassina Feb 19, 2026
d440860
Merge branch 'DreamMaoMao:main' into main
squassina Feb 20, 2026
466c84e
Add warning about repository usage
squassina Feb 21, 2026
5d2f052
Merge branch 'merge-mangowc-STUDY' into merge-mango
Mar 1, 2026
5597a5a
security: fix command execution and null-termination issues
Mar 1, 2026
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
6 changes: 5 additions & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,15 @@ mango version:
wlroots version:

## Crash track

1.you need to build mango by enable asan flag.

```bash
meson build -Dprefix=/usr -Dasan=true
``
```

2.run mango in tty.

```bash
export ASAN_OPTIONS="detect_leaks=1:halt_on_error=0:log_path=/home/xxx/asan.log"
mango
Expand Down
163 changes: 163 additions & 0 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
# GitHub Actions Workflows

This directory contains the GitHub Actions workflows for the MangoWC project.

## Workflows

### build-arch.yml

**Purpose**: Builds the project on Arch Linux to ensure code changes compile
successfully.

**Triggers**:

- Push to `main` or `master` branch (only when code files change)
- Pull requests to `main` or `master` branch (only when code files change)
- Manual dispatch (workflow_dispatch)

**Path filters** (only runs when these change):

- Source files: `**.c`, `**.h`, `**.cpp`, `**.scm`
- Build files: `meson.build`, `meson_options.txt`, `flake.nix`
- Protocol definitions: `protocols/**`
- Workflow file itself: `.github/workflows/build-arch.yml`

**What it does**:

1. Runs in Arch Linux container (archlinux:latest)
2. Updates system and installs all dependencies via pacman
3. Installs wlroots from official Arch repositories
4. Installs scenefx from AUR (Arch User Repository)
5. Configures the project with meson
6. Builds the project with ninja
7. Verifies the executables were created

**Build Strategy**:

- Uses Arch Linux for up-to-date system packages
- All dependencies installed via pacman or AUR (no source builds)
- wlroots installed from official Arch repositories
- scenefx installed from AUR

**Dependencies**:

- Arch Linux container (archlinux:latest)
- Meson build system
- Ninja build tool
- All system packages from pacman (wayland, libinput, wlroots, mesa, etc.)
- scenefx from AUR

### build-nixos.yml

**Purpose**: Builds the project on NixOS using Nix flakes to ensure code
changes work correctly in the NixOS ecosystem.

**Triggers**:

- Push to `main` or `master` branch (only when code files change)
- Pull requests to `main` or `master` branch (only when code files change)
- Manual dispatch (workflow_dispatch)

**Path filters** (only runs when these change):

- Source files: `**.c`, `**.h`, `**.cpp`, `**.scm`
- Build files: `meson.build`, `meson_options.txt`, `flake.nix`
- Nix files: `nix/**`
- Protocol definitions: `protocols/**`
- Workflow file itself: `.github/workflows/build-nixos.yml`

**What it does**:

1. Runs on Ubuntu with Nix installed
2. Installs Nix with flakes and nix-command experimental features
3. Builds the project using `nix build` with the repository's flake.nix
4. Verifies that executables (mango and mmsg) are created and executable
5. Tests basic executable functionality

**Build Strategy**:

- Uses Nix flakes for reproducible builds
- All dependencies managed through Nix
- Leverages the repository's flake.nix configuration
- Dependencies from nixpkgs-unstable

**Dependencies**:

- Nix package manager with flakes support
- All dependencies defined in flake.nix and nix/default.nix
- scenefx from upstream flake
- wlroots 0.19 from nixpkgs

### docs.yml

**Purpose**: Validates markdown documentation for style and formatting consistency.

**Triggers**:

- Push to `main` or `master` branch (only when markdown files change)
- Pull requests to `main` or `master` branch (only when markdown files change)
- Manual dispatch (workflow_dispatch)

**Path filters** (only runs when these change):

- Markdown files: `**.md`
- Workflow file itself: `.github/workflows/docs.yml`

**What it does**:

- Lints markdown files in the repository using markdownlint-cli2
- Checks for common markdown formatting issues
- Ensures documentation follows consistent style guidelines
- Excludes dependency directories (wayland, wlroots, scenefx) to only lint
repository files

### lock.yml

**Purpose**: Automatically locks inactive issues and PRs to keep the repository
clean.

**Triggers**:

- Scheduled daily at 12:30 UTC
- Manual dispatch

**What it does**:

- Locks issues, PRs, and discussions that have been closed for 30 days
- Adds a comment explaining why the thread was locked

### stale.yml

**Purpose**: Automatically closes issues that have been manually marked as stale.

**Triggers**:

- Scheduled daily at 12:30 UTC

**What it does**:

- Closes issues marked with the "stale" label after 7 days of inactivity
- Adds "automatic-closing" label when closing
- Does not automatically mark issues as stale (only processes manually marked ones)

## Development Notes

The build workflows ensure that:

- Only run when actual code or build configuration changes
- All dependencies are properly installed
- The project compiles without errors on both Arch Linux and NixOS
- Both main executables (`mango` and `mmsg`) are built successfully

The docs workflow ensures that:

- Only runs when markdown documentation changes
- Documentation follows consistent formatting
- Markdown files are well-formed and free of common issues

If a build workflow fails, check:

1. Dependencies are up to date in the workflow file
2. wlroots and scenefx versions match requirements in meson.build
3. Build configuration in meson.build hasn't changed
4. For NixOS builds: flake.nix and nix/default.nix are correctly configured
98 changes: 98 additions & 0 deletions .github/workflows/build-arch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
name: Build (Arch Linux)

on:
push:
branches: [main, master]
paths:
- '**.c'
- '**.h'
- '**.cpp'
- '**.scm'
- 'meson.build'
- 'meson_options.txt'
- 'flake.nix'
- 'protocols/**'
- '.github/workflows/build-arch.yml'
pull_request:
branches: [main, master]
paths:
- '**.c'
- '**.h'
- '**.cpp'
- '**.scm'
- 'meson.build'
- 'meson_options.txt'
- 'flake.nix'
- 'protocols/**'
- '.github/workflows/build-arch.yml'
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
container:
image: archlinux:latest
permissions:
contents: read

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

- name: Update system and install dependencies
run: |
# Update package database
pacman -Syu --noconfirm

# Install build tools and all dependencies
pacman -S --noconfirm \
base-devel \
git \
meson \
ninja \
wayland \
wayland-protocols \
libinput \
libxkbcommon \
pcre2 \
pixman \
libdrm \
libxcb \
xcb-util-wm \
xorg-xwayland \
hwdata \
libliftoff \
libdisplay-info \
seatd \
mesa \
wlroots0.19 \
pkg-config

- name: Install scenefx from AUR
run: |
# Install scenefx from AUR since it's not in official repos
# Create a non-root user for makepkg (AUR requires non-root)
useradd -m -G wheel builder
echo "builder ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

# Clone and build scenefx from AUR as builder user
cd /home/builder
su - builder -c "git clone https://aur.archlinux.org/scenefx0.4.git"
cd scenefx0.4
su - builder -c "cd /home/builder/scenefx0.4 && makepkg -si --noconfirm"

- name: Configure meson
run: |
# Download meson subprojects if needed
meson subprojects download || true
meson setup build/ --prefix=/usr

- name: Build project
run: |
ninja -C build/

- name: Build summary
run: |
echo "✅ Build completed successfully!"
echo "Built executables:"
ls -lh build/mango build/mmsg
77 changes: 77 additions & 0 deletions .github/workflows/build-nixos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Build (NixOS)

on:
push:
branches: [main, master]
paths:
- '**.c'
- '**.h'
- '**.cpp'
- '**.scm'
- 'meson.build'
- 'meson_options.txt'
- 'flake.nix'
- 'nix/**'
- 'protocols/**'
- '.github/workflows/build-nixos.yml'
pull_request:
branches: [main, master]
paths:
- '**.c'
- '**.h'
- '**.cpp'
- '**.scm'
- 'meson.build'
- 'meson_options.txt'
- 'flake.nix'
- 'nix/**'
- 'protocols/**'
- '.github/workflows/build-nixos.yml'
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read

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

- name: Install Nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
extra_nix_config: |
experimental-features = nix-command flakes

- name: Build project with Nix
run: |
nix build --print-build-logs

- name: Check build outputs
run: |
echo "✅ Build completed successfully!"
echo "Built executables:"
ls -lh result/bin/

- name: Verify executables
run: |
# Check that mango executable exists and is executable
if [ -x "result/bin/mango" ]; then
echo "✅ mango executable found and is executable"
result/bin/mango --version || echo "Note: --version may not be supported"
else
echo "❌ mango executable not found or not executable"
exit 1
fi

# Check that mmsg executable exists and is executable
if [ -x "result/bin/mmsg" ]; then
echo "✅ mmsg executable found and is executable"
result/bin/mmsg --help || echo "Note: --help may not be supported"
else
echo "❌ mmsg executable not found or not executable"
exit 1
fi
35 changes: 35 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Documentation

on:
push:
branches: [main, master]
paths:
- '**.md'
- '.github/workflows/docs.yml'
pull_request:
branches: [main, master]
paths:
- '**.md'
- '.github/workflows/docs.yml'
workflow_dispatch:

jobs:
markdown-lint:
runs-on: ubuntu-latest
permissions:
contents: read

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

- name: Lint markdown files
uses: DavidAnson/markdownlint-cli2-action@v18
with:
globs: |
*.md
.github/**/*.md
!**/node_modules/**
!**/wayland/**
!**/wlroots/**
!**/scenefx/**
Loading
Loading