72 Commits

Author SHA1 Message Date
8cce3f34a9 Allow / and : in request names 2026-05-27 17:12:22 +02:00
e25e5db846 Add responsive layout: narrow mode and adaptive request tab switcher 2026-05-21 20:57:43 +02:00
60c0d0ac11 Remove stale @Gtk.Template.Callback from on_add_project_clicked 2026-05-21 19:57:07 +02:00
7107e2df8d Replace sidebar popover with GMenu model: flat sections instead of submenu, standard font 2026-05-21 19:35:02 +02:00
1af59b3539 Fix narrow-window layout: response panel stays, request shrinks, send button always visible 2026-05-20 23:35:34 +02:00
b620016397 Replace GtkPaned sidebar with AdwOverlaySplitView for responsive layout 2026-05-20 23:10:05 +02:00
a6c389edd7 Improve sidebar layout: center Projects title, fix padding, add method chips
- Center "Projects" label in sidebar headerbar via title-widget property
- Fix asymmetric request list margins (margin-start 12→6, add margin-end 6)
- Replace dim method labels with colored chips (GET/POST/PUT/PATCH/DELETE)
2026-05-20 00:07:59 +02:00
728697711c Add .http file import support
Parse and import IntelliJ HTTP Client (.http/.rest) files into projects.
2026-05-19 23:37:29 +02:00
45100d3d44 Merge import buttons into single popover menu, add PyYAML to Flatpak 2026-05-12 23:17:58 +02:00
fef8dec193 Add OpenAPI/Swagger import (2.0 + 3.x, JSON body templates) 2026-05-12 15:04:42 +02:00
da0f2e02f8 Add WSDL import: parse SOAP services and create requests from operations 2026-05-12 12:15:24 +02:00
1a35867871 Refresh environment dropdown in open tabs after environments dialog changes 2026-05-12 01:13:05 +02:00
97a3336e4f Fix variable indicators showing all vars as undefined when opening saved request in new tab 2026-05-12 00:47:08 +02:00
180e15ac20 Fix export button crash for saved requests by using async callback 2026-02-10 23:34:39 +01:00
f685ec5c92 Use XDG Secrets Portal instead of direct D-Bus access 2026-01-19 22:06:10 +01:00
f4278647f3 Implement Add Request to create new tab for project 2026-01-14 22:24:03 +01:00
3bc458bb4b Add keyboard shortcuts: Ctrl+L (focus URL) and Ctrl+Return (send) 2026-01-13 17:55:04 +01:00
9ced4f54d7 Add sensitive variable redaction in history 2026-01-13 11:27:05 +01:00
fe5747cb42 Add sensitive variable support with GNOME Keyring integration 2026-01-12 23:28:55 +01:00
a6407a5dec FIX: Empty tab detection with default User-Agent header 2026-01-12 22:43:46 +01:00
05d6f0c15d Add cURL export functionality with custom icon and extensible architecture 2026-01-12 22:27:38 +01:00
41281f5121 FIX: Change style of stack switcher button (light theme) 2026-01-12 10:29:40 +01:00
5e5fca65a4 Change style of stack switcher button 2026-01-11 22:37:10 +01:00
afdb9f34fc Change application ID from cz.vesp.roster to cz.bugsy.roster 2026-01-06 17:11:10 +01:00
1d12ae4eb3 Fix variable indicators and add project caching 2026-01-06 01:45:36 +01:00
5ef4d739a4 Replace magic numbers with named constants 2026-01-05 11:56:23 +01:00
03b753e688 Replace print statements with proper logging 2026-01-05 11:46:15 +01:00
4236cabf1f Add input validation for project and request names 2026-01-05 11:38:58 +01:00
8ee746077d Add type annotations to window.py 2026-01-05 11:31:59 +01:00
5f8a3857ae Fix toast notifications by adding AdwToastOverlay 2026-01-05 11:14:31 +01:00
9d0ff68851 Implement preprocessing scripts with request modification and variable access 2026-01-02 01:04:24 +01:00
d463b83420 Add roster API for scripts to set environment variables 2026-01-01 02:27:22 +01:00
6a22734c80 Track script changes and show modified flag when scripts are edited 2025-12-31 01:59:49 +01:00
3defd56c0f Save and restore scripts with saved requests to projects 2025-12-31 01:46:43 +01:00
d2a065341c Add Scripts feature with JavaScript postprocessing
Implements JavaScript-based postprocessing for HTTP responses using gjs.
Adds Scripts tab with preprocessing (disabled) and postprocessing (functional) sections.
2025-12-31 01:32:14 +01:00
7db4a399ba Replace send button text with play icon 2025-12-30 23:32:41 +01:00
c7ac15b72f Show environment selector when loading project request into empty tab 2025-12-30 15:59:51 +01:00
a1d820d2b0 Save substituted values to history instead of variable templates 2025-12-30 14:38:25 +01:00
29bea2353e Implement environment variable substitution in requests 2025-12-30 12:54:26 +01:00
0474978cf2 Add environment management for projects with variable support 2025-12-30 12:37:13 +01:00
8a9974112d Add history deletion features - clear all in preferences and delete individual items 2025-12-24 20:21:47 +01:00
912a94eb47 Fix history expander button functionality - set both min and max content heights 2025-12-24 13:13:04 +01:00
0dffca5dc5 Refactor to use AdwToolbarView like Epiphany
- Replace manual GtkBox layout with AdwToolbarView
- Add AdwHeaderBar and AdwTabBar as separate top bars
- Remove all custom CSS for header bar height matching
- AdwToolbarView automatically ensures consistent bar styling

