What did you expect to happen?
For terminal emacsclient to close normally when typing :q. Then running it again will look normal and won't fill up the Echo Area.
What actually happened?
After closing and running terminal emacsclient again, the previous instance(s) accumulates and are listed at the bottom in the Echo Area:

I'm new to emacs so I'm not exactly sure what these instances represent, but they don't seem to be buffers, windows, nor frames.
Additional details:
C-x c-c or SPC q q (i.e. they don't accumulate instances at the bottom).Steps to reproduce:
emacs --daemonemacsclient -t:qemacsclient -t againSystem information:
((emacs
(version . "27.0.50")
(features . "XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GLIB NOTIFY INOTIFY ACL GNUTLS LIBXML2 FREETYPE HARFBUZZ LIBOTF ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON PDUMPER LCMS2 GMP")
(build . "Dec 16, 2019")
(buildopts "--prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games --with-sound=alsa --with-modules --without-gconf --without-gsettings --enable-link-time-optimization --with-x-toolkit=gtk3 --without-xaw3d --without-m17n-flt --with-cairo --without-compress-install 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -flto -fuse-linker-plugin -fuse-ld=gold' CPPFLAGS=-D_FORTIFY_SOURCE=2 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now")
(windowsys . batch)
(daemonp . server-running))
(doom
(version . "2.0.9")
(build . "HEAD -> develop, origin/develop, origin/HEAD e782ef1d9 2019-12-16 19:25:50 -0500"))
(system
(type . gnu/linux)
(config . "x86_64-pc-linux-gnu")
(shell . "/bin/bash")
(uname . "Linux 4.14.158-1-MANJARO #1 SMP PREEMPT Fri Dec 6 07:01:33 UTC 2019 x86_64")
(path "~/.emacs.d/bin" "~/.cargo/bin" "~/bin" "~/.local/bin" "/usr/local/bin" "/usr/bin" "/bin" "/usr/local/sbin" "/usr/lib/jvm/default/bin" "/usr/bin/site_perl" "/usr/bin/vendor_perl" "/usr/bin/core_perl" "~/.gem/ruby/2.6.0/bin" "/usr/lib/emacs/27.0.50/x86_64-pc-linux-gnu"))
(config
(envfile . envvar-file)
(elc-files . 0)
(modules :completion company ivy :ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (popup +all +defaults) vc-gutter vi-tilde-fringe window-select workspaces :editor (evil +everywhere) file-templates fold multiple-cursors rotate-text snippets :emacs dired electric ibuffer vc :tools (eval +overlay) flycheck (lookup +docsets) magit :lang data emacs-lisp markdown (org +dragndrop +present) sh :config (default +bindings +smartparens))
(packages "n/a")
(elpa "n/a")))
Ah, it appears that quitting via :q in terminal frames doesn't invoke delete-frame-functions, which is where the cleanup happens. save-buffers-kill-terminal does (on C-x C-c) though. Hmm, I'll look into this.
@hlissner I see. In the meantime, How would I clean it all up manually?
Edit: Figured it out. M-x +workspaces/delete for each one, or M-x +workspaces/kill-session for all.
I had the same problem before because a new workspace is created for each incoming connection.
@hlissner had a solution for this one. Basically, the system will re-use 'main'. New workspace can be only created by user manually.
;; workspace configuration
;; - do not create new workspace for each session
(after! persp-mode
(setq persp-emacsclient-init-frame-behaviour-override "main"))
@oblitzitate quit your emacsclient frames with C-x C-c instead.
Most helpful comment
I had the same problem before because a new workspace is created for each incoming connection.
@hlissner had a solution for this one. Basically, the system will re-use 'main'. New workspace can be only created by user manually.