Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package doggo for openSUSE:Factory checked 
in at 2025-12-22 22:49:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/doggo (Old)
 and      /work/SRC/openSUSE:Factory/.doggo.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "doggo"

Mon Dec 22 22:49:31 2025 rev:6 rq:1323958 version:1.1.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/doggo/doggo.changes      2025-11-02 
22:35:09.441172877 +0100
+++ /work/SRC/openSUSE:Factory/.doggo.new.1928/doggo.changes    2025-12-22 
22:51:53.871594675 +0100
@@ -1,0 +2,19 @@
+Sun Dec 21 06:28:58 UTC 2025 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.1.3:
+  * New Features
+    - 23fdfe1: feat(web): add SEO meta tags and FAQ page
+      (@mr-karan)
+    - 39bae49: feat: add macOS SystemConfiguration DNS support and
+      internal strategy (#193) (@phrawzty)
+  * Bug fixes
+    - 15d6c34: fix: restore table text wrapping and respect -4/-6
+      flags for query types (@mr-karan)
+  * Others
+    - 46a1de3: chore: upgrade go dependencies (@mr-karan)
+    - 47136e4: docs(README): add mise alternative method
+      installation (@jylenhof)
+    - d1091e3: refactor: address PR #227 review feedback
+      (@phrawzty)
+
+-------------------------------------------------------------------

Old:
----
  doggo-1.1.2.obscpio

New:
----
  doggo-1.1.3.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ doggo.spec ++++++
--- /var/tmp/diff_new_pack.FvEFCP/_old  2025-12-22 22:51:54.999641150 +0100
+++ /var/tmp/diff_new_pack.FvEFCP/_new  2025-12-22 22:51:55.003641315 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           doggo
-Version:        1.1.2
+Version:        1.1.3
 Release:        0
 Summary:        CLI tool and API server DNS client implemented in Go
 License:        GPL-3.0-only
@@ -25,7 +25,7 @@
 URL:            https://github.com/mr-karan/doggo
 Source0:        %{name}-%{version}.tar
 Source1:        vendor.tar.xz
-BuildRequires:  golang(API) >= 1.25
+BuildRequires:  go1.25 >= 1.25.5
 Recommends:     %{name}-bash-completion
 Suggests:       %{name}-fish-completion
 Suggests:       %{name}-zsh-completion

++++++ _service ++++++
--- /var/tmp/diff_new_pack.FvEFCP/_old  2025-12-22 22:51:55.043642963 +0100
+++ /var/tmp/diff_new_pack.FvEFCP/_new  2025-12-22 22:51:55.047643128 +0100
@@ -2,7 +2,7 @@
   <service name="obs_scm" mode="manual">
     <param name="scm">git</param>
     <param name="url">https://github.com/mr-karan/doggo.git</param>
-    <param name="revision">v1.1.2</param>
+    <param name="revision">v1.1.3</param>
     <param name="match-tag">*</param>
     <param name="versionrewrite-pattern">v(\d+\.\d+\.\d+)</param>
     <param name="versionformat">@PARENT_TAG@</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.FvEFCP/_old  2025-12-22 22:51:55.083644611 +0100
+++ /var/tmp/diff_new_pack.FvEFCP/_new  2025-12-22 22:51:55.095645105 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/mr-karan/doggo.git</param>
-              <param 
name="changesrevision">deea9773d44d72aae73d5b5f033e747306c51134</param></service></servicedata>
+              <param 
name="changesrevision">46a1de3ae6ee61267b678e7493a52657fde1bf74</param></service></servicedata>
 (No newline at EOF)
 

++++++ doggo-1.1.2.obscpio -> doggo-1.1.3.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/README.md new/doggo-1.1.3/README.md
--- old/doggo-1.1.2/README.md   2025-11-01 14:20:59.000000000 +0100
+++ new/doggo-1.1.3/README.md   2025-12-20 15:05:13.000000000 +0100
@@ -33,6 +33,7 @@
 - Homebrew: `brew install doggo`
 - MacPorts (macOS): `port install doggo`
 - Arch Linux: `yay -S doggo-bin`
+- [Mise](https://github.com/jdx/mise): `mise use -g doggo@latest`
 - Nix: `nix profile install nixpkgs#doggo`
 - Scoop (Windows): `scoop install doggo`
 - Winget (Windows): `winget install doggo`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/cmd/doggo/cli.go 
new/doggo-1.1.3/cmd/doggo/cli.go
--- old/doggo-1.1.2/cmd/doggo/cli.go    2025-11-01 14:20:59.000000000 +0100
+++ new/doggo-1.1.3/cmd/doggo/cli.go    2025-12-20 15:05:13.000000000 +0100
@@ -158,7 +158,7 @@
        f.Int("ndots", -1, "Specify the ndots parameter")
        f.BoolP("ipv4", "4", false, "Use IPv4 only")
        f.BoolP("ipv6", "6", false, "Use IPv6 only")
-       f.String("strategy", "all", "Strategy to query nameservers in 
resolv.conf file")
+       f.String("strategy", "all", "Strategy to query nameservers (all, 
random, first, internal)")
        f.String("tls-hostname", "", "Hostname for certificate verification")
        f.Bool("skip-hostname-verification", false, "Skip TLS Hostname 
Verification")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/cmd/doggo/completions.go 
new/doggo-1.1.3/cmd/doggo/completions.go
--- old/doggo-1.1.2/cmd/doggo/completions.go    2025-11-01 14:20:59.000000000 
+0100
+++ new/doggo-1.1.3/cmd/doggo/completions.go    2025-12-20 15:05:13.000000000 
+0100
@@ -29,7 +29,7 @@
             return 0
             ;;
         --strategy)
-            COMPREPLY=( $(compgen -W "all random first" -- ${cur}) )
+            COMPREPLY=( $(compgen -W "all random first internal" -- ${cur}) )
             return 0
             ;;
         --search|--color)
@@ -65,7 +65,7 @@
     '(-c --class)'{-c,--class}'[Network class of the DNS record being 
queried]:network class:(IN CH HS)' \
     '(-r --reverse)'{-r,--reverse}'[Performs a DNS Lookup for an IPv4 or IPv6 
address]' \
     '--any[Query all supported DNS record types]' \
-    '--strategy[Strategy to query nameserver listed in 
etc/resolv.conf]:strategy:(all random first)' \
+    '--strategy[Strategy to query nameserver listed in 
etc/resolv.conf]:strategy:(all random first internal)' \
     '--ndots[Number of required dots in hostname to assume FQDN]:number of 
dots' \
     '--search[Use the search list defined in resolv.conf]:setting:(true 
false)' \
     '--timeout[Timeout (in seconds) for the resolver to return a 
response]:seconds' \
@@ -128,7 +128,7 @@
 complete -c doggo -n '__fish_doggo_no_subcommand' -l 'any'               -d 
"Query all supported DNS record types"
 
 # Resolver options
-complete -c doggo -n '__fish_doggo_no_subcommand' -l 'strategy'  -d "Strategy 
to query nameserver listed in etc/resolv.conf" -x -a "all random first"
+complete -c doggo -n '__fish_doggo_no_subcommand' -l 'strategy'  -d "Strategy 
to query nameserver listed in etc/resolv.conf" -x -a "all random first internal"
 complete -c doggo -n '__fish_doggo_no_subcommand' -l 'ndots'     -d "Specify 
ndots parameter"
 complete -c doggo -n '__fish_doggo_no_subcommand' -l 'search'    -d "Use the 
search list defined in resolv.conf" -x -a "true false"
 complete -c doggo -n '__fish_doggo_no_subcommand' -l 'timeout'   -d "Specify 
timeout (in seconds) for the resolver to return a response"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/cmd/doggo/help.go 
new/doggo-1.1.3/cmd/doggo/help.go
--- old/doggo-1.1.2/cmd/doggo/help.go   2025-11-01 14:20:59.000000000 +0100
+++ new/doggo-1.1.3/cmd/doggo/help.go   2025-12-20 15:05:13.000000000 +0100
@@ -121,7 +121,7 @@
                        {"--any", "Query all supported DNS record types (A, 
AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT, CAA)."},
                },
                "ResolverOptions": []Option{
-                       {"--strategy=STRATEGY", "Specify strategy to query 
nameserver listed in etc/resolv.conf. (all, random, first)."},
+                       {"--strategy=STRATEGY", "Specify strategy to query 
nameserver listed in etc/resolv.conf. Options: all, random, first, internal 
(RFC 1918/ULA private IPs only)."},
                        {"--ndots=INT", "Specify ndots parameter. Takes value 
from /etc/resolv.conf if using the system namesever or 1 otherwise."},
                        {"--search", "Use the search list defined in 
resolv.conf. Defaults to true. Set --search=false to disable search list."},
                        {"--timeout=DURATION", "Specify timeout for the 
resolver to return a response (e.g., 5s, 400ms, 1m)."},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/go.mod new/doggo-1.1.3/go.mod
--- old/doggo-1.1.2/go.mod      2025-11-01 14:20:59.000000000 +0100
+++ new/doggo-1.1.3/go.mod      2025-12-20 15:05:13.000000000 +0100
@@ -1,6 +1,6 @@
 module github.com/mr-karan/doggo
 
-go 1.25.3
+go 1.25.5
 
 require (
        github.com/ameshkov/dnscrypt/v2 v2.4.0
@@ -10,20 +10,21 @@
        github.com/jsdelivr/globalping-cli v1.5.1
        github.com/knadh/koanf/parsers/toml v0.1.0
        github.com/knadh/koanf/providers/env v1.1.0
-       github.com/knadh/koanf/providers/file v1.2.0
+       github.com/knadh/koanf/providers/file v1.2.1
        github.com/knadh/koanf/providers/posflag v1.0.1
        github.com/knadh/koanf/v2 v2.3.0
-       github.com/miekg/dns v1.1.68
-       github.com/olekukonko/tablewriter v1.1.0
-       github.com/quic-go/quic-go v0.55.0
+       github.com/miekg/dns v1.1.69
+       github.com/olekukonko/tablewriter v1.1.2
+       github.com/quic-go/quic-go v0.57.1
        github.com/spf13/pflag v1.0.10
-       golang.org/x/net v0.46.0
-       golang.org/x/sys v0.37.0
+       golang.org/x/net v0.48.0
+       golang.org/x/sys v0.39.0
 )
 
 require (
-       github.com/AdguardTeam/golibs v0.35.2 // indirect
+       github.com/AdguardTeam/golibs v0.35.5 // indirect
        github.com/andybalholm/brotli v1.2.0 // indirect
+       github.com/clipperhouse/displaywidth v0.6.2 // indirect
        github.com/clipperhouse/stringish v0.1.1 // indirect
        github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
        github.com/fsnotify/fsnotify v1.9.0 // indirect
@@ -36,14 +37,14 @@
        github.com/mitchellh/reflectwalk v1.0.2 // indirect
        github.com/olekukonko/cat v0.0.0-20250911104152-50322a0618f6 // indirect
        github.com/olekukonko/errors v1.1.0 // indirect
-       github.com/olekukonko/ll v0.1.2 // indirect
+       github.com/olekukonko/ll v0.1.3 // indirect
        github.com/pelletier/go-toml v1.9.5 // indirect
        github.com/rivo/uniseg v0.4.7 // indirect
        go.uber.org/mock v0.6.0 // indirect
-       golang.org/x/crypto v0.43.0 // indirect
-       golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 // indirect
-       golang.org/x/mod v0.29.0 // indirect
-       golang.org/x/sync v0.17.0 // indirect
-       golang.org/x/text v0.30.0 // indirect
-       golang.org/x/tools v0.38.0 // indirect
+       golang.org/x/crypto v0.46.0 // indirect
+       golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 // indirect
+       golang.org/x/mod v0.31.0 // indirect
+       golang.org/x/sync v0.19.0 // indirect
+       golang.org/x/text v0.32.0 // indirect
+       golang.org/x/tools v0.40.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/go.sum new/doggo-1.1.3/go.sum
--- old/doggo-1.1.2/go.sum      2025-11-01 14:20:59.000000000 +0100
+++ new/doggo-1.1.3/go.sum      2025-12-20 15:05:13.000000000 +0100
@@ -1,11 +1,15 @@
 github.com/AdguardTeam/golibs v0.35.2 
h1:GVlx/CiCz5ZXQmyvFrE3JyeGsgubE8f4rJvRshYJVVs=
 github.com/AdguardTeam/golibs v0.35.2/go.mod 
h1:p/l6tG7QCv+Hi5yVpv1oZInoatRGOWoyD1m+Ume+ZNY=
+github.com/AdguardTeam/golibs v0.35.5 
h1:qbe7jkjm+qtvPJGo3UnAp0lsPVpuHULfivXUkyVujZE=
+github.com/AdguardTeam/golibs v0.35.5/go.mod 
h1:meFdRqMtG/PLW6LD20MYAlcRbwAVowlbunHgE17xz9s=
 github.com/ameshkov/dnscrypt/v2 v2.4.0 
h1:if6ZG2cuQmcP2TwSY+D0+8+xbPfoatufGlOQTMNkI9o=
 github.com/ameshkov/dnscrypt/v2 v2.4.0/go.mod 
h1:WpEFV2uhebXb8Jhes/5/fSdpmhGV8TL22RDaeWwV6hI=
 github.com/ameshkov/dnsstamps v1.0.3 
h1:Srzik+J9mivH1alRACTbys2xOxs0lRH9qnTA7Y1OYVo=
 github.com/ameshkov/dnsstamps v1.0.3/go.mod 
h1:Ii3eUu73dx4Vw5O4wjzmT5+lkCwovjzaEZZ4gKyIH5A=
 github.com/andybalholm/brotli v1.2.0 
h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
 github.com/andybalholm/brotli v1.2.0/go.mod 
h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
+github.com/clipperhouse/displaywidth v0.6.2 
h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo=
+github.com/clipperhouse/displaywidth v0.6.2/go.mod 
h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o=
 github.com/clipperhouse/stringish v0.1.1 
h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
 github.com/clipperhouse/stringish v0.1.1/go.mod 
h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA=
 github.com/clipperhouse/uax29/v2 v2.3.0 
h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4=
@@ -32,6 +36,8 @@
 github.com/knadh/koanf/providers/env v1.1.0/go.mod 
h1:QhHHHZ87h9JxJAn2czdEl6pdkNnDh/JS1Vtsyt65hTY=
 github.com/knadh/koanf/providers/file v1.2.0 
h1:hrUJ6Y9YOA49aNu/RSYzOTFlqzXSCpmYIDXI7OJU6+U=
 github.com/knadh/koanf/providers/file v1.2.0/go.mod 
h1:bp1PM5f83Q+TOUu10J/0ApLBd9uIzg+n9UgthfY+nRA=
+github.com/knadh/koanf/providers/file v1.2.1 
h1:bEWbtQwYrA+W2DtdBrQWyXqJaJSG3KrP3AESOJYp9wM=
+github.com/knadh/koanf/providers/file v1.2.1/go.mod 
h1:bp1PM5f83Q+TOUu10J/0ApLBd9uIzg+n9UgthfY+nRA=
 github.com/knadh/koanf/providers/posflag v1.0.1 
h1:EnMxHSrPkYCFnKgBUl5KBgrjed8gVFrcXDzaW4l/C6Y=
 github.com/knadh/koanf/providers/posflag v1.0.1/go.mod 
h1:3Wn3+YG3f4ljzRyCUgIwH7G0sZ1pMjCOsNBovrbKmAk=
 github.com/knadh/koanf/v2 v2.3.0 
h1:Qg076dDRFHvqnKG97ZEsi9TAg2/nFTa9hCdcSa1lvlM=
@@ -44,6 +50,8 @@
 github.com/mattn/go-runewidth v0.0.19/go.mod 
h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
 github.com/miekg/dns v1.1.68 h1:jsSRkNozw7G/mnmXULynzMNIsgY2dHC8LO6U6Ij2JEA=
 github.com/miekg/dns v1.1.68/go.mod 
h1:fujopn7TB3Pu3JM69XaawiU0wqjpL9/8xGop5UrTPps=
+github.com/miekg/dns v1.1.69 h1:Kb7Y/1Jo+SG+a2GtfoFUfDkG//csdRPwRLkCsxDG9Sc=
+github.com/miekg/dns v1.1.69/go.mod 
h1:7OyjD9nEba5OkqQ/hB4fy3PIoxafSZJtducccIelz3g=
 github.com/mitchellh/copystructure v1.2.0 
h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
 github.com/mitchellh/copystructure v1.2.0/go.mod 
h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
 github.com/mitchellh/reflectwalk v1.0.2 
h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
@@ -54,14 +62,20 @@
 github.com/olekukonko/errors v1.1.0/go.mod 
h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y=
 github.com/olekukonko/ll v0.1.2 h1:lkg/k/9mlsy0SxO5aC+WEpbdT5K83ddnNhAepz7TQc0=
 github.com/olekukonko/ll v0.1.2/go.mod 
h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew=
+github.com/olekukonko/ll v0.1.3 h1:sV2jrhQGq5B3W0nENUISCR6azIPf7UBUpVq0x/y70Fg=
+github.com/olekukonko/ll v0.1.3/go.mod 
h1:b52bVQRRPObe+yyBl0TxNfhesL0nedD4Cht0/zx55Ew=
 github.com/olekukonko/tablewriter v1.1.0 
h1:N0LHrshF4T39KvI96fn6GT8HEjXRXYNDrDjKFDB7RIY=
 github.com/olekukonko/tablewriter v1.1.0/go.mod 
h1:5c+EBPeSqvXnLLgkm9isDdzR3wjfBkHR9Nhfp3NWrzo=
+github.com/olekukonko/tablewriter v1.1.2 
h1:L2kI1Y5tZBct/O/TyZK1zIE9GlBj/TVs+AY5tZDCDSc=
+github.com/olekukonko/tablewriter v1.1.2/go.mod 
h1:z7SYPugVqGVavWoA2sGsFIoOVNmEHxUAAMrhXONtfkg=
 github.com/pelletier/go-toml v1.9.5 
h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
 github.com/pelletier/go-toml v1.9.5/go.mod 
h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
 github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/quic-go/quic-go v0.55.0 
h1:zccPQIqYCXDt5NmcEabyYvOnomjs8Tlwl7tISjJh9Mk=
 github.com/quic-go/quic-go v0.55.0/go.mod 
h1:DR51ilwU1uE164KuWXhinFcKWGlEjzys2l8zUl5Ss1U=
+github.com/quic-go/quic-go v0.57.1 
h1:25KAAR9QR8KZrCZRThWMKVAwGoiHIrNbT72ULHTuI10=
+github.com/quic-go/quic-go v0.57.1/go.mod 
h1:ly4QBAjHA2VhdnxhojRsCUOeJwKYg+taDlos92xb1+s=
 github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
 github.com/rivo/uniseg v0.4.7/go.mod 
h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
 github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
@@ -74,20 +88,36 @@
 go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU=
 golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
 golang.org/x/crypto v0.43.0/go.mod 
h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
+golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
+golang.org/x/crypto v0.46.0/go.mod 
h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
 golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546 
h1:mgKeJMpvi0yx/sU5GsxQ7p6s2wtOnGAHZWCHUM4KGzY=
 golang.org/x/exp v0.0.0-20251023183803-a4bb9ffd2546/go.mod 
h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
+golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 
h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0=
+golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod 
h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU=
 golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
 golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
+golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI=
+golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg=
 golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4=
 golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
+golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
+golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
 golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
 golang.org/x/sync v0.17.0/go.mod 
h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
+golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
+golang.org/x/sync v0.19.0/go.mod 
h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
 golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
+golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
+golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
 golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k=
 golang.org/x/text v0.30.0/go.mod 
h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM=
+golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
+golang.org/x/text v0.32.0/go.mod 
h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
 golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
 golang.org/x/tools v0.38.0/go.mod 
h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
+golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA=
+golang.org/x/tools v0.40.0/go.mod 
h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/internal/app/globalping.go 
new/doggo-1.1.3/internal/app/globalping.go
--- old/doggo-1.1.2/internal/app/globalping.go  2025-11-01 14:20:59.000000000 
+0100
+++ new/doggo-1.1.3/internal/app/globalping.go  2025-12-20 15:05:13.000000000 
+0100
@@ -124,6 +124,8 @@
                        Symbols: tw.NewSymbols(tw.StyleLight),
                }),
                tablewriter.WithPadding(tw.Padding{Left: "", Right: "  ", 
Overwrite: true}),
+               tablewriter.WithRowAutoWrap(tw.WrapNormal),
+               tablewriter.WithRowMaxWidth(30),
                tablewriter.WithHeaderAlignment(tw.AlignLeft),
        )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/internal/app/nameservers.go 
new/doggo-1.1.3/internal/app/nameservers.go
--- old/doggo-1.1.2/internal/app/nameservers.go 2025-11-01 14:20:59.000000000 
+0100
+++ new/doggo-1.1.3/internal/app/nameservers.go 2025-12-20 15:05:13.000000000 
+0100
@@ -261,6 +261,40 @@
        return ip.To4() == nil
 }
 
+// isPrivateIP checks if an IP address is in RFC 1918 private address space 
(IPv4)
+// or RFC 4193 Unique Local Address space (IPv6)
+func isPrivateIP(ipStr string) bool {
+       ip := net.ParseIP(ipStr)
+       if ip == nil {
+               return false
+       }
+
+       // IPv4 RFC 1918 ranges
+       if ipv4 := ip.To4(); ipv4 != nil {
+               // 10.0.0.0/8
+               if ipv4[0] == 10 {
+                       return true
+               }
+               // 172.16.0.0/12
+               if ipv4[0] == 172 && ipv4[1] >= 16 && ipv4[1] <= 31 {
+                       return true
+               }
+               // 192.168.0.0/16
+               if ipv4[0] == 192 && ipv4[1] == 168 {
+                       return true
+               }
+               return false
+       }
+
+       // IPv6 Unique Local Address (ULA) - RFC 4193
+       // fd00::/8 range
+       if len(ip) == 16 && ip[0] == 0xfd {
+               return true
+       }
+
+       return false
+}
+
 // filterNameserversByIPVersion filters nameservers based on IPv4/IPv6 flags
 func filterNameserversByIPVersion(servers []string, useIPv4, useIPv6 bool) 
[]string {
        // If neither flag is set, return all servers
@@ -324,6 +358,29 @@
                }
                servers = append(servers, ns)
 
+       case "internal":
+               // Filter for nameservers with private IPs only (RFC 1918 / RFC 
4193 ULA)
+               internalServers := make([]string, 0)
+               for _, srv := range dnsServers {
+                       if isPrivateIP(srv) {
+                               internalServers = append(internalServers, srv)
+                       }
+               }
+
+               // Return error if no internal servers found
+               if len(internalServers) == 0 {
+                       return nil, ndots, search, fmt.Errorf("no internal 
(private IP) nameservers found in system configuration")
+               }
+
+               // Return all internal servers
+               for _, s := range internalServers {
+                       ns := models.Nameserver{
+                               Type:    models.UDPResolver,
+                               Address: net.JoinHostPort(s, 
models.DefaultUDPPort),
+                       }
+                       servers = append(servers, ns)
+               }
+
        default:
                // Default behaviour is to load all nameservers.
                for _, s := range dnsServers {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/internal/app/output.go 
new/doggo-1.1.3/internal/app/output.go
--- old/doggo-1.1.2/internal/app/output.go      2025-11-01 14:20:59.000000000 
+0100
+++ new/doggo-1.1.3/internal/app/output.go      2025-12-20 15:05:13.000000000 
+0100
@@ -81,6 +81,8 @@
                        Symbols: tw.NewSymbols(tw.StyleLight),
                }),
                tablewriter.WithPadding(tw.Padding{Left: "", Right: "  ", 
Overwrite: true}),
+               tablewriter.WithRowAutoWrap(tw.WrapNormal),
+               tablewriter.WithRowMaxWidth(30),
                tablewriter.WithHeaderAlignment(tw.AlignLeft),
        )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/internal/app/questions.go 
new/doggo-1.1.3/internal/app/questions.go
--- old/doggo-1.1.2/internal/app/questions.go   2025-11-01 14:20:59.000000000 
+0100
+++ new/doggo-1.1.3/internal/app/questions.go   2025-12-20 15:05:13.000000000 
+0100
@@ -16,8 +16,14 @@
        if app.QueryFlags.QueryAny {
                app.QueryFlags.QTypes = models.GetCommonRecordTypes()
        } else if len(app.QueryFlags.QTypes) == 0 {
-               app.QueryFlags.QTypes = append(app.QueryFlags.QTypes, "A")
-               app.QueryFlags.QTypes = append(app.QueryFlags.QTypes, "AAAA")
+               if app.QueryFlags.UseIPv4 {
+                       app.QueryFlags.QTypes = append(app.QueryFlags.QTypes, 
"A")
+               } else if app.QueryFlags.UseIPv6 {
+                       app.QueryFlags.QTypes = append(app.QueryFlags.QTypes, 
"AAAA")
+               } else {
+                       app.QueryFlags.QTypes = append(app.QueryFlags.QTypes, 
"A")
+                       app.QueryFlags.QTypes = append(app.QueryFlags.QTypes, 
"AAAA")
+               }
        }
        if len(app.QueryFlags.QClasses) == 0 {
                app.QueryFlags.QClasses = append(app.QueryFlags.QClasses, "IN")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/pkg/config/config_darwin.go 
new/doggo-1.1.3/pkg/config/config_darwin.go
--- old/doggo-1.1.2/pkg/config/config_darwin.go 1970-01-01 01:00:00.000000000 
+0100
+++ new/doggo-1.1.3/pkg/config/config_darwin.go 2025-12-20 15:05:13.000000000 
+0100
@@ -0,0 +1,219 @@
+// +build darwin
+
+package config
+
+import (
+       "bytes"
+       "fmt"
+       "net"
+       "os/exec"
+       "regexp"
+       "strconv"
+       "strings"
+
+       "github.com/miekg/dns"
+)
+
+// scutilResolver represents a parsed resolver from scutil --dns output
+type scutilResolver struct {
+       number        int
+       nameservers   []string
+       domain        string
+       searchDomains []string
+       options       []string
+}
+
+// GetDefaultServers retrieves DNS configuration from macOS SystemConfiguration
+// by parsing the output of 'scutil --dns'. Falls back to /etc/resolv.conf on 
failure.
+func GetDefaultServers() ([]string, int, []string, error) {
+       // Try scutil first
+       resolvers, ndots, search, err := getResolversFromScutil()
+       if err != nil {
+               // Fallback to /etc/resolv.conf
+               return fallbackToResolvConf()
+       }
+
+       return resolvers, ndots, search, nil
+}
+
+// getResolversFromScutil executes scutil --dns and parses the output
+func getResolversFromScutil() ([]string, int, []string, error) {
+       // Execute scutil --dns
+       cmd := exec.Command("scutil", "--dns")
+       var stdout bytes.Buffer
+       cmd.Stdout = &stdout
+
+       if err := cmd.Run(); err != nil {
+               return nil, 0, nil, fmt.Errorf("scutil execution failed: %w", 
err)
+       }
+
+       output := stdout.String()
+       if len(strings.TrimSpace(output)) == 0 {
+               return nil, 0, nil, fmt.Errorf("scutil returned empty output")
+       }
+
+       // Parse the output
+       resolvers, err := parseScutilOutput(output)
+       if err != nil {
+               return nil, 0, nil, fmt.Errorf("failed to parse scutil output: 
%w", err)
+       }
+
+       // Filter out mDNS resolvers
+       validResolvers := make([]scutilResolver, 0)
+       for _, r := range resolvers {
+               if !isMDNS(r) && len(r.nameservers) > 0 {
+                       validResolvers = append(validResolvers, r)
+               }
+       }
+
+       if len(validResolvers) == 0 {
+               return nil, 0, nil, fmt.Errorf("no valid resolvers found")
+       }
+
+       // Aggregate nameservers from all valid resolvers
+       // This allows the "internal" strategy to find domain-specific 
corporate DNS servers
+       nameservers := make([]string, 0)
+       seen := make(map[string]bool)
+
+       for _, resolver := range validResolvers {
+               for _, ns := range resolver.nameservers {
+                       ip := net.ParseIP(ns)
+                       // Skip link-local and duplicates
+                       if isUnicastLinkLocal(ip) || seen[ns] {
+                               continue
+                       }
+                       nameservers = append(nameservers, ns)
+                       seen[ns] = true
+               }
+       }
+
+       // Aggregate search domains from all valid resolvers
+       searchDomains := aggregateSearchDomains(validResolvers)
+
+       // ndots: try to read from /etc/resolv.conf, default to 1
+       ndots := 1
+       if cfg, err := dns.ClientConfigFromFile("/etc/resolv.conf"); err == nil 
{
+               ndots = cfg.Ndots
+       }
+
+       return nameservers, ndots, searchDomains, nil
+}
+
+// parseScutilOutput parses the output of scutil --dns
+func parseScutilOutput(output string) ([]scutilResolver, error) {
+       lines := strings.Split(output, "\n")
+       resolvers := make([]scutilResolver, 0)
+
+       var current *scutilResolver
+       resolverRe := regexp.MustCompile(`^resolver #(\d+)`)
+       nameserverRe := regexp.MustCompile(`^\s+nameserver\[\d+\]\s*:\s*(.+)`)
+       domainRe := regexp.MustCompile(`^\s+domain\s*:\s*(.+)`)
+       searchDomainRe := regexp.MustCompile(`^\s+search 
domain\[\d+\]\s*:\s*(.+)`)
+       optionsRe := regexp.MustCompile(`^\s+options\s*:\s*(.+)`)
+
+       for _, line := range lines {
+               // Check for resolver start
+               if matches := resolverRe.FindStringSubmatch(line); matches != 
nil {
+                       if current != nil {
+                               resolvers = append(resolvers, *current)
+                       }
+                       num, _ := strconv.Atoi(matches[1])
+                       current = &scutilResolver{
+                               number:        num,
+                               nameservers:   make([]string, 0),
+                               searchDomains: make([]string, 0),
+                               options:       make([]string, 0),
+                       }
+                       continue
+               }
+
+               if current == nil {
+                       continue
+               }
+
+               // Parse nameserver
+               if matches := nameserverRe.FindStringSubmatch(line); matches != 
nil {
+                       current.nameservers = append(current.nameservers, 
strings.TrimSpace(matches[1]))
+                       continue
+               }
+
+               // Parse domain
+               if matches := domainRe.FindStringSubmatch(line); matches != nil 
{
+                       current.domain = strings.TrimSpace(matches[1])
+                       continue
+               }
+
+               // Parse search domain
+               if matches := searchDomainRe.FindStringSubmatch(line); matches 
!= nil {
+                       current.searchDomains = append(current.searchDomains, 
strings.TrimSpace(matches[1]))
+                       continue
+               }
+
+               // Parse options
+               if matches := optionsRe.FindStringSubmatch(line); matches != 
nil {
+                       opts := strings.Fields(strings.TrimSpace(matches[1]))
+                       current.options = append(current.options, opts...)
+                       continue
+               }
+       }
+
+       // Don't forget the last resolver
+       if current != nil {
+               resolvers = append(resolvers, *current)
+       }
+
+       return resolvers, nil
+}
+
+// isMDNS checks if a resolver is for mDNS (.local)
+func isMDNS(r scutilResolver) bool {
+       for _, opt := range r.options {
+               if opt == "mdns" {
+                       return true
+               }
+       }
+       return false
+}
+
+// aggregateSearchDomains collects search domains from all resolvers
+func aggregateSearchDomains(resolvers []scutilResolver) []string {
+       seen := make(map[string]bool)
+       result := make([]string, 0)
+
+       for _, r := range resolvers {
+               // Add domain if present
+               if r.domain != "" && !seen[r.domain] {
+                       result = append(result, r.domain)
+                       seen[r.domain] = true
+               }
+
+               // Add search domains
+               for _, sd := range r.searchDomains {
+                       if !seen[sd] {
+                               result = append(result, sd)
+                               seen[sd] = true
+                       }
+               }
+       }
+
+       return result
+}
+
+// fallbackToResolvConf falls back to the traditional /etc/resolv.conf
+func fallbackToResolvConf() ([]string, int, []string, error) {
+       cfg, err := dns.ClientConfigFromFile("/etc/resolv.conf")
+       if err != nil {
+               return nil, 0, nil, err
+       }
+
+       servers := make([]string, 0)
+       for _, server := range cfg.Servers {
+               ip := net.ParseIP(server)
+               if isUnicastLinkLocal(ip) {
+                       continue
+               }
+               servers = append(servers, server)
+       }
+
+       return servers, cfg.Ndots, cfg.Search, nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/pkg/config/config_unix.go 
new/doggo-1.1.3/pkg/config/config_unix.go
--- old/doggo-1.1.2/pkg/config/config_unix.go   2025-11-01 14:20:59.000000000 
+0100
+++ new/doggo-1.1.3/pkg/config/config_unix.go   2025-12-20 15:05:13.000000000 
+0100
@@ -1,4 +1,4 @@
-// +build !windows
+// +build !windows,!darwin
 
 package config
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/web/api.go new/doggo-1.1.3/web/api.go
--- old/doggo-1.1.2/web/api.go  2025-11-01 14:20:59.000000000 +0100
+++ new/doggo-1.1.3/web/api.go  2025-12-20 15:05:13.000000000 +0100
@@ -23,7 +23,9 @@
        //go:embed assets/*
        assetsDir embed.FS
        //go:embed index.html
-       html []byte
+       indexHTML []byte
+       //go:embed faq.html
+       faqHTML []byte
 )
 
 func main() {
@@ -51,7 +53,11 @@
        })
        r.Get("/", func(w http.ResponseWriter, r *http.Request) {
                w.Header().Add("Content-Type", "text/html")
-               w.Write(html)
+               w.Write(indexHTML)
+       })
+       r.Get("/faq", func(w http.ResponseWriter, r *http.Request) {
+               w.Header().Add("Content-Type", "text/html")
+               w.Write(faqHTML)
        })
 
        // API Handlers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/web/assets/style.css 
new/doggo-1.1.3/web/assets/style.css
--- old/doggo-1.1.2/web/assets/style.css        2025-11-01 14:20:59.000000000 
+0100
+++ new/doggo-1.1.3/web/assets/style.css        2025-12-20 15:05:13.000000000 
+0100
@@ -20,6 +20,14 @@
     font-size: 1.3rem;
     font-weight: bold;
     color: var(--accent);
+    margin: 0;
+}
+
+/* Page Title (for subpages like FAQ) */
+.page-title {
+    text-align: center;
+    color: var(--accent);
+    margin-bottom: 30px;
 }
 
 .terminal-menu ul {
@@ -252,6 +260,38 @@
     font-style: italic;
 }
 
+/* FAQ Section */
+.faq-section {
+    margin-top: 30px;
+    margin-bottom: 30px;
+}
+
+.faq-section h2 {
+    text-align: center;
+    margin-bottom: 25px;
+    color: var(--accent);
+}
+
+.faq-list {
+    max-width: 800px;
+    margin: 0 auto;
+}
+
+.faq-item {
+    margin-bottom: 10px;
+}
+
+.faq-item summary {
+    padding: 15px;
+    margin-bottom: 0;
+}
+
+.faq-item p {
+    padding: 0 15px 15px 15px;
+    margin: 0;
+    color: color-mix(in srgb, var(--foreground) 80%, transparent);
+}
+
 /* Footer */
 .footer-card {
     margin-top: 40px;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/web/faq.html new/doggo-1.1.3/web/faq.html
--- old/doggo-1.1.2/web/faq.html        1970-01-01 01:00:00.000000000 +0100
+++ new/doggo-1.1.3/web/faq.html        2025-12-20 15:05:13.000000000 +0100
@@ -0,0 +1,240 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Primary Meta Tags -->
+    <title>FAQ - Doggo DNS | DNS Lookup Tool Questions & Answers</title>
+    <meta name="title" content="FAQ - Doggo DNS | DNS Lookup Tool Questions & 
Answers">
+    <meta name="description" content="Frequently asked questions about Doggo 
DNS lookup tool. Learn about DNS over HTTPS, TLS, QUIC, DNS record types, and 
how to use Doggo for DNS queries.">
+    <meta name="keywords" content="dns lookup faq, dns questions, what is dns, 
dns over https, doh explained, dns over tls, dot, dns record types, A record, 
AAAA record, MX record, CNAME, doggo dns help">
+    <meta name="author" content="Karan Sharma">
+    <meta name="robots" content="index, follow">
+    <link rel="canonical" href="https://doggo.mrkaran.dev/faq";>
+
+    <!-- Open Graph / Facebook -->
+    <meta property="og:type" content="website">
+    <meta property="og:url" content="https://doggo.mrkaran.dev/faq";>
+    <meta property="og:title" content="FAQ - Doggo DNS | DNS Lookup Tool">
+    <meta property="og:description" content="Frequently asked questions about 
Doggo DNS lookup tool. Learn about DNS protocols, record types, and more.">
+    <meta property="og:image" 
content="https://doggo.mrkaran.dev/assets/og-image.png";>
+    <meta property="og:site_name" content="Doggo DNS">
+
+    <!-- Twitter -->
+    <meta name="twitter:card" content="summary_large_image">
+    <meta name="twitter:url" content="https://doggo.mrkaran.dev/faq";>
+    <meta name="twitter:title" content="FAQ - Doggo DNS | DNS Lookup Tool">
+    <meta name="twitter:description" content="Frequently asked questions about 
Doggo DNS lookup tool. Learn about DNS protocols, record types, and more.">
+    <meta name="twitter:image" 
content="https://doggo.mrkaran.dev/assets/og-image.png";>
+    <meta name="twitter:creator" content="@mrkaran_">
+
+    <!-- Favicon -->
+    <link rel="icon" type="image/x-icon" href="assets/favicon.ico">
+    <link rel="apple-touch-icon" href="assets/apple-touch-icon.png">
+
+    <!-- Schema.org FAQ Page -->
+    <script type="application/ld+json">
+    {
+        "@context": "https://schema.org";,
+        "@type": "FAQPage",
+        "mainEntity": [
+            {
+                "@type": "Question",
+                "name": "What is Doggo DNS?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Doggo DNS is a free online DNS lookup tool that 
allows you to query DNS records for any domain. It supports multiple DNS record 
types including A, AAAA, MX, CNAME, TXT, NS, SOA, PTR, SRV, and CAA records. 
It's available as both a web interface and a command-line tool."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "What is a DNS lookup?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "A DNS lookup queries the Domain Name System to 
translate domain names (like example.com) into IP addresses. It retrieves 
various DNS records including A records (IPv4 addresses), AAAA records (IPv6 
addresses), MX records (mail servers), CNAME records (aliases), TXT records 
(text information), and more."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "What DNS protocols does Doggo support?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Doggo supports DNS over HTTPS (DoH), DNS over TLS 
(DoT), DNS over QUIC (DoQ), as well as traditional UDP and TCP DNS queries. 
These encrypted protocols provide better privacy and security compared to 
standard DNS."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "What is DNS over HTTPS (DoH)?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "DNS over HTTPS (DoH) encrypts DNS queries using 
the HTTPS protocol. This prevents eavesdropping and manipulation of DNS data by 
ISPs or attackers, improving privacy and security compared to traditional 
unencrypted DNS queries."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "What is DNS over TLS (DoT)?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "DNS over TLS (DoT) encrypts DNS queries using the 
TLS protocol on port 853. Like DoH, it provides privacy and security for DNS 
queries, but uses a dedicated port rather than blending in with regular HTTPS 
traffic."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "What is DNS over QUIC (DoQ)?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "DNS over QUIC (DoQ) is the newest encrypted DNS 
protocol that uses the QUIC transport protocol. It offers lower latency than 
DoT and DoH because QUIC establishes connections faster and handles packet loss 
better."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "Which DNS providers are available in Doggo?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Doggo supports multiple DNS providers including 
Cloudflare (1.1.1.1), Google (8.8.8.8), Quad9 (9.9.9.9), AdGuard, Mullvad, 
Control D, DNS0.eu, OpenDNS, CleanBrowsing, and custom DNS servers."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "Which DNS server should I use?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Popular choices include Cloudflare (1.1.1.1) for 
speed and privacy, Google (8.8.8.8) for reliability, Quad9 (9.9.9.9) for 
security with malware blocking, and AdGuard for ad-blocking. Each provider has 
different privacy policies and features."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "How is Doggo different from dig or nslookup?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Doggo provides a modern, user-friendly interface 
with native support for encrypted DNS protocols (DoH, DoT, DoQ) that 
traditional tools like dig and nslookup don't support out of the box. It's 
available both as a web interface and command-line tool, with colorful output 
and JSON support."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "What DNS record types does Doggo support?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Doggo supports all common DNS record types 
including: A (IPv4 address), AAAA (IPv6 address), CNAME (canonical name/alias), 
MX (mail exchange), NS (nameserver), TXT (text records), SOA (start of 
authority), PTR (pointer/reverse DNS), SRV (service records), and CAA 
(certificate authority authorization)."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "Is Doggo DNS free to use?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Yes, Doggo DNS is completely free and open 
source. You can use the web interface without any registration, or install the 
command-line tool from GitHub. The source code is available under an open 
source license."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "What are EDNS options in Doggo?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "EDNS (Extension Mechanisms for DNS) options allow 
advanced DNS queries. Doggo supports NSID (nameserver identifier), DNS cookies 
for security, padding for privacy, EDE (extended DNS errors) for detailed error 
information, and ECS (EDNS Client Subnet) for geolocation-aware responses."
+                }
+            }
+        ]
+    }
+    </script>
+
+    <!-- Stylesheets -->
+    <link rel="stylesheet" href="assets/terminal.css">
+    <link href="assets/style.css" rel="stylesheet">
+</head>
+<body>
+<div class="container">
+    <div class="terminal-nav">
+        <div class="terminal-logo">
+            <div class="logo">🐶 doggo</div>
+        </div>
+        <nav class="terminal-menu">
+            <ul vocab="https://schema.org/"; typeof="BreadcrumbList">
+                <li property="itemListElement" typeof="ListItem"><a href="/" 
property="item" typeof="WebPage"><span property="name">Home</span></a></li>
+                <li property="itemListElement" typeof="ListItem"><a 
href="https://github.com/mr-karan/doggo"; property="item" typeof="WebPage"><span 
property="name">GitHub</span></a></li>
+                <li property="itemListElement" typeof="ListItem"><a 
href="https://doggo.mrkaran.dev/docs/"; property="item" typeof="WebPage"><span 
property="name">Docs</span></a></li>
+            </ul>
+        </nav>
+    </div>
+
+    <h1 class="page-title">Frequently Asked Questions</h1>
+
+    <section class="faq-section">
+        <h2>About Doggo DNS</h2>
+        <div class="faq-list">
+            <details class="faq-item">
+                <summary>What is Doggo DNS?</summary>
+                <p>Doggo DNS is a free online DNS lookup tool that allows you 
to query DNS records for any domain. It supports multiple DNS record types 
including A, AAAA, MX, CNAME, TXT, NS, SOA, PTR, SRV, and CAA records. It's 
available as both a web interface and a command-line tool.</p>
+            </details>
+            <details class="faq-item">
+                <summary>How is Doggo different from dig or nslookup?</summary>
+                <p>Doggo provides a modern, user-friendly interface with 
native support for encrypted DNS protocols (DoH, DoT, DoQ) that traditional 
tools like dig and nslookup don't support out of the box. It's available both 
as a web interface and command-line tool, with colorful output and JSON 
support.</p>
+            </details>
+            <details class="faq-item">
+                <summary>Is Doggo DNS free to use?</summary>
+                <p>Yes, Doggo DNS is completely free and open source. You can 
use the web interface without any registration, or install the command-line 
tool from GitHub. The source code is available under an open source license.</p>
+            </details>
+        </div>
+    </section>
+
+    <section class="faq-section">
+        <h2>DNS Basics</h2>
+        <div class="faq-list">
+            <details class="faq-item">
+                <summary>What is a DNS lookup?</summary>
+                <p>A DNS lookup queries the Domain Name System to translate 
domain names (like example.com) into IP addresses. It retrieves various DNS 
records including A records (IPv4 addresses), AAAA records (IPv6 addresses), MX 
records (mail servers), CNAME records (aliases), TXT records (text 
information), and more.</p>
+            </details>
+            <details class="faq-item">
+                <summary>What DNS record types does Doggo support?</summary>
+                <p>Doggo supports all common DNS record types including: A 
(IPv4 address), AAAA (IPv6 address), CNAME (canonical name/alias), MX (mail 
exchange), NS (nameserver), TXT (text records), SOA (start of authority), PTR 
(pointer/reverse DNS), SRV (service records), and CAA (certificate authority 
authorization).</p>
+            </details>
+            <details class="faq-item">
+                <summary>Which DNS server should I use?</summary>
+                <p>Popular choices include Cloudflare (1.1.1.1) for speed and 
privacy, Google (8.8.8.8) for reliability, Quad9 (9.9.9.9) for security with 
malware blocking, and AdGuard for ad-blocking. Each provider has different 
privacy policies and features.</p>
+            </details>
+            <details class="faq-item">
+                <summary>Which DNS providers are available in Doggo?</summary>
+                <p>Doggo supports multiple DNS providers including Cloudflare 
(1.1.1.1), Google (8.8.8.8), Quad9 (9.9.9.9), AdGuard, Mullvad, Control D, 
DNS0.eu, OpenDNS, CleanBrowsing, and custom DNS servers.</p>
+            </details>
+        </div>
+    </section>
+
+    <section class="faq-section">
+        <h2>DNS Protocols</h2>
+        <div class="faq-list">
+            <details class="faq-item">
+                <summary>What DNS protocols does Doggo support?</summary>
+                <p>Doggo supports DNS over HTTPS (DoH), DNS over TLS (DoT), 
DNS over QUIC (DoQ), as well as traditional UDP and TCP DNS queries. These 
encrypted protocols provide better privacy and security compared to standard 
DNS.</p>
+            </details>
+            <details class="faq-item">
+                <summary>What is DNS over HTTPS (DoH)?</summary>
+                <p>DNS over HTTPS (DoH) encrypts DNS queries using the HTTPS 
protocol. This prevents eavesdropping and manipulation of DNS data by ISPs or 
attackers, improving privacy and security compared to traditional unencrypted 
DNS queries.</p>
+            </details>
+            <details class="faq-item">
+                <summary>What is DNS over TLS (DoT)?</summary>
+                <p>DNS over TLS (DoT) encrypts DNS queries using the TLS 
protocol on port 853. Like DoH, it provides privacy and security for DNS 
queries, but uses a dedicated port rather than blending in with regular HTTPS 
traffic.</p>
+            </details>
+            <details class="faq-item">
+                <summary>What is DNS over QUIC (DoQ)?</summary>
+                <p>DNS over QUIC (DoQ) is the newest encrypted DNS protocol 
that uses the QUIC transport protocol. It offers lower latency than DoT and DoH 
because QUIC establishes connections faster and handles packet loss better.</p>
+            </details>
+        </div>
+    </section>
+
+    <section class="faq-section">
+        <h2>Advanced Features</h2>
+        <div class="faq-list">
+            <details class="faq-item">
+                <summary>What are EDNS options in Doggo?</summary>
+                <p>EDNS (Extension Mechanisms for DNS) options allow advanced 
DNS queries. Doggo supports NSID (nameserver identifier), DNS cookies for 
security, padding for privacy, EDE (extended DNS errors) for detailed error 
information, and ECS (EDNS Client Subnet) for geolocation-aware responses.</p>
+            </details>
+        </div>
+    </section>
+
+    <div class="terminal-card footer-card">
+        <p>Made by <a href="https://mrkaran.dev";>karan</a> · <a 
href="https://github.com/mr-karan/doggo";>GitHub</a></p>
+    </div>
+</div>
+</body>
+</html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/doggo-1.1.2/web/index.html 
new/doggo-1.1.3/web/index.html
--- old/doggo-1.1.2/web/index.html      2025-11-01 14:20:59.000000000 +0100
+++ new/doggo-1.1.3/web/index.html      2025-12-20 15:05:13.000000000 +0100
@@ -1,9 +1,124 @@
 <!DOCTYPE html>
-<html>
+<html lang="en">
 <head>
-    <title>Doggo DNS</title>
     <meta charset="utf-8">
-    <meta name="viewport" content="initial-scale=1, maximum-scale=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+
+    <!-- Primary Meta Tags -->
+    <title>Doggo DNS - Free Online DNS Lookup Tool | Query A, AAAA, MX, CNAME, 
TXT Records</title>
+    <meta name="title" content="Doggo DNS - Free Online DNS Lookup Tool | 
Query A, AAAA, MX, CNAME, TXT Records">
+    <meta name="description" content="Free online DNS lookup tool. Query DNS 
records (A, AAAA, MX, CNAME, TXT, NS, SOA, PTR, SRV, CAA) using DNS over HTTPS, 
TLS, QUIC, UDP and TCP. Fast, modern alternative to dig and nslookup.">
+    <meta name="keywords" content="dns lookup, dns checker, online dig, 
nslookup, dns query, nameserver lookup, A record, AAAA record, MX record, CNAME 
record, TXT record, NS record, SOA record, PTR record, dns over https, doh, dns 
over tls, dot, dns over quic, doq, domain lookup, dns tool, dns propagation, 
dns records">
+    <meta name="author" content="Karan Sharma">
+    <meta name="robots" content="index, follow">
+    <link rel="canonical" href="https://doggo.mrkaran.dev/";>
+
+    <!-- Open Graph / Facebook -->
+    <meta property="og:type" content="website">
+    <meta property="og:url" content="https://doggo.mrkaran.dev/";>
+    <meta property="og:title" content="Doggo DNS - Free Online DNS Lookup 
Tool">
+    <meta property="og:description" content="Free online DNS lookup tool. 
Query DNS records using DNS over HTTPS, TLS, QUIC, UDP and TCP. Fast, modern 
alternative to dig and nslookup.">
+    <meta property="og:image" 
content="https://doggo.mrkaran.dev/assets/og-image.png";>
+    <meta property="og:site_name" content="Doggo DNS">
+
+    <!-- Twitter -->
+    <meta name="twitter:card" content="summary_large_image">
+    <meta name="twitter:url" content="https://doggo.mrkaran.dev/";>
+    <meta name="twitter:title" content="Doggo DNS - Free Online DNS Lookup 
Tool">
+    <meta name="twitter:description" content="Free online DNS lookup tool. 
Query DNS records using DNS over HTTPS, TLS, QUIC, UDP and TCP. Fast, modern 
alternative to dig and nslookup.">
+    <meta name="twitter:image" 
content="https://doggo.mrkaran.dev/assets/og-image.png";>
+    <meta name="twitter:creator" content="@mrkaran_">
+
+    <!-- Favicon -->
+    <link rel="icon" type="image/x-icon" href="assets/favicon.ico">
+    <link rel="apple-touch-icon" href="assets/apple-touch-icon.png">
+
+    <!-- Schema.org Structured Data -->
+    <script type="application/ld+json">
+    {
+        "@context": "https://schema.org";,
+        "@type": "WebApplication",
+        "name": "Doggo DNS",
+        "url": "https://doggo.mrkaran.dev/";,
+        "description": "Free online DNS lookup tool. Query DNS records (A, 
AAAA, MX, CNAME, TXT, NS, SOA, PTR, SRV, CAA) using DNS over HTTPS, TLS, QUIC, 
UDP and TCP.",
+        "applicationCategory": "DeveloperApplication",
+        "operatingSystem": "Any",
+        "offers": {
+            "@type": "Offer",
+            "price": "0",
+            "priceCurrency": "USD"
+        },
+        "author": {
+            "@type": "Person",
+            "name": "Karan Sharma",
+            "url": "https://mrkaran.dev";
+        },
+        "featureList": [
+            "DNS over HTTPS (DoH)",
+            "DNS over TLS (DoT)",
+            "DNS over QUIC (DoQ)",
+            "Multiple DNS providers",
+            "All DNS record types",
+            "DNSSEC validation",
+            "EDNS support"
+        ]
+    }
+    </script>
+    <script type="application/ld+json">
+    {
+        "@context": "https://schema.org";,
+        "@type": "WebSite",
+        "url": "https://doggo.mrkaran.dev/";,
+        "name": "Doggo DNS",
+        "potentialAction": {
+            "@type": "SearchAction",
+            "target": "https://doggo.mrkaran.dev/?q={search_term_string}";,
+            "query-input": "required name=search_term_string"
+        }
+    }
+    </script>
+    <script type="application/ld+json">
+    {
+        "@context": "https://schema.org";,
+        "@type": "FAQPage",
+        "mainEntity": [
+            {
+                "@type": "Question",
+                "name": "What is Doggo DNS?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Doggo DNS is a free online DNS lookup tool that 
allows you to query DNS records for any domain. It supports multiple DNS record 
types including A, AAAA, MX, CNAME, TXT, NS, SOA, PTR, SRV, and CAA records."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "What DNS protocols does Doggo support?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Doggo supports DNS over HTTPS (DoH), DNS over TLS 
(DoT), DNS over QUIC (DoQ), as well as traditional UDP and TCP DNS queries."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "Which DNS providers are available?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Doggo supports multiple DNS providers including 
Cloudflare (1.1.1.1), Google (8.8.8.8), Quad9 (9.9.9.9), AdGuard, Mullvad, 
Control D, DNS0.eu, OpenDNS, CleanBrowsing, and custom DNS servers."
+                }
+            },
+            {
+                "@type": "Question",
+                "name": "Is Doggo DNS free to use?",
+                "acceptedAnswer": {
+                    "@type": "Answer",
+                    "text": "Yes, Doggo DNS is completely free and open 
source. You can use the web interface or install the command-line tool from 
GitHub."
+                }
+            }
+        ]
+    }
+    </script>
+
+    <!-- Stylesheets -->
     <link rel="stylesheet" href="assets/terminal.css">
     <link href="assets/style.css" rel="stylesheet">
 </head>
