markdown-os 0.7.3__tar.gz → 0.7.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. {markdown_os-0.7.3 → markdown_os-0.7.4}/PKG-INFO +1 -6
  2. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/server.py +1 -18
  3. {markdown_os-0.7.3/site → markdown_os-0.7.4/markdown_os/static/css}/styles.css +0 -61
  4. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/index.html +0 -30
  5. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/editor.js +0 -66
  6. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/theme.js +1 -1
  7. {markdown_os-0.7.3 → markdown_os-0.7.4}/pyproject.toml +1 -10
  8. {markdown_os-0.7.3 → markdown_os-0.7.4}/site/index.html +9 -92
  9. {markdown_os-0.7.3/markdown_os/static/css → markdown_os-0.7.4/site}/styles.css +0 -61
  10. {markdown_os-0.7.3 → markdown_os-0.7.4}/uv.lock +1 -283
  11. markdown_os-0.7.3/.github/workflows/desktop-release.yml +0 -109
  12. markdown_os-0.7.3/markdown_os/desktop.py +0 -233
  13. markdown_os-0.7.3/markdown_os/static/welcome.html +0 -354
  14. markdown_os-0.7.3/markdown_os.spec +0 -149
  15. markdown_os-0.7.3/scripts/build_desktop.py +0 -52
  16. markdown_os-0.7.3/scripts/download_vendor.py +0 -165
  17. markdown_os-0.7.3/site/downloads.html +0 -913
  18. markdown_os-0.7.3/tests/test_desktop.py +0 -234
  19. {markdown_os-0.7.3 → markdown_os-0.7.4}/.github/workflows/publish.yml +0 -0
  20. {markdown_os-0.7.3 → markdown_os-0.7.4}/.gitignore +0 -0
  21. {markdown_os-0.7.3 → markdown_os-0.7.4}/.python-version +0 -0
  22. {markdown_os-0.7.3 → markdown_os-0.7.4}/AGENTS.md +0 -0
  23. {markdown_os-0.7.3 → markdown_os-0.7.4}/CLAUDE.md +0 -0
  24. {markdown_os-0.7.3 → markdown_os-0.7.4}/LICENSE +0 -0
  25. {markdown_os-0.7.3 → markdown_os-0.7.4}/README.md +0 -0
  26. {markdown_os-0.7.3 → markdown_os-0.7.4}/docs/plans/feature-001-pdf-export.md +0 -0
  27. {markdown_os-0.7.3 → markdown_os-0.7.4}/docs/plans/feature-002-file-operations.md +0 -0
  28. {markdown_os-0.7.3 → markdown_os-0.7.4}/docs/plans/feature-003-focus-mode.md +0 -0
  29. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/__init__.py +0 -0
  30. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/cli.py +0 -0
  31. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/directory_handler.py +0 -0
  32. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/file_handler.py +0 -0
  33. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/css/themes.css +0 -0
  34. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/favicon.svg +0 -0
  35. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/dialogs.js +0 -0
  36. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/file-tree.js +0 -0
  37. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/focus-mode.js +0 -0
  38. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/pdf-export.js +0 -0
  39. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/search.js +0 -0
  40. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/shared-utils.js +0 -0
  41. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/tabs.js +0 -0
  42. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/toc.js +0 -0
  43. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/websocket.js +0 -0
  44. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/wysiwyg-toolbar.js +0 -0
  45. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/static/js/wysiwyg.js +0 -0
  46. {markdown_os-0.7.3 → markdown_os-0.7.4}/markdown_os/templates/example_template.md +0 -0
  47. {markdown_os-0.7.3 → markdown_os-0.7.4}/site/demo-frame.html +0 -0
  48. {markdown_os-0.7.3 → markdown_os-0.7.4}/site/favicon.svg +0 -0
  49. {markdown_os-0.7.3 → markdown_os-0.7.4}/site/images/hero-screenshot.png +0 -0
  50. {markdown_os-0.7.3 → markdown_os-0.7.4}/site/themes.css +0 -0
  51. {markdown_os-0.7.3 → markdown_os-0.7.4}/tests/test_cli.py +0 -0
  52. {markdown_os-0.7.3 → markdown_os-0.7.4}/tests/test_directory_handler.py +0 -0
  53. {markdown_os-0.7.3 → markdown_os-0.7.4}/tests/test_file_handler.py +0 -0
  54. {markdown_os-0.7.3 → markdown_os-0.7.4}/tests/test_frontend_navigation_sync.py +0 -0
  55. {markdown_os-0.7.3 → markdown_os-0.7.4}/tests/test_server.py +0 -0
  56. {markdown_os-0.7.3 → markdown_os-0.7.4}/tests/test_version.py +0 -0
  57. {markdown_os-0.7.3 → markdown_os-0.7.4}/vercel.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: markdown-os
