32 lines
1.9 KiB
Markdown
32 lines
1.9 KiB
Markdown
# ClipCoffre Secret Clipboard
|
||
|
||
A GNOME Shell extension that unifies a lightweight secrets manager with clipboard favorites/history controls. It is designed as a MVP shell extension for Debian 13 (GNOME 47+) and follows the architecture outlined in `CLAUDE.md`.
|
||
|
||
## Installation
|
||
1. Run `./install.sh` to copy files into `~/.local/share/gnome-shell/extensions/secret-clipboard@gilles` and compile the schema.
|
||
2. Enable the extension using GNOME Tweaks or `gnome-extensions enable secret-clipboard@gilles`.
|
||
3. Restart GNOME Shell (`Alt+F2`, enter `r`).
|
||
|
||
## Development Commands
|
||
- `glib-compile-schemas schemas/` – compiles the GSettings schema so GNOME Shell can read `history_size`, `show_passwords`, and `click_mode`.
|
||
- `./install.sh` – synchronizes the repo with the extension directory and reruns schema compilation.
|
||
|
||
## Project Layout
|
||
- `extension.js` – entry point that wires together UI, services, and storage.
|
||
- `src/ui/` – popups, panel button, and placeholder UI components.
|
||
- `src/services/` – clipboard and secret services that talk to storage layers.
|
||
- `src/storage/` – helpers for settings, JSON persistence, clipboard, and obfuscated secrets (
|
||
`key.json`, `secrets.json`, and `clipboard.json`).
|
||
- `schemas/` – GSettings schema for runtime configuration.
|
||
- `stylesheet.css` – theme adjustments for the topbar icon.
|
||
- `install.sh` – deployment helper with schema compilation.
|
||
|
||
## Testing Notes
|
||
- No automated tests yet. Use the manual checklist in `MANUAL_TESTS.md` to verify behavior.
|
||
- For new tests, document the framework and naming pattern (e.g. `*.test.js`).
|
||
|
||
## Next Steps
|
||
- Replace placeholder UI components (see `src/ui/`) with real paginated popovers and action buttons.
|
||
- Implement secure storage as outlined in `CLAUDE.md` (MVP obfuscation with `secretsStore.js`).
|
||
- Wire GNOME shell clipboard operations and integrate override clicks based on `click_mode`.
|