flutter-dev 0.1.7__tar.gz → 0.1.8__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 (42) hide show
  1. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/CHANGELOG.md +6 -0
  2. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/PKG-INFO +5 -3
  3. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/README.md +4 -2
  4. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/gui.py +36 -10
  5. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/pyproject.toml +1 -1
  6. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/tests/test_gui.py +22 -1
  7. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/.env.example +0 -0
  8. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/LICENSE +0 -0
  9. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/MANIFEST.in +0 -0
  10. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/common_utils.py +0 -0
  11. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/core/__init__.py +0 -0
  12. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/core/constants.py +0 -0
  13. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/core/state.py +0 -0
  14. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/create_page.py +0 -0
  15. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/fdev.py +0 -0
  16. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/flutter_dev.egg-info/SOURCES.txt +0 -0
  17. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/gemini_api.py +0 -0
  18. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/git_diff_output_editor.py +0 -0
  19. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/install_legacy.py +0 -0
  20. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/__init__.py +0 -0
  21. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/ai.py +0 -0
  22. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/app.py +0 -0
  23. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/brew.py +0 -0
  24. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/build.py +0 -0
  25. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/datetime.py +0 -0
  26. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/device.py +0 -0
  27. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/doctor.py +0 -0
  28. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/git.py +0 -0
  29. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/git_account.py +0 -0
  30. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/localization.py +0 -0
  31. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/merge.py +0 -0
  32. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/mirror.py +0 -0
  33. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/package.py +0 -0
  34. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/project.py +0 -0
  35. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/managers/web_deploy.py +0 -0
  36. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/requirements.txt +0 -0
  37. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/setup.cfg +0 -0
  38. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/setup.py +0 -0
  39. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/switch_ai.py +0 -0
  40. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/tests/test_fdev_cli.py +0 -0
  41. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/tests/test_localization.py +0 -0
  42. {flutter_dev-0.1.7 → flutter_dev-0.1.8}/tests/test_package_commands.py +0 -0
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to this project are documented in this file.
4
4
 
5
+ ## 0.1.8 - 2026-06-25
6
+
7
+ ### Fixed
8
+
9
+ - Made the dashboard command output panel visibly framed with a ready message so the terminal/log area does not appear missing before commands produce output.
10
+
5
11
  ## 0.1.7 - 2026-06-25
6
12
 
7
13
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flutter-dev
3
- Version: 0.1.7
3
+ Version: 0.1.8
4
4
  Summary: A cross-platform CLI toolkit for Flutter development workflows.
5
5
  Author: Royal Court BD
6
6
  License-Expression: MIT
@@ -42,7 +42,7 @@ The package is published on PyPI as `flutter-dev` and installs console commands
42
42
  python -m pip install flutter-dev
43
43
  ```
44
44
 
45
- Current package metadata declares version `0.1.7`, Python `>=3.8`, MIT license, and support for macOS, Linux, and Windows.
45
+ Current package metadata declares version `0.1.8`, Python `>=3.8`, MIT license, and support for macOS, Linux, and Windows.
46
46
 
47
47
  ## Key Features
48
48
 
@@ -53,7 +53,7 @@ Current package metadata declares version `0.1.7`, Python `>=3.8`, MIT license,
53
53
  - AI-assisted Git commits using Groq, Mistral, SambaNova, or OpenRouter-compatible chat completion APIs.
54
54
  - Git workflow helpers for version tags, branch sync, deployment branch merge, discard, and GitHub account management through `gh`.
55
55
  - Feature/page generator that creates a `lib/features/<name>` structure using the project's presenter/base-state pattern.
56
- - Small Tkinter desktop dashboard opened by running `fdev` with no command, with live colored command logs.
56
+ - Small Tkinter desktop dashboard opened by running `fdev` with no command, with a framed live command output panel.
57
57
  - Environment diagnostics through `fdev doctor`.
58
58
  - Small utilities for Homebrew cleanup, file merging from `paths.txt`, AI provider switching, PyPI self-upgrade/delete, and git diff prompt export.
59
59
 
@@ -443,6 +443,8 @@ fdev upgrade
443
443
 
444
444
  `fdev` prints the Python executable it is using. If that path is `/Applications/Xcode.app/Contents/Developer/usr/bin/python3`, the CLI is running on Xcode's bundled Python and system Tk; 0.1.7 uses a more conservative Tk UI path for that runtime.
445
445
 
446
+ If the dashboard opens but the command output area looks missing or empty, upgrade to `flutter-dev` 0.1.8 or newer.
447
+
446
448
  ### Flutter Project Not Detected
447
449
 
448
450
  Run project-specific commands from the directory that contains `pubspec.yaml`.
@@ -8,7 +8,7 @@ The package is published on PyPI as `flutter-dev` and installs console commands
8
8
  python -m pip install flutter-dev
9
9
  ```
