Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
929e0fe
feat(obs-integration): add OBS integration plugin
Aug 1, 2026
72edff0
docs(obs-integration): add README.md
Aug 1, 2026
b6ab7ff
chore(obs-integration): rename obs-integration-thumbnail.webp to thum…
Aug 2, 2026
121ee2e
i18n(obs-integration): fix PR check
Aug 2, 2026
5cc1744
fix(obs-integration): honor selected rebuild architecture
Aug 2, 2026
1a8fb95
fix(obs-integration): reject dot-prefixed names in validName
Aug 2, 2026
30e81eb
fix(obs-integration): treat empty checkout_dir as unset
Aug 2, 2026
e845be4
feat(obs-integration): add repo/arch rebuild selection with confirmation
Aug 2, 2026
c3899ad
chore(obs-integration): add opensuse tag to plugin.toml
Aug 2, 2026
bb77068
chore(obs-integration): new thumbnail
Aug 2, 2026
bf71a17
fix(obs-integration): fix rebuild controls inheriting flexGrow from r…
Aug 2, 2026
f4fdd45
feat(obs-integration): overhaul package actions, logging, and navigation
Aug 2, 2026
e7bc1c3
chore(obs-integration): new thumbnail
Aug 2, 2026
c323003
feat(obs-integration): label Service Run All button, move build logs
Aug 2, 2026
8dc5435
fix(obs-integration): split logs based on action source
Aug 2, 2026
6391952
fix(obs-integration): correct log display locations and resets
Aug 2, 2026
5344605
feat(obs-integration): add confirmation to remove file
Aug 2, 2026
486b6e3
feat(obs-integration): move edit package meta to header
Aug 2, 2026
98bd30c
fix(obs-integration): layout repo/arch label/select alignment
Aug 2, 2026
0a1c595
fix(obs-integration): clean rebuild log duplication
Aug 2, 2026
bff2f58
fix(obs-integration): persist logSource in nav state for panel reopen
Aug 2, 2026
fb84845
i18n(obs-integration): change 'Repo' to 'Repositories' and 'Arch' to …
Aug 3, 2026
8a131cb
feat(obs-integration): add home nav button, fix header label clipping…
Aug 3, 2026
8aceec3
chore(obs-integration): change plugin's panel height
Aug 3, 2026
bc156fe
docs(obs-integration): document source-service operations in README
Aug 3, 2026
2a7d0a8
fix(obs-integration): correct rebuild log display and persistence, sy…
Aug 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions obs-integration/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# OBS Integration

Manage openSUSE Build Service projects and packages from Noctalia. The bar
widget toggles a panel for browsing your projects, checking out packages,
editing metadata and files, and triggering rebuilds on OBS — without leaving
the shell.

## Plugin

| Field | Value |
| --- | --- |
| ID | `neyfua/obs-integration` |
| Entries | Bar widget: `obs-integrate`; panel: `panel` |

## Requirements

Install the openSUSE Build Service `osc` CLI on `PATH` and configure your
credentials in `~/.config/osc/oscrc` (for example with `osc apiservice` setup
or by copying a working `oscrc`). The plugin shells out to `osc` for every
operation, so all authentication stays in your normal OBS configuration.

## Usage

Add the `obs-integrate` widget to a bar. Left-click it to open the panel.

Open the panel directly with:

```sh
noctalia msg panel-toggle neyfua/obs-integration:panel
```

### My Projects

The panel opens on **My Projects**: every project you maintain, plus every
project where you are listed as a package maintainer on OBS. Search filters the
list, and the sort button toggles A-Z / Z-A order. The pen icon edits the
project metadata (`osc meta prj -e`).

### Inside a project

Click a project to list its packages. A package's icon turns **primary** when
that package is checked out in your local directory. Click a package to open
its actions:

- **Checkout package** — `osc co` in the configured checkout directory
(hidden once the package is already checked out).
- **Edit files** — expandable list of editable sources: `_service` and the
package's `.spec` open in your `$EDITOR`; the `.changes` file runs
`osc vc`.
- **Files** — lists every non-dotfile in the checkout. Each file has a remove
button; below the list, **Add/Remove** runs `osc ar` asynchronously in the
panel. **Commit** runs `osc status` first; if pending changes exist it
opens a terminal with `osc ci` so you can edit the commit message, otherwise
the commit runs asynchronously in the panel.
- **Service Local Run** — runs `osc service r` in the checkout, executing the
package's source-service scripts locally (local side effects: the `_service`
scripts can modify files in the checkout).
- **Service Manual Run** — runs `osc service mr` in the checkout, running the
source-service scripts locally in "manual" mode (local side effects, like
Service Local Run).
- **Service Run All** — runs `osc service ra` in the checkout, running all
source-service scripts locally. Requires a confirmation click (turns
**secondary** with a **check** glyph) before it executes.
- **Service Remote Run** — runs `osc service rr` on the OBS server for the
package on the remote project. No local code executes; the request triggers
server-side service runs, and a confirmation is not required.
- **Rebuild package** — pick an architecture (or **All**) and trigger
`osc rebuild`. Confirmation is required before it runs.
- **Edit package meta** — `osc meta pkg -e` in a terminal.
- **Remove package** — deletes the checkout from disk only (never touches the
OBS project); confirm before it runs. If it was the last package in the
project directory, the directory is removed too.

### Sticky navigation

The panel reopens where you left off — inside the same project or package.

## Settings

| Setting | Type | Default | Description |
| --- | --- | --- | --- |
| `checkout_dir` | `string` | `~/OBS` | Base directory where packages are checked out. Packages land in `<checkout_dir>/<project>/<package>`. |
| `show_label` | `bool` | `false` | Show the "OBS" label next to the bar icon. |

## Notes

The plugin runs the `osc` CLI with your existing credentials — it stores
nothing itself beyond a small cache of project/package listings and your last
navigated view. Removal is local-only and never modifies the OBS project.
Most operations (rebuilds, service runs, updates, add/remove) run
asynchronously and display their output directly in the panel. The Commit
operation opens a terminal only when `osc status` reports pending changes;
otherwise, it runs asynchronously in the panel. Confirmation prompts precede
destructive and side-effecting operations: Rebuild package, Remove package,
and Service Run All.
Loading