Omahub
← All plugins
E

CP Buddy

by elgemmy

One Codeforces problem picked for your rating, a configurable focus sprint in the bar, and automatic accepted-submission detection.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
0c8d6d7
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
0c8d6d7
Reviewed
1 month ago

The plugin is a Codeforces practice widget: it fetches public data over HTTPS, runs a stdlib-only Python helper, and stores state/cache under XDG directories. The code is defensive and transparent, with no credential handling, no destructive commands, and no hidden persistence; the only minor notes are that it invokes a local Python helper and opens external URLs, which are expected for its stated function.

  • The service spawns helper/cp_buddy.py via the shell's Process API; the helper is stdlib-only and reads only public Codeforces endpoints, but a human should confirm the full helper file matches the sampled behavior.
  • The plugin can open external Codeforces URLs (problem/editorial/solution pages) in the user's browser; this is disclosed functionality and not a security issue.
  • install.sh is a development/deployment helper that uses rsync --delete; it is not part of the plugin's runtime install path and contains explicit overlap/symlink guards.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/elgemmy/omarchy-cp-buddy --enable
Productivity #bar #quickshell

CP Buddy

An Omarchy bar plugin that recommends a Codeforces problem near your rating, runs a focus sprint, and detects accepted submissions.

<img width="1120" height="630" alt="cp-buddy-demo-hq" src="https://github.com/user-attachments/assets/0cb8d78b-756a-40b1-94ca-9dd9370a4566" />

Read the build story →

What it does

  • Picks a deterministic daily problem and excludes recent solves
  • Optionally builds your full solved history for stronger exclusion and activity stats
  • Runs configurable sprints in popup or tiled mode
  • Detects accepted submissions and can open an editorial or accepted solution

See future work for possible coaching, contest, and platform directions.

Install

Requires Omarchy Quattro, Python 3, and access to Codeforces.

omarchy plugin add https://github.com/elgemmy/omarchy-cp-buddy.git --enable

Add CP Buddy to the bar, open it, and enter your public Codeforces handle. Building the full history is optional.

Data and privacy

CP Buddy reads public Codeforces profile, problem, and submission data over HTTPS. It uses no login, API key, privileged command, daemon, or external service beyond Codeforces. Settings are stored by Omarchy; session state and cached history use the plugin's XDG state and cache directories. No credentials are stored.

Development

The local deployment helper also requires rsync.

python3 -W error::ResourceWarning -m unittest discover -s tests -v
./dev/lint.sh
./install.sh
omarchy plugin validate "$HOME/.config/omarchy/plugins/io.github.elgemmy.cp-buddy"

Remove

omarchy plugin remove io.github.elgemmy.cp-buddy

Removal leaves the plugin's local state and cached history intact.