Add a collapsible per-channel side-panel drawer (#31) #32
No reviewers
Labels
No labels
bug
docs
enhancement
good first issue
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pedromcaraujo/forge!32
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "panel-drawer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Step 1 of #31 — the side-panel drawer shell and its config plumbing, no data yet.
What's here
modules/forge.nix— each channel gains an optionalpanelsubmodule:type(enum, currentlyforgejo-issues),title, and the server-onlyrepo/baseUrl/tokenFile(documented as never entering the Nix store or the browser).modules/launcher.nix—channels.jsoncarries a non-secretpanel { type, title }descriptor for channels that have one;repo/baseUrl/tokenFilestay server-side for the comingforge-panelsidecar.web/index.html—<main>becomes a flex row of terminal + a collapsible right drawer. Collapsed, only a thin pull-tab rail shows on the right edge; the open/closed choice persists per-device inlocalStorage(forge-panel-open), mirroring the theme toggle. The drawer appears only for channels with apanel, inherits the theme via existing CSS vars, and overlays rather than splits on screens ≤700px (kept clear of the mobile keybar/composebar). Body is a placeholder until step 2.Verification
check-launcher.mjsJS parse check passes.nixosSystemeval: a panel channel resolves (app.panel.title), a plain channel keepspanel = null.[{"key":"1","name":"app","panel":{"title":"Tasks","type":"forgejo-issues"}},{"key":"2","name":"plain"}]— panel present, secrets absent.Deferred to later steps of #31
The
forge-panelsidecar, the Forgejo API reads, click-to-inject, and quick-add. This PR is just the shell they plug into.Refs #31.
First slice of the pluggable side panel: the drawer shell and its config plumbing, no data yet. - forge.nix: each channel gains an optional `panel` submodule (type, title, and the server-only repo/baseUrl/tokenFile). - launcher.nix: channels.json carries a non-secret `panel { type, title }` descriptor; repo/baseUrl/tokenFile stay server-side for the coming sidecar. - index.html: <main> becomes a flex row of terminal + a collapsible right drawer. Collapsed, only a pull-tab rail shows; the open/closed choice persists per-device in localStorage like the theme. Shown only for channels with a `panel`; overlays instead of splitting on narrow screens. The forge-panel sidecar and the forgejo-issues renderer follow in later steps.