3
- Version: 0.7.3
3
+ Version: 0.7.4
4
4
  Summary: Developer-focused markdown editor served from a local CLI.
5
5
  Project-URL: Homepage, https://github.com/elena-cabrera/markdown-os
6
6
  Project-URL: Repository, https://github.com/elena-cabrera/markdown-os
@@ -30,11 +30,6 @@ Requires-Dist: typer>=0.23.1
30
30
  Requires-Dist: uvicorn[standard]>=0.40.0
31
31
  Requires-Dist: watchdog>=6.0.0
32
32
  Requires-Dist: websockets>=16.0
33
- Provides-Extra: desktop
34
- Requires-Dist: pyqt5>=5.15; (sys_platform == 'linux') and extra == 'desktop'
35
- Requires-Dist: pyqtwebengine>=5.15; (sys_platform == 'linux') and extra == 'desktop'
36
- Requires-Dist: pywebview>=5.0; extra == 'desktop'
37
- Requires-Dist: qtpy>=2.0; (sys_platform == 'linux') and extra == 'desktop'
38
33
  Description-Content-Type: text/markdown
39
34
 
40
35
  # Markdown-OS
@@ -249,18 +249,13 @@ class MarkdownPathEventHandler(FileSystemEventHandler):
249
249
  return event_path.suffix.lower() in {".md", ".markdown"}
250
250
 
251
251
 
252
- def create_app(
253
- handler: FileHandler | DirectoryHandler,
254
- mode: str = "file",
255
- desktop: bool = False,
256
- ) -> FastAPI:
252
+ def create_app(handler: FileHandler | DirectoryHandler, mode: str = "file") -> FastAPI:
257
253
  """
258
254
  Create the FastAPI application for the markdown editor.
259
255
 
260
256
  Args:
261
257
  - handler (FileHandler | DirectoryHandler): File or folder access service.
262
258
  - mode (str): Editor mode, either "file" or "folder".
263
- - desktop (bool): Whether the app is running in desktop (pywebview) mode.
264
259
 
265
260
  Returns:
266
261
  - FastAPI: Configured application with routes, static assets, and websocket support.
@@ -341,7 +336,6 @@ def create_app(
341
336
 
342
337
  app.state.handler = handler
343
338
  app.state.mode = mode
344
- app.state.desktop = desktop
345
339
  app.state.current_file = None
346
340
  app.state.websocket_hub = WebSocketHub()
347
341
  app.state.last_internal_write_at = 0.0
@@ -379,17 +373,6 @@ def create_app(
379
373
 
380
374
  return {"mode": app.state.mode}
381
375
 
382
- @app.get("/api/desktop")
383
- async def get_desktop_mode() -> dict[str, bool]:
384
- """
385
- Return whether the server is running in desktop (pywebview) mode.
386
-
387
- Returns:
388
- - dict[str, bool]: Desktop mode flag.
389
- """
390
-
391
- return {"desktop": app.state.desktop}
392
-
393
376
  @app.get("/api/file-tree")
394
377
  async def get_file_tree() -> dict[str, Any]:
395
378
  """
@@ -513,67 +513,6 @@ body {
513
513
  gap: 6px;
514
514
  }
515
515
 