10
10
 
11
- Current package metadata declares version `0.1.7`, Python `>=3.8`, MIT license, and support for macOS, Linux, and Windows.
11
+ Current package metadata declares version `0.1.8`, Python `>=3.8`, MIT license, and support for macOS, Linux, and Windows.
12
12
 
13
13
  ## Key Features
14
14
 
@@ -19,7 +19,7 @@ Current package metadata declares version `0.1.7`, Python `>=3.8`, MIT license,
19
19
  - AI-assisted Git commits using Groq, Mistral, SambaNova, or OpenRouter-compatible chat completion APIs.
20
20
  - Git workflow helpers for version tags, branch sync, deployment branch merge, discard, and GitHub account management through `gh`.
21
21
  - Feature/page generator that creates a `lib/features/<name>` structure using the project's presenter/base-state pattern.
22
- - Small Tkinter desktop dashboard opened by running `fdev` with no command, with live colored command logs.
22
+ - Small Tkinter desktop dashboard opened by running `fdev` with no command, with a framed live command output panel.
23
23
  - Environment diagnostics through `fdev doctor`.
24
24
  - Small utilities for Homebrew cleanup, file merging from `paths.txt`, AI provider switching, PyPI self-upgrade/delete, and git diff prompt export.
25
25
 
@@ -409,6 +409,8 @@ fdev upgrade
409
409
 
410
410
  `fdev` prints the Python executable it is using. If that path is `/Applications/Xcode.app/Contents/Developer/usr/bin/python3`, the CLI is running on Xcode's bundled Python and system Tk; 0.1.7 uses a more conservative Tk UI path for that runtime.
411
411
 
412
+ If the dashboard opens but the command output area looks missing or empty, upgrade to `flutter-dev` 0.1.8 or newer.
413
+
412
414
  ### Flutter Project Not Detected
413
415
 
414
416
  Run project-specific commands from the directory that contains `pubspec.yaml`.
@@ -47,6 +47,8 @@ BUTTON_BG = "#e2e8f0"
47
47
  BUTTON_ACTIVE_BG = "#cbd5e1"
48
48
  LOG_BG = "#111827"
49
49
  LOG_FG = "#e5e7eb"
50
+ LOG_BORDER = "#475569"
51
+ LOG_READY_MESSAGE = "[fdev] Ready. Command output will appear here.\n"
50
52
 
51
53
 
52
54
  def prepare_tk_environment():
@@ -385,28 +387,51 @@ class FdevGui:
385
387
  self.command_frame.columnconfigure(0, weight=1)
386
388
  self.command_frame.columnconfigure(1, weight=1)
387
389
 
