Change application ID from cz.vesp.roster to cz.bugsy.roster

This commit is contained in:
Pavel Baksy 2026-01-06 17:11:10 +01:00
parent dff996fc7a
commit cbf4d73190
29 changed files with 52 additions and 52 deletions

View File

@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
Roster is a GNOME application written in Python using GTK 4 and libadwaita. The project follows GNOME application conventions and uses the Meson build system.
- **Application ID**: `cz.vesp.roster`
- **Application ID**: `cz.bugsy.roster`
- **Build System**: Meson
- **Runtime**: GNOME Platform (org.gnome.Platform)
- **UI Framework**: GTK 4 + libadwaita (Adw)
@ -40,12 +40,12 @@ The application uses **libsoup3** (from GNOME Platform) for HTTP requests - no e
## Development with Flatpak
The project includes a Flatpak manifest (`cz.vesp.roster.json`) for building and running the application in a sandboxed environment:
The project includes a Flatpak manifest (`cz.bugsy.roster.json`) for building and running the application in a sandboxed environment:
```bash
# Build with GNOME Builder (recommended for GNOME apps)
# Or use flatpak-builder directly:
flatpak-builder --user --install --force-clean build-dir cz.vesp.roster.json
flatpak-builder --user --install --force-clean build-dir cz.bugsy.roster.json
```
## Architecture
@ -83,10 +83,10 @@ src/
roster.gresource.xml # GResource bundle definition
data/
cz.vesp.roster.desktop.in # Desktop entry (i18n template)
cz.vesp.roster.metainfo.xml.in # AppStream metadata (i18n template)
cz.vesp.roster.gschema.xml # GSettings schema
cz.vesp.roster.service.in # D-Bus service file (configured by Meson)
cz.bugsy.roster.desktop.in # Desktop entry (i18n template)
cz.bugsy.roster.metainfo.xml.in # AppStream metadata (i18n template)
cz.bugsy.roster.gschema.xml # GSettings schema
cz.bugsy.roster.service.in # D-Bus service file (configured by Meson)
icons/ # Application icons
po/
@ -116,10 +116,10 @@ When adding new `.py` files to `src/`:
When adding new `.ui` files:
1. Place in `src/` directory
2. Add `<file>` entry to `src/roster.gresource.xml`
3. Use `@Gtk.Template(resource_path='/cz/vesp/roster/filename.ui')` in the corresponding Python class
3. Use `@Gtk.Template(resource_path='/cz/bugsy/roster/filename.ui')` in the corresponding Python class
## GSettings Schema
Settings are defined in `data/cz.vesp.roster.gschema.xml`. After modifying:
Settings are defined in `data/cz.bugsy.roster.gschema.xml`. After modifying:
- Schema is validated during `meson test`
- Compiled automatically during installation via `gnome.post_install()`

View File

