Commit 5371e92
authored
feat(http): add HTTP client space (#766)
* feat(http): scaffold space registration, route and locales
* feat(http): add storage types, paths and contracts
* feat(http): add state, frontmatter parser and disk sync
* feat(http): add folders and requests storages
Implements HttpFoldersStorage (CRUD over folders persisted in
state.yaml plus filesystem dirs) and HttpRequestsStorage (CRUD over
.md request files with frontmatter). Extends shared validation kinds
to cover 'request' for sibling-name conflict messages.
* feat(http): wire environments, history, provider and watcher
Adds HTTP environments and history storages on top of state.yaml,
exposes createHttpStorageProvider via useHttpStorage(), registers
HTTP space in PERSISTED_SPACE_IDS and integrates http runtime cache
into the markdown watcher so external file changes resync and
broadcast storage-synced.
* feat(http): add API DTOs and routes for folders, requests, environments and history
* feat(http): add execute IPC handler with undici, env interpolation and history
* refactor(http): extract shared types to src/main/types/http.ts
Single source of truth for HTTP primitives shared between main, IPC and
renderer (renderer tsconfig already includes src/main/types/**). Removes
duplicate definitions from runtime/types.ts and inline declarations in
the IPC handler.
* feat(http): add renderer composables for folders, requests, environments, history and execute
Module-level reactive state for the HTTP space. Mirrors the notes-space
pattern: useHttpFolders/useHttpRequests/useHttpEnvironments/useHttpHistory
talk to the REST API, useHttpExecute wraps the spaces:http:execute IPC,
useHttpApp owns the cross-composable folderId/requestId selection.
useHttpRequests tracks a draft snapshot against the loaded request so the
UI can detect dirty state and offer save/discard. Adds the
spaces.http.untitledRequest i18n key for default request names.
* feat(http): scaffold 3-column space layout with sidebar/editor/response
HttpSpace view wires LayoutThreeColumn with HttpSidebar, RequestEditor and
ResponsePanel placeholders. useHttpSpaceInit kicks off folders/requests/
environments/history fetches once on mount. Real component bodies follow
in Phase 6.2-6.5.
* feat(http): render sidebar tree with folders, requests and context menus
* feat(http): split layout into folders sidebar, requests list and editor pane
* fix(http): use registered Http* component names and add search input
* fix(http): match notes list header layout (single search row with + button)
* feat(http): add description and enabled flags on header/query KV entries
* feat(http): redesign KeyValueTable with checkbox, description column and row actions
* refactor(http-editor): polish header, drop save button and rename description tab to pre-request
* style(http): show full uppercase method label in HttpMethodBadge
* refactor(http): migrate folders sidebar to UiTree with multi-select and drag-drop
* feat(http): multi-select, multi-delete and drag-drop in request list
* feat(store): add http selection state to app store
* feat(http): persist selected request and folder across reloads
* refactor(http): remove unused send button label and folder info display
* feat(http): bidirectional sync between request URL and query params
* feat(http): implement body, auth and description tabs
* feat(http): polish ResponsePanel with status, headers and copy
* fix(http): use Http* prefix for tab components
* feat(http): replace body textarea with CM6 editor and JSON validation
* feat(http): validate JSON body on blur instead of every change
* fix(http): hide internal JSON parse error details from user
* fix(http): nest response i18n keys inside editor namespace
* fix(http): apply custom scrollbar class to overflow containers
* feat(http): hide pre-request tab until implementation
* fix(http): avoid duplicate query params
* fix(http): refresh state after storage changes
* fix(http): persist active space
* fix(http): localize empty request url
* feat(http): support sidebar/list visibility toggle via View menu
* style(http): align RequestEditor header with code/notes editor pattern
* style(http): drop font-mono from URL input
* feat(http): api-based search with state restore
Mirror notes/snippets search pattern: server-side filter by name and url
via ?search= query, separate requestsBySearch list, snapshot of selection
before search and restore on clear. Eliminate redundant GET /:id calls by
selecting from already-loaded list data.
* feat(http): environments switcher and manager dialog
EnvironmentSwitcher — icon button in RequestEditor header with active
env tooltip and popover (none / list / manage). EnvironmentManagerDialog
— two-pane modal with env list and key/value variables editor, autosave
debounced 500ms, draft re-syncs only on selection change to avoid races.
* feat(http): variable interpolation highlight and autocomplete
* style(http): render {{var}} as chips
* style(http): theme-aware {{var}} chip colors via tokens
* feat(http): add request name input above url row
* style(http): use default variant for method select and url input
* style(http): tweak environment and send icons in editor header
* feat(http): validate request name on rename
* feat(http): auto-rename request on folder change conflict
* chore: prevent auto-focus on close for environment popover
* fix(http): make response panel resizable
* feat(http): add request preview panel
* refactor(http): use compact preview copy action
* refactor(http): add response header copy action
* refactor(http): move response summary to bottom panel
* refactor(http): reuse code viewer for response body
* refactor(cm): share editor extensions
* feat(http): highlight request preview
* refactor(cm): remove notes extension aliases
* feat(http): move environments to sidebar
* feat(http): track donation activity
* fix(http): align environment rows
* refactor(http): align body editor with cm6 viewer
* fix(http): use ui font in url input
* feat(http): reorder math space definition in getSpaceDefinitions
* feat(http): add send request shortcut
* feat(notes): link http requests
* fix(http): refresh vault changes
* fix(http): interpolate preview variables
* feat(http): expand request context menu
* feat(http): add http preferences
* fix(http): tune environment panel
* fix(http): confirm environment deletes
* refactor(http): reuse key value table
* fix(http): improve selected request item
* feat(http): add folder custom icons
* fix(http): select first request on folder change
* docs: add http space documentation
* chore(docs): remove AppVersion tag from environments and requests documentation
* fix(http): prevent environment dialog autofocus tooltips1 parent 54680f7 commit 5371e92
141 files changed
Lines changed: 11114 additions & 97 deletions
File tree
- .github/workflows
- docs/website
- .vitepress
- _data
- documentation
- http
- notes
- public
- scripts
- src
- main
- api
- dto
- routes
- i18n/locales
- en_US
- ru_RU
- ipc
- handlers
- storage
- providers/markdown
- __tests__
- http
- runtime
- storages
- runtime
- store
- __tests__
- module
- types
- types
- renderer
- components
- cm-extensions
- devtools/compare
- http
- __tests__
- cm-extensions
- notes
- cm-extensions
- __tests__/fixtures
- internalLinks
- __tests__
- preferences
- composables
- __tests__
- spaces/http
- ipc
- listeners
- __tests__
- router
- services/api/generated
- utils
- views
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
79 | | - | |
80 | | - | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
121 | | - | |
122 | | - | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
78 | | - | |
| 78 | + | |
79 | 79 | | |
80 | 80 | | |
81 | 81 | | |
| |||
101 | 101 | | |
102 | 102 | | |
103 | 103 | | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
104 | 115 | | |
105 | 116 | | |
106 | 117 | | |
| |||
122 | 133 | | |
123 | 134 | | |
124 | 135 | | |
125 | | - | |
| 136 | + | |
126 | 137 | | |
127 | 138 | | |
128 | 139 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
135 | 143 | | |
136 | 144 | | |
137 | 145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
22 | 26 | | |
23 | 27 | | |
24 | 28 | | |
| |||
0 commit comments