388
- log_frame = tk.Frame(body, bg=UI_BG)
389
- log_frame.grid(row=1, column=0, sticky="nsew", pady=(6, 0))
390
- log_frame.columnconfigure(0, weight=1)
391
- log_frame.rowconfigure(0, weight=1)
390
+ self.log_frame = tk.Frame(
391
+ body,
392
+ bg=LOG_BG,
393
+ bd=1,
394
+ relief="solid",
395
+ highlightbackground=LOG_BORDER,
396
+ highlightcolor=LOG_BORDER,
397
+ highlightthickness=1,
398
+ )
399
+ self.log_frame.grid(row=1, column=0, sticky="nsew", pady=(6, 0))
400
+ self.log_frame.columnconfigure(0, weight=1)
401
+ self.log_frame.rowconfigure(1, weight=1)
402
+
403
+ self.log_header = tk.Label(
404
+ self.log_frame,
405
+ text="Command Output",
406
+ bg=LOG_BG,
407
+ fg=LOG_FG,
408
+ anchor="w",
409
+ padx=8,
410
+ pady=4,
411
+ )
412
+ self.log_header.grid(row=0, column=0, columnspan=2, sticky="ew")
392
413
 
393
414
  self.log_text = tk.Text(
394
- log_frame,
415
+ self.log_frame,
395
416
  height=12,
396
417
  wrap="word",
397
418
  state="disabled",
398
419
  bg=LOG_BG,
399
420
  fg=LOG_FG,
400
421
  insertbackground=LOG_FG,
401
- relief="sunken",
402
- bd=1,
422
+ relief="flat",
423
+ bd=0,
424
+ padx=8,
425
+ pady=6,
426
+ highlightthickness=0,
403
427
  )
404
- self.log_text.grid(row=0, column=0, sticky="nsew")
428
+ self.log_text.grid(row=1, column=0, sticky="nsew")
405
429
 
406
- scrollbar = tk.Scrollbar(log_frame, orient="vertical", command=self.log_text.yview)
407
- scrollbar.grid(row=0, column=1, sticky="ns")
430
+ scrollbar = tk.Scrollbar(self.log_frame, orient="vertical", command=self.log_text.yview)
431
+ scrollbar.grid(row=1, column=1, sticky="ns")
408
432
  self.log_text.configure(yscrollcommand=scrollbar.set)
409
433
  self._configure_log_tags()
434
+ self._append_log(LOG_READY_MESSAGE)
410
435
 
411
436
  input_bar = tk.Frame(content, bg=UI_BG)
412
437
  input_bar.grid(row=2, column=0, sticky="ew", pady=(8, 0))
@@ -569,6 +594,7 @@ class FdevGui:
569
594
  self.log_text.configure(state="normal")
570
595
  self.log_text.delete("1.0", "end")
571
596
  self.log_text.configure(state="disabled")
597
+ self._append_log(LOG_READY_MESSAGE)
572
598
 
573
599
  def _send_input(self):
574
600
  text = self.input_entry.get()
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "flutter-dev"
7
- version = "0.1.7"
7
+ version = "0.1.8"
8
8
  description = "A cross-platform CLI toolkit for Flutter development workflows."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -195,7 +195,7 @@ class GuiCatalogTests(unittest.TestCase):
195
195
 
196
196
  try:
197
197
  app = FdevGui(root)
198
- root.after(10, root.quit)
198
+ root.after(100, root.quit)
199
199
  app.run()
200
200
 
201
201
  self.assertTrue(app.command_frame.winfo_ismapped())
@@ -205,6 +205,27 @@ class GuiCatalogTests(unittest.TestCase):
205
205
  finally:
206
206
  root.destroy()
207
207
 
208
+ def test_dashboard_keeps_terminal_panel_visible_on_launch(self):
209
+ try:
210
+ import tkinter as tk
211
+ except ImportError:
212
+ self.skipTest("Tkinter is not available")
213
+
214
+ try:
215
+ root = tk.Tk()
216
+ except TclError as error:
217
+ self.skipTest(f"Tk display is not available: {error}")
218
+
219
+ try:
220
+ app = FdevGui(root)
221
+ root.update()
222
+
223
+ self.assertTrue(app.log_frame.winfo_ismapped())
224
+ self.assertEqual(app.log_frame.cget("relief"), "solid")
225
+ self.assertIn("[fdev] Ready", app.log_text.get("1.0", "end"))
226
+ finally:
227
+ root.destroy()
228
+
208
229
  def test_dashboard_uses_classic_tk_widgets_for_system_tk_compatibility(self):
209
230
  try:
210
231
  import tkinter as tk
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes