Feat/keepass integration#125
Conversation
|
hey this is cool and i appreciate the effort, but it needs some work before it can go in. a few things:
no rush, take your time cleaning it up and ping when it's ready for another look |
c7cf669 to
f87a842
Compare
f87a842 to
2a2dc64
Compare
|
Hi @snowarch, I've addressed all the points from your review:
Ready for another look whenever you have time, thanks! |
|
hey, thanks for addressing the previous points. i went through the updated diff more carefully and there are still some things that need fixing before this can go in. first — the PR scope. this should only touch keepass-related files, but right now it also modifies SidebarRight.qml (rewrites the visibility pattern to mask-based input), adds a formatTime() function to DateTime.qml, and then changes 6 other files (CalendarEventRow, EventCard, TimeButton, CalendarWidget, AnimeService, YtMusic) to use it. those are unrelated changes that affect stable code across both panel families. if you want to propose those separately thats fine, but they cant ride along in a feature PR — especially right now during a release cycle where i need clean diffs. second — the panel doesnt follow the design system correctly. a few concrete things:
these arent edge cases, they produce runtime warnings (Unable to assign [undefined] to QColor) every time the panel opens. i need contributors to verify their work against the actual Appearance.qml schema — the properties are all there, its just a matter of reading the file. third — look at how ClipboardPanel.qml is structured. it uses GlassBackground for the surface (which handles all the glass/blur/transparency logic per style automatically), it has proper entry/exit animations using Appearance.animation tokens, and it handles the backdrop click-to-close pattern correctly. the keepass panel uses a bare Rectangle with hardcoded width (640px) and manual color branching in every single property (angelEverywhere/inirEverywhere/auroraEverywhere ternaries repeated 50+ times). GlassBackground exists precisely to avoid that pattern. fourth — the translations. the PR adds keys to 16 locale files but the values are just english placeholders for everything except the wordlists. thats fine to ship as-is (the translation team can fill them in later), but just flagging it. fifth — the service singleton (KeePass.qml) contains the IpcHandler, but since QML singletons are lazy-loaded, the IPC target only exists if the panel is loaded. if someone removes iiKeepass from their enabledPanels the whole thing goes dead silently. other services that need IPC (like Audio, Cliphist) are referenced by always-loaded components which forces their instantiation. worth thinking about how to ensure the handler is always available. the backend script and the service logic are solid — the architecture of script + service + panel is right, the secret-tool caching is good, the timer system makes sense. its really the panel UI that needs a rewrite following the existing patterns, and the unrelated changes need to be dropped from this branch. no rush, take your time. |
3e17484 to
4e36007
Compare
|
Thanks @rederyk — solid feature and clearly tested. Two blockers before it can land:
Once it's rebased and cleaned up I'll review the keyring + timer logic properly. |
6089cda to
4fe29ab
Compare
|
Rebased onto latest Blockers addressed
Two small functional fixes I folded in while rebasing
Ready for the keyring + timer review whenever you have time — happy to adjust anything there. |
11152e9 to
8906a40
Compare
|
Pushed a round of keyring + timer hardening (the area you flagged), all squashed into the existing commits — still 3 clean commits authored by me. Keyring
Timer / TTL
Also folded in earlier: the word generator now guarantees every selected character type, and the entry list auto-selects on ↑/↓ so a single Enter copies. Tested live (Niri + gnome-keyring): unlock → copy/reveal all hit the keyring cache, lock clears the scoped item, startup wipes stale items. Happy to adjust anything. |
Adds an overlay panel for KeePassXC with secure unlock flow, entry search, password copy/reveal/generate, multi-vault support, and a vault create flow. Designed as an always-mapped Wayland surface (mask-based visibility) so the IpcHandler stays reachable even when the panel is closed. Key design points: - Backend: quickshell-keepass script handles all keepassxc-cli calls; KeePass.qml singleton manages state, processes, and an IPC handler (toggle / add) that is always active via a _keepassReady binding in ShellIiPanels.qml. - Panel: GlassBackground surface, no ExclusionMode (defaults to Normal so the compositor auto-positions below the bar's exclusive zone), WlrKeyboardFocus.Exclusive only while open. Focus is bound declaratively (focus: KeePass.open) and vault-list focus is restored after the async scan via an onAvailableVaultsChanged handler. - Config: keepass.vaultDir is the only user-settable key; vault path is runtime-only. Panel registered as iiKeepass in enabledPanels. - Graceful degrade: if keepassxc-cli is absent the panel shows an install banner instead of crashing on every action. - Translations: keepass_* strings added to all 15 locale files.
Adds a KeePass section to the Services settings page allowing users to configure keepass.vaultDir and the cache TTL from the shell UI.
Documents the panel features (vault management, entry search, password operations, generation), all IPC commands, configuration options (keepass.vaultDir, keepass.cacheTtl), and the quickshell-keepass script interface.
8906a40 to
a6b91b2
Compare
|
One more fix folded into the feat commit:
|
Ciao! I am an Italian user. I've used AI to help me with the English translation and to refine some of the QML logic, but I have tested everything extensively on my own system to make sure it's solid and fits the iNiR aesthetic.
Summary
Improved the KeePass integration with a focus on security, automation, and visual consistency.
Key Improvements:
secret-tool(Secret Service API).docs/KEEPASS.md.Testing
inir restart && inir logs— checked, no critical errors.iipanel family, but the underlying service is shared.I hope this helps other KeePass users in the community!