vercel / hyper

A terminal built on web technologies
https://hyper.is
MIT License
43.35k stars 3.52k forks source link

Every command triggering configuration reload. #4318

Closed joe-scotto closed 4 years ago

joe-scotto commented 4 years ago

Issue

Any command I type, Hyper reloads the configuration. I had to recently reinstall xcode-tools and have found that any command I run triggers this reload. It happens if I run it from hyper or terminal.

brodycj commented 4 years ago

Fix the title, please

joe-scotto commented 4 years ago

@brodybits Fixed.

Jonic commented 4 years ago

I have the same issue - Hyper triggers a notification and a sound every single time I run a command, and it's gotten really annoying!

the-ult commented 4 years ago

I disabled/removed hypercwd this seems to fix the issue.

there was an error/warning that the hyper config was missing configuration settings for hypercwd. (adding the proper settings might help as well)

[edit]

LabhanshAgrawal commented 4 years ago

Can you all try the latest ci build once and see if it works.

the-ult commented 4 years ago

Same issue is occuring. The latest does not seem to fix the problem. (screenshot has 3.0.2 again.. removed the. canary build since it had issues with the font as well.)

Screenshot 2020-06-27 at 12 58 33

Current config:

// Future versions of Hyper may add additional config options,
// which will not automatically be merged into this file.
// See https://hyper.is#cfg for all currently supported options.

module.exports = {
  config: {
    // Choose either "stable" for receiving highly polished,
    // or "canary" for less polished but more frequent updates
    updateChannel: "stable",

    // default font size in pixels for all tabs
    fontSize: 14,
    // font family with optional fallbacks
    fontFamily: '"MesloLGMDZ Nerd Font", monospace',

    // text color
    foregroundColor: "#fff", // currently overwritten by plugin
    backgroundColor: "#000", // currently overwritten by plugin
    borderColor: "#333", // currently overwritten by plugin

    // cursor background color and opacity (hex, rgb, hsl, hsv, hwb or cmyk)
    // cursorColor: 'rgba(248,28,229,0.8)',
    // `BEAM` for |, `UNDERLINE` for _, `BLOCK` for █
    cursorShape: "BEAM",
    cursorBlink: true,

    // custom css to embed in the main window
    css: "",
    // custom css to embed in the terminal window
    termCSS: "",

    // custom padding (css format, i.e.: `top right bottom left`)
    padding: "12px 14px",

    // the full list. if you're going to provide the full color palette,
    // including the 6 x 6 color cubes and the grayscale map, just provide
    // an array here instead of a color map object
    // Note: all these colors are currently overwritten by a theme plugin
    colors: {
      black: "#000000",
      red: "#ff0000",
      green: "#33ff00",
      yellow: "#FED766",
      blue: "#0066ff",
      magenta: "#cc00ff",
      cyan: "#00C7FF",
      white: "#d0d0d0",
      lightBlack: "#808080",
      lightRed: "#ff0000",
      lightGreen: "#33ff00",
      lightYellow: "#FED766",
      lightBlue: "#0066ff",
      lightMagenta: "#cc00ff",
      lightCyan: "#00C7FF",
      lightWhite: "#ffffff",
    },

    // the shell to run when spawning a new session (i.e. /usr/local/bin/fish)
    // if left empty, your system's login shell will be used by default
    shell: "/bin/zsh",

    // for setting shell arguments (i.e. for using interactive shellArgs: ['-i'])
    // by default ['--login'] will be used
    shellArgs: ["--login"],

    // An object of environment variables to set before launching shell
    env: {},

    // if true, selected text will automatically be copied to the clipboard
    copyOnSelect: false,

    // if true, on right click selected text will be copied or pasted if no
    // selection is present (true by default on Windows)
    quickEdit: false,

    // The number of rows to be persisted in terminal buffer for scrolling
    scrollback: 10000,

    // hyperborder config
    hyperBorder: {
      borderColors: ["#1D976C", "#93F9B9"],
      blurredColors: ["#177C59", "#84E0A6"],
    },

    // hyper-pane config
    paneNavigation: {
      debug: false,
      hotkeys: {
        navigation: {
          up: "ctrl+alt+up",
          down: "ctrl+alt+down",
          left: "ctrl+alt+left",
          right: "ctrl+alt+right",
        },
        jump_prefix: "ctrl+alt", // completed with 1-9 digits
        permutation_modifier: "shift", // Added to jump and navigation hotkeys for pane permutation
        maximize: "meta+enter",
      },
      showIndicators: false, // Show pane number
      indicatorPrefix: "^⌥", // Will be completed with pane number
      indicatorStyle: {
        // Added to indicator <div>
        position: "absolute",
        top: 0,
        left: 0,
        fontSize: "10px",
      },
      focusOnMouseHover: false,
      inactivePaneOpacity: 0.6, // Set to 1 to disable inactive panes dimming
    },

    // set to `true` (without backticks) if you're using a Linux setup that doesn't show native menus
    // default: `false` on Linux, `true` on Windows (ignored on macOS)
    showHamburgerMenu: "",

    // set to `false` if you want to hide the minimize, maximize and close buttons
    // additionally, set to `'left'` if you want them on the left, like in Ubuntu
    // default: `true` on windows and Linux (ignored on macOS)
    showWindowControls: "",
  },

  // a list of plugins to fetch and install from npm
  // format: [@org/]project[#version]
  // examples:
  //   `hyperpower`
  //   `@company/project`
  //   `project#1.0.1`
  plugins: [
    "hyper-one-dark",
    "hyper-font-ligatures",
    "hyperminimal",
    "hyperborder",
    "hyper-pane",
    "hyper-tab-icons",
    "hyper-quit",
  ],
  // "hyper-night-owl",

  // in development, you can create a directory under
  // `~/.hyper_plugins/local/` and include it here
  // to load it and avoid it being `npm install`ed
  localPlugins: [],

  keymaps: {
    // Example
    // 'window:devtools': 'cmd+alt+o'
  },
};
LabhanshAgrawal commented 4 years ago