This follows the proper libadwaita pattern used by GNOME Web.
2025-12-24 03:55:13 +01:00
392b2e7494 Add style classes to distinguish header bars
- Add "sidebar-header" and "main-header" style classes
- Target each header bar specifically in CSS
- Make tab bar ultra-compact to fit within header height
- Reduce tab padding and remove all internal margins
2025-12-24 03:48:50 +01:00
bdff2f5033 Fix CSS error and history loading
- Remove invalid max-height CSS property (GTK doesn't support it)
- Fix loading from history: update widget instead of calling removed method
- Update tab page title when loading from history
2025-12-24 03:45:51 +01:00
313068df6c Fix header bar height matching properly
- Revert show-title=False on main header (was hiding tabs)
- Use CSS to force both header bars to exact same height (46px)
- Remove vertical padding from header bars
- Keep tab bar compact to fit within fixed height
2025-12-24 03:40:45 +01:00
b788a29302 Fix critical bugs from second round of testing
1. Fixed infinite loop when closing last tab:
   - Return False instead of True when page already removed (prevents double-processing)
   - Remove from tracking BEFORE calling close_page_finish to prevent re-trigger
   - Properly schedule new tab creation only once

2. Fixed modified flag not clearing after save:
   - Update widget.original_request in _mark_tab_as_saved
   - Update widget.modified = False
   - Manually call _on_tab_modified_changed to clear indicator
   - Update tab page title when saving

3. Fixed header bar height and left spacing:
   - Added CSS to reduce headerbar min-height to 38px
   - Set headerbar padding-left to 0px to eliminate left gap
   - Made tabs more compact (min-height: 26px, reduced padding)
   - Reduced tabbar padding and margins

All critical issues from testing resolved!
2025-12-24 03:07:11 +01:00
02b22ac466 Fix all reported issues from testing
1. Modified indicator (*) now shows:
   - Added GObject signal 'modified-changed' to RequestTabWidget
   - Connect to signal in window.py to update tab page indicator
   - Indicator shows dot-symbolic icon when modified

2. History panel now visible and populated:
   - Restored history panel in main-window.ui with vertical paned layout
   - Added _load_history() call back to __init__
   - History entries now display in bottom panel

3. Saving requests now works:
   - Fixed on_save_request_clicked to get request from widget.get_request()
   - Removed dependency on obsolete _build_request_from_ui method

4. Loading saved requests fixed:
   - Updated _on_load_request to properly update widget and tab page
   - Correctly sets widget.original_request and widget.modified
   - Updates tab page title when loading into empty tab
   - Properly handles copy vs. linked request logic

All issues from user testing are now resolved!
2025-12-24 02:20:55 +01:00
51e3046476 Complete window.py cleanup - remove 400 lines of obsolete code
Removed obsolete UI methods now handled by RequestTabWidget:
- _setup_method_dropdown, _setup_request_tabs, _setup_response_tabs
- _build_request_from_ui, _load_request_to_ui
- _display_response, _display_error
- _extract_content_type, _get_language_from_content_type, _format_response_body
- on_add_header_clicked, _add_header_row, _on_header_remove
- _setup_sourceview_theme, _setup_request_body_theme
- _update_tab_indicator (now handled internally by widgets)

Added new HTTP handling:
- _on_send_clicked now works with RequestTabWidget
- Properly handles request/response through widget interface
- Updates history after requests complete

Result: 1237 lines → 841 lines (-396 lines, -32%)
App builds and runs successfully!
2025-12-24 02:05:37 +01:00
d6e33edec5 WIP: Refactoring window.py for per-tab widgets 2025-12-24 01:56:40 +01:00