@ -1,5 +1,5 @@
{
"id" : "cz.vesp.roster",
"id" : "cz.bugsy.roster",
"runtime" : "org.gnome.Platform",
"runtime-version" : "49",
"sdk" : "org.gnome.Sdk",

View File

@ -1,7 +1,7 @@
[Desktop Entry]
Name=roster
Exec=roster
Icon=cz.vesp.roster
Icon=cz.bugsy.roster
Terminal=false
Type=Application
Categories=Utility;

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="roster">
<schema id="cz.vesp.roster" path="/cz/vesp/roster/">
<schema id="cz.bugsy.roster" path="/cz/bugsy/roster/">
<key name="force-tls-verification" type="b">
<default>true</default>
<summary>Force TLS verification</summary>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>cz.vesp.roster</id>
<id>cz.bugsy.roster</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0-or-later</project_license>
@ -36,7 +36,7 @@
<translation type="gettext">roster</translation>
<!-- All graphical applications having a desktop file must have this tag in the MetaInfo.
If this is present, appstreamcli compose will pull icons, keywords and categories from the desktop file. -->
<launchable type="desktop-id">cz.vesp.roster.desktop</launchable>
<launchable type="desktop-id">cz.bugsy.roster.desktop</launchable>
<!-- Use the OARS website (https://hughsie.github.io/oars/generate.html) to generate these and make sure to use oars-1.1 -->
<content_rating type="oars-1.1" />

View File

@ -1,3 +1,3 @@
[D-BUS Service]
Name=cz.vesp.roster
Name=cz.bugsy.roster
Exec=@bindir@/roster --gapplication-service

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -1,4 +1,4 @@
application_id = 'cz.vesp.roster'
application_id = 'cz.bugsy.roster'
scalable_dir = 'hicolor' / 'scalable' / 'apps'
install_data(

View File

@ -1,6 +1,6 @@
desktop_file = i18n.merge_file(
input: 'cz.vesp.roster.desktop.in',
output: 'cz.vesp.roster.desktop',
input: 'cz.bugsy.roster.desktop.in',
output: 'cz.bugsy.roster.desktop',
type: 'desktop',
po_dir: '../po',
install: true,
@ -13,8 +13,8 @@ if desktop_utils.found()
endif
appstream_file = i18n.merge_file(
input: 'cz.vesp.roster.metainfo.xml.in',
output: 'cz.vesp.roster.metainfo.xml',
input: 'cz.bugsy.roster.metainfo.xml.in',
output: 'cz.bugsy.roster.metainfo.xml',
po_dir: '../po',
install: true,
install_dir: get_option('datadir') / 'metainfo'
@ -24,7 +24,7 @@ appstreamcli = find_program('appstreamcli', required: false, disabler: true)
test('Validate appstream file', appstreamcli,
args: ['validate', '--no-net', '--explain', appstream_file])
install_data('cz.vesp.roster.gschema.xml',
install_data('cz.bugsy.roster.gschema.xml',
install_dir: get_option('datadir') / 'glib-2.0' / 'schemas'
)
@ -37,8 +37,8 @@ test('Validate schema file',
service_conf = configuration_data()
service_conf.set('bindir', get_option('prefix') / get_option('bindir'))
configure_file(
input: 'cz.vesp.roster.service.in',
output: 'cz.vesp.roster.service',
input: 'cz.bugsy.roster.service.in',
output: 'cz.bugsy.roster.service',
configuration: service_conf,
install_dir: get_option('datadir') / 'dbus-1' / 'services'
)

View File

@ -1,8 +1,8 @@
# List of source files containing translatable strings.
# Please keep this file sorted alphabetically.
data/cz.vesp.roster.desktop.in
data/cz.vesp.roster.metainfo.xml.in
data/cz.vesp.roster.gschema.xml
data/cz.bugsy.roster.desktop.in
data/cz.bugsy.roster.metainfo.xml.in
data/cz.bugsy.roster.gschema.xml
src/main.py
src/window.py
src/window.ui

View File

@ -24,7 +24,7 @@ from .widgets.environment_header_row import EnvironmentHeaderRow
from .widgets.variable_data_row import VariableDataRow
@Gtk.Template(resource_path='/cz/vesp/roster/environments-dialog.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/environments-dialog.ui')
class EnvironmentsDialog(Adw.Dialog):
"""Dialog for managing project environments and variables."""

View File

@ -36,9 +36,9 @@ class HistoryManager:
def __init__(self):
# Use XDG config directory (works for both Flatpak and native)
# Flatpak: ~/.var/app/cz.vesp.roster/config/cz.vesp.roster
# Native: ~/.config/cz.vesp.roster
self.config_dir = Path(GLib.get_user_config_dir()) / 'cz.vesp.roster'
# Flatpak: ~/.var/app/cz.bugsy.roster/config/cz.bugsy.roster
# Native: ~/.config/cz.bugsy.roster
self.config_dir = Path(GLib.get_user_config_dir()) / 'cz.bugsy.roster'
self.history_file = self.config_dir / 'history.json'
self._ensure_config_dir()

View File

@ -34,7 +34,7 @@ class HttpClient:
self.session = Soup.Session.new()
# Load settings
self.settings = Gio.Settings.new('cz.vesp.roster')
self.settings = Gio.Settings.new('cz.bugsy.roster')
# Initialize TLS verification flag
self.force_tls_verification = True

View File

@ -21,7 +21,7 @@ from gi.repository import Adw, Gtk, GObject
from .constants import PROJECT_ICONS
@Gtk.Template(resource_path='/cz/vesp/roster/icon-picker-dialog.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/icon-picker-dialog.ui')
class IconPickerDialog(Adw.Dialog):
"""Dialog for selecting a project icon."""

View File

@ -32,9 +32,9 @@ class RosterApplication(Adw.Application):
"""The main application singleton class."""
def __init__(self, version='0.0.0'):
super().__init__(application_id='cz.vesp.roster',
super().__init__(application_id='cz.bugsy.roster',
flags=Gio.ApplicationFlags.DEFAULT_FLAGS,
resource_base_path='/cz/vesp/roster')
resource_base_path='/cz/bugsy/roster')
self.version = version
self.create_action('quit', lambda *_: self.quit(), ['<control>q'])
self.create_action('about', self.on_about_action)
@ -55,7 +55,7 @@ class RosterApplication(Adw.Application):
def on_about_action(self, *args):
"""Callback for the app.about action."""
about = Adw.AboutDialog(application_name='Roster',
application_icon='cz.vesp.roster',
application_icon='cz.bugsy.roster',
developer_name='Pavel Baksy',
version=self.version,
developers=['Pavel Baksy'],
@ -77,7 +77,7 @@ class RosterApplication(Adw.Application):
def on_shortcuts_action(self, widget, _):
"""Callback for the app.shortcuts action."""
builder = Gtk.Builder.new_from_resource('/cz/vesp/roster/shortcuts-dialog.ui')
builder = Gtk.Builder.new_from_resource('/cz/bugsy/roster/shortcuts-dialog.ui')
shortcuts_window = builder.get_object('shortcuts_dialog')
shortcuts_window.set_transient_for(self.props.active_window)
shortcuts_window.present()

View File

@ -20,7 +20,7 @@
from gi.repository import Adw, Gtk, Gio, GObject
@Gtk.Template(resource_path='/cz/vesp/roster/preferences-dialog.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/preferences-dialog.ui')
class PreferencesDialog(Adw.PreferencesWindow):
__gtype_name__ = 'PreferencesDialog'
@ -38,7 +38,7 @@ class PreferencesDialog(Adw.PreferencesWindow):
self.history_manager = history_manager
# Get settings
self.settings = Gio.Settings.new('cz.vesp.roster')
self.settings = Gio.Settings.new('cz.bugsy.roster')
# Bind settings to UI
self.settings.bind(

View File

@ -36,9 +36,9 @@ class ProjectManager:
def __init__(self):
# Use XDG data directory (works for both Flatpak and native)
# Flatpak: ~/.var/app/cz.vesp.roster/data/cz.vesp.roster
# Native: ~/.local/share/cz.vesp.roster
self.data_dir = Path(GLib.get_user_data_dir()) / 'cz.vesp.roster'
# Flatpak: ~/.var/app/cz.bugsy.roster/data/cz.bugsy.roster
# Native: ~/.local/share/cz.bugsy.roster
self.data_dir = Path(GLib.get_user_data_dir()) / 'cz.bugsy.roster'
self.projects_file = self.data_dir / 'requests.json'
self._ensure_data_dir()

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/cz/vesp/roster">
<gresource prefix="/cz/bugsy/roster">
<file preprocess="xml-stripblanks">main-window.ui</file>
<file preprocess="xml-stripblanks">shortcuts-dialog.ui</file>
<file preprocess="xml-stripblanks">preferences-dialog.ui</file>

View File

@ -20,7 +20,7 @@
from gi.repository import Gtk, GObject
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/environment-column-header.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/environment-column-header.ui')
class EnvironmentColumnHeader(Gtk.Box):
"""Widget for displaying an environment column header with edit/delete buttons."""

View File

@ -21,7 +21,7 @@ from gi.repository import Gtk, GObject
from .environment_column_header import EnvironmentColumnHeader
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/environment-header-row.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/environment-header-row.ui')
class EnvironmentHeaderRow(Gtk.Box):
"""Widget for the header row containing all environment column headers."""

View File

@ -20,7 +20,7 @@
from gi.repository import Gtk, GObject
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/environment-row.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/environment-row.ui')
class EnvironmentRow(Gtk.Box):
"""Widget for displaying and editing an environment with its variables."""

View File

@ -20,7 +20,7 @@
from gi.repository import Gtk, GObject
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/header-row.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/header-row.ui')
class HeaderRow(Gtk.Box):
"""Widget for editing a single HTTP header key-value pair."""

View File

@ -21,7 +21,7 @@ from gi.repository import Gtk, GObject, Gdk
from datetime import datetime
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/history-item.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/history-item.ui')
class HistoryItem(Gtk.Box):
"""Widget for displaying a history entry."""

View File

@ -21,7 +21,7 @@ from gi.repository import Gtk, GObject, Gio
from .request_item import RequestItem
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/project-item.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/project-item.ui')
class ProjectItem(Gtk.Box):
"""Widget for displaying a project with its requests."""

View File

@ -20,7 +20,7 @@
from gi.repository import Gtk, GObject
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/request-item.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/request-item.ui')
class RequestItem(Gtk.Box):
"""Widget for displaying a saved request."""

View File

@ -21,7 +21,7 @@ from gi.repository import Gtk, GObject, GLib
from datetime import datetime, timedelta
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/variable-data-row.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/variable-data-row.ui')
class VariableDataRow(Gtk.Box):
"""Widget for a data row with variable name and values for each environment."""

View File

@ -20,7 +20,7 @@
from gi.repository import Gtk, GObject
@Gtk.Template(resource_path='/cz/vesp/roster/widgets/variable-row.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/widgets/variable-row.ui')
class VariableRow(Gtk.Box):
"""Widget for editing a variable name."""

View File

@ -46,7 +46,7 @@ import uuid
logger = logging.getLogger(__name__)
@Gtk.Template(resource_path='/cz/vesp/roster/main-window.ui')
@Gtk.Template(resource_path='/cz/bugsy/roster/main-window.ui')
class RosterWindow(Adw.ApplicationWindow):
__gtype_name__ = 'RosterWindow'