@@ -15,6 +130,7 @@
         </div>
         <nav class="terminal-menu">
             <ul vocab="https://schema.org/"; typeof="BreadcrumbList">
+                <li property="itemListElement" typeof="ListItem"><a 
href="/faq" property="item" typeof="WebPage"><span 
property="name">FAQ</span></a></li>
                 <li property="itemListElement" typeof="ListItem"><a 
href="https://github.com/mr-karan/doggo"; property="item" typeof="WebPage"><span 
property="name">GitHub</span></a></li>
                 <li property="itemListElement" typeof="ListItem"><a 
href="https://doggo.mrkaran.dev/docs/"; property="item" typeof="WebPage"><span 
property="name">Docs</span></a></li>
             </ul>

++++++ doggo.obsinfo ++++++
--- /var/tmp/diff_new_pack.FvEFCP/_old  2025-12-22 22:51:55.455659938 +0100
+++ /var/tmp/diff_new_pack.FvEFCP/_new  2025-12-22 22:51:55.467660432 +0100
@@ -1,5 +1,5 @@
 name: doggo
-version: 1.1.2
-mtime: 1762003259
-commit: deea9773d44d72aae73d5b5f033e747306c51134
+version: 1.1.3
+mtime: 1766239513
+commit: 46a1de3ae6ee61267b678e7493a52657fde1bf74
 

++++++ vendor.tar.xz ++++++
++++ 140835 lines of diff (skipped)

Reply via email to