516
- .desktop-open-group {
517
- position: relative;
518
- display: inline-flex;
519
- align-items: center;
520
- }
521
-
522
- .desktop-open-group.hidden {
523
- display: none;
524
- }
525
-
526
- .desktop-open-btn svg {
527
- width: 16px;
528
- height: 16px;
529
- }
530
-
531
- .desktop-open-menu {
532
- position: absolute;
533
- top: calc(100% + 4px);
534
- left: 0;
535
- z-index: 100;
536
- min-width: 180px;
537
- background: var(--panel-bg);
538
- border: 1px solid var(--border);
539
- border-radius: 8px;
540
- box-shadow: var(--shadow);
541
- padding: 4px;
542
- }
543
-
544
- .desktop-open-menu.hidden {
545
- display: none;
546
- }
547
-
548
- .desktop-open-menu-item {
549
- display: flex;
550
- align-items: center;
551
- gap: 8px;
552
- width: 100%;
553
- padding: 8px 12px;
554
- border: none;
555
- border-radius: 6px;
556
- background: none;
557
- color: var(--text);
558
- font-size: 13px;
559
- cursor: pointer;
560
- text-align: left;
561
- }
562
-
563
- .desktop-open-menu-item:hover {
564
- background: var(--accent-soft);
565
- color: var(--accent);
566
- }
567
-
568
- .desktop-open-menu-item svg {
569
- flex-shrink: 0;
570
- color: var(--text-muted);
571
- }
572
-
573
- .desktop-open-menu-item:hover svg {
574
- color: var(--accent);
575
- }
576
-
577
516
  .history-button {
578
517
  width: 32px;
579
518
  height: 32px;
@@ -218,36 +218,6 @@
218
218
  <main id="main-content">
219
219
  <div class="tab-nav">
220
220
  <div class="nav-left-group">
221
- <div id="desktop-open-group" class="desktop-open-group hidden" aria-label="Open file or folder">
222
- <button
223
- id="desktop-open-btn"
224
- class="history-button desktop-open-btn"
225
- type="button"
226
- title="Open file or folder"
227
- aria-label="Open file or folder"
228
- aria-haspopup="menu"
229
- aria-expanded="false"
230
- >
231
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
232
- <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
233
- </svg>
234
- </button>
235
- <div id="desktop-open-menu" class="desktop-open-menu hidden" role="menu">
236
- <button id="desktop-open-file" class="desktop-open-menu-item" type="button" role="menuitem">
237
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="16" height="16">
238
- <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
239
- <polyline points="14 2 14 8 20 8"/>
240
- </svg>
241
- <span>Open File...</span>
242
- </button>
243
- <button id="desktop-open-folder" class="desktop-open-menu-item" type="button" role="menuitem">
244
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="16" height="16">
245
- <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
246
- </svg>
247
- <span>Open Folder...</span>
248
- </button>
249
- </div>
250
- </div>
251
221
  <div class="undo-redo-group" aria-label="Edit history controls">
252
222
  <button
253
223
  id="undo-button"
@@ -619,76 +619,10 @@
619
619
  }
620
620
  });
621
621
 