can you try these steps once - close hyper backup the config somewhere else delete the config file open latest hyper - config will be recreated (if you have problems with fonts, set disableLigatures: true in the newly generated config)

Also a question, config gets reloaded when it's accessed or modified, via the node fs.watchFile. Is there any process which might be accessing it like indexer or something. Also is it maybe a symlink currently>

the-ult commented 4 years ago

Hey @LabhanshAgrawal ,

Just completely removed Hyper (both stable and canary.) Clean config.

It is still happening. On every command (ll, ls, npm outdated etc)


Had the config opened in VS Code.. but closed it... (both the file and VS Code). And it is still happening. It is happening on Mac when you switch desktops as well. But only sometimes


Opened XCode, so it would install all extra dependencies etc.


The Dev console does not show any errors.

Screenshot 2020-06-27 at 15 36 31
LabhanshAgrawal commented 4 years ago

@the-ult Can you try the build from https://github.com/LabhanshAgrawal/hyper/actions/runs/151171792 I've changed the code to watch the config file to use chokidar instead of fs.watch directly. Do try it out for a while to make sure there are no other issues or crashes we'd moved from chokidar to fs.watch earlier due to crash reports, but that was almost 2 years ago, so chokidar should've improved in the meantime.

the-ult commented 4 years ago
❯ hyper version
3.1.0-canary.4

❯ hyper ls
hyper-one-dark
hyper-font-ligatures
hyperminimal
hyperborder
hyper-pane
hyper-tab-icons
hyper-quit

So far it seems to work. 👍

LabhanshAgrawal commented 4 years ago

Good to hear that, Do reply if you face any issue. If it goes well, I'll add a pr to use chokidar in a few days.

LabhanshAgrawal commented 4 years ago

@the-ult Can you try the build from LabhanshAgrawal/hyper/actions/runs/151171792 I've changed the code to watch the config file to use chokidar instead of fs.watch directly. Do try it out for a while to make sure there are no other issues or crashes we'd moved from chokidar to fs.watch earlier due to crash reports, but that was almost 2 years ago, so chokidar should've improved in the meantime.

@joe-scotto @Jonic can you also try this build please? It will help us to confirm that this works and then can be merged.

Jonic commented 4 years ago

@LabhanshAgrawal I got a new Mac recently, and I haven’t seen the issue since, so I don’t think I’ll be much help testing the build!

I can install it anyway if you think that will actually be helpful, but I won’t be able to confirm whether or not this exact issue has been addressed!

LabhanshAgrawal commented 4 years ago

@Jonic it will certainly help if you can try this build. As I've mentioned, last time we were using chokidar it caused crashes, so we moved to fs.watch #2217 Though that was almost 3 years (mistakenly wrote 2 earlier) ago. I want to confirm that it's not an issue now.

LabhanshAgrawal commented 4 years ago

@the-ult @Jonic Did you face any issues with the build? If it worked well I'll open a pr for it.

the-ult commented 4 years ago

Did not face any issues 👍

the-ult commented 4 years ago

@LabhanshAgrawal Any change on a new release of hyper.js with this fix?

Jonic commented 3 years ago

@LabhanshAgrawal I know this has been closed, and the PR merged etc, and other issues about the same thing have opened and closed, but I'm still getting this issue. I'm running 3.1.0-canary.4, and it's actually worse now than it ever has been!

I can see that the repo is still being updated, but there hasn't been an update since May 2019, so I'm just wondering if Hyper actually has a long-term future? I appreciate that it's a lot of work maintaining something like Hyper, but the config reloaded notification is making it an annoying experience, so hopefully we'll see 3.1 soon and this bug will be squashed once and for all!

Let me know if it would be useful to see my config, or if you'd like to hop on a screenshare some time to see the issue in action :)

LabhanshAgrawal commented 3 years ago

@Jonic well that release was before the fix for this got merged. We couldn't really do any releases since then as the code signing cert had expired and we're just trying to get vercel to update it. I do hope we can start releasing soon.

Is there anything 'different' about your config? like maybe it's a symlink or something? I don't really know if the contents of the config can cause something like this. We mainly moved to chokidar as it's better than rolling our own hacky solution. And that somehow solved it.