Developer-Dashboard
view release on metacpan or search on metacpan
lib/Developer/Dashboard.pm view on Meta::CPAN
=item *
C<dashboard serve> starts the configured collector loops alongside the web
service, so a plain serve keeps collectors and the web runtime under the same
lifecycle action
=item *
C<dashboard serve --foreground> keeps the web service attached to the terminal
=item *
C<dashboard serve --ssl> enables HTTPS in Starman with the generated local
certificate and key, keeps that certificate on a browser-correct SAN profile
covering localhost, loopback IPs, the concrete non-wildcard bind host, and any
configured C<web.ssl_subject_alt_names>, regenerates older dashboard certs when
they are stale, redirects non-HTTPS requests to the matching C<https://...>
URL, and reuses the saved SSL setting on later C<dashboard restart> runs unless
you override it
=item *
C<dashboard serve --no-editor> and C<dashboard serve --no-endit> keep the
browser in read-only mode by hiding Share, Play, and View Source chrome,
denying C</app/E<lt>idE<gt>/edit>, C</app/E<lt>idE<gt>/source>, and
bookmark-save POST routes with C<403>, and persisting that read-only flag for
later C<dashboard restart> runs until C<dashboard serve --editor> turns it back
off
=item *
C<dashboard serve --no-indicators> and C<dashboard serve --no-indicator> keep
normal page rendering and left-side page chrome intact while clearing the
whole top-right browser-only chrome area, including the status strip,
username, host or IP link, and live date-time line, and persisting that flag
for later C<dashboard restart> runs until C<dashboard serve --indicators>
turns it back off
=item *
C<dashboard serve logs> prints the combined Dancer2 and Starman runtime log
captured in the dashboard log file, C<dashboard serve logs -n 100> starts from
the last 100 lines, and C<dashboard serve logs -f> follows appended output live
=item *
C<dashboard serve workers N> saves the default Starman worker count and starts
the web service immediately when it is currently stopped; C<--host HOST> and
C<--port PORT> can steer that auto-start path, and both
C<dashboard serve --workers N> and C<dashboard restart --workers N> can still
override the worker count for one run
=item *
C<dashboard stop> stops both the web service and managed collector loops and,
prints the final lifecycle summary as a terminal table by default or JSON with
C<-o json>; on an interactive terminal it also prints the full stop task board
on C<stderr> before work starts so each shutdown step becomes visible instead
of silent waiting. The shutdown path now also follows the saved managed
listener port back to the real listener pid when the live web process has
renamed itself into a C<starman master> shape, so minimal Docker runs still
stop the actual serving process instead of leaving the listener behind.
Managed collector stop and restart flows also wait for the previous loop to
really die before accepting a replacement, so a slow shutdown does not leave a
stale collector process rewriting loop state while the next restart is proving
the new pid.
=item *
C<dashboard stop web> only stops the managed web service
=item *
C<dashboard stop collector> only stops managed collector loops
=item *
C<dashboard stop collector E<lt>nameE<gt>> only stops the requested managed
collector loop, and collector-name shell completion suggests registered
collector names
=item *
C<dashboard restart> stops both, starts configured collector loops again, then
starts the web service, prints the final lifecycle summary as a terminal table
by default or JSON with C<-o json>, and only reports success after the
replacement collector loops and web runtime become visible and survive a short
post-ready confirmation window, with the web side still holding a live managed
pid and an accepting listener on the requested port. Restart now also reuses
the saved listener port to recover the real serving pid when the web process
has renamed itself into the underlying C<starman master> form, so container
restarts still own and replace the active listener instead of losing control
after startup. On Linux hosts that are also running Developer Dashboard inside
Docker containers, managed stop and restart paths now reject sibling runtime
pids that live in a different Linux pid namespace, so a host-side restart does
not accidentally kill or adopt a container-owned web listener or collector
loop
=item *
C<dashboard restart web> only restarts the managed web service
=item *
C<dashboard restart collector> only restarts managed collector loops
=item *
C<dashboard restart collector E<lt>nameE<gt>> only restarts the requested
collector loop, including an on-demand manual collector by converting it into
a managed interval loop, and collector-name shell completion suggests
registered collector names
=item *
managed collector loops also run under a watchdog supervisor; if a loop dies
unexpectedly after startup, the watchdog restarts it automatically, records
the restart attempt in collector status/logs, and after too many crashes
inside the watchdog window marks the collector C<attention_required> so the
operator sees an explicit problem instead of infinite silent restart churn
=item *
C<dashboard log> and C<dashboard logs> print the combined dashboard web log
plus collector logs
=item *
C<dashboard log web> prints only the dashboard web log and still supports
C<-n> and C<-f>
=item *
C<dashboard log collector> prints only collector logs
=item *
C<dashboard log collector E<lt>nameE<gt>> prints only the requested collector
log, and collector-name shell completion suggests registered collector names
=item *
interactive restart and stop task boards mark the active step with a blue
C<->, stream active detail lines in blue, mark completed steps with a green
C<[OK]>, mark failed steps with a red C<[X]> plus red failure detail lines,
keep the final table or JSON summary on C<stdout>, and use numeric POSIX
shutdown signals so minimal Alpine/iSH Perl builds that reject C<TERM> by
name still terminate managed web and collector processes correctly
=item *
( run in 1.866 second using v1.01-cache-2.11-cpan-e93a5daba3e )