622
- async function detectDesktopMode() {
623
- try {
624
- const response = await fetch("/api/desktop");
625
- if (!response.ok) return false;
626
- const payload = await response.json();
627
- return payload.desktop === true;
628
- } catch {
629
- return false;
630
- }
631
- }
632
-
633
- function initDesktopOpenButton() {
634
- const group = document.getElementById("desktop-open-group");
635
- const btn = document.getElementById("desktop-open-btn");
636
- const menu = document.getElementById("desktop-open-menu");
637
- const openFileBtn = document.getElementById("desktop-open-file");
638
- const openFolderBtn = document.getElementById("desktop-open-folder");
639
-
640
- if (!group || !btn || !menu) return;
641
- group.classList.remove("hidden");
642
-
643
- btn.addEventListener("click", () => {
644
- const isOpen = !menu.classList.contains("hidden");
645
- menu.classList.toggle("hidden", isOpen);
646
- btn.setAttribute("aria-expanded", String(!isOpen));
647
- });
648
-
649
- document.addEventListener("click", (e) => {
650
- if (!group.contains(e.target)) {
651
- menu.classList.add("hidden");
652
- btn.setAttribute("aria-expanded", "false");
653
- }
654
- });
655
-
656
- async function openViaDialog(dialogFn) {
657
- menu.classList.add("hidden");
658
- btn.setAttribute("aria-expanded", "false");
659
- if (!window.pywebview?.api?.[dialogFn]) return;
660
- try {
661
- const path = await window.pywebview.api[dialogFn]();
662
- if (!path) return;
663
- const result = await window.pywebview.api.open_path(path);
664
- if (result.error) {
665
- console.error("Desktop open error:", result.error);
666
- return;
667
- }
668
- if (result.url) window.location.href = result.url;
669
- } catch (err) {
670
- console.error("Desktop open failed:", err);
671
- }
672
- }
673
-
674
- if (openFileBtn) {
675
- openFileBtn.addEventListener("click", () => openViaDialog("open_file_dialog"));
676
- }
677
- if (openFolderBtn) {
678
- openFolderBtn.addEventListener("click", () => openViaDialog("open_folder_dialog"));
679
- }
680
- }
681
-
682
622
  document.addEventListener("DOMContentLoaded", async () => {
683
623
  window.wysiwyg?.init?.();
684
624
 
685
625
  editorState.mode = await detectMode();
686
-
687
- const isDesktop = await detectDesktopMode();
688
- if (isDesktop) {
689
- initDesktopOpenButton();
690
- }
691
-
692
626
  bindEvents();
693
627
 
694
628
  if (editorState.mode === "file") {
@@ -41,7 +41,7 @@
41
41
  name: "Nord Dark",
42
42
  type: "dark",
43
43
  dots: ["#2e3440", "#eceff4", "#88c0d0"],
44
- highlightTheme: "atom-one-dark",
44
+ highlightTheme: "nord",
45
45
  mermaidTheme: "dark",
46
46
  },
47
47
  {
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "markdown-os"
3
- version = "0.7.3"
3
+ version = "0.7.4"
4
4
  description = "Developer-focused markdown editor served from a local CLI."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -32,14 +32,6 @@ dependencies = [
32
32
  "websockets>=16.0",
33
33
  ]
34
34
 
35
- [project.optional-dependencies]
36
- desktop = [
37
- "pywebview>=5.0",
38
- "PyQtWebEngine>=5.15; sys_platform == 'linux'",
39
- "PyQt5>=5.15; sys_platform == 'linux'",
40
- "qtpy>=2.0; sys_platform == 'linux'",
41
- ]
42
-
43
35
  [dependency-groups]
44
36
  dev = [
45
37
  "httpx>=0.28.1",
@@ -49,7 +41,6 @@ dev = [
49
41
 
50
42
  [project.scripts]
51
43
  markdown-os = "markdown_os.cli:run"
52
- markdown-os-desktop = "markdown_os.desktop:main"
53
44
 
54
45
  [project.urls]
55
46
  Homepage = "https://github.com/elena-cabrera/markdown-os"
@@ -121,7 +121,7 @@
121
121
  padding: 16px 0;
122
122
  display: flex;
123
123
  align-items: center;
124
- justify-content: space-between;
124
+ justify-content: flex-start;
125
125
  }
126
126
 
127
127
  .logo {
@@ -255,37 +255,9 @@
255
255
  }
256
256
 
257
257
  .hero-cta {
258
- display: flex;
259
- align-items: center;
260
- gap: 12px;
261
- flex-wrap: wrap;
262
258
  margin-bottom: 16px;
263
259
  }
264
260
 
265
- .download-secondary {
266
- display: block;
267
- margin-top: 4px;
268
- font-size: 13px;
269
- color: var(--color-text-secondary);
270
- }
271
-
272
- .download-secondary a {
273
- text-decoration: underline;
274
- text-underline-offset: 2px;
275
- }
276
-
277
- .download-secondary a:hover {
278
- color: var(--color-text);
279
- }
280
-
281
- .cta-buttons {
282
- display: flex;
283
- align-items: center;
284
- gap: 12px;
285
- flex-wrap: wrap;
286
- justify-content: center;
287
- }
288
-
289
261
  /* Install widget — white box, gray border, less rounded */
290
262
  .install-widget {
291
263
  max-width: 380px;
@@ -1638,15 +1610,6 @@
1638
1610
  </svg>
1639
1611
  markdown-os
1640
1612
  </a>
1641
- <nav class="header-nav">
1642
- <a href="downloads">Downloads</a>
1643
- <a
1644
- href="https://github.com/elena-cabrera/markdown-os"
1645
- target="_blank"
1646
- rel="noopener"
1647
- >GitHub</a
1648
- >
1649
- </nav>
1650
1613
  </div>
1651
1614
  </header>
1652
1615
 
@@ -1662,24 +1625,14 @@
1662
1625
  </p>
1663
1626
 
1664
1627
  <div class="hero-cta">
1665
- <a
1666
- id="hero-download-btn"
1667
- href="downloads"
1668
- class="btn btn-primary"
1669
- style="display: none"
1670
- >Download Desktop App</a
1671
- >
1672
1628
  <a
1673
1629
  href="https://github.com/elena-cabrera/markdown-os"
1674
- class="btn btn-secondary"
1630
+ class="btn btn-primary"
1675
1631
  target="_blank"
1676
1632
  rel="noopener"
1677
1633
  >View on GitHub</a
1678
1634
  >
1679
1635
  </div>
1680
- <div class="download-secondary" id="hero-download-secondary" style="display: none">
1681
- <a href="downloads">All platforms &amp; versions</a>
1682
- </div>
1683
1636
 
1684
1637
  <div class="install-widget">
1685
1638
  <div class="install-tabs">
@@ -2314,21 +2267,13 @@
2314
2267
  <div class="reveal">
2315
2268
  <h2>Start using markdown-os</h2>
2316
2269
  <p>The new way to work with markdown files</p>
2317
- <div class="cta-buttons">
2318
- <a
2319
- href="downloads"
2320
- class="btn btn-white"
2321
- >Download Desktop App</a
2322
- >
2323
- <a
2324
- href="https://github.com/elena-cabrera/markdown-os"
2325
- class="btn btn-white"
2326
- target="_blank"
2327
- rel="noopener"
2328
- style="background: transparent; color: white; border-color: rgba(255,255,255,0.3)"
2329
- >View on GitHub</a
2330
- >
2331
- </div>
2270
+ <a
2271
+ href="https://github.com/elena-cabrera/markdown-os"
2272
+ class="btn btn-white"
2273
+ target="_blank"
2274
+ rel="noopener"
2275
+ >View on GitHub</a
2276
+ >
2332
2277
  </div>
2333
2278
  </div>
2334
2279
  </section>
@@ -2341,7 +2286,6 @@
2341
2286
  &middot; <span id="footer-version">v—</span>
2342
2287
  </div>
2343
2288
  <nav class="footer-links">
2344
- <a href="downloads">Downloads</a>
2345
2289
  <a
2346
2290
  href="https://github.com/elena-cabrera/markdown-os"
2347
2291
  target="_blank"
@@ -2544,33 +2488,6 @@
2544
2488
  window.addEventListener("resize", updateScale);
2545
2489
  })();
2546
2490
 
2547
- // ---- OS-detecting download button ----
2548
- (() => {
2549
- const btn = document.getElementById("hero-download-btn");
2550
- const secondary = document.getElementById("hero-download-secondary");
2551
- if (!btn) return;
2552
-
2553
- const ua = navigator.userAgent || "";
2554
- const platform = navigator.platform || "";
2555
- const baseUrl = "https://github.com/elena-cabrera/markdown-os/releases/latest/download/";
2556
- let os = null;
2557
-
2558
- if (/Mac|iPhone|iPad|iPod/.test(platform) || /Macintosh/.test(ua)) {
2559
- os = "macOS";
2560
- btn.href = baseUrl + "Markdown-OS-macos.dmg";
2561
- btn.textContent = "Download for macOS";
2562
- } else if (/Win/.test(platform)) {
2563
- os = "Windows";
2564
- btn.href = baseUrl + "Markdown-OS-windows.zip";
2565
- btn.textContent = "Download for Windows";
2566
- }
2567
-
2568
- if (os) {
2569
- btn.style.display = "";
2570
- if (secondary) secondary.style.display = "";
2571
- }
2572
- })();
2573
-
2574
2491
  // ---- Scroll reveal animations ----
2575
2492
  (() => {
2576
2493
  const observer = new IntersectionObserver(
@@ -513,67 +513,6 @@ body {
513
513
  gap: 6px;
514
514
  }
515
515
 
516
- .desktop-open-group {
517
- position: relative;
518
- display: inline-flex;
519
- align-items: center;
520
- }
521
-
522
- .desktop-open-group.hidden {
523
- display: none;
524
- }
525
-
526
- .desktop-open-btn svg {
527
- width: 16px;
528
- height: 16px;
529
- }
530
-
531
- .desktop-open-menu {
532
- position: absolute;
533
- top: calc(100% + 4px);
534
- left: 0;
535
- z-index: 100;
536
- min-width: 180px;
537
- background: var(--panel-bg);
538
- border: 1px solid var(--border);
539
- border-radius: 8px;
540
- box-shadow: var(--shadow);
541
- padding: 4px;
542
- }
543
-
544
- .desktop-open-menu.hidden {
545
- display: none;
546
- }
547
-
548
- .desktop-open-menu-item {
549
- display: flex;
550
- align-items: center;
551
- gap: 8px;
552
- width: 100%;
553
- padding: 8px 12px;
554
- border: none;
555
- border-radius: 6px;
556
- background: none;
557
- color: var(--text);
558
- font-size: 13px;
559
- cursor: pointer;
560
- text-align: left;
561
- }
562
-
563
- .desktop-open-menu-item:hover {
564
- background: var(--accent-soft);
565
- color: var(--accent);
566
- }
567
-
568
- .desktop-open-menu-item svg {
569
- flex-shrink: 0;
570
- color: var(--text-muted);
571
- }
572
-
573
- .desktop-open-menu-item:hover svg {
574
- color: var(--accent);
575
- }
576
-
577
516
  .history-button {
578
517
  width: 32px;
579
518
  height: 32px;