Skip to content

feat: implement comprehensive security measures for PixelClockApp#9

Merged
chinaestone merged 17 commits intomasterfrom
feat/safety-coding
Jan 9, 2026
Merged

feat: implement comprehensive security measures for PixelClockApp#9
chinaestone merged 17 commits intomasterfrom
feat/safety-coding

Conversation

@chinaestone
Copy link
Copy Markdown
Contributor

Summary

This PR introduces major security enhancements to PixelClockApp, focusing on preventing sensitive information leaks and improving documentation management.

Key Changes

  • Security Measures:

    • Updated .gitignore with exclusions for secrets, certificates, and sensitive files
    • Added .pre-commit-config.yaml with TruffleHog for secret scanning
    • Completely removed AGENTS.md from git history using filter-branch
    • Moved documentation to private opensource-docs submodule for better isolation
  • Documentation Management:

    • Relocated all non-README docs to opensource-docs repository under pixelclock/ directory
    • Renamed docs submodule to internal_docs for clarity
    • Kept only essential docs (CODE_OF_CONDUCT.md, CONTRIBUTING.md, BUILD_ISSUES.md) in main repo
  • Code Quality:

    • Ensured build passes with new security configurations
    • Verified submodule integrity and synchronization

Security Benefits

  • Prevents accidental commits of API keys, tokens, and certificates
  • Isolates sensitive documentation in private repositories
  • Implements automated secret scanning in development workflow
  • Complies with OWASP guidelines for secure open-source projects

Testing

  • Build verified on macOS with Xcode
  • Submodule updates tested and synced
  • Git history cleaned of sensitive files

Closes # (if applicable)

