Change application ID from cz.vesp.roster to cz.bugsy.roster
This commit is contained in:
parent
dff996fc7a
commit
cbf4d73190
18
CLAUDE.md
18
CLAUDE.md
@ -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()`
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"id" : "cz.vesp.roster",
|
||||
"id" : "cz.bugsy.roster",
|
||||
"runtime" : "org.gnome.Platform",
|
||||
"runtime-version" : "49",
|
||||
"sdk" : "org.gnome.Sdk",
|
||||
@ -1,7 +1,7 @@
|
||||
[Desktop Entry]
|
||||
Name=roster
|
||||
Exec=roster
|
||||
Icon=cz.vesp.roster
|
||||
Icon=cz.bugsy.roster
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Utility;
|
||||
@ -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>
|
||||
@ -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" />
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
[D-BUS Service]
|
||||
Name=cz.vesp.roster
|
||||
Name=cz.bugsy.roster
|
||||
Exec=@bindir@/roster --gapplication-service
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@ -1,4 +1,4 @@
|
||||
application_id = 'cz.vesp.roster'
|
||||
application_id = 'cz.bugsy.roster'
|
||||
|
||||
scalable_dir = 'hicolor' / 'scalable' / 'apps'
|
||||
install_data(
|
||||
|
||||
@ -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'
|
||||
)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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."""
|
||||
|
||||
|
||||
@ -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'
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user