- Add TimerViewModel class with state management
- Implement test cases for timer state switching
- Replace main window with macOS native Popover
- Add PopoverBackgroundView with theme-aware materials
- Update MenuBarController to show/hide popover
- Add Monospaced Rounded font with numericText animation for timer
- Implement Pill Tabs for quick duration switching (25m/5m/15m)
- Add Dark theme with obsidian background and gold (#D4AF37) glow effects
- Fix Popover appearance hardcoded to Light mode
- Add system theme change listener for real-time theme switching
- Remove Slider controls, replace with Tab-based duration selection
Backup all markdown documentation files for safekeeping
- Add Start button auto-focus with @focusstate
- Implement Cmd + W to hide Popover (instead of minimize)
- Add MenuBarController theme state tracking
- Synchronize progress ring color with theme (blue/gold)
- Add onChange listener for real-time theme switching
- Change Popover size from 300x720 to 530x570
- Fix Dark theme buttons: use pure black background instead of semi-transparent
- Add Light theme blue overlay (opacity 0.05)
- Increase Dark background opacity to 0.85 for stronger obsidian effect
- Adjust layout spacing (40/40/50) and button size (120x50) for larger Popover
- Improve button visibility and contrast in Dark theme
- Replace direct view assignment with proper view hierarchy
- Add NSLayoutConstraint to force 530x570 size
- Create NSView container and add hostingView as subview
- Disable autoresizing for both container and hostingView
- Set width and height constraints to match design spec (530x570)
- Remove popover.appearance assignment that was overriding SwiftUI colorScheme
- Let SwiftUI manage theme detection via @Environment(\.colorScheme)
- Fix black text color issue in Dark theme (should be gold)
- Fix Start/Stop button text color in Dark theme (should be gold)
- Ensure time font and controls show correct colors in Dark mode
- Update .gitignore with exclusions for sensitive files (certificates, keys, secrets)
- Add .pre-commit-config.yaml with hooks for trailing whitespace, large files, and secret scanning via TruffleHog
- Remove docs/ and backup/ directories from main repo
- Add .gitmodules for docs submodule (points to private repo)
- Update .gitignore to exclude documentation folders
- Update AGENTS.md with security guidelines
- Update .gitmodules to point to git@github.com:free-pixel/opensource-docs.git
- Create pixel_clock directory in docs submodule for PixelClock docs
- Move all non-README documents from backup/ to docs/pixel_clock/
- Remove backup/ directory
- Update .gitmodules to point to internal_docs path
- Remove old docs submodule reference
- Add new internal_docs submodule
@chinaestone chinaestone merged commit ef6c82c into master Jan 9, 2026
1 check passed
chinaestone added a commit that referenced this pull request Jan 9, 2026
* feat: refactor window to popover and add TimerViewModel

- Add TimerViewModel class with state management
- Implement test cases for timer state switching
- Replace main window with macOS native Popover
- Add PopoverBackgroundView with theme-aware materials
- Update MenuBarController to show/hide popover

* feat: implement Dark theme with gold glow effects and refactor UI

- Add Monospaced Rounded font with numericText animation for timer
- Implement Pill Tabs for quick duration switching (25m/5m/15m)
- Add Dark theme with obsidian background and gold (#D4AF37) glow effects
- Fix Popover appearance hardcoded to Light mode
- Add system theme change listener for real-time theme switching
- Remove Slider controls, replace with Tab-based duration selection

* docs: backup documentation files to backup/ directory

Backup all markdown documentation files for safekeeping

* feat: implement keyboard shortcuts and theme color synchronization

- Add Start button auto-focus with @focusstate
- Implement Cmd + W to hide Popover (instead of minimize)
- Add MenuBarController theme state tracking
- Synchronize progress ring color with theme (blue/gold)
- Add onChange listener for real-time theme switching

* fix: adjust Popover size and fix Dark theme button visibility

- Change Popover size from 300x720 to 530x570
- Fix Dark theme buttons: use pure black background instead of semi-transparent
- Add Light theme blue overlay (opacity 0.05)
- Increase Dark background opacity to 0.85 for stronger obsidian effect
- Adjust layout spacing (40/40/50) and button size (120x50) for larger Popover
- Improve button visibility and contrast in Dark theme

* fix: enforce Popover size using NSLayoutConstraint

- Replace direct view assignment with proper view hierarchy
- Add NSLayoutConstraint to force 530x570 size
- Create NSView container and add hostingView as subview
- Disable autoresizing for both container and hostingView
- Set width and height constraints to match design spec (530x570)

* fix: remove hardcoded popover appearance to fix Dark theme colors

- Remove popover.appearance assignment that was overriding SwiftUI colorScheme
- Let SwiftUI manage theme detection via @Environment(\.colorScheme)
- Fix black text color issue in Dark theme (should be gold)
- Fix Start/Stop button text color in Dark theme (should be gold)
- Ensure time font and controls show correct colors in Dark mode

* Fix dark mode gold text visibility by setting popover appearance

* feat: add security measures to prevent secret leaks

- Update .gitignore with exclusions for sensitive files (certificates, keys, secrets)
- Add .pre-commit-config.yaml with hooks for trailing whitespace, large files, and secret scanning via TruffleHog

* refactor: move docs to submodule for security

- Remove docs/ and backup/ directories from main repo
- Add .gitmodules for docs submodule (points to private repo)
- Update .gitignore to exclude documentation folders
- Update AGENTS.md with security guidelines

* refactor: move documentation to opensource-docs submodule

- Update .gitmodules to point to git@github.com:free-pixel/opensource-docs.git
- Create pixel_clock directory in docs submodule for PixelClock docs
- Move all non-README documents from backup/ to docs/pixel_clock/
- Remove backup/ directory

* Update docs submodule to reflect moved documentation

* Update docs submodule after moving pixel2 documentation

* Update docs submodule: keep only CODE_OF_CONDUCT.md, CONTRIBUTING.md, BUILD_ISSUES.md

* Remove deleted files before filter-branch

* Update docs submodule after restoring PixelClock docs to pixelclock/

* Rename docs submodule to internal_docs

- Update .gitmodules to point to internal_docs path
- Remove old docs submodule reference
- Add new internal_docs submodule

---------

Co-authored-by: Estone <iestone@yeah.net>
chinaestone added a commit that referenced this pull request Jan 9, 2026
…ore (#12)

* Merge pull request #7 from free-pixel/feat/safety-coding

feat: implement safety coding measures to prevent secret leaks

* Revert "Merge pull request #7 from free-pixel/feat/safety-coding" (#8)

This reverts commit 1f65d97.

* feat: implement comprehensive security measures for PixelClockApp (#9)

* feat: refactor window to popover and add TimerViewModel

- Add TimerViewModel class with state management
- Implement test cases for timer state switching
- Replace main window with macOS native Popover
- Add PopoverBackgroundView with theme-aware materials
- Update MenuBarController to show/hide popover

* feat: implement Dark theme with gold glow effects and refactor UI

- Add Monospaced Rounded font with numericText animation for timer
- Implement Pill Tabs for quick duration switching (25m/5m/15m)
- Add Dark theme with obsidian background and gold (#D4AF37) glow effects
- Fix Popover appearance hardcoded to Light mode
- Add system theme change listener for real-time theme switching
- Remove Slider controls, replace with Tab-based duration selection

* docs: backup documentation files to backup/ directory

Backup all markdown documentation files for safekeeping

* feat: implement keyboard shortcuts and theme color synchronization

- Add Start button auto-focus with @focusstate
- Implement Cmd + W to hide Popover (instead of minimize)
- Add MenuBarController theme state tracking
- Synchronize progress ring color with theme (blue/gold)
- Add onChange listener for real-time theme switching

* fix: adjust Popover size and fix Dark theme button visibility

- Change Popover size from 300x720 to 530x570
- Fix Dark theme buttons: use pure black background instead of semi-transparent
- Add Light theme blue overlay (opacity 0.05)
- Increase Dark background opacity to 0.85 for stronger obsidian effect
- Adjust layout spacing (40/40/50) and button size (120x50) for larger Popover
- Improve button visibility and contrast in Dark theme

* fix: enforce Popover size using NSLayoutConstraint

- Replace direct view assignment with proper view hierarchy
- Add NSLayoutConstraint to force 530x570 size
- Create NSView container and add hostingView as subview
- Disable autoresizing for both container and hostingView
- Set width and height constraints to match design spec (530x570)

* fix: remove hardcoded popover appearance to fix Dark theme colors

- Remove popover.appearance assignment that was overriding SwiftUI colorScheme
- Let SwiftUI manage theme detection via @Environment(\.colorScheme)
- Fix black text color issue in Dark theme (should be gold)
- Fix Start/Stop button text color in Dark theme (should be gold)
- Ensure time font and controls show correct colors in Dark mode

* Fix dark mode gold text visibility by setting popover appearance

* feat: add security measures to prevent secret leaks

- Update .gitignore with exclusions for sensitive files (certificates, keys, secrets)
- Add .pre-commit-config.yaml with hooks for trailing whitespace, large files, and secret scanning via TruffleHog

* refactor: move docs to submodule for security

- Remove docs/ and backup/ directories from main repo
- Add .gitmodules for docs submodule (points to private repo)
- Update .gitignore to exclude documentation folders
- Update AGENTS.md with security guidelines

* refactor: move documentation to opensource-docs submodule

- Update .gitmodules to point to git@github.com:free-pixel/opensource-docs.git
- Create pixel_clock directory in docs submodule for PixelClock docs
- Move all non-README documents from backup/ to docs/pixel_clock/
- Remove backup/ directory

* Update docs submodule to reflect moved documentation

* Update docs submodule after moving pixel2 documentation

* Update docs submodule: keep only CODE_OF_CONDUCT.md, CONTRIBUTING.md, BUILD_ISSUES.md

* Remove deleted files before filter-branch

* Update docs submodule after restoring PixelClock docs to pixelclock/

* Rename docs submodule to internal_docs

- Update .gitmodules to point to internal_docs path
- Remove old docs submodule reference
- Add new internal_docs submodule

---------

Co-authored-by: Estone <iestone@yeah.net>

* add docs

* Move docs to internal_docs submodule: BUILD_ISSUES.md, GITHUB_ACTIONS.md, README-ZH_CN.md, README-ZH_HANS.md

* Move docs to project docs/ directory: BUILD_ISSUES.md, GITHUB_ACTIONS.md, README-ZH_CN.md, README-ZH_HANS.md

* Main (#10)

* Move docs to internal_docs submodule: BUILD_ISSUES.md, GITHUB_ACTIONS.md, README-ZH_CN.md, README-ZH_HANS.md

* Move docs to project docs/ directory: BUILD_ISSUES.md, GITHUB_ACTIONS.md, README-ZH_CN.md, README-ZH_HANS.md

---------

Co-authored-by: Estone <iestone@yeah.net>

* Remove moved docs from root: BUILD_ISSUES.md, GITHUB_ACTIONS.md, README-ZH_CN.md, README-ZH_HANS.md

* Add AGENTS.md to .gitignore and remove file

---------

Co-authored-by: Estone <iestone@yeah.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants